Primero, eche un vistazo a [ esta pregunta ] .
Según esta pregunta, mi comprensión de las tarjetas bancarias es que la tarjeta chip coloca su propio número de cuenta + PIN en un mensaje firmado cifrado para el servidor del banco (probablemente con algunos datos de desafío del POS para evitar los ataques de repetición) y pregunta al Terminal de punto de venta (POS) para enviar esto en su nombre. El terminal POS no puede leer el mensaje, pero puede enviarlo al banco. El banco valida el mensaje, verifica la firma y lo compara con el número de PIN de accNumber + en su base de datos y devuelve un SÍ / NO al terminal POS. (descargo de responsabilidad: así es como imagino que podría funcionar, no sé si es así como realmente funciona .)
Hay otros enfoques basados en preguntas de desafío comúnmente utilizados en la industria de la seguridad (por ejemplo, para que las credenciales de identificación ingresen a su edificio de oficinas). Funcionan de la siguiente manera: cuando coloca la tarjeta en el lector en la pared, la tarjeta chip, el lector de tarjetas y la base de datos tienen el siguiente intercambio:
-
Tarjeta chip a Lector : "Soy
John Smith
y mi clave pública es pub_key
".
-
Reader a Base de datos : "¿
pub_key
pertenece a John Smith
?"
-
Base de datos a Reader : "Sí".
-
Lector a Tarjeta chip : "Para probar que tiene la clave privada correspondiente, firme este mensaje:
rand_32bit_msg
."
-
Tarjeta chip a Lector :
enc_msg = encrypt(rand_32bit_msg, priv_key)
, "Aquí está enc_msg
".
-
Lector : ¿
decrypt(enc_msg, pub_key) == rand_32bit_msg
? "Ok, creo que eres el dueño de la clave privada, en lo que vienes"
Es de suponer que puedes comprar un juego de tarjetas con chip y lectores de varios fabricantes, pero no tengo idea si esto está dentro del presupuesto de un proyecto de hobby.