Czy szyfrowanie gwarantuje integralność?

Aby zbudować bezpieczny system, Czy możemy założyć, że szyfrowanie gwarantuje integralność przed rozpoczęciem bezpiecznego programowania?

  • zarówno w symmetric jak i public-key szyfrowanie, to moje pytanie dobrze zabezpieczony ?
  • Jeśli nie, to jakie są podatności, czy możesz dać przykład?
Author: berkay, 2010-09-07

3 answers

Nie. Łatwo to sprawdzić, jeśli weźmiemy pod uwagę one-time pad , Prosty (teoretycznie) doskonale bezpieczny system.

Jeśli zmienisz dowolny bit wyjścia, zmieni się bit czystego tekstu, a odbiorca nie będzie mógł tego wykryć.

Jest to oczywisty przypadek, ale ten sam wniosek dotyczy większości systemów szyfrowania. Zapewniają one jedynie poufność, a nie uczciwość.

Dlatego warto dodać podpis cyfrowy . Co ciekawe, kiedy używając kryptografii klucza publicznego, nie wystarczy podpisać, a następnie zaszyfrować (SE), ani zaszyfrować, a następnie podpisać (ES). Oba są podatne na ataki powtórkowe. Aby mieć ogólnie bezpieczne rozwiązanie, musisz podpisać-szyfrować-szyfrować lub szyfrować-szyfrować-szyfrować. Ten papier wyjaśnia szczegółowo dlaczego.

Jeśli używasz SE, odbiorca może odszyfrować wiadomość, a następnie ponownie zaszyfrować ją do innego odbiorcy. To następnie oszukuje nowego odbiorcę co do zamierzonego przez nadawcę odbiorca.

Jeśli używasz ES, podsłuchujący może usunąć podpis i dodać własny. Tak więc, nawet jeśli nie mogą odczytać wiadomości, mogą wziąć za nią kredyt, udając oryginalnego nadawcę.

 21
Author: Matthew Flaschen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-14 00:08:26

W skrócie odpowiedź brzmi nie. Integralność i tajemnica wiadomości są różne i wymagają różnych narzędzi.

Weźmy pod uwagę prosty rzut monetą i w tym przypadku stawiamy na wyniki. Rezultatem jest prosty bool i szyfruję go za pomocą szyfru strumieniowego, takiego jak RC4, który daje 1 zaszyfrowany bit i wysyłam go do ciebie. Nie masz klucza i proszę o odpis na maila.

Kilka ataków może się zdarzyć w tym scenariuszu.

1)An atakujący może zmodyfikować bit w tranzycie, jeśli to było 0, istnieje 50% szansa, że stanie się 1 i jest odwrotnie. Dzieje się tak dlatego, że RC4 wytwarza strumień prng, który jest XOR ' ED z czystym tekstem produkować zaszyfrowany tekst, podobny do pad jednorazowy.

2) inną możliwością jest to, że mogę dostarczyć Ci inny klucz, aby upewnić się, że Twoja odpowiedź jest błędna. To jest łatwe do brute force, po prostu próbuję klawiszy, dopóki nie dostanę WŁAŚCIWEGO bit flip.

Rozwiązaniem jest użycie szyfr blokowy to tryb CMAC . CMAC jest kodem uwierzytelniającym wiadomości podobnym do hmac, ale używa szyfru blokowego zamiast funkcji digest wiadomości. Tajny klucz (K) to ten sam klucz, którego używasz do szyfrowania wiadomości. To dodaje n + 1 bloków do zaszyfrowanego tekstu. W moim scenariuszu zapobiega to zarówno atakom 1, jak i 2. Atakujący nie może przerzucić prostego bitu, ponieważ zwykły tekst jest wypełniony, nawet jeśli wiadomość zajmuje tylko 1 bit, muszę przesłać minimum 1 blok za pomocą bloku szyfr. Dodatkowy blok uwierzytelniania uniemożliwia mi łańcuchowanie klucza, a także zapewnia integralność dla każdego, kto próbuje zmodyfikować zaszyfrowany tekst podczas transportu (chociaż byłoby to bardzo trudne w praktyce, dodatkowa warstwa zabezpieczeń jest przydatna).

WPA2 używa AES-CMAC z tych powodów.

 10
Author: rook,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-08 16:00:09

Jeśli integralność danych jest dla Ciebie szczególna, powinieneś użyć kryptograficznej funkcji skrótu, w połączeniu z algorytmem szyfrowania an.

Ale to naprawdę sprowadza się do użycia odpowiedniego narzędzia do pracy. Niektóre algorytmy szyfrowania mogą zapewnić wbudowany poziom walidacji sum kontrolnych, inne mogą nie.

 2
Author: Ash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-07 03:34:05