it-swarm-eu.dev

Qual è la differenza tra numero di serie e identificazione personale?

Ho problemi a capire qual è la differenza tra il numero di serie di un certificato e il suo hash SHA1.

Il MSDN dice:

Numero di serie Un numero che identifica in modo univoco il certificato ed è rilasciato dall'autorità di certificazione.

Quindi posso identificare un certificato tramite il suo numero seriale, giusto?

Wikipedia dice per l'hash:

Thumbprint: L'hash stesso, usato come forma abbreviata del certificato di chiave pubblica.

Quindi l'hash identifica la chiave (ad es. RSA).

Attualmente sto facendo delle ricerche su Android certificati di app e ho trovato alcuni certificati interessanti:

[Issuer][Serial][SHA1 Hash][Valid From]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, [email protected]][00936EACBE07F201DF][BB84DE3EC423DDDE90C08AB3C5A828692089493C][Sun, 29 Feb 2008 01:33:46 GMT]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, [email protected]][00936EACBE07F201DF][6B44B6CC0B66A28AE444DA37E3DFC1E70A462EFA][Sun, 29 Feb 2008 01:33:46 GMT]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, [email protected]][00936EACBE07F201DF][0B4BE1DB3AB39C9C3E861AEC1348110062D3BC1B][Sun, 29 

E ce ne sono molti altri che condividono lo stesso seriale, ma hanno hash diversi.

Quindi può esserci un certificato con chiave diversa? Chi sta effettivamente creando il numero seriale quando si crea un certificato per un Android? Per l'hash è chiaro, ma posso creare un nuovo certificato con lo stesso numero seriale di un altro certificato?

Posso essere sicuro che un certificato con lo stesso numero seriale sia stato creato dalla stessa persona?

76
reox

In certificato , il numero di serie viene scelto dalla CA che ha emesso il certificato. È appena scritto nel certificato. L'autorità di certificazione può scegliere il numero seriale in qualsiasi modo lo ritenga opportuno, non necessariamente in modo casuale (e deve contenere 20 byte). Una CA è supposto per scegliere numeri di serie univoci, ovvero unici per la CA. Non puoi contare sul fatto che un numero seriale sia unico in tutto il mondo; nel mondo dei sogni di X.509, è la coppia issuerDN + serial che è unica in tutto il mondo (ogni CA ha il proprio nome distinto univoco e si cura di non riutilizzare i numeri di serie).

L'impronta digitale è un valore hash calcolato sul certificato completo, che include tutti i suoi campi, inclusa la firma. Quello è unico al mondo, per un dato certificato, fino alla resistenza intrinseca alla collisione della funzione hash utilizzata. Il software Microsoft tende a utilizzare SHA-1, per il quale sono noti alcuni punti deboli teorici, ma nessuna collisione effettiva è stata prodotta (ancora). Un attacco di collisione su SHA-1 è stato ora dimostrato dai ricercatori di CWI e Google.

(Le impronte digitali che mostri sembrano essere composte da 40 caratteri esadecimali, ovvero 160 bit, che indicano di nuovo SHA-1 come funzione hash plausibilmente usata.)

81
Thomas Pornin

L'impronta digitale è sha1sum o sha256sum del certificato nel suo formato binario .DER. Cioè, da un terminale Unix si esegue:

sha1sum /path/to/mycertificate.der

L'output esadecimale di quel comando è la tua identificazione personale. Si chiama anche l'impronta digitale. Provalo e vedrai.

4
typelogic