Puncte:0

AES-GCM poate fi stocat împreună în DB?

drapel za

Încerc să criptez și să stochez șiruri de caractere în PHP, conform exemplului #1 de pe Documentația PHP openssl_encrypt.

<?php
//$key ar fi trebuit să fie generat anterior într-un mod sigur din punct de vedere criptografic, cum ar fi openssl_random_pseudo_bytes
$text clar = „mesajul de criptat”;
$cipher = "aes-128-gcm";
dacă (în_array($cifru, openssl_get_cipher_methods()))
{
    $ivlen = openssl_cipher_iv_length($cifru);
    $iv = openssl_random_pseudo_bytes($ivlen);
    $ciphertext = openssl_encrypt($text simplu, $cifrare, $cheie, $opțiuni=0, $iv, $tag);
    //magazin $cifru, $iv și $etichetă pentru decriptare mai târziu
    $original_plaintext = openssl_decrypt($text cifrat, $cifrare, $cheie, $opțiuni=0, $iv, $tag);
    ecou $original_text simplu."\n";
}
?>

Dacă utilizatorul este responsabil pentru amintirea $key, este sigur să depozitați $iv alături de șirul criptat din baza de date?

Din această altă întrebare AES 256 CBC - Stocarea datelor locale, cum se salvează vectorul IV? iar altele pot vedea importanța unui unic $iv dar raspunsul mentioneaza:

Dacă utilizați AES-CBC, puteți stoca IV-ul așa cum doriți. Nu este important să păstrați secretul IV; trebuie doar să te asiguri că un adversar nu poate prezice IV-ul în avans.

Acest lucru se aplică și pentru GCM?

EDIT: Dacă nu mă înșel, această întrebare SO, Încercarea de decriptare cu aes-256-gcm cu php este raspunsul.(care este da, IV-ul și Tag-ul pot fi stocate alături de textul cifrat)

kelalaka avatar
drapel in
O întrebare înrudită [Înregistrare criptată linie cu linie stocată cu iv/salt/iterații. Cât de sigur este?](https://crypto.stackexchange.com/q/78350/18298)
Puncte:4
drapel cr

Acest lucru se aplică și pentru GCM?

Este chiar mai important pentru GCM decât pentru CBC să nu refolosească niciodată un IV cu aceeași cheie de criptare. Ar rupe complet criptarea.

IV-ul nu este secret. Puteți face orice doriți cu el, inclusiv stocarea într-o bază de date.

drapel za
Îmi pare rău, ar fi trebuit să exprim întrebarea mai clar - dar ați reiterat-o, că IV-ul nu este un secret și poate fi într-adevăr stocat în DB. Mulțumesc.
Swashbuckler avatar
drapel mc
@waffl Principiul lui Kerckhoffs: Un criptosistem ar trebui să fie sigur chiar dacă totul despre sistem, *cu excepția cheii*, este de cunoștință publică.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.