signatureAlgorithm vs. tbsCertificate - signature

3

Da RFC X.509:

Certificate  ::=  SEQUENCE  {
     tbsCertificate       TBSCertificate,
     signatureAlgorithm   AlgorithmIdentifier,
     signature            BIT STRING  }

TBSCertificate  ::=  SEQUENCE  {
     version         [0]  Version DEFAULT v1,
     serialNumber         CertificateSerialNumber,
     signature            AlgorithmIdentifier,

Mi sembra che tbsCertificate - > firma e firmaAlgoritmo sono ridondanti? Che dovrebbero essere sempre gli stessi?

In quanto tale, perché includere entrambi? Perché non includerne solo uno o l'altro?

    
posta neubert 01.12.2012 - 09:54
fonte

1 risposta

4

Entrambi i campi dovrebbero essere identici. Apparentemente la ridondanza era destinata a sconfiggere un oscuro vettore di attacco facendo affidamento su punti deboli che gli algoritmi di firma esistenti non hanno, e per obiettivi non specificati. Come dice Peter Gutmann nella sua guida in stile X.509 , quando si parla della% camposignature nel TBS:

There doesn't seem to be much use for this field, although you should check that the algorithm identifier matches the one of the signature on the cert (if someone can forge the signature on the cert then they can also change the inner algorithm identifier, it's possible that this was included because of some obscure attack where someone who could convince (broken) signature algorithm A to produce the same signature value as (secure) algorithm B could change the outer, unprotected algorithm identifier from B to A, but couldn't change the inner identifier without invalidating the signature. What this would achieve is unclear).

Un'implementazione sensata della convalida del certificato X.509 utilizzerà il campo esterno ( signatureAlgorithm ) per verificare la firma e controlleremo in seguito che il campo interno signature corrisponda al campo esterno (ma non riuscendo a farlo la verifica non danneggerà effettivamente la sicurezza).

    
risposta data 01.12.2012 - 16:20
fonte

Leggi altre domande sui tag