Avatar
Matěj Strnad:16. června 21:15

Existuje nějaká možnost jak používat šifrování AES‑256 v PHP?

Chci docílit: Použít v PHP šifrování AES‑256 :)

Odpovědět 16. června 21:15
Ty vaše internety!
Avatar
Nahoru Odpovědět  -1 16. června 22:15
Chybami se člověk učí, běžte se učit jinam!
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Uživatel sítě
Petr Čech:16. června 22:31

Je moc nebezpečné požívat přímo šifrovací funkce, pokud člověk neví, co přesně dělá. To potom vede třeba k věcem jako konstantní IV, nepočítání MAC, padding oracle...
Lepší je najít nějakou knihovnu, co to všechno dělá sama. Našel jsem např. https://github.com/…s-encryption , vypadá docela ok, ale zdá se poměrně stará :/

Nahoru Odpovědět 16. června 22:31
the cake is a lie
Avatar
Matěj Strnad:17. června 7:15

Nebo stačí jen sha-256?

Editováno 17. června 7:15
Nahoru Odpovědět 17. června 7:15
Ty vaše internety!
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Matěj Strnad
Petr Čech:17. června 11:05

SHA a AES jsou naprosto rozdílné věci, takže může, ale rozhodně ne na šifrování. Dokonce i ta čísla 256 mají úplně jiný význam.

AES je symetrická šifra. To znamená, že dostane

  1. Plaintext - co chceš zašifrovat
  2. IV=inicializační vektor - náhodná sekvence bytů, která zaručí, že výsledek bude jiný i pokud bude stejným klíčem šifrovat stejný plaintext. Proto v žádném případně nesmí být IV někde natvrdo napsaný, ale musí se generovat náhodně. IV není tajný a normálně se připojuje k zašifrovanému textu.
  3. Klíč - pevně dlouhá sekvence bytů, pro AES je to buď 128, nebo 256 bitů - proto to číslo
  4. Mód - AES může pracovat v několika módech určených pro různé účely. Pokud se použije špatný mód, může to naprosto zásadně ovlivnit, jak silné to šifrování je. Pokud nevíš, vždy použij CBC

To všechno se zchroustá a vypadne z toho zašifrovaný text. Pokud použiješ dešifrovací funkci se stejným vstupem, dostaneš zpět plaintext.

SHA
Jsou hashovancí funkce z rodiny SHA. Hashovací funkce vezme jeden vstup a udělá z něj fixně daný výstup - hash (otisk). Sebemenší změna ve vstupu se projeví úplně jiným hashem.
Důležitou vlastností hashovacích funkcí je, že se od hashe nelze dostat zpět k původnímu vstupu.
To je užitečné např. pro kontrolování, že máš stejný soubor, co si očekával, že se stáhne - u sebe spočítáš hash souboru a porovnáš s hashem na webu - a celý soubor se porovnal pomocí pár desítek znaků.
To to také používá u hesel, kde se neuloží heslo samotné, ale hash (plus nějaká omáčka). POZOR, heslo jsou komplikovanější a je lepší používat vestavěné funkce password_hash a password_verify.

Nahoru Odpovědět  +4 17. června 11:05
the cake is a lie
Avatar
Odpovídá na Petr Čech
Uživatel sítě :17. června 11:21

Počítám s tím, že si projde manuál k tomu, proto jsem poslal linky přímo na to, co žádal.

Nahoru Odpovědět  +2 17. června 11:21
Chybami se člověk učí, běžte se učit jinam!
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:17. června 14:48

Šifrování:

$encrypted = openssl_encrypt($text, "AES-256-ECB", $key);

Dešifrování:

$text = openssl_decrypt($encrypted, "AES-256-ECB", $key);
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  ±0 17. června 14:48
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Šimon Rataj
Martin Dráb:17. června 17:47

Na šifrování delších věcí bych ECB opravdu nedoporučoval, protože:

  • každých n bajtů změní na jiných n bajtů (n je velikost bloku, pro AES 16),
  • stejný otevřený text se vždy šifruje na stejný šifrový text, takže útočník pozná, když posíláš stejnou zprávu. V případě, že ví něco víc o charakteru otevřeného textu (např. že je to anglický text), dokáže jej pečíst na základě frekvenční analýzy výskytu n-tic,

Samotná symetrická se ti (podle předpokladu) bezpečně postará o data velikosti jednoho bloku. Na delší data potřebuješ ji pustit v určitém módu (CBC, CTR, ...), případně s použitím rozumného zarovnání (padding).

Nahoru Odpovědět  +5 17. června 17:47
2 + 2 = 5 for extremely large values of 2
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Martin Dráb
Jindřich Máca:17. června 18:02

Moc se omluvám, to mělo být +1... #dotykovydisplay

 
Nahoru Odpovědět  +1 17. června 18:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.