卡片个人化数据的线路安全和数据安全

说明:下面理论,基于GP2.2规范。

一、线路安全

1. 概念:线路安全。就是对于数据不保密。但要保证数据的完整性和防止被篡改。

2. 方法:在原有的数据基础上。加上8个字节的MAC。

3. 过程

a.在外部认证指令中,设定安全级别。

如图1.

图1

b.计算8个字节的MAC附加在后面就可以。计算MAC须要注意:完毕了外部认证后。除了选择应用的指令以外,都须要增加MAC,否则安全条件不满足。计算MAC以8个字节的0X00为计算的初始向量。输入数据为8个历史字节(上次计算的MAC值)+本次要发的指令。

比方,原本是:

80E40000094F07A000000333010100

算MAC过程:

MAC(0000000000000000,[8字节MACkey],[8字节上次MAC结果]+84E40000114F07A0000003330101,[8字节本次MAC结果])

就变成:

84E40000114F07A0000003330101+[8字节本次MAC结果]

注意:第一次的8字节MAC结果,是在“8482010010”这个指令生成的。

第二个指令就開始沿用这个指令的MAC结果,作为输入了。

MAC值加入到指令后面,长度需添加。

比方

80E20000299102266F24840E315041592E5359532E4444463031A5128801015F2D087A68656E667264659F110101

加上MAC后,就是:

84E20000319102266F24840E315041592E5359532E4444463031A5128801015F2D087A68656E667264659F110101(+8字节MAC)

其余长度都不变,并且还不能带有LE(期待的数据长度)。

二、数据安全

1. 概念:进行卡片个人化的时候,数据是保密的,比方卡片私钥。

2. 方法:把数据通过DES加密,看不到明文。

3. 过程:注意在指令的P1设定对应的数值,如图2.

图2

样例,原本是:(设置PIN的指令)

80E200170B801008241234FFFFFFFFFF

DesEn(241357FFFFFFFFFF,[DES KEY],[加密后的数据:8的倍数])

80E260170B801008+[加密后的数据]

注意,假设须要加密的数据。不是8的倍数,请填充00或者FF,Applet都能够正常解释出来。

假设输入数据是8的倍数,并且个人化的DGI是 0x8101、0x8103、0x8201、0x8202、0x8203、0x8204、0x8205、0x8301、0x8302、0x8303、0x8304、0x8305 这些。还须要在后面填充80FFFFFFFFFFFFFF.对于对称密钥,后面是不须要增加这8个补充字节的。

当然,是能够把个人化数据。既有线路安全也有数据安全,只是要注意,先做数据安全。再做线路安全。

否则Applet无法推断数据的完整性。

JAVA card 应用开发(六) 个人化数据的线路安全和数据安全相关推荐

  1. JAVA card 应用开发(二) 在项目添加APPLET

    在上篇博文中.<JAVA card 应用开发创建第一个APPLET>.介绍了一个项目从无到有. 那么.我们建立了这个项目后,仅仅有一个应用(一个可选AID),假设我希望这个项目能够有多个应 ...

  2. JAVA card 应用开发(四) Java Card CAP 文件组件分析

    Java Card CAP 文件组件分析 来源:http://www.dreamingfish123.info/?cat=79 Java Card CAP 文件组件分析 00.1 Java Card ...

  3. 从零开始学java(二十六)--多维数组,多维数组存储表格数据

    从零开始学java(二十六)--多维数组 多维数组 多维数组存储表格数据 多维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(学习 ...

  4. 什么是大数据开发?大数据开发要学什么?一个Java转行过程和经历

    大数据开发是大数据职业发展方向之一,另外一个方向是大数据分析.从工作内容上来说,大数据开发主要是负责大数据挖掘,大数据清洗处理,大数据建模等工作,主要是负责大规模数据的处理和应用,工作主要以开发为主, ...

  5. 电子钱包的圈存——java card开发第四篇

    隔了好久没更新了,前一篇创建好了文件系统,那现在就可以实现使用电子钱包了,这篇首先讲电子钱包的圈存,其实就是存款进去的意思. 首先看一个灰常重要的流程图: 首先,终端(连着主机,他们的另一边是卡片)给 ...

  6. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

  7. 【Arduino】开发入门教程【六】数据类型转换函数

    Arduino数据类型转换函数有 char() : 将任意类型的值转换成char类型; byte():  将任意类型的值转换成byte类型; int():  将任意类型的值转换成int类型; long ...

  8. java书号属性,基于Java的ISBN书号查询示例代码-六派数据

    示例代码 本代码示例是基于Java的六派数据接口进行数据请求API服务请求的代码示例,使用前你需要: 以下是完整代码示例: /** * 主函数 * @param args */ public stat ...

  9. 大数据【Java开发转大数据学习路线分解】(不断细化ing)

    技术点: 将基础的数仓搭建沉淀成自己的实践方法论 提高大数据实时处理平台的稳定性和高效性 提升自己分析定位及解决问题的能力 既懂得平台开发又懂得算法原理和应用 注重风控系统,监控大数据平台安全 前后端 ...

最新文章

  1. 字节跳动的敌人,只有时间
  2. JavaScript基础学习--事件代理
  3. ListView和GridView的缓存机制及measure过程
  4. a类网络被谁用了_谁说学考没有用?浙江三位一体报名要求,需要几A几B都在这里...
  5. 浅谈RSocket与响应式编程
  6. 领域驱动DDD原理简介与实践
  7. Viewport 不权威指南
  8. ms sql 带自增列 带外键约束 数据导入导出
  9. Ubuntu下安装rknn-toolkit以及转换darknet-yolov3模型
  10. spring boot的学习(1)杂
  11. PPTP拨号后无法打开网页处理
  12. 定义控制台应用程序的入口点 ConsoleApplication
  13. java审批流_activiti实现工作流审批
  14. AppFuse 2.1的安装运行步骤------利用Maven构建appfuse
  15. MacCMS v10 播放器配置 无法保存
  16. 2020,SOS,既然不能选择,那便一路向前——在20年周期的新开端,聊聊泡沫、科技和经济--童亚斋
  17. 统计b站多p视频正在观看人数和弹幕的变化,制作折线图
  18. 基木鱼html标签,基木鱼 | QA常见问题|【其他类】
  19. ESXI主机紫屏分析方法
  20. java程序封装最小单位,持续更新中

热门文章

  1. 在不同应用场景中,我们该如何进行测试呢?
  2. 还没休年假的小伙伴注意了...事关你的合法权益
  3. c语言 获取可用内存大小,C语言实现获取内存信息并输出的实例
  4. android使用lombok_Android Studio 使用Lombok
  5. 《白帽子讲web安全》读书笔记
  6. 深信服防火墙console波特率_乾颐盾之深信服防火墙------初始化教程
  7. python3socket非阻塞在linux里无效_Linux下socket设置为非阻塞方式和fcntl系统调用
  8. python数据建模工具_python数据分析工具——Pandas、StatsModels、Scikit-Learn
  9. linux操作系统的训练目的,《西南交大-Linux操作系统应用训练》.doc
  10. 高斯公式,斯克托斯公式