Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



10.10.2019

CYBERSEC EXPO - największe w...

Bezpieczeństwo cyfrowe nie jest problemem dotyczącym jedynie działów IT. Obecnie stanowi...
30.09.2019

Nowości w wirtualizacji

VMware World 2019
30.09.2019

Bezpieczeństwo mobile-first

Android 10
30.09.2019

Błyskawiczna cyfryzacja

ABBYY FineReader 15
27.09.2019

Kompleksowa ochrona

Kaspersky 2020
27.09.2019

Węgiel to nowy krzem?

Procesor RV16XNano
27.09.2019

Solidność i jakość

Nowe ThinkBooki Lenovo
26.09.2019

Mobilna bestia

NVIDIA Quadro RTX 6000
26.09.2019

NAS dla każdego

QNAP TVS-x72N

Zastosowania poleceń OpenSSL

Data publikacji: 26-09-2019 Autor: Grzegorz Kuczyński

Stosowanie kryptografii pozwala uniknąć wielu problemów z bezpieczeństwem w sieci i nie tylko, dlatego użycie tego typu mechanizmów we własnych rozwiązaniach jest często zalecane. OpenSSL to narzędzie oferujące wszystko, co może przydać się administratorom systemów.

 

OpenSSL to projekt, który skupia się na implementacji biblioteki oraz narzędzi kryptograficznych. Biblioteki można użyć w programach, w których chcemy oferować szyfrowaną komunikację (podobnie jak HTTPS). Z kolei narzędzia dostępne z wiersza poleceń warto stosować do wykonywania zadań kryptograficznych we własnych rozwiązaniach. W artykule skupimy się na operacjach kryptograficznych możliwych do wykonania za pomocą narzędzia OpenSSL. Jego zaletą jest to, że jest on standardowym wyposażeniem niemal każdego systemu Linux i BSD. Można go również zainstalować w systemach Windows i macOS. Najprostszym sposobem na sprawdzenie, czy posiadamy to narzędzie w systemie, jest wydanie polecenia:

 


 

Powyższa wersja pochodzi z systemu Debian 9 i na niej będziemy bazować.

> FUNKCJE KRYPTOGRAFII

Zastosowanie kryptografii w informatyce przeważnie kojarzone jest z szyfrowaniem danych. Ale nie jest to jedyne zastosowanie, ponieważ kryptografia umożliwia również korzystanie z mechanizmów autoryzacji i kontroli integralności. Autoryzacja odbywa się za pomocą certyfikatów SSL, które korzystają z funkcji skrótu (hash, kontrola integralności danych). Obie te metody razem tworzą podpis elektroniczny. OpenSSL pozwala na używanie wszystkich zastosowań kryptografii oraz oferuje dodatkowe funkcje, przydatne podczas testowania metod kryptograficznych.

Narzędzie wiersza poleceń pracuje w dwóch trybach – inter­aktywnym i wsadowym. Wpisanie nazwy narzędzia uruchomi tryb interaktywny. Na wstępie warto zapoznać się z funkcjami oferowanymi przez OpenSSL za pomocą komendy:

 

 

Wynik działania podzielony jest na trzy części: polecenia (takie jak enc, s_client, ca), funkcje skrótu (jak sha256) oraz dostępne szyfry (cipher). Za pomocą OpenSSL możemy szyfrować i deszyfrować dane, używać kryptografii klucza publicznego, tworzyć certyfikaty X.509, w tym CA (Certificate Authority), testować klienta i serwer SSL/TLS, szyfrować pocztę, a nawet testować prędkość operacji kryptograficznych.

> DOSTĘPNE SZYFRY

Zacznijmy od bardzo popularnego szyfrowania symetrycznego. Istnieje wiele różnych algorytmów tego szyfrowania, ale omówimy tylko najczęściej stosowane. Same szyfry dzielą się na strumieniowe i blokowe – skupimy się na tych drugich.

Niemal każdy szyfr występuje w kilku wariantach (zwłaszcza szyfry blokowe). Pełną listę dostępnych algorytmów szyfrowania dla komendy enc można uzyskać w następujący sposób:

 

 

Ich znaczenie wyjaśnimy na przykładzie standardu AES (Advanced Encryption Standard), który obecnie jest najpopularniejszym algorytmem symetrycznym i został zaprojektowany w celu zastąpienia przestarzałego symetrycznego szyfru blokowego DES (Data Encryption Standard). Z założenia AES miał używać łatwych do wykonania dla sprzętu operacji (np. XOR) oraz stosować techniki matematyczne, które zapobiegałyby znanym do tej pory atakom. Co ważne, oferuje też znacznie dłuższe klucze niż DES.

AES podobnie jak DES, jest szyfrem blokowym, co oznacza, że podczas szyfrowania dane dzielone są na bloki o wielkości 128 bitów i przetwarzane w takiej postaci po 10–14 razy w tzw. rundach. Jeżeli szyfrowane dane będą krótsze od wielkości bloku, to postać zaszyfrowana zostanie dopełniona do wielkości bloku. Pomimo stałego rozmiaru bloku danych AES może używać kluczy o trzech wielkościach – 128, 192 i 256 bitów. Poza długością klucza można wybierać tzw. tryb pracy. Najbardziej popularny i zarazem domyślny w OpenSSL jest CBC (Cipher Block Chaining). Tak więc wpis -aes-256-cbc oznacza, że chodzi o algorytm AES z kluczem o długości 256 bitów i trybem pracy CBC.

> SZYFROWANIE DANYCH

W przypadku szyfrowania symetrycznego korzystanie z klucza prywatnego jest intuicyjne, a narzędzie OpenSSL ułatwia cały proces jeszcze bardziej (pozwala stosować hasło, po podaniu którego klucz zostanie wyprowadzony). Najprostszym sposobem na zaszyfrowanie pliku file.txt i zapisanie zabezpieczonej wersji w file.enc są polecenia:

 

 

Oba polecenia są tożsame, druga wersja pozwala pominąć komendę enc, bezpośrednio używając nazwy szyfru. W takiej postaci OpenSSL przed szyfrowaniem zapyta nas o hasło.

Aby odszyfrować plik file.enc, należy dodać opcję -d i odpowiednio zamienić nazwy plików wejściowych i wyjściowych:

 

 

Po wpisaniu hasła, którego użyto podczas szyfrowania pliku file.enc, jego odszyfrowana treść zostanie zapisana w file.enc.txt. Warto zwrócić uwagę na zaszyfrowany plik file.enc. Jeżeli teraz zechcemy podejrzeć zaszyfrowaną wersję, np. za pomocą narzędzia cat, ujrzymy znaki niedrukowane (mówiąc potocznie, „krzaki”). Dzieje się tak, ponieważ wynikiem szyfrowania są operacje matematyczne, których wynik nie musi trafić w liczbę reprezentującą jakiś znak drukowany. Zaszyfrowane dane najlepiej traktować jako dane szesnastkowe i użyć narzędzia hexdump:

 

 

Bardziej eleganckim sposobem jest użycie base64, będącego zarówno poleceniem w systemach Unix, jak i jednym z szyfrów w OpenSSL. W rzeczywistości nie jest to żaden szyfr, ale koder znaków obsługiwany za pomocą komendy enc. Poniższe polecenia wykonują to samo zadanie:

 

 

Base64 koduje dane binarne na znaki z tablicy ASCII. Dzieli wejściowe dane na 6 bitów i odzwierciedla każdy z nich na jeden z 64 znaków drukowanych. Kodowanie to ma również zastosowanie dla poczty e-mail. OpenSSL pozwala zakodować w base64 zaszyfrowane dane od razu na wyjściu, za pomocą opcji -a. Możemy również podać w jednym poleceniu hasło jako parametr i kodować, używając potoków zamiast plików wejścia-wyjścia:

 

 

Aby odwrócić tę operację, należy otrzymany ciąg przepuścić przez takie samo polecenie OpenSSL, dodając opcję -d. Hasło można ukryć, pobierając je z pliku np. -pass file:pass_to_ enc. Posługując się plikiem, otrzymujemy kolejną możliwość, jaką jest posługiwanie się frazą kodującą (passphrase).

 

 

Długie frazy zapewniają większe bezpieczeństwo niż pojedyncze słowa. Fraz możemy używać również w trybie interaktywnym.

 

[...]

 

Autor zawodowo zajmuje się informatyką. Jest członkiem społeczności open source, prowadzi blog nt. systemu GNU/Linux. 

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"