Debido a restricciones físicas, de seguridad y de coste, las plataformas confiables normalmente son incapaces de interactuar directamente con el usuario. La mayoría de las tarjetas inteligentes dependen de dispositivos de lectura no portables y muy caros para poder mostrar mensajes y recibir datos de los usuarios. En la mayoría de los casos los lectores de tarjetas son proporcionados por la entidad que no depende del usuario. La forma de solucionar este problema pasa por idear un protocolo de seguridad que permita a un usuario intercambiar mensajes con una plataforma segura de tal manera que la integridad y autenticidad de los datos sea incuestionable. Además, debe de ser posible que las acciones requeridas para la realización del protocolo puedan ser ejecutadas por una persona sin ayuda de un dispositivo informático. Se desarrollará un prototipo que permita realizar firmas digitales de un mensaje con una tarjeta inteligente en entornos no confiables sin que la integridad de la petición de firma se vea afectada por cualquier programa malicioso que se encuentre activo en dicho entorno. El objetivo principal del proyecto se centrará en encontrar una solución que permita que sea el propio usuario el verificador de la integridad de la petición. El dispositivo criptográfico no llevará a cabo ninguna operación sin antes verificarla y obtener una confirmación explicita por parte del usuario de la petición. El protocolo seguido para realizar la firma digital es el siguiente: 1. Acceso al sistema. El usuario introducirá su código PIN en la aplicación del terminal, este enviará la instrucción de verificación de número PIN a la tarjeta inteligente donde se verificará. 2. Inserción del mensaje. Si la tarjeta inteligente confirma que el número PIN introducido en el paso 1 es correcto, el terminal pide mediante un mensaje por pantalla que el usuario introduzca el mensaje que desea firmar. El terminal recoge el mensaje y se lo transmite a la tarjeta inteligente. 3. Petición de CAPTCHA. Cuando la tarjeta inteligente recibe un mensaje, lo almacena y genera una petición de CAPTCHA para enviar al servidor generador de CAPTCHAS. La petición está compuesta por tres campos: o Mensaje a firmar enviado por el usuario + OTP cifrado por la clave pública del servidor. o Firma digital del mensaje cifrado. o Identificador de usuario. 4. Envío de la petición. La tarjeta transmite al terminal la petición y este se encargará de enviarla hasta el servidor de CAPTCHAS a través de una conexión. 5. Generación CAPTCHA. El servidor comprueba que conoce al usuario y que tiene almacenada su clave pública. Comprueba la integridad del mensaje mediante la firma, si es capaz de verificarlo, entonces, descifrado el mensaje y procede a generar un CAPTCHA que contenga el mensaje y el OTP con la clave asociada al id del usuario incluido en la petición. 6. Retorno de CAPTCHA. El CAPTCHA se envía al terminal mediante la misma conexión iniciada en el paso 4. El terminal procede a mostrarlo. 7. Confirmación del mensaje. Si el mensaje es autentico el usuario introduce la clave OTP en el terminal, que deberá transmitirla hasta la tarjea. 8. Firmar mensaje. Cuando la tarjeta inteligente recibe un OTP correcto firma el mensaje que había almacenado en el paso 2 y se la envía junto con el mensaje al terminal.Ingeniería en Informátic