4 feb 2011

Introducción a TimeStamping o Sellado de Tiempo - Parte I

El timestamping es un servicio que se utiliza como una entidad externa de confianza, su funcion es dar fe, de que un dato ha existido desde un determinado momento en el tiempo, y que el mismo no ha sido modificado, esto se consigue a través de la respuesta de la TSA (Autoridad de Sellado de Tiempo). Dicha respuesta es asociada posteriormente por el requestor (solicitante del sellado de tiempo) al dato que se quiere dar fe de su existencia.

El sellado de tiempo es descrito por la RFC 3161 - Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP). La RFC describe los aspectos generales del protocolo, requerimientos de la TSA (Autoridad de Sellado de Tiempo), formato de los mensajes, como se deben realizar las transacciones, métodos de transporte y consideraciones de seguridad.
Este servicio se puede utilizar con datos que han sido firmados digitalmente o no. Ya que lo que se utiliza es su huella (valor hash) que se obtiene de aplicar una función hash a los datos o conjunto de datos que se quieren estampar.

Algunas de las cosas sobre las que se debe tener claridad para evitar confusiones son:
  • El documento a estampar no viaja hasta la autoridad de sellado de tiempo, solo lo hace su digesto (valor del hash) a través de un mensaje de requerimiento, TimeStampReq.
  • Una de sus funciones es determinar la existencia de un dato desde un instante en el tiempo, cuando dice dato, dice cualquier tipo de datos, inclusive una firma digital.
  • TimeStamping es un servicio que puede ser transportado por varios protocolos de internet como: Email,HTTP y TCP.
  • La respuesta de la TSA, el TimestampResp, es una estructura de datos la cual contiene otras estructuras de datos, como por ejemplo el TimestampToken. Este ultimo a su vez, en uno de sus campos, contiene firmado digitalmente (con la clave privada de la TSA) el valor hash del dato que fue enviado previamente por el requestor (quien solicita el sellado de tiempo). Y el campo "genTime", el tiemstamp (YYYYMMDDHHMMSS.Z) del momento en que se realiza el sellado
Cosas que me parecieron, importante a tener en cuenta son:
  • El master clock o fuente de tiempo para la TSA debe ser de referencia legal para la región de la misma. Es decir, un master clock certificado por algún organismo nacional o internacional. Los instrumentos de mayor precisión, considerados de straum 1 dentro el protocolo NTP, pueden ser GPS de gran exactitud
  • Cada dato que llegue a la TSA debe ser firmado digiltamente con su clave privada.
  • El algoritmo que genera el hash de los datos debe ser de un solo sentido (inyectivo), bien conocido y resistente a colisiones.
  • Una TSA puede tener varias firmas digitales dependiendo de la cantidad de políticas que se posean en la misma.
  • Las respuestas TimestampResp, poseen una estructura de datos opcional ,PKIFailureInfo, la cual puede brindar información muy valiosa a la hora de detectar errores.
  • La clave de firma de la TSA, debe ser lo suficientemente larga para asegurar un ciclo de vida mas bien largo. Aquí se debería considerar o evaluar cada cierto tiempo, la evolución de la tecnologías que hagan mas eficiente ataques de diccionarios, de colisión y otros que vayan surgiendo en el tiempo.
  • Las ventanas de tiempo entre una solicitud y una respuesta deberían considerarse a la hora de detectar ataques Man in the Middle

Por ahora, esto es lo mas importante que me ha quedado de la RFC, seguiré ampliando en otro post.