NSS / OpenSSL compromesso su un'applicazione linux incorporata che utilizza un TPM tramite pkcs11?

0

Sono in bilico tra l'uso di OpenSSL o NSS in un'applicazione Linux incorporata che utilizza un TPM (HSM).

EDIT: Ho bisogno di un server SSH e Apache che utilizza TLS, entrambi che usano le chiavi protette dal TPM.

Sto cercando di soddisfare i seguenti vincoli:

  1. Buon supporto di PKCS # 11 (almeno la gestione delle chiavi di curva ellittica)
  2. Non troppe dipendenze
  3. Compilazione incrociata

Per quanto ho potuto trovare, NSS supporta nativamente PKCS # 11, e OpenSSL ha bisogno di un motore esterno, libengine-pkcs11-openssl, che supporta solo chiavi RSA. Quindi una scelta OpenSSL mi porterebbe ad aggiungere funzionalità a questo motore. Ci sono altri motori PKCS11 disponibili per OpenSSL con un supporto migliore di questo?

Per quanto riguarda le dipendenze, NSS richiede Netscape Portable Runtime (NSPR). In totale, NSS e le sue dipendenze hanno 2,5 x più righe di codice di OpenSSL. Questo è uno svantaggio e forse un ostacolo allo spettacolo per le applicazioni incorporate, eccetto se parti di esso inutili per l'applicazione possono essere facilmente eliminate dalla compilazione tramite alcune definizioni. È possibile?

Riguardo alla compilazione incrociata, il confronto wikipedia afferma che NSS è macchinoso. Qualcuno ha un how-to per proporre o un link per favore?

Più in generale, i consigli di persone che hanno sperimentato uno o entrambi con un TPM sono i benvenuti.

    
posta lalebarde 10.10.2014 - 11:14
fonte

1 risposta

2

A seconda di ciò che stai cercando di fare, potresti non usare né NSS né OpenSSL. PKCS # 11 è un'API che fornisce funzioni per l'esecuzione di primitive crittografiche su chiavi; è ipotizzabile utilizzare questa API direttamente anziché tramite una libreria aggiuntiva.

Avresti bisogno di NSS o OpenSSL se hai bisogno di alcune funzionalità non PKCS # 11, ad es. supporto di certificati X.509 o SSL. Ma se la tua applicazione richiede solo firme grezze, quindi usare direttamente PKCS # 11 può essere una cosa ragionevole da fare.

Come per le linee di codice, non hanno importanza tanto quanto le dimensioni binarie per i sistemi embedded. Il rapporto tra righe di codice e dimensioni binarie non è fisso; dipende dal linguaggio, dallo stile di codifica, dalla quantità di commenti, dal codice generato automaticamente durante la compilazione ... In effetti, il modo più veloce per ottenere le informazioni che cerchi è probabilmente provare entrambe le librerie (e possibilmente l'opzione senza librerie) e vedere per te stesso quanto bene si adattano al tuo ambiente, al processo di compilazione e ai vincoli dimensionali.

    
risposta data 10.10.2014 - 13:23
fonte

Leggi altre domande sui tag