首页 > 代码库 > 社保系列7——PSAM卡

社保系列7——PSAM卡


     PSAM卡用于商户POS、网点终端、直联终端等端末设备上,负责机具的安全控管。PSAM卡具有一定的通用性。经过个人化处理的PSAM卡能在不同的机具上使用。 PSAM卡支持多级发卡的机制,各级发卡方在卡片主控密钥和应用主控密钥的控制下创建文件和装载密钥。


1. 文件结构

社会保障DES算法环境: 
FID=3F00,AID=7378312E73682EC9E7BBE1B1A3D5CF;FID = DF01,AID = D15600000590 
 
社会保障SSF33算法环境: 
FID=DDF1,AID=7378322E73682EC9E7BBE1B1A3D5CF;FID = DF01,AID = D15600000590





2. 密钥属性

1)密钥用途(27, 47, 67)的低5位为密钥类型,高3位为密钥分散级数。密钥类型约定如下: 
——0,主控密钥
——1,维护密钥 
——2,消费密钥 
——3,PIN解锁密钥 
——4,重装PIN密钥 
——5,用户卡应用维护密钥 
——6,MAC密钥 
——7,加密密钥 
——8,MAC、加密密钥 
——9-31,保留
2) 密钥算法标识 
密钥算法标识指定了密钥所支持加密算法。密钥算法标识约定如下: 
——0,3DES 
——1,DES 
——2-255,保留 
3) 密钥版本 
密钥版本指定某种类型密钥的标识。对消费密钥来说,密钥版本是用于消费交易密钥选择过程中的密钥版本号,而对于其他密钥来说,密钥版本是密钥标识。


3. 读写用户卡


SET_CPU(0)
ATR=CPURESET()
LSKEY31=LAST(ATR,16)
00A404000F7378312E73682EC9E7BBE1B1A3D5CF
0020000003123456(9000)  //验证主PIN
0084000008(RANDOM+9000)
 
SET_CPU(1)
00A4040006D15600000590
BFDE485D18+LSKEY31+3337313730307378+RANDOM(9000)   //48=psam用途  5D=标识  
80FA000008+1122334455667788
00C0000008(ENDATA1+9000)   //get response
 
SET_CPU(0)
0082000710+ENDATA1+1122334455667788(9000)  //外部认证  07=密钥标识
00A4020002EF0C
00B202042A(DATA1+9000)  //读取第二条记录
 
SET_CPU(0)
0084000008(RANDOM+9000)
 
SET_CPU(1)
BFDE281210+LSKEY31+RANDOM(9000)   //48=psam用途  5D=标识 
80FA000008+1122334455667788
00C0000008(ENDATA2+9000)   //get response
 
SET_CPU(0)
0082000410+ENDATA2+1122334455667788(9000)  //外部认证  07=密钥标识
00A4020002EF0C
00DC02042A+E9283B363232323131333831393133383431333D32303039313031303032393237373439393939393F40
 


 

4. 密钥标识分配表

    由于PSAM卡中同时存在国家级、省级和地市级控制的密钥,密钥安装分散,为了保证卡内密钥能协调工作,不相互冲突,各级发放和应用PSAM卡的机构,应按照下表密钥标识的分配原则来定义PSAM卡内的密钥标识号。

 

 

国家级

省级

地市级

PSAM卡自用密钥  

00’~‘07’     

          ‘00’~‘07’            

        ‘00’~‘07’        

针对用户卡DDF下的密钥 

            ‘08’~‘0F’               

‘10’~‘17’

‘18’~‘1F’

  针对用户卡各应用下的密钥   

‘20’~‘3F’

‘40’~‘7F’

‘80’~‘BF’

 
注:‘C0’~ FF’保留为将来使用,各级机构不得占用。
 

文/闫鑫原创   转载请注明出处http://blog.csdn.net/yxstars/article/details/38423875