Proste konsolowe narzędznie szyfrujące

Poszukiwałem od dłuższego czasu prostego programu do szyfrowania symetrycznego działającego z linii poleceń. Istnieje bardzo wiele rozwiązań zarówno open-source jak i wyprodukowanych przez firmy komercyjne (dla jak największego bezpieczeństwa zaleca się jednak stosowanie rozwiązań otwartych ze względu na pewność, iż aplikacja nie posiada żadnych “tylnych drzwi”). Osobiście nie lubię jednak żadnych graficznych udziwnień, integrowania się z powłoką, dodawania nowych pozycji do menu kontekstowych - ja potrzebuję jedynie prostej komendy która zaszyfruje mi plik.

Do niedawna stosowałem bcrypt, który jest implementacją algorytmu Blowfish działającą z linii poleceń. Niemniej jednak algorytm ten ma już swoje lata i co prawda nie został złamany, ale jego autor - Bruce Schneier zaleca stosowanie nowszego rozwiązania - Twofish.

Rozwiązaniem okazał się program openssl, który jest demonstracyjną implementacją biblioteki kryptograficznej o tej samej nazwie. Ma on całkiem spore możliwości z zakresu szyfrowania symetrycznego jak i asymetrycznego, dostępne są komendy szyfrujące wieloma algorytmami, również starym, złamanym DES’em. Oczywiście według obecnie obowiązujących standardów najlepiej jest wybrać szyfrowanie algorytmem Rijndael (zamiennie stosowaną nazwą jest AES - odkąd algorytm ten został zwycięzcą konkursu na standard, swoją drogą można spokojnie zaufać wszystkim finalistom konkursu - również algorytmom Serpent, RC6 i Twofish).

Po ściągnięciu z powyższego linka i zainstalowaniu plików programu możemy zaszyfrować dowolny plik na przykład takim poleceniem:

openssl enc -aes-256-cfb -salt -in plik_wejsciowy -out plik_wyjsciowy

Polecenie powoduje zaszyfrowanie pliku algorytmem AES z 256-bitowym kluczem w trybie cipher feedback. Po wykonaniu tego polecenia i podaniu hasła możemy mieć pewność, że nasz plik jest bezpieczny i nikt nie odczyta jego zawartości. Do odszyfrowywania należy wydać polecenie:

openssl enc -d -aes-256-cfb -salt -in -out plik_wyjsciowy

Przypominam, że przy wykonywaniu szyfrowania należy upewnić się, że plik wejściowy został usunięty w sposób bezpieczny np. przy użyciu programu firmy Sysinternals Sdelete. Co prawda algorytm AES jest obecnie uznany za bezpieczny i nie dający się złamać, ale należy pamiętać, że większość skutecznych prób łamania wszelkich zabezpieczeń cyfrowych opiera się albo na (głupich) błędach człowieka przy wykonywaniu procedury szyfrującej albo na podatności na techniki social-engineering.

W tym pierwszym przypadku mam na myśli na przykład ww. nie zniszczenie kopii pliku, który był szyfrowany. Załóżmy, że chcemy umieścić plik na jakimś nośniku np. pendrive. Kopiujemy go tam, wykonamy podane przeze mnie polecenie openssl, i normalnie skasujemy plik wejściowy przeciągając go do kosza i opróżniając kosz. Potencjalny włamywacz chociażby nie wiadomo jak się starał to nie odszyfruje zabezpieczonego przez nas pliku, ale uruchomi narzędzie do odzyskiwania skasowanych plików i uzyska plik który był przeznaczony do zabezpieczenia.

Techniki social-engeenering to po prostu na przykład bycie przekonanym przez włamywacza-oszusta do ujawnienia naszego hasła. To zadziwiające, ale takie rzeczy wciąż się zdarzają. Moim zdaniem należy zachowywać jak najdalej idącą powściągliwość przy podawaniu jakichkolwiek prywatnych danych osobom, których tożsamości nie możemy zweryfikować w 100% (nie wspominając już u podawaniu haseł, co jest absolutnie niedopuszczalne). Przykładowo, gdy ktoś wysyła mi wiadomość, że jest administratorem serwisu w którym mam konto i prosi o podanie hasła z powodu wykonywanych modernizacji to jedynymi podejmowanymi przeze mnie czynnościami jest śmiech i kliknięcie w “usuń”.

Podsumowując, powyżej przedstawiłem prosty i bardzo skuteczny sposób na zabezpieczenie cennych informacji. Polecam szersze omówienie komend programu openssl pod adresem: http://www.madboa.com/geek/openssl