Erratas detectadas en la documentación del DNIe (Dni Electrónico)

via:https://zonatic.usatudni.es/es/aprendizaje/aprende-sobre-el-dnie/57-aspectos-tecnicos/205-la-comunicacion-cifrada-del-dni-electronico.html?start=3

La comunicación cifrada del DNI electrónico – Autenticación externa (External Authenticate)

Indice del artículo

Autenticación interna (Internal Authenticate)

Autenticación Externa

La autenticación externa es el proceso mediante el cual el terminal se autentica ante la tarjeta y ésta confía en él.

Dentro del proceso de establecimiento de canal seguro que tiene lugar entre la tarjeta y el terminal, la autenticación, tal y como se muestra en la imagen es la fase posterior a la autenticación interna.

Fase Autenticación Externa

Fase de autenticación externa en el establecimiento de canal seguro

El proceso que se sigue se muestra en la siguiente imagen:

Secuencia de la Autenticación Externa

Secuencia de la Autenticación Externa

El terminal solicita a la tarjeta un reto C (o challenge). La tarjeta genera un valor de 32 bytes 32 bytes aleatorio denominado RND.ICC y lo devuelve al terminal.

El terminal genera un valor aleatorio de 32 bytes denominado Kifd .

Como ejemplo se considera que el resumen que genera el terminal es de 32 bytes.

A continuación el terminal debe generar un conjunto de bytes aleatorios denominados PRND2 y que serán utilizados como caracteres de relleno. El número de bytes a generar son el resultado de restar a la longitud del módulo de la clave privada del certificado de autenticación del terminal (denominado N.IFD), la longitud de Kifd, la longitud del reto y 2, es decir:

Longitud (PRND2) = N.IFD - Longitud(Kifd) - Longitud(C) - 2

El terminal firma sobre los siguientes datos concatenados (||):

'6A' || PRND2 || Kifd || Hash(PRND2 || Kifd || RND.IFD RND.ICC || SN.IFD SN.ICC) || 'BC'

Es decir:

SIG = DS('6A' || PRND2 || Kifd || Hash(PRND2 || Kifd || RND.IFD RND.ICC ||  SN.IFD SN.ICC) || 'BC')

A continuación se comparan SIG y N.IFD menos SIG y se utiliza el menor de ellos:

SIGMIN = min( SIG, N.IFD - SIG )

Finalmente se envía SIGMIN cifrado (E, del inglés Encipher) con la clave pública de la tarjeta (PK.ICC.AUT):

E[PK.ICC.AUT]( SIGMIN )

La tarjeta descifra los datos recibidos y valida la firma. En caso de ser todo correcto, la tarjeta confía en el terminal.

Términos y siglas:

  • C: reto
  • RND.IFD: valor aleatorio de 32 bytes
  • SN.IFD: Número de serie del terminal
  • Kifd : valor aleatorio de 32 bytes generado por el terminal
  • PRND2: conjunto de bytes aleatorios usados como caracteres de relleno
  • N.IFD: módulo de la clave privada del certificado de autenticación de la tarjeta
  • SIG: datos firmados
  • SIGMIN: mínima expresión de datos
  • PK.IFD.AUT: clave pública del terminal

Related posts:

  1. Documentación Microsoft GRATIS !!
  2. DNI electrónico en Firefox 4 con Mac OS X
  3. Comando Screen – Ver dos personas el mismo terminal.
  4. INSTALAR CIAO PROLOG EN MAC OS X (XGP)

About this entry