国密PSAM卡与CPU(用户卡)操作过程是怎么样的?

殷建峰 2013-11-26 05:04:55
如题~ 最近我一直在研究关于通过国密PSAM卡作为安全模块来读写cpu(用户卡)的问题。
百度 Google了好久好久 都没有满意的资料。如有这方面经验的人能否与我分享一下。
...全文
2972 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2016-01-21
  • 打赏
  • 举报
回复
最好找个现成软件用脚本方式操作成功再写程序。
shikai287 2016-01-08
  • 打赏
  • 举报
回复
学习了。记录一下。可能性用得着。
xqhrs232 2014-07-18
  • 打赏
  • 举报
回复
不错的东西,也想了解这一块
liuzewen2014 2014-07-18
  • 打赏
  • 举报
回复
我的810837178,求交流
liuzewen2014 2014-07-18
  • 打赏
  • 举报
回复
你们的QQ是多少?
骁Captain 2013-11-26
  • 打赏
  • 举报
回复
可以试一下SAM卡通用指令,通用DES 计算(DES CRYPT),80FAXXXX。 各个行业应用都有终端、用户卡、PSAM卡三者之间交互的操作规范的,熟读文档,按照操作流程走
流型 2013-11-26
  • 打赏
  • 举报
回复
引用 1 楼 of123 的回复:
其实,两者都是卡片,或者说都是从设备。它们之间是无法相互访问的。 实际上,PSAM 卡是作为秘密密钥的载体,专门执行加密和数字签名等任务。 从应用的角度来看,终端设备比如说 ATM 机,我们可以把他看作包含 PSAM 才构成整体。而用户卡,对 ATM 机来说,则是外部设备。 当需要对用户卡片进行操作的时候,实际上终端设备是交替地访问用户卡和 PSAM,按协议流程来完成安全协议规定的操作。 比如说外部认证,是要让卡片确认终端设备的合法性(实质上是检验它是否持有共享的密钥): 1 终端设备向用户卡发送取随机数命令,得到一个卡片生成的随机数。 2 终端设备向 PSAM 卡发送一个加密命令,使其对上述随机数加密。 3 终端设备向用户卡片发送带有上述加密结果(密文)的外部认证命令。用户卡片进行验证后,确定认证是否成功。如果成功,则可以进行后续的安全操作。 当然,实际的过程还要复杂一些,因为要抗御暴力攻击每一次外部认证是要生成一个过程密钥的。上述简化过程是仅仅是为了说明这种交替访问的情景。 具体的应用规范,都具体规定了各种交易的具体实施步骤,以及卡片和 PSAM 所支持的命令(可能分布在不同的文本中)。
版主碉堡了
of123 2013-11-26
  • 打赏
  • 举报
回复
其实,两者都是卡片,或者说都是从设备。它们之间是无法相互访问的。 实际上,PSAM 卡是作为秘密密钥的载体,专门执行加密和数字签名等任务。 从应用的角度来看,终端设备比如说 ATM 机,我们可以把他看作包含 PSAM 才构成整体。而用户卡,对 ATM 机来说,则是外部设备。 当需要对用户卡片进行操作的时候,实际上终端设备是交替地访问用户卡和 PSAM,按协议流程来完成安全协议规定的操作。 比如说外部认证,是要让卡片确认终端设备的合法性(实质上是检验它是否持有共享的密钥): 1 终端设备向用户卡发送取随机数命令,得到一个卡片生成的随机数。 2 终端设备向 PSAM 卡发送一个加密命令,使其对上述随机数加密。 3 终端设备向用户卡片发送带有上述加密结果(密文)的外部认证命令。用户卡片进行验证后,确定认证是否成功。如果成功,则可以进行后续的安全操作。 当然,实际的过程还要复杂一些,因为要抗御暴力攻击每一次外部认证是要生成一个过程密钥的。上述简化过程是仅仅是为了说明这种交替访问的情景。 具体的应用规范,都具体规定了各种交易的具体实施步骤,以及卡片和 PSAM 所支持的命令(可能分布在不同的文本中)。
殷建峰 2013-11-26
  • 打赏
  • 举报
回复
引用 1 楼 of123 的回复:
其实,两者都是卡片,或者说都是从设备。它们之间是无法相互访问的。 实际上,PSAM 卡是作为秘密密钥的载体,专门执行加密和数字签名等任务。 从应用的角度来看,终端设备比如说 ATM 机,我们可以把他看作包含 PSAM 才构成整体。而用户卡,对 ATM 机来说,则是外部设备。 当需要对用户卡片进行操作的时候,实际上终端设备是交替地访问用户卡和 PSAM,按协议流程来完成安全协议规定的操作。 比如说外部认证,是要让卡片确认终端设备的合法性(实质上是检验它是否持有共享的密钥): 1 终端设备向用户卡发送取随机数命令,得到一个卡片生成的随机数。 2 终端设备向 PSAM 卡发送一个加密命令,使其对上述随机数加密。 3 终端设备向用户卡片发送带有上述加密结果(密文)的外部认证命令。用户卡片进行验证后,确定认证是否成功。如果成功,则可以进行后续的安全操作。 当然,实际的过程还要复杂一些,因为要抗御暴力攻击每一次外部认证是要生成一个过程密钥的。上述简化过程是仅仅是为了说明这种交替访问的情景。 具体的应用规范,都具体规定了各种交易的具体实施步骤,以及卡片和 PSAM 所支持的命令(可能分布在不同的文本中)。
我不想关心智能卡其内部是怎么工作的。 我查了好多资料,没有一个满意的,都说过程非常复杂,这让人感到迷惑,但中间那些实现过程我目前真不想过多了解。 我只想知道如果能够通过认证来正确访问到用户卡里的内容,接下来我自己归纳一下这一步骤。 假定我已经写好了ISO7816协议和ISO14443协议,通过这两个协议分别给PSAM卡和用户卡发送APDU指令。 如果我要查看用户卡中某应用文件的内容时,其详细步骤伪代码如下:
   
/*
*  a)给用户卡发送选择应用文件的APDU命令
*  @Param  None
*  @Return None
*/
void CPU_SelectFile(void);
/*
*  b) 向用户卡发送获取随机数的APDU命令。返回值:R(得到的随机数)
*  @Param  None
*  @Return R:产生的随机数
*/
R CPU_GetChallenge(void);  
/*
*  c) 向PSAM卡发送加密命令,对随机数进行加密。
*  @Param  R:随机数
*  @Return Re:加密后的随机数
*/
Re PSAM_Encode(R);
/*
*  d) 向用户卡发送外部认证命令。
*  @Param  Re:加密后的随机数
*          Ki:秘钥标识符
*  @Return None
*/
void CPU_External_Authentication(Re, Ki);

/*
*  外部验证成功后,用户卡内状态机改变为所用秘钥的后续状态, 下面可以对应用文件进行操作...
*/

其中,b) 向PSAM卡发送加密命令,对随机数进行加密。这个步骤我不是很明白, 我没用在cos命令手册中找到其相应的命令。貌似加密工作是在外部认证的命令里面做的。 望高人指点, 谢谢...
wudianjun2001 2013-11-26
  • 打赏
  • 举报
回复
是挺复杂的,最近同事也在搞这玩意

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧