NXP

关于S50卡密钥A和密钥B

2019-07-12 13:46发布

关于S50卡密钥A和密钥B
1. Mifare_Std 卡片的密钥属性取决于控制字。控制字的默认值是“FF078069”,此时      A密钥:不可被读出,有全部权限。      B密钥:可被读出,没有任何权限。
    
    2. Philips/NXP在2001年对S50芯片有重要更新:当B密钥可以被读出时,B密钥失效。关于这一点请仔细阅读S50 DATASHEET的第15页。2000年以前的卡片以及大陆地区仿制的卡片不具备此功能。
    
    3. 如果使用的是PHILIPS原始芯片的卡片,且控制字 = FF078069时,通过某台读卡器进行B密钥验证后可读写卡片,说明这台读卡器有BUG。最大的可能性是这个读卡器并不区分AB密钥。
    我们可以做个简单的实验,将AB密钥设为不同的值,例如首先将密钥BLOCK改写为如下:111111111111 FF078069222222222222此时KeyA = 111111111111, KeyB =  222222222222然后用您所说的可以通过B密钥读写的读卡器进行操作,就会发现问题所在。
    
    4. 在大多数使用B密钥的系统中,控制字 = 08778F00,此时                       A密钥:不可被读出,有读取数据可扣款权限。                       B密钥:不可被读出,有全部权限。
    
    5.原装的Philps S50芯片在出厂时设置每个分区的的第四块A密钥是“FFFFFFFFFFFF”,控制字是:“FF078069”,B密钥是:“FFFFFFFFFFFF”,A密钥是供用户读写操作的,利用A密钥可对对除0区外其它所有扇区块进行读写操作。B密钥不可操作,这些用的都是逻逻加密算法加密,而且密钥都是不可见,我们在读时能看到的A密钥都是显示为“000000000000”,B密钥显示:“FFFFFFFFFFFF”, 这
    些都是出厂时厂家设定的默认值。
    
    6.如果用户要使用B密钥,那先要把中间控制改了,如果改错那所改的那个分区就被加密没用了。比如先把控制改成“08778F00”,A密钥改成“111111111111”,B密钥改成“222222222222”,改完之后再用我们的测试DEMO对块三进行写,写操作成功后,这样您就可以利用B密钥对您所改的扇区进行读写操作了,这时A密钥也就不起作用。