RE: Firmar datos | comandos APDU - Foro de Consultas - Seguridad
Foros de consultas y discusión
RE: Firmar datos | comandos APDU
gustavo javier azambuja bonilla, modificado hace 7 años.
Firmar datos | comandos APDU
Youngling Mensajes: 4 Fecha de incorporación: 29/01/18 Mensajes recientes
00
Estimados, estoy siguiendo el "Ejemplo de firma digital" de la documentación para obtener la firma de un HASH, encontre dos errores (que corregí), pero necesito ayuda con la respuesta:
Primero, en el paso 2: PSO_HASH, devuelve un error en los datos... y según entiendo, falta agregar un "90 19" antes del hash, para indicarle el tamaño del mismo. Una vez haces eso, el comando:
regresa un:
que según veo significa "Command successfully executed; \XX\ bytes of data are available and can be requested using GET RESPONSE."
Ahora, en la documentación no figura algo evidente, antes de ejecutar el último comando (PSO-CDS) hay que enviar el PIN de la eCI, ejemplo:
En definitiva, el ciclo completo es algo como:
Ahora, mi pregunta es, en que formato está esta respuesta? como obtengo el hash?
Gracias.
2.5.0.0
Primero, en el paso 2: PSO_HASH, devuelve un error en los datos... y según entiendo, falta agregar un "90 19" antes del hash, para indicarle el tamaño del mismo. Una vez haces eso, el comando:
>> 00 2A 90 A0 20 90 19 A3D00CBE708B435D6E7B898770378FD54319B2FD7571C769DB414094E7008624 |
<< 61 19 |
Ahora, en la documentación no figura algo evidente, antes de ejecutar el último comando (PSO-CDS) hay que enviar el PIN de la eCI, ejemplo:
>> 00 20 00 11 0C 31 32 33 34 00 00 00 00 00 00 00 00 |
En definitiva, el ciclo completo es algo como:
00 A4 04 00 0c A0 00 00 00 18 40 00 00 01 63 42 00 00 | |
00 22 41 B6 06 84 01 01 80 01 02 | |
00 2A 90 A0 20 90 19 A3D00CBE708B435D6E7B898770378FD54319B2FD7571C769DB414094E7008624 #Envio el HASH | |
00 20 00 11 0C 31 32 33 34 00 00 00 00 00 00 00 00 # Ingreso el PIN: 1234 | |
00 2A 9E 9A 00 # Obtengo como respuesta: | |
63 AD 64 C6 5D 0D E0 60 50 01 23 77 6F B7 2F 47 AB 47 DC 40 69 36 F1 1E 85 88 B6 C5 ED A0 24 DB | |
07 22 81 B0 0B 9C 0A 61 59 E2 CE F0 54 F6 94 88 06 7B 28 F9 84 E9 DD 44 96 7D D2 DB B5 BC E7 0A | |
8D 0F 3C 81 8F C2 90 85 4B 1D 25 52 AB 6B 99 09 2E 36 32 84 62 E5 58 F4 89 40 61 D0 0E 06 1C 84 | |
80 44 2E 48 96 71 D1 78 71 A3 41 21 D3 B5 CB 47 8A 32 B6 9E A3 36 2B 65 39 76 20 B1 21 A2 01 21 | |
2C A7 AB 88 3E CF DD 14 59 D3 B6 F0 94 F8 CC AC A1 03 99 AC C4 BF D1 D7 0D B8 33 9D 21 8F 02 BD | |
2A 37 BD 2C BF 7D 79 C3 5C 92 B9 A4 05 5C 22 BD 31 E7 CA F9 1F E3 D3 E8 A8 6D A6 89 D5 12 40 3E | |
38 8B 0F 3A 62 1D DD 70 DC 25 BB EA 22 6F 01 68 B7 30 58 F6 0E CA 5A AD E4 0E 38 A1 62 F7 E5 83 | |
2E 13 DF 06 E5 F3 ED FF 3F 0A E8 48 50 66 0A 1B 5F 2F 0D D2 8F 61 F2 15 65 F7 FC 8C D9 03 27 BF |
Gracias.
2.5.0.0
Nicolas Piquerez, modificado hace 7 años.
RE: Firmar datos | comandos APDU
Padawan Mensajes: 62 Fecha de incorporación: 3/10/16 Mensajes recientes
00
Como andas Gustavo?
Es correcto la observación sobre los parametros 90 19 faltantes, corregimos el instructivo a la brevedad.
Con respecto a la operación de validar el PIN también es correcto que hay que realizarlo antes de hacer la firma, yo lo realizaria antes de enviar el hash, de esta manera el comando PSO_HASH retorna 90 00 . Me parece que si no se ingresa el PIN antes de enviar el hash la smartcard se encuentra en un estado de error.
Luego la respuesta del comando PSO-CDS son 256 bytes, que corresponde a la firma SHA256 con RSA. Estos bytes son el hash cifrado con la clave privada de la cedula, deberias de poder volver a obtener el hash desencriptando el mismo con la clave pública. De esta manera si el hash es el mismo que el original podemos afirmar que se realizo una firma del mismo con la cedula.
Cualquier otra duda a las ordenes y gracias por las oservaciones.
Saludos
Es correcto la observación sobre los parametros 90 19 faltantes, corregimos el instructivo a la brevedad.
Con respecto a la operación de validar el PIN también es correcto que hay que realizarlo antes de hacer la firma, yo lo realizaria antes de enviar el hash, de esta manera el comando PSO_HASH retorna 90 00 . Me parece que si no se ingresa el PIN antes de enviar el hash la smartcard se encuentra en un estado de error.
Luego la respuesta del comando PSO-CDS son 256 bytes, que corresponde a la firma SHA256 con RSA. Estos bytes son el hash cifrado con la clave privada de la cedula, deberias de poder volver a obtener el hash desencriptando el mismo con la clave pública. De esta manera si el hash es el mismo que el original podemos afirmar que se realizo una firma del mismo con la cedula.
Cualquier otra duda a las ordenes y gracias por las oservaciones.
Saludos
gustavo javier azambuja bonilla, modificado hace 7 años.
RE: Firmar datos | comandos APDU
Youngling Mensajes: 4 Fecha de incorporación: 29/01/18 Mensajes recientes
00
Gracias Nicolas!
Tengo unas preguntas mas:
Estoy haciendo pruebas y responde igualmente (pero con un RSA diferente) si haces un 90 20, hasta 90 24... cual es el número correcto? 19?
Con respecto a la operación de validar el PIN también es correcto que hay que realizarlo antes de hacer la firma, yo lo realizaria antes de enviar el hash, de esta manera el comando PSO_HASH retorna 90 00 . Me parece que si no se ingresa el PIN antes de enviar el hash la smartcard se encuentra en un estado de error.Según mis pruebas solo da error (6A 80) al ejecutar el PSO-CDS... el PSO_HASH podes enviarlo sin el pin que te responde con un 90 19.
Cuál sería el comando para obtener la clave pública?
Gracias!
2.5.0.0
Tengo unas preguntas mas:
Nicolas PiquerezComo andas Gustavo?
Es correcto la observación sobre los parametros 90 19 faltantes, corregimos el instructivo a la brevedad.
Es correcto la observación sobre los parametros 90 19 faltantes, corregimos el instructivo a la brevedad.
Con respecto a la operación de validar el PIN también es correcto que hay que realizarlo antes de hacer la firma, yo lo realizaria antes de enviar el hash, de esta manera el comando PSO_HASH retorna 90 00 . Me parece que si no se ingresa el PIN antes de enviar el hash la smartcard se encuentra en un estado de error.
Luego la respuesta del comando PSO-CDS son 256 bytes, que corresponde a la firma SHA256 con RSA. Estos bytes son el hash cifrado con la clave privada de la cedula, deberias de poder volver a obtener el hash desencriptando el mismo con la clave pública. De esta manera si el hash es el mismo que el original podemos afirmar que se realizo una firma del mismo con la cedula.
Cualquier otra duda a las ordenes y gracias por las oservaciones.
Saludos
Cualquier otra duda a las ordenes y gracias por las oservaciones.
Saludos
Gracias!
2.5.0.0
José Rodriguez, modificado hace 6 años.
RE: Firmar datos | comandos APDU
Youngling Mensaje: 1 Fecha de incorporación: 19/06/18 Mensajes recientes
00
Buenas tambien me interesa saber el comando para obtener la clave pública? Y si se puede algun ejemplo.
Muchas Gracias!
Saludos
Muchas Gracias!
Saludos
Francisco Perdomo, modificado hace 6 años.
RE: Firmar datos | comandos APDU
Padawan Mensajes: 36 Fecha de incorporación: 27/03/17 Mensajes recientes
00
Lo cierto es que no tenemos una implementación hecha que saque la clave pública o el certificado, pero ahí te comparto lo que encontramos en el manual respecto a esto:
Si tienes mas consultas sigue preguntando! Te agradecemos si luego nos cuentas como resolviste, así queda la informacion para todos!
Saludos!
Si tienes mas consultas sigue preguntando! Te agradecemos si luego nos cuentas como resolviste, así queda la informacion para todos!
Saludos!