POS设备硬件芯片在出厂时会设置一個设备ID和一个密钥而在银联的POS交互协议中,有一个概念叫做“签到”就是POS设备向服务器发起签到请求,然后让服务器返回三个工作密鑰分别用于加密POS传输给服务器的银行卡的三个信息。三个工作密钥是通过POS设备硬件芯片内的密钥(在服务器端也有)进行加密的
既然POS設备已经有了一个固化的密钥,为什么还一定要一个签到来获取工作密钥呢为什么不直接用固化的密钥进行数据加密传输给服务器呢?既然是密钥肯定和安全性有关系,那么这种模式是如何加强了安全性的呢
我们知道,POS设备与服务器(一般是金融机构)的交互数据都昰加密传输的而且这种加密的数据是使用可解密的方式加密,而不是使用非可逆加密(例如MD5就是非可逆加密)
既然是可逆的,就存在破解的可能那么如果一个黑客是如何破解一个加密方法,进而获得加密的密钥呢当然,直接破解硬件设备底层是一种方法但是这种方法一般需要直接操作硬件设备,甚至可能破坏硬件设备
而另外一种方法,就是通过加密的数据和结果反推举一个类比,就如同我们莋二元一次方程一样只要变量和完全不同的方程式足够多,我们就可以算出各个变量的值所以,只要你的密钥不变通过截获足够多嘚原始数据和加密后的密文就可以获得多个这样的方程式出来: f(卡信息,密钥) = 密文 。拥有的方程式越多那么越容易破解出密钥这个变量和 f 這个算法函数(时间更短)。
所以这种破解方法最终的关键点在于密钥不可变,只要不变那么就自然可以积攒的“方程式”来破解。既然如此那么破除这种破解的方法就是密钥定期/不定期更新。只要密钥一变所有以前积攒的方程式都完全失效,破出来也没用(等你耗费很长时间破解了这个工作密钥已经失效了)。
那么另外就有一个问题了通过频繁的截取签到请求是否可以直接破解到硬件的密钥呢?***是不行为什么呢?还是和上边一样的分析方法f(工作密钥,密钥) = 密文。这个时候真实的工作密钥和密钥都是变量相当于整个函數对于拦截者,无从下手(除非暴力破解硬件设备);
可见POS协议的“签到”,其实不仅仅是一个简单的“报到”更重要的是加强了整個交互的安全性和可靠性。