JAVA card 应用开发(六) 个人化数据的线路安全和数据安全
卡片个人化数据的线路安全和数据安全
说明:下面理论,基于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 应用开发(六) 个人化数据的线路安全和数据安全相关推荐
- JAVA card 应用开发(二) 在项目添加APPLET
在上篇博文中.<JAVA card 应用开发创建第一个APPLET>.介绍了一个项目从无到有. 那么.我们建立了这个项目后,仅仅有一个应用(一个可选AID),假设我希望这个项目能够有多个应 ...
- JAVA card 应用开发(四) Java Card CAP 文件组件分析
Java Card CAP 文件组件分析 来源:http://www.dreamingfish123.info/?cat=79 Java Card CAP 文件组件分析 00.1 Java Card ...
- 从零开始学java(二十六)--多维数组,多维数组存储表格数据
从零开始学java(二十六)--多维数组 多维数组 多维数组存储表格数据 多维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(学习 ...
- 什么是大数据开发?大数据开发要学什么?一个Java转行过程和经历
大数据开发是大数据职业发展方向之一,另外一个方向是大数据分析.从工作内容上来说,大数据开发主要是负责大数据挖掘,大数据清洗处理,大数据建模等工作,主要是负责大规模数据的处理和应用,工作主要以开发为主, ...
- 电子钱包的圈存——java card开发第四篇
隔了好久没更新了,前一篇创建好了文件系统,那现在就可以实现使用电子钱包了,这篇首先讲电子钱包的圈存,其实就是存款进去的意思. 首先看一个灰常重要的流程图: 首先,终端(连着主机,他们的另一边是卡片)给 ...
- Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲
Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台: 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...
- 【Arduino】开发入门教程【六】数据类型转换函数
Arduino数据类型转换函数有 char() : 将任意类型的值转换成char类型; byte(): 将任意类型的值转换成byte类型; int(): 将任意类型的值转换成int类型; long ...
- java书号属性,基于Java的ISBN书号查询示例代码-六派数据
示例代码 本代码示例是基于Java的六派数据接口进行数据请求API服务请求的代码示例,使用前你需要: 以下是完整代码示例: /** * 主函数 * @param args */ public stat ...
- 大数据【Java开发转大数据学习路线分解】(不断细化ing)
技术点: 将基础的数仓搭建沉淀成自己的实践方法论 提高大数据实时处理平台的稳定性和高效性 提升自己分析定位及解决问题的能力 既懂得平台开发又懂得算法原理和应用 注重风控系统,监控大数据平台安全 前后端 ...
最新文章
- 字节跳动的敌人,只有时间
- JavaScript基础学习--事件代理
- ListView和GridView的缓存机制及measure过程
- a类网络被谁用了_谁说学考没有用?浙江三位一体报名要求,需要几A几B都在这里...
- 浅谈RSocket与响应式编程
- 领域驱动DDD原理简介与实践
- Viewport 不权威指南
- ms sql 带自增列 带外键约束 数据导入导出
- Ubuntu下安装rknn-toolkit以及转换darknet-yolov3模型
- spring boot的学习(1)杂
- PPTP拨号后无法打开网页处理
- 定义控制台应用程序的入口点 ConsoleApplication
- java审批流_activiti实现工作流审批
- AppFuse 2.1的安装运行步骤------利用Maven构建appfuse
- MacCMS v10 播放器配置 无法保存
- 2020,SOS,既然不能选择,那便一路向前——在20年周期的新开端,聊聊泡沫、科技和经济--童亚斋
- 统计b站多p视频正在观看人数和弹幕的变化,制作折线图
- 基木鱼html标签,基木鱼 | QA常见问题|【其他类】
- ESXI主机紫屏分析方法
- java程序封装最小单位,持续更新中
热门文章
- 在不同应用场景中,我们该如何进行测试呢?
- 还没休年假的小伙伴注意了...事关你的合法权益
- c语言 获取可用内存大小,C语言实现获取内存信息并输出的实例
- android使用lombok_Android Studio 使用Lombok
- 《白帽子讲web安全》读书笔记
- 深信服防火墙console波特率_乾颐盾之深信服防火墙------初始化教程
- python3socket非阻塞在linux里无效_Linux下socket设置为非阻塞方式和fcntl系统调用
- python数据建模工具_python数据分析工具——Pandas、StatsModels、Scikit-Learn
- linux操作系统的训练目的,《西南交大-Linux操作系统应用训练》.doc
- 高斯公式,斯克托斯公式