Come analizzare e selezionare una buona libreria crittografica

4

Vorrei sapere come si procede all'analisi e al prelievo di una libreria correlata alla crittografia. Ad esempio, oggi abbiamo molte implementazioni TLS che utilizzano primitive crittografiche, ad esempio: GnuTLS, OpenSSL, LibreSSL, ecc. Quindi, come selezionarne una?

  • Come analizzi la biblioteca? Controlli il codice sorgente?
  • Cosa succede se non sono un esperto di crittografia? Devo fare affidamento sulle organizzazioni che stanno dietro quelle librerie?

Recentemente ho usato le librerie relative a crittografia fornite da GNU, fondamentalmente perché sono open source (che consente a chiunque di rivedere il codice), hanno una buona documentazione e perché i progetti GNU sono generalmente attendibili e affidabili. Quali altri parametri, oltre al track record di lib, dovrei prendere in considerazione?

    
posta Falcon 23.08.2017 - 03:52
fonte

2 risposte

4

La valutazione delle librerie esterne è sempre un difficile punto di equilibrio. In molti casi, le persone che eseguono la valutazione non sono specialisti delle funzioni primarie della biblioteca (altrimenti, spesso non avrebbero bisogno di usare una libreria di terze parti). Questo è ancor più vero per la crittografia, perché l'esperienza nell'implementazione crittografica è rara, difficile da acquisire e difficile da accedere.

Pertanto, darei i seguenti consigli:

  • Non preoccuparti di provare a controllare il codice per sicurezza. Controllalo per chiarezza, facilità d'uso, capacità e idoneità alle tue esigenze .
  • Assicurati che le persone come lo useranno comprenderanno come utilizzare correttamente l'API . La maggior parte degli sviluppatori di applicazioni ha poca o nessuna comprensione di crypto. Molti non capiscono nemmeno bene quanto non sappiano sull'argomento (da qui l'allarmante abitudine comune di scrivere " codice spaghetti personalizzato " come funzione "encryption" o chiavi hard-coding all'interno del codice sorgente). Assicurati di non aver bisogno di prendere decisioni che non sono in grado di fare (come scegliere una modalità di operazione bloc cypher o selezionare una IV).
  • Assicurati che il codice sia correttamente gestito , ora e in futuro. Questo è probabilmente il punto più importante.
  • Qual è la reputazione della biblioteca e, forse più importante, la cronologia dei rapporti con i difetti del passato? Se non riesci a trovare traccia di questo tipo, stai lontano: il codice è troppo nuovo (o troppo oscuro) per essere stato testato correttamente o le persone che lo mantengono stanno scoraggiando attivamente tali test esterni (o anche peggio: non lo fanno molta manutenzione).
  • Prova a evitare le dipendenze rigide il più possibile: scrivi le tue interfacce con il codice che programmerai contro anziché direttamente la codifica con l'API. Si spera che ciò dovrebbe rendere più semplice cambiare libreria se diventa desiderabile o necessaria.

Alla fine, dovrai fidarti delle mani di un estraneo. La cosa migliore è trattarla come qualsiasi altra relazione commerciale: fidati ma verifica e disponi sempre di un piano di backup.

    
risposta data 23.08.2017 - 10:59
fonte
0

Per le persone (comprese quelle che sono tecnicamente molto capaci) che non sono specializzate in cripto, l'unico modo pratico per selezionare una buona libreria crittografica è di leggere su di esso e decidere.

In generale, affidarsi ai consigli di org rinomati / specialisti che raccomandano apertamente una particolare biblioteca non è una cattiva idea. Naturalmente potrebbero commettere errori, ma sarebbe comunque meglio di una decisione non informata.

Fattori aggiuntivi: cercherò le librerie in sviluppo attivo, il supporto per algoritmi e ampli recenti; protocolli (ad esempio, argon2 *) e supporto per il mio linguaggio di programmazione preferito.

    
risposta data 23.08.2017 - 04:08
fonte

Leggi altre domande sui tag