Il phpseclib è un'alternativa sicura e affidabile a OpenSSL?

5

So che OpenSSL deve essere installato e attivato tramite apache e i file di configurazione, che possono essere ingombranti o addirittura impossibili, e che phpseclib è più flessibile e più facile da gestire rispetto a OpenSSL (problema X.509 / in alcune situazioni l'implementazione di PHP di OpenSSL richiede un certificato X.509 per creare una coppia di chiavi valida), quindi i ' Mi piace usare phpseclib invece di OpenSSL.

MA, e questa è la domanda, è davvero una valida alternativa per la sicurezza? Non è problematico avere il suo codice sorgente in giro sul server? Ci sono alcune implicazioni sulla sicurezza negativa che usano phpseclib, o qualsiasi implementazione php di RSA per quella materia?

Situazione:

  • OpenSSL: + native + binary -less flexible -less versatile -semplici problemi di configurazione
  • phpseclib: + flexible + portable + più versatile -non nativo -non compilato

Domanda:

  • Sicurezza?

Modifica : Io uso OpenSSL per creare una coppia di chiavi e quindi crittografare i dati direttamente sul DB (richiesta del client, in nessun modo intorno ad essa). Ma la domanda qui è generale, indipendente dall'applicazione finale.

    
posta Larzan 28.10.2013 - 20:06
fonte

2 risposte

5

L'implementazione sicura degli algoritmi crittografici è difficile. Dovrei saperlo. Gli algoritmi crittografici concentrano i segreti nelle chiavi, che quindi sono molto preziosi e molte perdite legate all'implementazione (ad esempio piccole variazioni del tempo di esecuzione) possono diventare disastrose se applicate alla crittografia.

Ci sono modi per evitare tali perdite, ma richiedono attenzione, un sacco di tentativi ed errori e, soprattutto, una conoscenza approfondita del comportamento a basso livello del motore di esecuzione. Di norma, più ti allontani dall'hardware, più è difficile ottenere il codice dagli attacchi del canale laterale. PHP è molto più lontano dal metallo rispetto al codice C.

Ora non dico che non è possibile ; per esempio, un'implementazione resistente alla temporizzazione di un algoritmo crittografico è abbastanza possibile in Java o .NET. Quindi dovrebbe essere fattibile anche in PHP. Ma, come al solito, richiederà parecchio controllo esterno per accertare.

Ricorda che new is bad in crittografia; sicurezza è acquisita attraverso l'esposizione prolungata. Nonostante tutte le sue carenze, OpenSSL ha avuto molta esposizione nel corso degli anni. phpseclib è più recente e utilizza un framework "un po 'ostile" quando si tratta di perdite di canale laterale, quindi è troppo presto per dichiararlo adatto alla produzione.

Non so cosa intendi per "problema X.509". Voglio dire, X.509 è una progenie dell'inferno; ma non vedo come una implementazione in PHP farebbe meglio. L'unico punto buono di PHP è che PHP ha controlli sui limiti degli array, limitando così le conseguenze degli overflow del buffer (crash dell'applicazione invece di sovraccaricare il buffer); questo è importante per X.509 solo perché sembra che molte persone non siano in grado di implementare correttamente la codifica / decodifica ASN.1, senza inciampare su questi buffer. Ma a parte questo, la complessità di X.509 è invariata, sia che usi C o PHP.

L'idea di riscrivere tutto da zero, "per semplicità", si presenta regolarmente quando si parla di X.509. Ma il "problema" di X.509 non è che le normali implementazioni siano cattive; è che X.509 è un complesso intrinsecamente , perché cerca di affrontare in anticipo la complessa questione della delega di fiducia (tutte le soluzioni in competizione cercano semplicemente di farla da parte); e X.509 (lo standard) ha accumulato un sacco di legacy crud. Riscrivendolo da zero non lo renderà più semplice, a meno che non rimuovi le parti dello standard che non ti piacciono, nel qual caso sarà più semplice, ma non funzionerà.

    
risposta data 28.10.2013 - 21:21
fonte
4

No.

phpseclib non è altrettanto ben controllato di OpenSSL, l'ultimo dei quali è facilmente nell'elenco dei 10 top della maggior parte dei codici scrupolosamente controllati in uso.

Sebbene i futuri bug siano difficili da prevedere, maggiore è l'attenzione di un po 'di software, più rapidamente i bug (e in particolare i problemi di sicurezza) vengono eliminati. OpenSSL è molto maturo. D'altra parte, phpseclib non lo è assolutamente.

Questo non vuol dire che il phpseclib sia chiaramente insicuro; potrebbe essere un bit di codice molto ragionevole. Ma non è allo stesso livello di OpenSSL perché non ha visto il livello di scrutinio dal calibro dei revisori di OpenSSL.

Inoltre, se intendi utilizzare phpseclib invece di Apache / SSL per fare HTTPS, allora sicuramente lo stai facendo male. E qualunque sia il "Problema X.509" è che tu stai parlando, questa non è una soluzione ragionevole.

    
risposta data 28.10.2013 - 20:50
fonte

Leggi altre domande sui tag