我想使用芯片和密码信用卡进行身份验证,即将一张卡注册到一个系统中,然后使用它登录(仅用于演示/娱乐目的,这样就不需要防弹安全性)。
我有一个想法:执行一次虚假交易(显然不会提交给银行)来证明用户是否拥有该卡的PIN代码,但如何证明(密码学上的;我假设在成功的交易中该卡返回的数据与卡号有某种关系,并且有一种方法可以检查该卡的真实性),即该卡确实是先前注册的卡,而不是其他随机卡?
谢谢。
发布于 2015-04-25 05:45:22
首先,看看[这个问题]。
基于这个问题,我对银行卡的理解是,芯片卡将自己的accNumber+PIN放入到银行服务器加密的签名消息中(可能带有来自POS的一些挑战数据,以避免重放攻击),并要求销售点终端代其发送此消息。POS终端无法读取消息,但可以将其发送到银行。银行对消息进行验证,检查签名,并将其与数据库中的accNumber+PIN进行比较,并向POS终端返回“是/否”。(免责声明:这就是我认为它可以工作的方式,我不知道它是否真的是这样工作的。)
在安全行业中,还有其他常见的基于问题的方法(例如,使用ID徽章进入您的办公大楼)。它们的工作方式如下:当您将卡片挂在墙上的读取器上时,芯片卡、读卡器和数据库有以下交换:
John Smith
,我的公钥是pub_key
。”pub_key
属于John Smith
吗?”rand_32bit_msg
。”enc_msg = encrypt(rand_32bit_msg, priv_key)
,“这是enc_msg
。”decrypt(enc_msg, pub_key) == rand_32bit_msg
是吗?“好吧,我相信你拥有私钥,你来吧!”想必你可以从不同的制造商购买一套芯片卡和读卡器,但我不知道这是否在业余爱好项目的预算范围之内。
https://security.stackexchange.com/questions/68619
复制相似问题