Szyfrowanie i odszyfrowywanie AES

Wklej tekst i hasło, aby szybko zaszyfrować lub odszyfrować dane wybranym szyfrem PHP OpenSSL. AES to symetryczny szyfr blokowy standaryzowany przez NIST w FIPS 197 i używany w wielu systemach TLS, WPA2, VPN oraz szyfrowania dysków, ale ta strona jest narzędziem do mało wrażliwego tekstu, a nie audytowanym sejfem na sekrety. Do poufnych plików lub sekretów długoterminowych użyj narzędzia offline, takiego jak age, GnuPG albo 7-Zip.

Jak szyfrować tekst AES

  1. 1

    Wybierz szyfr OpenSSL

    Obecne opcje obejmują warianty CBC, CTR i GCM. CBC oraz CTR nie są uwierzytelnione, a to narzędzie nie zapisuje ani nie sprawdza tagu uwierzytelniającego GCM.

  2. 2

    Wpisz hasło

    Hasło jest jednokrotnie haszowane SHA-256, aby utworzyć klucz AES. Nie ma PBKDF2, soli, Argon2 ani kosztu obliczeniowego, więc użyj długiego losowego hasła.

  3. 3

    Wklej mało wrażliwy tekst

    To narzędzie Livewire/PHP OpenSSL działa po stronie serwera. Nie wklejaj haseł, kluczy produkcyjnych, prywatnych dokumentów ani sekretów, których nie wysłałbyś tej stronie.

  4. 4

    Skopiuj wynik Base64

    Szyfrowanie tworzy losowy IV, dokleja go przed surowym szyfrogramem, a potem koduje połączone bajty jako Base64. Do odszyfrowania potrzebny jest ten sam szyfr i to samo hasło.

Co naprawdę zwraca to narzędzie

Ta implementacja używa PHP OpenSSL. Podczas szyfrowania haszuje hasło SHA-256, generuje losowy IV o długości wymaganej przez wybrany szyfr, szyfruje tekst i zwraca:

Base64(IV || szyfrogram)

Wynik nie zawiera soli, parametrów PBKDF2, HMAC ani tagu uwierzytelniającego GCM. Nie jest zgodny z formatami tworzonymi przez Web Crypto, age, GnuPG, przepisy OpenSSL z wiersza poleceń ani 7-Zip.

Opcje AES w kontekście

AES ma stały rozmiar bloku 128 bitów (16 bajtów) oraz standardowe rozmiary klucza 128, 192 i 256 bitów. Ważna różnica bezpieczeństwa tutaj to nie tylko rozmiar klucza, lecz także to, czy zaszyfrowana wiadomość jest uwierzytelniona.

Opcja szyfru Co warto wiedzieć w tym narzędziu
AES-128-CBC / AES-192-CBC / AES-256-CBC Powszechny tryb blokowy z losowym IV i paddingiem PKCS#7. Do wykrywania modyfikacji potrzebuje osobnego MAC, np. HMAC-SHA-256.
AES-256-CTR Zmienia AES w tryb podobny do strumieniowego. Także wymaga osobnego uwierzytelnienia i nigdy nie wolno ponownie używać tego samego IV/licznika z tym samym kluczem.
AES-128-GCM / AES-256-GCM GCM normalnie jest trybem AEAD, ale tylko gdy tag uwierzytelniający jest zapisany i sprawdzany. Wynik tego narzędzia nie zawiera tego tagu, więc nie polegaj na nim jako na szyfrowaniu uwierzytelnionym.

Przypomnienia bezpieczeństwa

Wytyczne OWASP dotyczące przechowywania kryptograficznego zalecają szyfrowanie uwierzytelnione, gdy jest dostępne, albo szyfrowanie plus osobny MAC. Pamiętaj o tym przy tym narzędziu:

  • To szyfrowanie symetryczne - to samo hasło odszyfrowuje. Udostępniaj je innym kanałem niż szyfrogram.
  • Słabe hasło jest tu słabym kluczem - SHA-256 jest szybki i bez soli, więc atakujący może szybko sprawdzać zgadywane hasła, jeśli ma wynik.
  • CBC i CTR wymagają uwierzytelnienia - bez HMAC lub innego MAC atakujący może czasem zmienić szyfrogram bez wykrycia.
  • Nie używaj ponownie IV ani nonce z tym samym kluczem - narzędzie generuje świeży losowy IV przy szyfrowaniu, ale wklejane dane zewnętrzne muszą trzymać się tej samej reguły.
  • Do prawdziwych sekretów używaj narzędzi audytowanych - age, GnuPG i 7-Zip ostrożniej obsługują formaty plików, metadane i uwierzytelnienie.

Najczęściej zadawane pytania

Obecny komponent haszuje hasło SHA-256 i używa wynikowych bajtów jako materiału klucza dla OpenSSL. Nie używa PBKDF2, soli, scrypt ani Argon2, więc krótkie lub ponownie użyte hasło jest ryzykowne.

Nie. CBC i CTR potrzebują osobnego MAC, np. HMAC-SHA-256, a choć GCM normalnie zapewnia uwierzytelnienie AEAD, to narzędzie nie zapisuje ani nie sprawdza tagu GCM w wyniku Base64.

Na serwerze strony, gdy akcja Livewire uruchamia PHP OpenSSL. To nie jest narzędzie Web Crypto działające wyłącznie w przeglądarce, więc nie wklejaj wartościowych sekretów, kluczy prywatnych ani wrażliwych dokumentów.

Wynik Base64 zawiera losowy IV, a po nim surowy szyfrogram. Padding CBC może dodać bajty, a Base64 zwiększa dane binarne o około jedną trzecią. Zapisany format nie zawiera soli ani tagu uwierzytelniającego.

To narzędzie obsługuje tylko tekst i najlepiej ograniczyć je do mało ryzykownych fragmentów. Do plików lub ważnych sekretów użyj audytowanego narzędzia offline, takiego jak age, GnuPG albo 7-Zip.

Powiązane narzędzia