La extensión de uso de clave se describe en la sección 4.2.1.3 de X.509 , con las siguientes marcas posibles:
KeyUsage ::= BIT STRING {
digitalSignature (0),
nonRepudiation (1), -- recent editions of X.509 have
-- renamed this bit to contentCommitment
keyEncipherment (2),
dataEncipherment (3),
keyAgreement (4),
keyCertSign (5),
cRLSign (6),
encipherOnly (7),
decipherOnly (8) }
En SSL / TLS , cuando el certificado del servidor contiene una clave RSA, entonces:
-
se usa un conjunto de cifrado DHE o ECDHE, en cuyo caso la clave RSA se usa para una firma (consulte la sección 7.4.3 de RFC 5246: el mensaje "Intercambio de claves del servidor"); esto ejerce el uso de la clave digitalSignature ;
-
o "RSA sin formato" se usa, con un valor aleatorio (el secreto de maestro de 48 bytes) cifrado por el cliente con la clave pública del servidor (consulte la sección 7.4.7.1 de RFC 5246); Esto está justo en la definición de la claveEncifrado indicador de uso de la clave.
dataEncipherment no se aplica, porque lo que está encriptado no es información directamente significativa, sino un valor que se genera principalmente al azar y se usa para derivar claves simétricas. keyAgreement tampoco se aplica, porque ese es para algoritmos de acuerdo clave que no son un caso de cifrado asimétrico (por ejemplo, Diffie-Hellman). El indicador de uso keyAgreement aparecerá en un certificado que contiene una clave DH, no una clave RSA. nonRepudiation no se usa, ya que todo lo que esté firmado como parte de un intercambio de claves SSL / TLS no se puede usar como prueba para un tercero (no hay nada en un túnel SSL / TLS que el cliente pueda grabar y luego use para convencer a un juez cuando intente demandar al servidor en sí; los datos que se intercambian dentro del túnel no están firmados por el servidor).
Para resumir: digitalSignature para conjuntos de cifrado DHE (EC), keyEncipherment para conjuntos de cifrado RSA sin formato. Sin embargo, algunas implementaciones también aceptarán keyAgreement en lugar de keyEncipherment , o nonRepudiation incluso si digitalSignature no está establecida; y algunos simplemente ignorarán totalmente la extensión de Uso de la Clave (incluso si están marcados como críticos). Para una máxima interoperabilidad, especifique los cuatro indicadores en la extensión de uso de clave.