Myślę, że to dobry sposób, aby się temu przyjrzeć:
Masz sekret, który może być 256-bitowym kluczem lub hasłem, na podstawie którego uzyskasz ten klucz, lub jedno z tych plus inne informacje, takie jak użyty algorytm szyfrowania.
Osoba atakująca chce odgadnąć Twój sekret. Robią to, wypróbowując różne możliwości, aż znajdą tę właściwą lub zabraknie im czasu, pieniędzy lub motywacji.
Nie masz pojęcia, jakich możliwości próbują . W swoim pytaniu mówisz "co by było, gdyby przez wszystkie lata używał złego algorytmu?" a jedyną odpowiedzią na to jest "a co, jeśli nie był?" Nie masz nad tym żadnej kontroli. Gdybyś wiedział, jakie możliwości spróbuje atakujący, możesz po prostu wybrać jako swój sekret cokolwiek, czego nie ma na ich liście, a problem z bezpieczeństwem zostanie rozwiązany w trywialny sposób.
Jednak możesz z grubsza zrobić oszacuj, ile możliwości mogą wypróbować, zanim zabraknie im czasu i / lub pieniędzy, w oparciu o stan technologii komputerowej. Zakłada się, że nie mają potajemnie dostępu do technologii, której nie ma reszta świata, takich jak obliczenia kwantowe lub backdoor w AES - co jest prawdopodobnie bezpiecznym założeniem, ponieważ w takim przypadku mieliby lepsze rzeczy do zrobienia niż spróbuj złamać swoje hasło. (Por. Cut Lex Luthor a Check, chociaż zobacz także to obalenie.)
Możesz także udowodnić następujący wynik : jeśli wybierzesz swój sekret jednolicie i losowo (używając wysokiej jakości RNG) z n możliwości, a atakujący spróbuje k możliwości, bez względu na to, jakie to są , szansa, że odgadną Twój sekret, jest co najwyżej k/n.
Fajne jest to, że n rośnie wykładniczo wraz z ilością informacji, które musisz przechowywać / zapamiętywać, podczas gdy k rośnie tylko liniowo wraz z ilością czasu / pieniędzy, które spędzają, więc nie jest trudno zarobić k / n bardzo małe.
Dlatego powinieneś wybrać swój sekret jednolicie, losowo, z szerokiego zestawu możliwości. Losowy 256-bitowy klucz symetryczny jest wybierany równomiernie z zestawu o rozmiarze 2 256 , który jest (znacznie większy niż) wystarczająco duży.
Możesz wybrać losowo z paczki (algorytm, klucz) również, ale jest to bezcelowe, ponieważ każdy pojedynczy algorytm oferuje już wiele opcji.
Możesz wybrać niejasny algorytm i mieć nadzieję, że atakujący go nie spróbuje, ale to nie jest wybór już losowo i dlatego nie możesz udowodnić , że to w ogóle pomaga. Gdyby nie było innych opcji, byłoby to lepsze niż nic, ale są inne opcje.
Jest to podstawowy powód, dla którego kryptolodzy radzą, aby traktować tylko klucz jako swój sekret: jest mnóstwo kluczy i klucze są najłatwiejszą rzeczą do wybrania na chybił trafił. Nie potrzebujesz niczego więcej.