2010-08-09 5 views
6

Było wiele pytań dotyczących generowania IV, szyfrowania i dzielenia IV między nadawcą a odbiorcą, ale chcę napisać wyraźny post dotyczący najlepszego sposobu przesłania IV od nadawcy do odbiorcy.Wysyłanie IV wraz z tekstem szyfrowania, bezpieczne?

Ze wszystkich postów, które widziałem do tej pory, nie jestem pewien, czy można bezpiecznie wysłać IV w "zwykłym tekście", poprzedzając go tekstem szyfrowania. Pierwsze pytanie brzmi: czy jest to bezpieczne?

Po drugie, czy istnieje bezpieczniejszy sposób udostępniania IV między nadawcą a odbiorcą podczas komunikacji poprzez wymianę wiadomości?

Cheers

+0

Wiem, że to stare pytanie, ale jeśli moja odpowiedź była pomocna, czy mógłbyś przyjąć to jako odpowiedź? Wielkie dzięki. – mfanto

+0

Tak, zrobię to z chęcią :) – Mystic

Odpowiedz

11

Tak, bezpiecznie można wysłać IV w czystości. Oto „dowód” dlaczego:

Take trybie CBC na przykład:

alt text

Można zobaczyć, że szyfrogram bloku jest XORed z tekstu jawnego następnego bloku. Powodem, dla którego potrzebujemy IV, jest fakt, że w pierwszym bloku nie ma żadnego wcześniejszego szyfrogramu do użycia. Gdyby istniało zagrożenie bezpieczeństwa, gdyby IV był tajny, wówczas ryzyko bezpieczeństwa byłoby obecne dla każdego bloku po, ponieważ szyfrowany tekst pełni tę samą rolę co IV.

Mimo to trzeba się upewnić, że to MAC. W zależności od tego, w jaki sposób wykonujesz kody uwierzytelniania wiadomości, ktoś manipulując IV może manipulować wynikowym tekstem jawnym podczas odszyfrowywania. Sam szyfrowanie nie zapewnia integralności wiadomości.

Również w przypadku generacji IV zależy to od wymagań użytkownika. Ale najczęściej Twoja IV musi być losowa i nieprzewidywalna.

+0

Dzięki mattjf. Dobre wytłumaczenie. W powiązanej notatce, jaki jest związek między rozmiarem oryginalnego tekstu jawnego a wynikowym zaszyfrowanym tekstem? Prawdopodobnie musiałbym znać rozmiary, jeśli mam zamiar odzyskać odpowiednie części. – Mystic

+2

Cóż, niestety odpowiedź brzmi: to zależy. W zależności od używanego szyfrowania i trybu będzie on się różnić. CBC jest najbardziej popularnym trybem, który wymaga IV i wymaga dopełnienia tekstem otwartym do rozmiaru bloku. Powiedzmy, że chcesz zaszyfrować 4 bajty za pomocą AES CBC. Potrzebujesz 16 bajtów dla IV, a te 4 bajty muszą być dopełnione do 16 bajtów, w sumie 32 bajty. Możesz użyć Kradzieży tekstu zaszyfrowanego, aby zapobiec rozszerzaniu bloku lub możesz użyć trybu AES CTR.W jaki sposób MACujesz swoje dane? Musisz się upewnić, że nikt nie może manipulować zaszyfrowanymi danymi. – mfanto

+0

Ciąg dalszy: Jeśli możesz dać prymitywom, których jesteś zmuszony użyć, możemy zrobić lepsze zalecenie. Ale, prawdę mówiąc, nie powinieneś projektować systemów kryptograficznych. Czy możesz użyć istniejącego standardu lub protokołu? Co dokładnie próbujesz osiągnąć? – mfanto

1

Tak, to jest bezpieczne w postaci zwykłego tekstu z zastrzeżeniem, że nie powinny być powtarzane.

2

Tak, jest bezpiecznie. Wiele protokołów, takich jak WEP i WPA, będzie przekazywać IV w postaci zwykłego tekstu. Jest to zwykle wymaganie, ponieważ nie można odszyfrować wiadomości bez znajomości iv. Najczęstszy atak WEP obejmuje przechwytywanie tysięcy elementów IV, ale dzieje się tak dlatego, że RC4 jest podatny na działanie Related Key Attack. Jeśli używasz bezpiecznego szyfrowania symetrycznego, nie musisz się martwić.

Znana luka w zabezpieczeniach związana z IV to CWE-329, która wymaga, aby IV był losowy, i this is why to jest problem. Kolejnym potencjalnym problemem jest szyfrowanie 2 wiadomości o tym samym IV. Jest to problem, ponieważ atakujący może być w stanie zidentyfikować inną wiadomość tekstową zaszyfrowaną za pomocą szyfrowania wielu znanych wiadomości, skutecznie próbując odgadnąć, co może być przechwyconym tekstem szyfrowania bez znajomości klucza.