Devo personalizzare la mia impronta digitale / impronta digitale della CA principale? (SHA1 o MD5)

3

Il mio obiettivo è di rendere l'identificazione personale di un certificato "più semplice" da verificare e non ridurre la sicurezza nel farlo.

Dato che la tecnologia Bitcoin basata su RSA ha un concetto chiamato "Indirizzo vanity" in cui le chiavi casuali vengono rigenerate più e più volte finché l'hash non ha bit principali definiti dall'utente (il contenuto e la lunghezza dei bit è arbitraria) e non riduce la sicurezza, penso che sia possibile applicare questo concetto a una CA e alla sua impronta digitale / impronta digitale e semplificare la convalida manuale.

Ovviamentelapotenzadicalcolonecessariaperpersonalizzareibitprincipalidiquestohashdiventapiùlunga(esponenzialmentepiùlunga??)perognibitchevogliamopersonalizzare,questaattivitàriduceinqualchemodolasicurezza?

Domanda

  • Aumenterebbelasicurezzapericertificatiradicenonattendibilicherichiedonolaverificamanuale?Chediredeglialtritipidicertificato?

  • Poiché SHA1 è protetto contro i secondi attacchi di preimage , c'è qualche rischio di avere una CA continuamente rigenera le chiavi in modo che l'impronta digitale sopra possa leggere 01:23:45:67:89:01:23:45:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx (numero variabile di bit impostati, meno bit univoci da verificare)

  • Se questa è una buona idea, quanti bit dovrebbero essere impostati per una CA radice con una scadenza lunga, rispetto a una media, contro una CA utente o server Web con una scadenza consecutivamente più breve? (nell'anno 2013)

  • Quale software server supporterà questa personalizzazione o lo scripting di questa rigenerazione fino a quando i criteri non saranno impostati?

  • Quale valore è appropriato per facilitare la convalida? L'impostazione di tutti gli zeri potrebbe rendere più difficile la verifica e poiché la gente pensa che la numerazione sequenziale di Base10 per gli umani possa essere facile 01:02:03:04:05:06:07:08:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

posta random65537 22.07.2013 - 22:51
fonte

2 risposte

4

Forzare "bit di vanità" per assumere un valore specifico non diminuisce la sicurezza (la seconda resistenza di preimage è la seconda resistenza di preimage) ma è costosa. Vale a dire, per ottenere n "vanity bit" su un valore specifico, devi provare (in media) 2 n certificati fino a quando una corrispondenza è trovato. Ogni tentativo comporta la modifica di alcuni minuti nel contenuto del certificato (ad esempio nell'estensione Subject Key Identifier , che contiene byte opachi), quindi firma il certificato, quindi lo esegue l'hashing. La parte della firma non può essere evitata (ma vedi sotto), perché anche l'identificazione personale viene calcolata su di essa.

Questa operazione di firma sarà la parte più costosa, di gran lunga. Puoi sperare, realisticamente, per duemila tentativi al secondo o giù di lì (con pochi PC, a seconda del tipo e della dimensione della chiave). Ciò significa che ci vorranno quindici giorni di calcolo per ottenere 30 "bit di vanità", e ogni bit aggiuntivo raddoppia il costo. Non otterrai otto byte ; al massimo quattro. I vantaggi sono così limitati: un hash SHA-1 è 20 byte, quindi è al massimo il 20% dello sforzo che viene salvato.

Inoltre, anche se impostato su un valore specifico, questi bit devono ancora essere controllati.

Il processo può essere sostanzialmente migliorato rendendo il certificato non autofirmato. Poiché un certificato "auto-rilasciato" è considerato a priori (vale a dire per magia, non essendo emesso da una CA-CA), non vi è alcun vero motivo per verificare l'auto-firma. Quindi quella firma non deve essere effettivamente corretta; ha solo bisogno, per scopi di decodifica, di essere una sequenza di byte di circa la giusta dimensione.

Quindi, puoi creare i tuoi "certificati di prova" semplicemente modificando gli ultimi byte della firma. Poiché il campo firma arriva per ultimo, questo processo può diventare veloce come una chiamata di hash elementare per prova. Crea una GPU e alcuni programmi e potresti provare miliardi al secondo.

Un miliardo sembra ottimo da lontano, ma in realtà è solo di 30 bit. Con un buon cluster GPU e un po 'di pazienza, puoi sperare, per esempio, in 52 bit di vanità. Questo si traduce in 13 caratteri esadecimali su 40 di un hash SHA-1. A mio parere, questo non vale ancora la pena, ma hey, questa è la tua CPU.

Sulla parte tecnica, se vuoi farlo, ti suggerisco di implementare la tua SHA-1-on-GPU. Avrai bisogno di diventare abile nella programmazione della GPU, anche se provi a riutilizzare un'implementazione esistente; e la parte SHA-1 non è difficile.

    
risposta data 22.07.2013 - 23:50
fonte
4

Questo è paragonabile all'opzione VisualHostKey di ssh per la visualizzazione delle rappresentazioni grafiche dei fingerprint dei certificati .

Would this increase security for non-trusted root certificates that need manual verification?

C'è il rischio di creare un falso senso di sicurezza. Se il tuo browser / client ssh / etc viene visualizzato "Pericolo pericolo, certificato non attendibile!" ma la tua unica conferma è di controllare i primi pochi byte, piuttosto che l'intera impronta digitale, stai rendendo il lavoro del tuo aggressore molto più facile. Tutto quello che devono fare è generare un certificato autofirmato che inizi con quei bit.

D'altra parte, se l'attaccante non nota il tuo schema, puoi facilmente vedere che non è il tuo cert.

Per un client che visualizza l'impronta digitale questo è molto simile alla situazione con VisualHostKeys, ma è più facile per un utente malintenzionato generare un certificato falso conforme.

Quindi: contro un attaccante che si accorge di ciò, ti farà del male più di loro; contro un utente malintenzionato che non se ne accorge, è utile per te.

What about [certificates that chain back to a trusted root]?

Se il client si connette senza ulteriori interventi da parte dell'utente quando il certificato viene convalidato (ad esempio un browser Web), direi che non è utile. L'unico modo in cui potresti dire se fossi MITM sarebbe se andassi a dare un'occhiata alle informazioni sul certificato dopo che ti sei connesso. A questo punto l'attaccante ha già il tuo cookie di sessione sicuro, ma le probabilità sono che non effettuerai questo controllo.

Inoltre, un utente malintenzionato che ha fatto il possibile per ottenere un certificato valido per il tuo indirizzo è molto probabile che abbia guardato il certificato originale in dettaglio, notato lo schema e copiato.

    
risposta data 22.07.2013 - 23:36
fonte

Leggi altre domande sui tag