Algoritmo crittografico più potente disponibile in PHP 5.3

5

Quali opzioni sono disponibili nell'installazione predefinita e quali di terze parti come estensioni o framework?

P.S. Per crittografia intendo algoritmi che potrebbero essere decifrati, non crittografia unidirezionale come md5.

    
posta Mahdi 01.01.2013 - 21:12
fonte

2 risposte

9

Come primitiva di crittografia userei AES. Sia AES-128 che AES-256 sono abbastanza forti. Numericamente AES-256 è più strong, ma è molto improbabile che AES-128 sia il punto più debole del tuo sistema.

Poiché php non sembra supportare una modalità di crittografia autenticata, è necessario crearla da sola. Userò HMAC-SHA-256, possibilmente troncato a 128 bit.

Per combinare queste operazioni vorrei:

  1. Genera una nuova IV casuale con mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)
  2. Cifra il messaggio con AES in modalità CBC con quel IV
    Tieni presente che AES è sempre MCRYPT_RIJNDAEL_128 anche con chiavi a 256 bit PHP usa zero padding di default che non può essere rimosso senza ambiguità. Un riempimento migliore è PKCS # 7, ma dovrai aggiungerlo / rimuoverlo da solo. Esistono molte implementazioni esistenti per questo.
  3. Concatena la IV e il testo cifrato
  4. Calcola HMAC-SHA-256 sul risultato del passaggio 3 (MAC deve includere sia IV che padding)
  5. Concatena il risultato del passaggio 3 con il MAC

Per decrittografare:

  1. Verifica il MAC in modo resistente agli attacchi temporali
  2. Estrai l'IV dal testo cifrato
  3. Decrittografare il messaggio

Questo è uno schema encrypt-then-MAC. Si consiglia di utilizzare chiavi diverse per MAC e crittografia. Consiglio di derivare entrambi da una chiave master.

    
risposta data 02.01.2013 - 11:04
fonte
2

Esistono standard crittografici, che sono indipendenti dalla lingua, quindi consiglio di utilizzare AES.

Modifica

Una libreria PHP che supporta questo è MYCRYPT . Dovresti usare AES con una dimensione della chiave a 128 o 256 bit (dal momento che vuoi la possibilità più strong, usa la 256) e dovresti anche usare la modalità OCB quando possibile (ci sono brevetti su di essa in modo incompleto) e in altro modo CBC. Maggiori informazioni sulle modalità possono essere trovate qui .

    
risposta data 01.01.2013 - 22:01
fonte

Leggi altre domande sui tag