Chcę zaszyfrować plik binarny. Moim celem jest uniemożliwienie odczytania pliku każdemu, kto nie ma hasła.
Które rozwiązanie jest lepsze, AES czy Blowfish z tą samą długością klucza? Można założyć, że atakujący ma duże zasoby (oprogramowanie, wiedzę, pieniądze) na złamanie pliku.
security
encryption
aes
blowfish
mimrock
źródło
źródło
Odpowiedzi:
Prawdopodobnie AES. Blowfish był bezpośrednim poprzednikiem Twofish. Twofish był zgłoszeniem Bruce'a Schneiera do konkursu, który wyprodukował AES. Został oceniony jako gorszy od wpisu o nazwie Rijndael, który stał się AES.
Poza tym ciekawe: w pewnym momencie konkursu wszyscy uczestnicy zostali poproszeni o wyrażenie opinii na temat rankingu szyfrów. Prawdopodobnie nie jest zaskoczeniem, że każdy zespół wybrał swój własny wpis jako najlepszy - ale co drugi zespół wybrał Rijndael jako drugi najlepszy.
To powiedziawszy, istnieją pewne podstawowe różnice w podstawowych celach Blowfish w porównaniu z AES, które mogą (prawdopodobnie) faworyzować Blowfish pod względem absolutnego bezpieczeństwa. W szczególności Blowfish próbuje utrudnić atak brutalnej siły (wyczerpanie klucza), czyniąc początkową konfigurację klucza dość powolną operacją. Dla zwykłego użytkownika ma to niewielkie znaczenie (to wciąż mniej niż milisekunda), ale jeśli próbujesz złamać miliony kluczy na sekundę, różnica jest dość znaczna.
Ostatecznie jednak nie uważam tego za główną zaletę. Generalnie polecam AES. Moim następnym wyborem byłby prawdopodobnie Serpent, MARS i Twofish w tej kolejności. Blowfish przyszedłby gdzieś po nich (choć jest kilka innych, które prawdopodobnie poleciłbym przed Blowfish).
źródło
Blowfish
jest najszybszyNie jest często uznawany fakt, że rozmiar bloku szyfru blokowego jest również ważnym aspektem bezpieczeństwa (chociaż nie jest tak ważny jak rozmiar klucza).
Blowfish (i większość innych szyfrów blokowych z tej samej epoki, jak 3DES i IDEA) ma 64-bitowy rozmiar bloku, który jest uważany za niewystarczający dla dużych rozmiarów plików, które są obecnie powszechne (im większy plik, a mniejszy rozmiar bloku , tym większe prawdopodobieństwo powtórzenia się bloku w zaszyfrowanym tekście - a takie powtarzające się bloki są niezwykle przydatne w kryptoanalizie).
Z drugiej strony AES ma rozmiar bloku 128-bitowego. Już sama ta uwaga uzasadnia użycie AES zamiast Blowfish.
źródło
Jeśli chodzi o same algorytmy, wybrałbym AES, z prostego powodu, że został zaakceptowany przez NIST i będzie przez lata recenzowany i kryptoanalizowany. Jednak sugerowałbym, że w praktycznych zastosowaniach, chyba że przechowujesz jakiś plik, który rząd chce zachować w tajemnicy (w takim przypadku NSA prawdopodobnie dostarczyłby ci lepszy algorytm niż zarówno AES, jak i Blowfish), używając któregokolwiek z tych algorytmów wygrał nie robi zbyt dużej różnicy. Całe bezpieczeństwo powinno być w kluczu, a oba te algorytmy są odporne na ataki siłowe. Blowfish okazał się słaby tylko w implementacjach, które nie wykorzystują pełnych 16 rund. I chociaż AES jest nowszy, fakt ten powinien skłonić Cię bardziej do BlowFish (jeśli brałeś pod uwagę tylko wiek). Pomyśl o tym w ten sposób
Oto, co chciałbym ci przedstawić ... zamiast patrzeć na te dwa algorytmy i próbować wybrać między algorytmem, dlaczego nie spojrzysz na schemat generowania kluczy. Potencjalny napastnik, który chce odszyfrować Twój plik, nie będzie siedział tam i nie wymyśli teoretycznego zestawu kluczy, których można użyć, a następnie przeprowadzi atak siłowy, który może zająć miesiące. Zamiast tego zamierza wykorzystać coś innego, na przykład zaatakować sprzęt serwera, przeprowadzić inżynierię wsteczną zestawu, aby zobaczyć klucz, spróbować znaleźć plik konfiguracyjny zawierający klucz, a może szantażować znajomego, aby skopiował plik z komputera . To będą miejsca, w których jesteś najbardziej narażony, a nie algorytm.
źródło
AES.
(Zakładam również, że masz na myśli dwie ryby, a nie dużo starszą i słabszą rozdymkę)
Oba (AES i twofish) są dobrymi algorytmami. Jednak nawet gdyby były równe lub dwie ryby były nieco lepsze pod względem technicznym, NADAL wybrałbym AES.
Czemu? Reklama. AES to standard szyfrowania rządowego, dlatego też używają go miliony innych podmiotów. Utalentowany kryptoanalityk po prostu dostaje więcej "bum za grosze" znajdując lukę w AES niż robi to dla znacznie mniej znanych i używanych dwóch ryb.
Obscurity nie zapewnia ochrony w szyfrowaniu. Więcej ciał szukających, studiujących, sondujących i atakujących algorytm jest zawsze lepsze. Chcesz najbardziej „sprawdzonego” algorytmu, a teraz jest nim AES. Jeśli algorytm nie podlega intensywnej i ciągłej kontroli, powinieneś umieścić mniejszą pewność co do jego siły. Jasne, że dwie ryby nie zostały zagrożone. Czy to z powodu siły szyfru, czy po prostu dlatego, że zbyt mało ludzi przyjrzało się bliżej… JESZCZE
źródło
Wybór algorytmu prawdopodobnie nie ma większego znaczenia. Używałbym AES, ponieważ zostało lepiej zbadane. O wiele ważniejszy jest wybór odpowiedniego trybu pracy i funkcji wyprowadzania klucza .
Możesz rzucić okiem na specyfikację formatu TrueCrypt w poszukiwaniu inspiracji, jeśli chcesz mieć szybki losowy dostęp. Jeśli nie potrzebujesz dostępu swobodnego, tryb XTS nie jest optymalnym trybem, ponieważ ma słabości inne tryby. Możesz też dodać jakiś rodzaj kontroli integralności (lub kod uwierzytelniający wiadomości).
źródło
Wiem, że ta odpowiedź narusza warunki twojego pytania, ale myślę, że prawidłowa odpowiedź na twój zamiar jest po prostu taka: użyj dowolnego algorytmu, który pozwala na najdłuższą długość klucza, a następnie upewnij się, że wybrałeś naprawdę dobry klucz. Niewielkie różnice w wydajności większości dobrze szanowanych algorytmów (kryptograficznie i chronologicznie) są przytłaczane przez kilka dodatkowych bitów klucza.
źródło
Oba algorytmy (AES i twofish) są uważane za bardzo bezpieczne. Zostało to szeroko omówione w innych odpowiedziach.
Ponieważ jednak AES jest obecnie szeroko stosowany w 2016 r., Został specjalnie przyspieszony sprzętowo na kilku platformach, takich jak ARM i x86. Chociaż przed akceleracją sprzętową AES nie jest znacznie szybszy niż dwójka, teraz jest znacznie szybszy dzięki dedykowanym instrukcjom procesora.
źródło