zoukankan      html  css  js  c++  java
  • 商用密码调研

    商用密码调研:

    一、我的家乡在安徽省合肥市

    企业:安徽省电子认证管理中心有限责任公司。

    企业网址:http://www.aheca.cn/

    密码产品:手机盾

    手机盾统一认证系统就是用手机来实现传统U盾功能,采用CA密码技术实现,为银行、第三方支付、电子商务、移动办公、电子政务等提供安全身份认证和交易确认服务。

    手机盾统一认证系统通过银行卡检测中心检测、通过国家密码管理局认证。

    1.产品特点:

    手机+数字证书+签名认证=手机盾 手机盾产品采用国产密码算法,无需业务密码,可实现移动互联网安全认证。

    具有携带方便、安装快捷、使用简单的特点。

    2.产品功能

    登陆认证:可用于办公系统登陆、网游登陆、电商网站登陆等场景。

    支付确认:可用于银行支付、第三方支付、电商网站快捷支付、游戏运营商支付、虚拟币支付等支付确认场景。

    共管账户认证:可用于银行、互联网金融的共管账户确认场景。

    3.应用领域(竞争力)

    可广泛应用于金融、电子商务、电子政务、企业信息化、网游、网上报税、网上招投标等领域。

    安全认证网关

    1.产品概述

      SSL安全认证网关是一台独立网关型服务器设备,它将应用服务器隔离在一个私有网段,采用数字证书进行双向的身份认证,在客户端与服务端之间建立128位的加密安全通道,实现客户端和服务端的数据安全传输和客户身份的有效认证。

    2.产品功能

    支持SSLv3TLS协议;

    支持标准LDAP目录发布;

    可强制采用128位高强度加密,支持DES3DESAES等加密算法,并可替换指定算法;

    支持B/SC/S结构应用代理;

    支持多SSL服务,支持代理多个应用服务器;

    支持PKI技术应用,能够确保信息的秘密性和完整性;

    支持X509标准的各种数字证书;

    支持双向身份认证;

    支持黑名单验证;

    具备网络直通功能;

    支持双机热备功能;

    支持用户证书信息捆绑,能够方便地获取客户信息;

    支持日志审计接口;

    可获取非标准的用户自定义的数字证书扩展项信息;

    客户端证书的行业属性可通过属性证书获取并捆绑给应用系统;

    支持服务器站点重定向及NAT功能;

    可对替换加密算法,支持第三方加密算法 ;

    可对系统备份,保障系统快速恢复;

    3.产品特性(竞争力)

    易用性独特的信息捆绑技术使应用结合非常方便;

    安全性系统精简和内嵌防火墙保证自身系统的安全,硬件多网卡的机制保证不同应用系统的安全隔离;

    多服务支持支持同时防护多个应用;

    完善性系统具有热备、网络直通、服务器安全互连等扩展模块,适合不同的应用环境;

    加密算法多样性既支持多种高强度通用加密算法,也支持国家相关管理部门认可的加密算法;

    透明性和兼容性对WEB应用来说,SSL安全认证网关无缝的与WEB应用连接,并不需要WEB应用为SSL网关做特别的定制;支持IISWebSphereWebLogic等主流WEB服务器,支持ASP.NETJ2EE等应用;

    高性能采用专门加密设备,连接过程中的加解密运算由专门的加密卡完成这样大大的提高了处理速度。独立于WEB 服务器,极大的减少了WEB服务器的CPU消耗,增加服务器所能承受的用户并发点击数;

    连接高效性采用cache技术和session重用机制,大幅度提高连接效率;

    可靠性设备本身平均故障间隔时间在六个月以上,产品还提供双机热备的功能,提供更好的可靠性保证;

    自身安全性采用硬件加密卡,自身站点证书密钥均保存在加密卡内部,无法导出;本身也内嵌了防火墙,充分考虑 自身的安全;

    标准的SSL协议兼容标准的SSL协议;

    管理配置的方便性提供WEB方式的配置,操作方便;

    公司竞争力

    作为安徽省网络安全和信息化发展不可或缺的基础保障力量,该公司肩负着网络实名认证和基础安全服务的重要使命。长期以来,公司遵照《电子签名法》的要求和相关管理规定,同时为用户提供涵盖电子认证服务和电子认证产品的整体解决方案,建立起覆盖全省、辐射周边的电子认证服务网络和较完善的电子认证产品体系。应用覆盖政府办公、互联网+政务服务、公共资源交易、网上办税、司法、卫生、教育、建设、社会管理、市民卡、在线交易、企事业单位信息化等诸多领域。特别是通过在芜湖、马鞍山、安庆等地试点实施法人网上身份统一认证工程,为全省法人数字证书“一证通用”的应用格局打下了坚实基础。

    二、

    *三未信安科技股份有限公司

    *云上(江西)密码服务科技有限公司

    *山东渔翁信息技术股份有限公司

    *北京海泰方圆科技股份有限公司

    *北方实验室股份有限公司

    *北京天御云安科技有限公司

    *中安云科科技发展有限公司

    *深圳旺龙智能科技有限公司

    *深圳奥联信息安全技术有限公司

    *三未信安科技股份有限公司

    密码机

    产品概述

    三未信安云密码机SecHSM-CloudSJJ1601,又称云加密机)是北京三未信安科技发展有限公司针对云计算环境的特殊场景,设计开发的硬件密码产品。

    实现一台物理实体密码机,提供多台虚拟密码机(VSM),每台虚拟密码机均可实现对主机应用层数据加/解密、消息来源正确性验证、密钥管理等能力,最大限度的发挥硬件资源性能,为云环境下的应用系统提供安全的数据加密保护服务。

    产品功能

    密钥算法支持

    国密算法SM1SM2SM3SM4

    国际算法RSADES3DESAESSHA-1SHA256SHA384SHA512

    虚拟化功能

    单台云密码机可虚拟多个密码机VSM,提供弹性分配、虚机迁移、运算速度分配等云化功能,提高密码设备资源利用率

    密钥管理

    密钥的安全生成(二级、三级模块)、存储、备份、恢复

    安全性

    提供丰富基于口令、智能密码钥匙、数字证书等多种身份认证机制

    VSM安全隔离

    VSM密钥安全隔离

    接口支持

    JCEPKCS#11CSP、国密SDF等多种标准密码应用接口,支持传统应用平滑迁移,满足应用迁入云环境后对密码服务的需求

    支持OpenSSL,RESTFul API,CSP,.NET,SOAP,KMIP,EKM接口

    业务场景支持

    云密码机支持加解密、数字签名、身份认证、金融、政务、能源、医疗等多行业业务场景支持

    产品优势(竞争力)

    虚拟化

    基于SR-IOV技术,提供密码模块的虚拟化支撑能力,单台云密码机可虚拟≥96

    密钥管理

    具备VSM间密钥隔离、海量密钥管理,以及采用基于智能密码钥匙和数字证书的强认证机制

    弹性计算

    支持资源的动态分配,虚拟资源、计算性能等的动态增加与释放

    高可用

    支持双活、多机集群与负载均衡,可靠性:MTBF 30000h

    云密码机集群最大VSM512

    集中的设备管理

    设备统一的监控与故障告警

    可提供对接其它云平台的标准接口

    合规性

    三未信安云密码机采用由国家密码管理局批准使用的密码设备(二级、三级)硬件

    *云上(江西)密码服务科技有限公司

    全鉴®签名验签服务器

    云上密码公司自主研发的全鉴®自主可控签名验签服务器,其SM1算法由SSX30-DSM2SM3算法由SSX1303芯片,SM4算法由硬件语言实现,随机数由两片WNG-8芯片产生,密码算法实现了国产化。检测环境服务器采用龙芯3B3000处理器,中标麒麟操作系统,实现了操作系统国产化。

    全鉴®自主可控签名验签服务器的研发严格遵循国家密码管理局颁布的该产品遵循GM/T 0018-2012《密码设备应用接口规范》、GM/T 0019-2012《通用密码服务接口规范》、GM/T 0020-2012《证书应用综合服务接口规范》、GM/T 0060-2018《签名验签服务器检测规范》、GM/T 0062-2018《密码产品随机数检测要求》等密码标准。

    全鉴®自主可控签名验签服务器支持SM1SM2SM3SM4算法,提供数据加解密、数字签名等密码安全服务,以保证用户信息的机密性、完整性、不可否认性等密码安全特性,广泛应用于银行、证券、邮政、税务、电信、电子政务、电子商务等领域的信息系统和网络安全项目中。

    *山东渔翁信息技术股份有限公司

    密码机

    渔翁密码机是由渔翁自主研发的高性能密码设备,遵循国家相关产品技术规范,内置经国家密码管理局审批的告诉密码模块,能够为各类业务系统提供数据加解密、数字签名/验签以及密钥管理等高性能密码服务。产品支持SM1SM2SM3SM4等密码算法,兼容适配Linux、中标麒麟、银河麒麟等操作系统,功能和性能优越。

    功能亮点(竞争力)

    密码算法

    提供对称算法(SM1SM43DESAES等、非对称算法(RSA 1024RSA 2048SM2等)和杂凑算法(SHA256SHA512SM3等)

    真随机数

    采用由国家密码局审批的双WNG-9随机数发生器产生的真随机数,确保密钥安全。

    *北京海泰方圆科技股份有限公司

    红莲花国密浏览器

    红莲花国密浏览器不仅通过了国家密码管理局的安全性审查,同时通过了商用密码测评中心对于安全模块的合规性测试,率先拥有国内软件密码模块型号证书 SHM1602,为国产信息化领域提高了自主创新水平、提升了产业能力、改善了网络应用安全环境,为国产密码关键领域提供技术和应用支撑,填补了国密算法改造中缺失的一环,使信创产业链形成安全闭环。

    历经六年的发展,红莲花国密浏览器专心为政企用户专属需求贴心打造各个环节,基于用户不同场景和业务需求,目前红莲花国密浏览器拥有六大产品形态,已经广泛应用于审计署、外交部、工信部、交通部、教育部等部委,江西省委、西藏自治区党委、内蒙古自治区党委、山西省委等地方党政,城市商业银行资金清算中心、兴业银行、福建农信、晋商银行、江南农商、华融湘江银行、东莞农商行等银行金融机构,国家电网等央企广大用户。

    海泰方圆红莲花国密浏览器V5.0,自主设计了浏览器的安全体系架构,全面支持国密算法、支持信创环境,具备完善的后台支撑服务等能力,完成了多项技术创新、应用模式的创新。多次获得工信部相关产业课题基金的支持,在金融、党政、军工等多个领域获得了广泛的应用。推动了产业的发展。

    红莲花国密浏览器聚焦政企客户关于应用安全管理、应用兼容、业务安全边界等核心安全诉求,既是客户端信息交互的平台,又能对分散的业务系统进行整合,实现统一兼容、统一入口、统一管理,为政企用户打造一个专用、省心、安全的业务办公环境。

    *北京天御云安科技有限公司

    USB3.0 高速密码模块

    USB3.0 高速密码模块是基于纯国产化安全处理芯片,集成国家各类密码算法的高性能密码产品;可适配各类密码安 全应用系统,具备高速、多任务并行处理的密码计算能力;具有数据加解密、签名验签和敏感数据存储功能。USB3.0 高 速密码模块可成为为各类安全产品的配套组件,符合《GMT 0027-2014 智能密码钥匙技术规范》及《GMT 0028-2014 密 码模块安全技术要求》等规范,合法合规合理可广泛应用并推广。

    产品功能

    1.密钥生成与管理:可以生成2048RSA密钥对及256SM2密钥对,采用物理噪声源产生器芯片生成的随机数。

    2.数据加密和解密:支持SM4等国内标准算法的ECBCBC模式的数据加密和解密运算。

    3.消息鉴别码的产生和验证:支持基于SM4等算法的MAC产生及验证。

    4.数据摘要的产生和验证:支持SM3等杂凑算法。

    5.数字签名的产生和验证:可以根据需要利用内部存储的RSA/SM2密钥对或外部导入RSA/SM2私钥对请求数据进行数字签名。

    6.数字信封功能:支持基于RSA/SM2密码算法的数字信封功能,并支持由内部密钥保护到外部密钥保护的数字信封转换功能。

    7.物理随机数的产生:采用物理噪声源产生器芯片生成的随机数。

    8.支持标准接口:密码模块接口符合《智能密码钥匙密码应用接口规范》,通用性好。

    9.VPN组合运算:对于VPN应用场景,密码模块提供对称算法+HMAC运算的组合一次性处理接口,减少了应用层和密码模块通信次数。

    *中安云科科技发展有限公司

    密码机

    产品介绍

    中安云科服务器密码机是密码体系的高性能核心设备,支持SM1/SM2/SM3/SM4等国密算法和RSA/DES/3DES/AES/SHA256等国际算法,是数据加解密类产品的典型代表,主要提供数据加解密、数字签名验证、密钥管理等高性能密码服务。

    典型应用

    服务器密码机通常部署在应用服务器端,能够同时为多个应用服务器提供密码服务,保证重要数据的机密性、完整性、真实性。

    产品特点(竞争力)

    权限分割:设置管理员和操作员角色,各司其职,保证系统的可靠性。

    三层密钥结构:采用“设备保护密钥-用户密钥-会话密钥”的三层密钥体系结构,保证密钥的安全性。

    支持标准接口:API接口符合GM/T 0018-2012《密码设备应用接口规范》要求,具有很强的通用性。

    支持多种操作系统:密码机对外支持TCP/IP通信连接,可支持多种主流操作系统,如WindowsLinuxUnix等,具有很好的易用性。

    支持白名单:通过白名单的设置,实现密码机对应用连接的授权认证,进一步提高系统安全性。

    *深圳旺龙智能科技有限公司

    IC卡电梯

    产品概述

    本系统支持国密CPU卡、CPU卡及Mifare 1 卡,刷卡直达,尊贵享受,与楼宇对讲系统配合,解决访客问题。

    产品优势:

    旺龙,IC卡电梯、云电梯、机器人乘梯发明企业

    与国内外80%电梯厂家合作智能:

    • 首创密码键盘,解决无卡之忧;

    • 可通过人脸识别、二维码、指纹、静脉、手机蓝牙、蓝牙卡、IC卡、国密卡等方式直达楼层,方便智能;

    • 与众多的品牌对讲厂家合作,支持对讲联动,预约呼梯等功能;

    *深圳奥联信息安全技术有限公司

    标识密码机

    产品简介

    国密SJJ1631系列密码机是基于标识密码技术实现的专用密码运算系列密码机,支持SM2SM3SM4SM9国家标准密码算法和AESDES3DESSHA系列、RSA等国际密码算法的密码运算,可以满足密钥生成管理、数据签名/验签、加密/解密的要求。

    产品优势(竞争力)

    多算法

    支持SM2SM3SM4SM9国家标准密码算法和AESDES3DESSHA系列、RSA等国际密码算法

    标准化

    API接口符合《公钥密码基础设施应用技术体系——密码设备应用接口规范》

    易用性

    部署简单,密钥管理操作安全方便,支持密钥操作日志输出

    可靠性

    支持密钥分片备份,支持双击、多机热备、负载均衡

    安全性

    密钥使用与密钥管理分离,且采用了分片存储方式

    高性能

    SM9密钥生成速度8000/秒、签名速度3500/秒、加密速度4500/

    三、

    从上述例子中我们可以看到密码系统在实际使用过程中起到的是信息安全系统的内在屏障,也是信息安全系统的核心。一旦密码系统被攻破,信息安全系统也就随之瓦解。

    密码系统通过一层或多层密码保护筛选出可以访问内部系统的授权用户和入侵者。授权用户可以在其被授权范围以内访问系统。未被授权用户则被密码系统阻拦,移交由信息安全系统的其他模块处理。在密钥安全的条件下,密码系统在一定程度上可以保护系统(公司、政府部门等)的安全。

    密码国家标准:

    1GB/T 33133-2016 《信息安全技术 祖冲之序列密码算法》

    2GB/T 32907-2016 《信息安全技术 SM4分组密码算法》

    3GB/T 32918-2016 《信息安全技术 SM2椭圆曲线公钥密码算法》

    4GB/T 32905-2016 《信息安全技术 SM3密码杂凑算法》

    5GB 15843-2008 《信息技术 安全技术 实体鉴别 》

    6GB/T 15852.1-2008 《信息技术 安全技术 用块密码算法作密码校验函数的数据完整性机制》

    7GB/T 17903 《信息技术 安全技术 抗抵赖 》

    8GB/T 16264.8-2005 《信息技术 开放系统互连 目录 第8部分:公钥和属性证书框架》

    9GB/T 16264.5-2008 《信息技术 开放系统互连 目录 第5部分:协议规范》

    10GB/T 18238-2016《信息技术 安全技术 散列函数》

    11GB/T 17964-2008 《信息安全技术 分组密码算法的工作模式》

    12GB/T 17902-2017 《信息技术 安全技术 带附录的数字签名 》

    13GB/T 15851-1995 《信息技术 安全技术 带消息恢复的数字签名方案》

    14GB/T 31501-2015 《信息安全技术 鉴别与授权 授权应用程序判定接口规范》

    15GB/T 33560-2017 《信息安全技术 密码应用标识规范》

    16GB/T 35275-2017 《信息安全技术 SM2密码算法加密签名消息语法规范》

    17GB/T 35276-2017 《信息安全技术 SM2密码算法使用规范》

    18GB/T 19714-2005 《信息技术 安全技术 公钥基础设施 证书管理协议》

    19GB/T 25056-2010 《信息安全技术 证书认证系统密码及其相关安全技术规范》

    商用密码标准:

    #商用密码产品与标准

    1智能IC卡产品:GM/T 0041-2015 智能IC卡密码检测规范。

    2智能密码钥匙:GM/T 0016GM/T 0017GM/T 0027GM/T 0048.

    3服务器密码机:GM/T 0030GM/T 0059

    4签名验签服务器:GM/T 0029GM/T 0060

    5金融数据密码机:GM/T 0045GM/T 0046

    6VPNGM/T 0022GM/T 0023GM/T 0024GM/T 0025GM/T 0026GB/T 32922

    7安全电子签章:GM/T 0031GM/T 0047GB/T 33190GB/T 33481

    8动态口令:GM/T 0021GM/T 0061

    9电子门禁:GM/T 0036

    10数字证书认证系统:GM/T 0014GM/T 0015GM/T 0034GM/T 0020GM/T 0037GM/T 0038GM/T 0043

    四(额外加分项)、

    选择北京江南科友科技有限公司生产的加密机。

    使用申请未通过。

    找客服要了开发手册:

    1 概述

    2 密钥管理

    2.1 密钥结构

    2.2 密钥类别

    2.2.1 基础主密钥〔MK

    2.2.2 卡片主密钥〔M*KEY

    2.2.3 终端主密钥〔TMK

    2.2.4 离散子密钥、过程密钥、动态通讯密钥

    2.3 密钥检查

    2.3.1 密钥的奇(ODD)校验

    2.3.2 密钥的校验值

    2.3.3 弱密钥的检查

    3 密码机消息格式

    3.1 异步消息格式

    3.2 TCP/IP消息格式

    3.3 消息的传送

    3.4 字母缩写说明

    3.5 MAC数据说明

    4 IC卡标准指令

    4.1 密钥命令

    4.1.1 产生一个索引的卡片密钥(E0/E1)

    4.1.2 存储一个索引的卡片密钥(E2/E3)

    4.1.3 清除一个索引的卡片密钥(E4/E5)

    4.1.4 取回一个索引的卡片密钥(E6/E7)

    4.1.5 产生一个索引的终端主密钥(D0/D1)

    4.1.6 存储一个索引的终端主密钥(D2/D3)

    4.1.7 清除一个索引的终端主密钥(D4/D5)

    4.1.8 取回一个索引的终端主密钥(D6/D7)

    4.1.9 计算离散子密钥(10/11)

    4.1.10 计算过程密钥(12/13)

    4.1.11 产生动态通讯密钥(14/15)

    4.2 功能命令

    4.2.1 用当前离散子密钥计算3_DES_MAC (20/21)

    4.2.2 用当前过程密钥计算1_DES_MAC(22/23)

    4.2.3 用当前离散子密钥计算1_DES_TAC(24/25)

    4.2.4 用通讯密钥或者终端主密钥计算MAC(26/27)

    4.2.5 用指定的终端主密钥加密数据(C0/C1)

    4.2.6 用当前离散子密钥加密数据(C2/C3)

    4.3 复合命令

    4.3.1 用实时生成的密钥计算MAC(50/51)

    4.3.2 用实时生成的密钥校验MAC(52/53)

    4.3.3 用实时生成的密钥校验并产生MAC(54/55)

    4.3.4 用实时生成的离散子密钥计算1_DES_TAC(56/57)

    4.3.5 用实时生成的离散子密钥校验1_DES_TAC(58/59)

    4.4 密钥导入/导出指令

    4.4.1 CCK初始化(F0/F1)

    4.4.2 CCK替换(F1/F2)

    4.4.3 产生IKTK(F2/F3)

    4.4.4 输出制卡用TKIK(F4/F5)

    4.4.5 输出制卡用功能密钥(F6/F7)

    4.4.6 从密钥卡中导入制卡用功能密钥(F7F8)

    4.4.7 备份IKTK(F8/F9)

    4.4.8 恢复IKTK(FA/FB)

    4.4.9 取得授权(FC/FD)

    4.4.10 取消授权(FE/FF)

    4.5 RSA命令

    4.5.1 产生一对RSA密钥(34/35

    4.5.2 导入私钥(35/36

    4.5.3 导出私钥(36/37

    4.5.4 用私钥签名(37/38

    4.5.5 用公钥验证(38/39

    4.5.6 转换DES密钥:从公钥加密到主密钥加密(3A/3B

    4.5.7 转换DES密钥:从主密钥加密到公钥加密(3B/3C

    4.5.8 产生摘要(3C/3D

    4.5.9 公钥加密(30/31

    4.5.10 私钥解密(33/34

    4.5.11 私钥加密(3D/3E

    4.5.12 公钥解密(39/40

    4.5.13 转换MAC密钥并做MAC3E/3F

    4.5.14 PIN转换指令(41/42

    5 附录A  密码机出错代码表

    6 附录B 算法描述

    6.1 3DES算法描述

    6.2 X_DES_MAC算法描述

    6.3 MAC_MODE_X算法描述

    6.3.1 MAC_MODE_1

    6.3.2 MAC_MODE_2

    6.3.3 MAC_MODE_3

    7 附录C 公钥编码:

    8 附录D 填充方式

    9 附录E 新增指令

    9.1 计算交易TAC

             

             

    TAC / KEYA/KEYB

    9.2 报文加解密

    支持ECBCBCCFB

             

             

    1  概述

     

    能够完全支持中国人民银行IC卡新规范的加密方式要求

    1. 64bits密钥做1_DES加密运算;
    2. 128bits密钥做3_DES加密运算;
    3. 支持新规范中产生离散子密钥算法GEN_LSKEY及过程密钥算法GEN_GCKEY
    4. 支持新规范对1_DES_MACTAC3_DES_MAC的算法;
    5. 支持数据通信加密,能保存多个终端的主密钥TER_MAST_KEY
    6. 可产生由TMK加密的动态通信密钥TXKEY
    7. 支持MAC_MODE_1MAC_MODE_2MAC_MODE_3三种算法。

     

    能够完全支持ANSI  X9.8数据加密标准(DES)算法

    2   密钥管理

    2.1  密钥结构

    支持中国金融集成电路(IC)卡应用规范中卡片密钥的组织方式

     

           H支持多个版本(VERSION),每个版本不是一次产生,可每年或数年产生一个新版本。密码机内可保存最多3个版本。

    VERSION = 0,指示新的(当前)版本。

    VERSION = 1,2  指示旧的版本。

           H每一版本可含多个组,每组具有一个索引号(GROUP_INDEX),密码机内可保存最多32个组。

    GROUP_INDEX = 0,1,……31

           H每组包含一套完整的卡片密钥(128bits),称M*KEY;顺序为:

    • · M_number = 1:用于圈存交易的密钥(MLK
    • · M_number = 2:用于圈提交易的密钥(MULK
    • · M_number = 3:用于修改透支限额的密钥(MUK
    • · M_number = 4:用于消费/取现交易的密钥(MPK
    • · M_number = 5:用于消费/取现交易中产生TAC的密钥(MTK
    • · M_number = 6:用于应用维护功能的密钥(MAMK
    • · M_number 7~10:保留。

    H支持 1000 个终端主密钥(64bits),终端主密钥索引(TMK _INDEX表示

    TMK _INDEX = 0,1,……999

    2.2  密钥类别

    2.2.1  基础主密钥〔MK

    基础主密钥用于保护卡片密钥和终端主密钥。每台密码机只有一个基础主密钥。密码机在出厂时,配有缺省设置的基础主密钥;用户须根据本身的需要重新设置基础主密钥。

    基础主密钥为128bits密钥,其三个成分(128bits)分别由三个人保管。

    由人工通过密码机键盘背对背的输入各自成分,密码机内部按一定的算法生成

    基础主密钥还可由专用的密钥管理软件输入,具体操作见使用说明》。

    基础主密钥受密码机的保护,不能读出

    2.2.2  卡片主密钥〔M*KEY

    卡片主密钥也为128 bits密钥,其个成分(2×128bits)分别由个人保管。

    由人工通过密码机键盘背对背的输入各自成分,密码机内部按定的算法生成。

    卡片密钥还可由专用的密钥管理软件输入,具体操作见《使用说明》。

    卡片密钥还可由机随机生。

    卡片主密钥受密码机的保护。卡片主密钥基础主密钥的保护,可输出密码机外,既可存放在主机数据库中,也可存在其他载体(如软盘)

    卡片密钥在使用要指定版本、组索引号、卡片密钥种类。

    2.2.3  终端主密钥〔TMK

    终端主密钥是64bits密钥。它由一个成分组成,由一个人保管

    由人工通过密码机键盘以明文方式输入。终端主密钥还可由专用的密钥管理软件输入,具体操作见使用说明》。

    终端主密钥还可由密码机随机生。

    终端主密钥受密码机的保护。TMK密钥在基础主密钥的保护,可输出密码机外,既可存放在主机数据库中,也可存在其他载体(如软盘)

    终端主密钥需在使用前输入要指定索引号。

    2.2.4  离散子密钥、过程密钥、动态通讯密钥

    离散子密钥(LSKEY)为128bits密钥,由密码机根据命令生成,保存在密码机内至新值覆盖。

    过程密钥(GCKEY)为64bits密钥,由密码机根据命令生成,保存在密码机内至新值覆盖。

    动态通讯密钥(TXKEY)为64bits密钥,由密码机根据命令生成,加密输出,在密码机内不保存。

    2.3  密钥检查

    2.3.1  密钥的奇(ODD)校验

    假如密钥的字节形式为 b7b6b5b4b3b2b1b0,

    则校验位b0=b7⊕b6⊕b5⊕b4⊕b3⊕b2⊕b1⊕1

    ‘⊕’为异或算法。

     

    2.3.2  密钥的校验

    密钥按1_DES3_DES算法加密64bit 的0,取最左4个字符做为校验值。

    2.3.3  弱密钥的检查

    由密码机生成的密钥,密码机可自动检查其是否为弱密钥(Weak Key)或半弱密钥(simi-weak key)。如果属于这类密钥,密码机将自动重新产生。

    弱密钥为:

                01  01  01  01  01  01  01  01

                1F  1F  1F  1F  1F  1F  1F  1F

                E0  E0  E0  E0  F1  F1  F1  F1

                FE  FE  FE  FE  FE  FE  FE  FE

    半弱密钥为:

                E0  FE  E0  FE  F1  FE  F1  FE

                FE  E0  FE  E0  FE  F1  FE  F1

                1F  FE  1F  FE  0E  FE  0E  FE

                01  FE  01  FE  01  FE  01  FE

                1F  E0  1F  E0  0E  F1  0E  F1

                01  E0  01  E0  01  F1  01  F1

                FE  1F  FE  1F  FE  0E  FE  0E

                E0  1F  E0  1F  F1  0E  F1  0E

                FE  01  FE  01  FE  01  FE  01

                E0  01  E0  01  F1  01  F1  01

                01  1F  01  1F  01  0E  01  0E

                1F  01  1F  01  0E  01  0E  01

    3  密码机消息格式

    3.1  异步消息格式

        异步通讯协议(ASYNC)采用8 bits数据位,1 bit停止位,无奇偶校验位,波特率19.2K

    消息格式如下:

    STX

    「消息内容」

    检查和

    ETX

    1 BYTE  

    N  BYTES

    4 BYTES

    1 BYTE

         

    STX:控制字符(0x02),表示消息开始。

    ETX:控制字符(0x03),表示消息结束。

    检查和:消息内容各字节的算术和,取最后4位。用来对消息内容进行验证。

        检查和的计算如下例:

            消息--31001

                           33

                           31

                           30

                           30

                         31

                           F5

    检查和: 00F5

    3.2  TCP/IP消息格式

    主机端: 2字节长度 + 1字节通道号 + 消息内容

    2字节长度: 1 + 消息内容字节数

    1字节通道号: 密码机返回此字节,不做改变。如果不用此字节,可填任意值。

    消息内容: 按命令格式组织的消息包

    例如,要发送的消息包为0x31, 0x32两字节,则向密码机发送的内容为:

    0x00, 0x03, 0xXX, 0x31, 0x32

     

    3.3  消息的传送

    所有消息均用ACSII字符方式传送。

    密钥和密文部分用十六进制数字表示。因此一个8字节的密钥应该转换成16ASCII 码字符,一个16字节的密钥应转换成32ASCII码字符输入。

    3.4  字母缩写说明

    n 可变长度域

    N: 十进制字符0’-‘9

    A 可打印字符

    H 十六进制字符(0F)

    3.5  MAC数据说明

    1. 所有用来计算MAC的数据,先要转换成ASCII码‘0’-‘9’或‘A’-‘F’,然后送入密码机。

    2. MAC长度指示域为转换前的字节数。

    3. 如果密码机计算的MAC与您计算的不符:

    ① 可在MAC数据前加8字节的0,因为密码机的有些指令把前8字节当做初始向量,具体算法请参考附录中的算法说明;

    ② 如果您在MAC数据后面加了0x80,0x00…,请去掉,密码机会自动为您加上该分组。

    4  IC卡标准指令

    4.1  密钥命令

    4.1.1  产生一个索引的卡片密钥(E0/E1)

    功能:密码机产生一个64bits、128bits192bits的随机数,作为指定版本(Version)、指定组(Group Index)的某个卡片密钥(M_Number),将它保存在密码机内,同时用基础主密钥加密输出。   

     

              

     

        

      

      

          

    命      令

    2

    A

    E0

    Version

    1

    N

    0:当前版本

    其他:老版本

    Group Index

    2

    N

    00—31

    M_Number

    2

    N

    0110

     

     

              

     

        

      

      

          

    应  答  码

    2

    A

    E1

    错 误 代 码

    2

    N

     

    M*KEY 密值

    32

    H

    用基础主密钥加密

    校 验 值

    4

    H

    *KEY加密64bits的0

    4.1.2  存储一个索引的卡片密钥(E2/E3)

    功能:密码机接受这个指定版本(Version)、指定组(Group Index)的卡片密钥(M*KEY)密值,并将它用基础主密钥解密后存储在密码机内。

     

              

     

        

      

      

          

    命      令

    2

    A

    E2

    Version

    1

    N

    0:当前版本,其他:老版本

    Group Index

    2

    N

    0-31

    M_Number

    2

    N

    1-10

    M*KEY的密值

    32

    H

    用基础主密钥加密

    校 验 值

    4

    H

    M*KEY的校验值

     

     

              

     

        

      

      

          

    应  答  码

    2

    A

    E3

    错 误 代 码

    2

    N

     

     

    4.1.3  清除一个索引的卡片密钥(E4/E5)

    功能:清除密码机指定的卡片密钥。

     

              

     

        

      

      

          

    命      令

    2

    A

    E4

    Version

    1

    N

    0:当前版本,其他:老版本

    Group Index

    2

    N

    031

    M_Number

    2

    N

    1-10

     

     

              

     

        

      

      

          

    应  答  码

    2

    A

    E5

    错 误 代 码

    2

    N

     

    4.1.4  取回一个索引的卡片密钥(E6/E7)

    功能:将指定的卡片密钥用基础主密钥加密后输出。

     

              

     

        

      

      

          

    命      令

    2

    A

    E6

    Version

    1

    N

    0:当前版本,其他:老版本

    Group Index

    2

    N

    031

    M_Number

    2

    N

    110

     

              

     

        

      

      

          

    应  答  码

    2

    A

    E7

    错 误 代 码

    2

    N

     

    M*KEY 密值

    32

    H

    用基础主密钥加密

    校 验 值

    4

    H

    M*KEY的校验值

     

    4.1.5  产生一个索引的终端主密钥(D0/D1)

    功能:密码机产生一个64bits的随机数,作为指定索引(TMK Index)的终端主密钥,并将它保存在密码机内;同时用基础主密钥加密,将加密后的这个终端主密钥(TMK)密值返回给主机。

     

              

     

        

      

      

          

    命      令

    2

    A

    D0

    TMK Index

    3

    N

    000—999

     

              

     

        

      

      

          

    应  答  码

    2

    A

    D1

    错 误 代 码

    2

    N

     

    TMK 密值

    16

    H

    用基础主密钥加密

    校 验 值

    4

    H

    TMK的校验值

    4.1.6  存储一个索引的终端主密钥(D2/D3)

    功能:密码机接受指定索引(TMK INDEX)的终端主密钥(TMK)密值,并将它用基础主密钥解密后存储在密码机内。

     

              

     

        

      

      

          

    命      令

    2

    A

    D2

    TMK Index

    3

    N

    0999

    TMK 密值

    16

    H

    用基础主密钥加密

    校 验 值

    4

    H

    TMK的校验值

     

     

              

     

        

      

      

          

    应  答  码

    2

    A

    D3

    错 误 代 码

    2

    N

     

    4.1.7  清除一个索引的终端主密钥(D4/D5)

    功能:清除密码机内指定索引的终端主密钥。

     

              

     

        

      

      

          

    命      令

    2

    A

    D4

    TMK Index

    3

    N

    0999

     

              

     

        

      

      

          

    应  答  码

    2

    A

    D5

    错 误 代 码

    2

    N

     

    4.1.8  取回一个索引的终端主密钥(D6/D7)

    功能:密码机将指定索引的终端主密钥,用基础主密钥加密后返回给主机。

     

              

     

        

      

      

          

    命      令

    2

    A

    D6

    TMK Index

    3

    N

    000—999

     

     

              

     

        

      

      

          

    应  答  码

    2

    A

    D7

    错 误 代 码

    2

    N

     

    TMK 密值

    16

    H

    用基础主密钥加密

    校 验 值

    4

    H

    TMK的校验值

    4.1.9  计算离散子密钥(10/11)

    功能:密码机根据指定的卡片密钥,加密输入数据,得离散子密钥,存于密码机内。

     算法选择:0DES 12:保留,以后同。

     

              

     

        

      

      

          

    命     令

    2

    A

    10

    算法选择

    1

    N

     

    Version

    1

    N

    0:当前版本,其他:老版本

    Group Index

    2

    N

    00—31

    M_Number

    2

    N

    110

    LS_Data

    16

    H

    用于生成离散子密钥

              

     

        

      

      

          

    应  答  码

    2

    A

    11

    错 误 代 码

    2

    N

     

    计算离散子密钥的方法:

    1. 用选定的卡片密钥(128bits)对输入数据LS_Data进行3_DES加密运算,得离散子密钥的左半部;
    2. 用选定的卡片密钥(128bits)对输入数据LS_Data的反(NEG)进行3_DES加密运算,得离散子密钥的右半部;

    4.1.10  计算过程密钥(12/13)

    功能:用当前密码机内的离散子密钥LSKEY(128bits),根据3_DES算法,加密输入数据GC_Data产生一个64bits的过程密钥GCKEY,并将它存储在密码机内。

     

              

     

        

      

      

          

    命      令

    2

    A

    12

    算法选择

    1    

    N

     

    GC_Data

    16

    H

    用于生成过程密钥

     

              

     

        

      

      

          

    应  答  码

    2

    A

    13

    错 误 代 码

    2

    N

     

    4.1.11  产生动态通讯密钥(14/15)

    功能:密码机产生一个64bits的随机数据,用指定的终端主密钥加密后返回给主机。

     

              

     

        

      

      

          

    命      令

    2

    A

    14

    算法选择

    1

    N

     

    TMK Index

    3

    N

    000—999

     

              

     

        

      

      

          

    应  答  码

    2

    A

    15

    错 误 代 码

    2

    N

     

    TXKey

    16

    H

    用终端主密钥加密

     

     

     

     

     

     

     

     

     

     

    4.2  功能命令

    4.2.1  用当前离散子密钥计算3_DES_MAC (20/21)

    功能:用密码机内的当前离散子密钥LSKEY,根据3_DES_MAC算法,计算输入数据的MAC值,并返回给主机。

     

              

     

        

      

      

          

    命     令

    2

    A

    20

    算法选择

    1

    N

     

    Data Length

    3

    N

    输入数据的字节数

    Data

    n

    H

    MAC 数据

     

              

     

        

      

      

          

    应  答  码

    2

    A

    21

    错 误 代 码

    2

    N

     

    MAC

    8

    H

    计算的MAC值

    用离散子密钥产计算3_DES_MAC的方法:

    1. 由加密机调用者提供一个不定长的数据块(前8字节为Initial Vector)。
    2. 将该数据块分成8字节为单位的数据块,标号为D0D1D2…等。最后的数据块有可能是1-8个字节。
    3. 如果最后的数据块长度为8字节的话,则在其后加上16进制数字‘0x80 00 00 00 00 00 00 00’,转到第5步。
    4. 如果最后的数据块长度不足8字节,则在其后加上16进制数字‘0x80,如果达到8字节长度,则转到第5步;否则在其后加入16进制数字‘0x 00’直到长度达到8字节。
    5. 用离散子密钥(128bits)对数据块进行3_DES_MAC运算,得MAC。

    注意:MAC数据最好不再采用原16进制数字符(‘0’-‘9’、‘A’-‘F’)的方式,MAC数据长度也用真实长度表示,以实现金卡指令集格式的统一。下同。

    4.2.2  用当前过程密钥计算1_DES_MAC(22/23)

    功能:用密码机内的当前GCKEY,根据1_DES_MAC算法,计算输入数据的MAC值,并返回给主机。

     

              

     

        

      

      

          

    命      令

    2

    A

    22

    算法选择

    1

    N

     

    Data Length

    3

    N

    输入数据的字节数

    Data

    n

    H

    MAC 数据

     

     

              

     

        

      

      

          

    应  答  码

    2

    A

    23

    错误代码

    2

    N

     

    MAC

    8

    H

    计算的MAC值

     

    用过程密钥计算1_DES_MAC的方法:

    1. 由加密机调用者提供一个不定长的数据块(前8字节为Initial Vector)。
    2. 将该数据块分成8字节为单位的数据块,标号为D0、D1D2…等。最后的数据块有可能是1-8个字节。
    3. 如果最后的数据块长度为8字节的话,则在其后加上16进制数字‘0x 80 00 00 00 00 00 00 00’,转到第5步。
    4. 如果最后的数据块长度不足8字节,则在其后加上16进制数字‘0x 80,如果达到8字节长度,则转到第5步;否则在其后加入16进制数字‘0x 00’直到长度达到8字节。
    5. 用过程密钥(64bits)对数据块进行1_DES_MAC运算,得MAC。

    4.2.3  用当前离散子密钥计算1_DES_TAC(24/25)

    功能:用密码机内的当前离散子密钥LSKEY,根据1_DES_TAC算法,计算输入数据的MAC值,并返回给主机。

     

              

     

        

      

      

          

    命      令

    2

    A

    24

    算法选择

    1

    N

     

    Data Length

    3

    N

    输入数据的字节数

    Data 

    n

    H

    MAC 数据

     

              

     

        

      

      

          

    应  答  码

    2

    A

    25

    错误代码

    2

    N

     

    TAC

    8

    H

    计算的TAC值

    用离散子密钥计算1_DES_TAC的方法:

    1. 由加密机调用者提供一个不定长的数据块(前8字节为Initial Vector)。
    2. 将该数据块分成8字节为单位的数据块,标号为D0D1D2…等。最后的数据块有可能是1-8个字节。
    3. 如果最后的数据块长度为8字节的话,则在其后加上16进制数字‘0x 80 00 00 00 00 00 00 00’,转到第5步。
    4. 如果最后的数据块长度不足8字节,则在其后加上16进制数字‘0x 80,如果达到8字节长度,则转到第5步;否则在其后加入16进制数字‘0x 00’直到长度达到8字节。
    5. 离散子密钥左右异或后对数据块进行1_DES_MAC运算,得MAC。

    4.2.4  用通讯密钥或者终端主密钥计算MAC(26/27)

    功能:用指定的终端主密钥或给出的通讯密钥,根据MAC_MODE_1、2、3算法,计算输入数据的MAC值,并返回给主机。

              

        

      

      

          

    命      令

    2

    A

    26

    算法选择

    1

    N

     

    Key_Select

    1

    N

     0:TXKEY; 1:TMK

    Mode_X

    1

    N

    MAC_MODE_X:X=1,2,3

    TMK Index

    3

    N

    0—999

    TXKEY

    16

    H

    用TMK加密。仅当Key_Select为0,才有此域

    Data Length

    3

    N

    输入数据的字节数

    Data

    n

    H

    MAC数据

     

              

     

        

      

      

          

    应  答  码

    2

    A

    27

    错 误 代 码

    2

    N

     

    MAC

    8

    H

    计算的MAC值

    1. 由加密机调用者输入数据按每8字节一组分为:D0D1……Dn最后一组若不足8字节,在后面加0x 00补齐
    2. 用解密后通信密钥(Key_Select =0)或终端主密钥(Key_Select =1)计算MAC
    3. 根据Mode_XMAC_MODE_1、MAC_MODE_2、MAC_MODE_3三种算法之一计算MAC。

    4.2.5  用指定的终端主密钥加密数据(C0/C1)

    功能:用指定的终端主密钥,根据1_DES算法,加密输入的数据,并将加结果返回给主机。

     

              

     

        

      

      

          

    命      令

    2

    A

    C0

    算法选择

    1

    N

     

    TMK Index

    3

    N

    终端主密钥索引

    Data

    16

    H

    输入的数据

     

              

     

        

      

      

          

    应  答  码

    2

    A

    C1

    错误代码

    2

    N

     

    Output Result

    16

    H

     

    4.2.6  用当前离散子密钥加密数据(C2/C3)

    功能:用密码机内的当前离散子密钥,根据3_DES算法,加密输入的数据,并将加结果返回给主机。

     

              

     

        

      

      

          

    命      令

    2

    A

    C2

    算法选择

    1

    N

     

    Data

    16

    H

     

     

     

              

     

        

      

      

          

    应  答  码

    2

    A

    C3

    错 误 代 码

    2

    N

     

    Output Result

    16

    H

     

    4.3  复合命令

    4.3.1  用实时生成的密钥计算MAC(50/51)

    功能:

    1.用实时生成的离散子密钥根据3_DES_MAC算法,计算输入数据的MAC值。

    2.用实时生成的过程密钥根据1_DES_MAC算法,计算输入数据的MAC值。

    说明:对实时生成离散子密钥和过程密钥,均不在密码机内保存。以后同。

              

     

        

      

      

          

    命      令

    2

    A

    50

    算法选择

    1

    N

     

    Version

    1

    N

    卡片密钥的版本号

    Group_Index

    2

    N

    卡片密钥的组号

    M_Number

    2

    N

    卡片密钥的索引号

    Key_Select

    1

    N

    0:LSKEY ;1:GCKEY

    LS_Data

    16

    H

    用于产生LSKEY的数据

    GC_Data

    16

    H

    用于产生GCKEY的数据,仅当Key_Select=1时有此域

    Data Length

    3

    N

    输入数据的字节数

    Data

    n

    H

    输入的MAC数据

              

     

        

      

      

          

    应  答  码

    2

    A

    51

    错 误 代 码

    2

    N

     

    MAC

    8

    H

    计算的MAC值

    处理步骤:

    1. 用指定的卡片密钥加密LS_Data,得离散子密钥的LSKEY的左半部。

    2. 用指定的卡片密钥加密取反后的LS_Data,得离散子密钥的LSKEY的右半部。

    3. 1)如果Key_Select等于0用离散子密钥LSKEY对输入的数据计算3_DES_MAC

    2)如果Key_Select等于1LSKEY加密GC_Data,得过程密钥GCKEY。然后用过程密钥GCKEY对输入的数据计算1_DES_MAC。(MAC算法参见独立命令).

    4.3.2  用实时生成的密钥校验MAC(52/53)

    功能:

    1.用实时生成的离散子密钥根据3_DES_MAC算法,校验输入数据的MAC值。

        2用实时生成的过程密钥根据1_DES_MAC算法,校验输入数据的MAC值。

              

        

      

      

          

    命      令

    2

    A

    52

    算法选择

    1

    N

     

    Version

    1

    N

    卡片密钥的版本号

    Group_Index

    2

    N

    卡片密钥的组号

    M_Number

    2

    N

    卡片密钥的索引号

    Key_Select

    1

    N

    0:LSKEY ;1:GCKEY

    LS_Data

    16

    H

    用于产生LSKEY的数据

    GC_Data

    16

    H

    仅当Key_Select=1时有此域

    MAC

    8

    H

    待校验的MAC

    Data Length

    3

    N

    输入数据的字节数

    Data

    n

    H

    用于校验MAC的数据

              

     

        

      

      

          

    应  答  码

    2

    A

    53

    错 误 代 码

    2

    N

     

    处理步骤:

    1. 用指定的卡片密钥加密LS_Data,得离散子密钥的LSKEY的左半部。
    2. 用指定的卡片密钥加密取反后的LS_Data,得离散子密钥的LSKEY的右半部。
    3. LSKEY加密GC_Data,得过程密钥GCKEY。
    4. 如果Key_Select等于0用离散子密钥LSKEY对输入的数据计算3_DES_MAC,                如果Key_Select等于1则用过程密钥GCKEY对输入的数据计算1_DES_MAC。
    5. 用计算的MAC值校验输入的MAC值。(算法参见独立命令)

    4.3.3  用实时生成的密钥校验并产生MAC(54/55)

    功能:1.用实时生成的离散子密钥根据3_DES_MAC算法,校验并计算MAC。

          2用实时生成的过程密钥根据1_DES_MAC算法,校验并计算MAC。

              

        

      

      

          

    命      令

    2

    A

    54

    算法选择

    1

    N

     

    Version

    1

    N

    卡片密钥的版本号

    Group_Index

    2

    N

    卡片密钥的组号

    M_Number

    2

    N

    卡片密钥的索引号

    Key_Select

    1

    N

    0:LSKEY ;1:GCKEY

    LS_Data

    16

    H

    用于产生LSKEY的数据

    GC_Data

    16

    H

    仅当Key_Select=1时有此域

    MAC1

    8

    H

    待校验的MAC1

    Data1 Length

    3

    N

    输入数据1的字节数

    Data1

    n

    H

    用于校验MAC1的数据

    Data2 Length

    3

    N

    输入数据2的字节数

    Data2

    n

    H

    用于生成MAC2的数据

              

        

      

      

          

    应答码

    2

    A

    55

    错误代码

    2

    H

    MAC2

    8

    H

    由Data2计算的MAC

    4.3.4  用实时生成的离散子密钥计算1_DES_TAC(56/57)

              

        

      

      

          

    命      令

    2

    A

    56

    算法选择

    1

    N

     

    Version

    1

    N

    卡片密钥的版本号

    Group_Index

    2

    N

    卡片密钥的组号

    M_Number

    2

    N

    卡片密钥的索引号

    LS_Data

    16

    H

    用于产生LSKEY的数据

    Data Length

    3

    N

    输入数据的字节数

    Data

    2*n

    H

    用于计算TAC的数据

              

        

      

      

          

    应答码

    2

    A

    57

    错误代码

    2

    H

    TAC

    8

    H

    由Data计算的TAC

     

     

     

     

     

     

     

     

     

     

     

    4.3.5  用实时生成的离散子密钥校验1_DES_TAC(58/59)

              

        

      

      

          

    命      令

    2

    A

    58

    算法选择

    1

    N

     

    Version

    1

    N

    卡片密钥的版本号

    Group_Index

    2

    N

    卡片密钥的组号

    M_Number

    2

    N

    卡片密钥的索引号

    LS_Data

    16

    H

    用于产生LSKEY的数据

    MAC

    8

    H

    用于校验的MAC

    Data Length

    3

    N

    输入数据的字节数

    Data

    n

    H

    用于计算TAC的数据

              

        

      

      

          

    应答码

    2

    A

    59

    错误代码

    2

    H

    4.4  密钥导入/导出指令

    应用步骤:

    1. CCK以明文形式装入HSM(调用F0命令);

    2. 用新的CCK替换原CCK,并用原CCK保护输出(F1命令);

    3. HSM产生密钥母卡的IKImport Key)和TKTransport Key),保存在密码机中(调用F2命令);

    4. IKTKCCK保护读出HSM,,为防止他人随意调用该指令制卡,该命令须有授权机制(输入HSM口令,并判断有无A卡插入)。

    5. HSM用指定的交易主密钥对数据离散,得到离散后的应用密钥,并用IK保护以安全报文的格式输出(F6命令)

    注意:

    1. 增加此类命令一方面可在我密码机用于密钥管理中心时能按标准产生相应密钥供密钥卡使用,另一方面又可在我密码机用于交易时从密钥卡中导入交易密钥;

    2. 此处所涉及的3种密钥CCKIKTK均为与密钥母卡相关的密钥,相对独立,建议在密码机中专门为此划分一块密钥区域;

    3. 密码机中至少应可存放CCK一把、IK10把、TK10把;

    4. 密钥导入密码机的命令已拟出(F7/F8),下周将与G&D公司调试。

    4.4.1  CCK初始化(F0/F1)

    功能:CCK存入密码机中。要在授权状态下做

              

     

        

      

    类  型

          

    命   令

    2

    A

    F0

    CCK

    32

    H

    CCK明文

              

     

        

      

      

          

    应答码

    2

    A

    F1

    错误代码

    2

    H

    4.4.2  CCK替换(F1/F2)

    功能:密码机随机产生新的CCK替换原CCK,并将新CCK用原CCK保护输出。

              

     

        

      

    类  型

          

    命   令

    2

    A

    F1

              

     

        

      

      

          

    应答码

    2

    A

    F2

    错误代码

    2

    H

    CCK

    32

    H

    被原CCK保护的新CCK密文

    4.4.3  产生IKTK(F2/F3)

    功能:密码机随机产生IKTK,并保存在密码机中。

              

     

        

      

    类  型

          

    命   令

    2

    A

    F2

    IK/TK索引

    1

    N

    0-9

    FLAG

    1

    N

    0:IK,1:TK

              

     

        

      

      

          

    应答码

    2

    A

    F3

    错误代码

    2

    H

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    4.4.4  输出制卡用TKIK(F4/F5)

    功能:从密码机取出IKTK,用CCK以安全报文的格式加密并做MAC输出。该命令须在授权状态下方可完成

              

     

        

      

    类  型

          

    命   令

    2

    A

    F4

    IK/TK索引

    1

    N

    0-9

    FLAG

    1

    N

    0:IK,1:TK

    Key_Header_Len

    2

    N

    Key_Header的长度/2

    Key_Header

    N

    H

    Key的前缀

    Key_Tailer_Len

    2

    N

    Key后缀的长度/2

    Key_Tailer

    N

    H

    Key的后缀

    Mac_Header_Len

    2

    N

    Mac前缀的长度/2

    Mac_Header

    N

    H

    Mac前缀

              

     

        

      

      

          

    应答码

    2

    A

    F5

    错误代码

    2

    H

    数据块的密文

    N

    H

    被CCK保护的数据块密文

    MAC

    8

    H

    MAC

    算法:

    1. Key_header + IK/TK + Key_tailer组成一个不定长的报文;

    2. 将该报文分成8字节为单位的数据块,标号为D0D1……等,最后的数据块可能是1-8字节;

    3. 如果最后的数据块长度为8字节,则在其后加上16进制数字‘0x80 00 00 00 00 00 00 00,转到第5步;

    4. 如果最后的数据块长度不足8字节,则在其后补0x80,如果达到8字节长度,则转到第5步,否则再在其后加0x00,直到长度达到8字节;

    5. CCK对数据块进行3_DES加密;

    6. 将第5步得到的密文前面加上Mac_HeaderMac_Header+密文),再用CCK对其进行3_DES_MAC运算,得到MAC如果MAC数据长度为8*N,则在后补0x8000000000000000

    7. 将密文和MAC输出;

    4.4.5  输出制卡用功能密钥(F6/F7)

    功能:密码机用指定的密钥离散数据,并用IK以安全报文的格式加密并做MAC输出。

              

     

        

      

    类  型

          

    命   令

    2

    A

    F6

    IK索引

    1

    N

    0-9

    FLAG

    1

    N

    0:不分散,1:1次离散,

    2:2次离散

    Version

    1

    N

    卡片密钥的版本号

    Group_Index

    2

    N

    卡片密钥的组号

    M_number

    2

    N

    卡片密钥索引

    Ls_Data1

    16

    H

    用于一次离散的数据,仅当FLAG=1和2时有此域

    Ls_Data2

    16

    H

    用于二次离散的数据,仅当FLAG=2时有此域

    Key_Header_Len

    2

    N

    Key_Header的长度/2

    Key_Header

    N

    H

    Key的前缀

    Key_Tailer_Len

    2

    N

    Key后缀的长度/2

    Key_Tailer

    N

    H

    Key的后缀

    Mac_Header_Len

    2

    N

    Mac前缀的长度/2

    Mac_Header

    N

    H

    Mac前缀

              

     

        

      

      

          

    应答码

    2

    A

    F7

    错误代码

    2

    H

    数据块的密文

    N

    H

    被IK保护的数据块密文

    MAC

    8

    H

    MAC

    算法:

    1. 用由VersionGroup_indexM_number指定的卡片密钥对数据进行一次或两次离散,得到制卡用功能密钥FMK

    2. Key_header + FMK + Key_tailer组成一个不定长的报文;

    3. 将该报文分成8字节为单位的数据块,标号为D0D1……等,最后的数据块可能是1-8字节;

    4. 如果最后的数据块长度为8字节,则在其后加上16进制数字‘0x80 00 00 00 00 00 00 00,转到第6步;

    5. 如果最后的数据块长度不足8字节,则在其后补0x80,如果达到8字节长度,则转到第6步,否则再在其后加0x00,直到长度达到8字节;

    6. IK对数据块进行3_DES加密;

    7. 将第5步得到的密文前面加上Mac_HeaderMac_Header+密文),再用IK对其进行3_DES_MAC运算,得到MAC

    8. 将密文和MAC输出;

    4.4.6  从密钥卡中导入制卡用功能密钥(F7F8)

    功能:密码机将用TK以安全报文报文格式送入的功能密钥存储在密码机指定位置中。

              

     

        

      

    类  型

          

    命   令

    2

    A

    F7

    TK索引

    1

    N

    ‘0’-‘9’

    Version

    1

    N

    卡片密钥的版本号

    Group_Index

    2

    N

    卡片密钥的组号

    M_number

    2

    N

    卡片密钥索引

    Key_Header_Len

    2

    N

    Key_Header的长度/2

    Mac_Header_Len

    2

    N

    Mac前缀的长度/2

    Mac_Header

    N

    H

    Mac前缀

    数据块的密文

    N

    H

    被TK保护的数据块密文

    MAC

    8

    H

    MAC

              

     

        

      

      

          

    应答码

    2

    A

    F8

    错误代码

    2

    H

    算法:

    1. 块的密文前面加上Mac_HeaderMac_Header+密文),再用TK对其进行3_DES_MAC运算,验证MAC是否正确,如验证错误,则终止;

    2. TK解密数据块的密文,得到Key_header + FMK + Key_tailer8000000。。。,提取功能密钥FMK

    3. 将功能密钥FMK存入密码机中由Version,Group_index,M_number指定的位置。

    4.4.7  备份IKTK(F8/F9)

    功能:利用MK加密TKIK并输出。

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    F8

    IK索引

    1

    N

    0-9

    Flag

    1

     N

    0:IK,1:TK

              

     

        

      

      

          

    应答码

    2

    A

    F9

    错误代码

    2

    H

    输出的DK

    32

    H

    由MK保护的TK或IK。

    DK的检查值

    4

    H

    DK加密64bits的0

    4.4.8  恢复IKTK(FA/FB)

    功能:TKIK备份回密码机中。

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    FA

    IK索引

    1

    N

    0-9

    Flag

    1

     N

    0:IK,1:TK

    IK/TK的密文

    32

    H

    DK的检查值

    4

              

     

        

      

      

          

    应答码

    2

    A

    FB

    错误代码

    2

    H

    4.4.9  取得授权(FC/FD)

    功能:要求插入A卡。

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    FC

    HSM口令

    8

    H

              

     

        

      

      

          

    应答码

    2

    A

    FD

    错误代码

    2

    H

    4.4.10  取消授权(FE/FF)

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    FE

              

     

        

      

      

          

    应答码

    2

    A

    FF

    错误代码

    2

    H

    4.5  RSA命令

    4.5.1  产生一对RSA密钥(34/35

    功能:由加密机产生随机的RSA公私钥对

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    34

    密钥长度

    4

    N

    比特长度:“0320”-“4096”,应为8的整倍数。

    私钥索引

    2

    N

    00”-“20”:密码机内保存新生成的密钥。

    99”:不保存新生成的密钥。

    88”私钥明文输出。

              

     

        

      

      

          

    应答码

    2

    A

    35

    错误代码

    2

    H

    私钥长度

    4

    N

    私钥密文字节数

    私钥密文

    n

    B

    用主密钥加密的私钥

    4.5.2  导入私钥(35/36

    功能:将用主密钥加密的私钥导入密码机,并保存在密码机内。

    除非人为销毁,否则密钥将一直保存在密码机中。

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    35

    私钥索引

    2

    N

    00”-“20

    私钥长度

    4

    N

    私钥密文字节数。“0000”表示删除该私钥。

    私钥密文

    n

    B

    用主密钥加密的私钥

              

     

        

      

      

          

    应答码

    2

    A

    36

    错误代码

    2

    H

    4.5.3  导出私钥(36/37

    功能:将密码机内的私钥用主密钥加密导出。

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    36

    私钥索引

    2

    N

    00”-“20

    私钥长度

    4

    N

    私钥密文字节数。“0000”表示删除该私钥。

    私钥密文

    n

    B

    用主密钥加密的私钥

              

     

        

      

      

          

    应答码

    2

    A

    37

    错误代码

    2

    H

    私钥长度

    4

    N

    私钥密文字节数

    私钥密文

    n

    B

    用主密钥加密的私钥

    4.5.4  用私钥签名(37/38

    功能:一般先用MD5或者SHA1对报文进行压缩,生成固定长度的摘要,然后用此命令做签名。

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    37

    填充方式

    1

    N

    0”:如果数据不是密钥长度的整倍数,后面补0x00

    1”:PKCS填充方式(一般情况下使用此方式)

    私钥索引

    2

    N

    00”-“20

    数据长度

    4

    N

    数据的字节数

    数 据

    n

    B

    用于签名的数据

              

     

        

      

      

          

    应答码

    2

    A

    38

    错误代码

    2

    H

    签名长度

    4

    N

    字节数。

    签 名

    n

    B

    填充方式:见附录D

    4.5.5  用公钥验证(38/39

    功能:用公钥对数字签名进行验证

              

     

        

    长度

    类  型

          

    命   令

    2

    A

    38

    填充方式

    1

    N

    0”:如果数据不是密钥长度的整倍数,后面补0x00

    1”:PKCS填充方式(一般情况下使用此方式)

    签名长度

    4

    N

    字节数。

    签 名

    n

    B

    分隔符

    1

    A

    值“;”

    数据长度

    4

    N

    字节数

    数 据

    n

    B

    用于签名的数据

    分隔符

    1

    A

    值“;”

    公 钥

    n

    B

    ANS.1 DER编码方式―――见附录

              

     

        

      

      

          

    应答码

    2

    A

    39

    错误代码

    2

    H

     

    4.5.6  转换DES密钥:从公钥加密到主密钥加密(3A/3B

    功能:用于接收密钥。

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    3A

    私钥索引

    2

    N

    00”-”20”:用密码机内的私钥

    密钥长度

    4

    N

    DES密钥密文的字节数

    密钥密文

    n

    B

    用公钥加密的DES密钥

     

              

     

        

      

      

          

    应答码

    2

    A

    3B

    错误代码

    2

    H

    DES密钥

    32

    H

    用主密钥加密的DES密钥

    检查值

    16

    H

    DES密钥加密64bits0

    4.5.7  转换DES密钥:从主密钥加密到公钥加密(3B/3C

    功能:用于分发密钥。

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    3B

    密钥密文

    32

    H

    用主密钥加密的DES密钥

    公 钥

    n

    B

     

              

     

        

      

      

          

    应答码

    2

    A

    3C

    错误代码

    2

    H

     

    检查值

    16

    H

    DES密钥加密64bits0

    密钥长度

    4

    N

    DES密钥密文的字节数

    密钥密文

    n

    B

    用公钥加密的DES密钥

    4.5.8  产生摘要(3C/3D

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    3C

    算法标志

    1

    N

    0’:MD5;‘1’:SHA1

    报文长度

    4

    N

    报  文

    n

    B

     

              

     

        

      

      

          

    应答码

    2

    A

    3D

    错误代码

    2

    H

     

    摘  要

    16/20

    B

    MD516SHA120

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    4.5.9  公钥加密(30/31

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    30

    填充方式

    1

    N

    0”:如果数据长度小于密钥长度,加密时先在数据前面补0x00,以使数据长度等于密钥的长度,然后再进行加密;

    1”:PKCS填充方式(一般情况下使用此方式)

    公钥索引

    2

    N

    00”-“20

    明文数据长度

    4

    N

    明文数据的字节数

    明文

    n

    B

    用于加密的明文数据

     

              

     

        

      

      

          

    应答码

    2

    A

    31

    错误代码

    2

    H

    加密结果长度

    4

    N

    如果采用0填充方式,则“加密结果长度”应为4 + 公钥的模的长度(例如,公钥模长为128字节,则加“密结果长度”为4+128=132字节);如果采用1填充方式,则“加密结果长度”应等于公钥的模的长度(例如,公钥模长为128字节,则“加密结果长度”为128字节)。

    加密结果

    n

    B

    如果采用0填充方式,“加密结果”的前4个字节表示明文的长度(例如,如果明文长度为16个字节,则“加密结果”的前4个字节表示为0x10,0x00,0x00,0x00)后续字节为密文,且密文长度等于密钥的模的长度;如果采用1填充方式,则“加密结果”即为密文,密文长度等于密钥的模的长度。

    4.5.10  私钥解密(33/34

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    33

    用公钥加密时所采用的填充方式

    1

    N

    0”:如果数据长度小于密钥长度,加密时先在数据前面补0x00,以使数据长度等于密钥的长度,然后再进行加密;

    1”:PKCS填充方式(一般情况下使用此方式)

    私钥索引

    2

    N

    00”-“20

    密文数据长度

    4

    N

    密文数据的字节数

    密文数 据

    n

    B

    用于解密的密文数据

     

              

     

        

      

      

          

    应答码

    2

    A

    34

    错误代码

    2

    H

    明文长度

    4

    N

    字节数。

    明文

    n

    B

    4.5.11  私钥加密(3D/3E

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    3D

    填充方式

    1

    N

    0”:如果数据长度小于密钥长度,加密时先在数据前面补0x00,以使数据长度等于密钥的长度,然后再进行加密;

    1”:PKCS填充方式(一般情况下使用此方式)

    私钥索引

    2

    N

    00”-“20

    数据长度

    4

    N

    数据的字节数

    数 据

    n

    B

    用于加密的数据

     

              

     

        

      

      

          

    应答码

    2

    A

    3E

    错误代码

    2

    H

    加密结果长度

    4

    N

    字节数。

    加密结果

    N

    B

    4.5.12  公钥解密(39/40

     

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    39

    用私钥加密时所采用的填充方式

    1

    N

    0”:如果数据长度小于密钥长度,加密时先在数据前面补0x00,以使数据长度等于密钥的长度,然后再进行加密;

    1”:PKCS填充方式(一般情况下使用此方式)

    公钥索引

    2

    N

    00”-“20

    数据长度

    4

    N

    数据的字节数

    数 据

    n

    B

    用于加密的数据

     

              

     

        

      

      

          

    应答码

    2

    A

    40

    错误代码

    2

    H

    明文长度

    4

    N

    字节数。

    明文

    n

    B

    4.5.13  转换MAC密钥并做MAC3E/3F

    功能:用于接收公钥加密的MAC密钥(128位),用私钥解密得到MAC密钥明文,用MAC密钥明文对输入数据做MAC,得到MAC值。

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    3E

    私钥索引

    2

    N

    0020

    密钥长度

    4

    N

    MAC密钥密文的字节数

    密钥密文

    n

    B

    MAC密钥密文

    数据长度

    4

    N

    MAC数据的长度

    数据

    n

    B

    MAC的数据

     

              

     

        

      

      

          

    应答码

    2

    A

    3F

    错误代码

    2

    H

    MAC

    16

    H

    MAC

    4.5.14  PIN转换指令(41/42

    功能:将由公钥加密的PIN转换成ANSI9.8标准

              

     

        

    长度

    类  型

          

    命令代码

    2

    A

    41

    私钥索引

    2

    N

    指定的私钥,用于解密PIN数据密文

    PAN

    16

    H

    用户主帐号

    PIN密文

    n

    B

    经公钥加密的PIN数据密文

     

              

     

        

      

      

          

    应答码

    2

    A

    42

    错误代码

    2

    H

    PIN密文

    7

    H

    返回的PIN密文——ANSI9.8

    注:PIN数据格式如下:

    2字节PIN数据长度+PIN明文+随机数据

    2字节批PIN数据长度用字符型式表示。

    附:测试数据:

    34 31    (命令代码“40”)

    30 31    (私钥索引)

    30 30 31  BMK索引)

    30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46  (用银行主密钥加密的PIK

    30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46   (PAN)

    98 AB EC 5E 31 C6 C0 20 22 16 C9 6B 92 C0 1E 25 A8 CE CE 3E DA 3B B3 B3 BB 33 19

    AF AC 3F DD A8 A5 E2 7C 5E EA 13 65 49 F7 D7 D5 F3 95 99 E6 CB E4 E3 DC FB 13 0A

    63 2B A9 9F 4C D7 F2 A6 2C DE 90 CA C0 B2 97 63 56 D0 41 BF 08 1E 16 EE A6 6C 99

    57 CF 49 FA 75 48 C5 50 B8 D8 2F 7B C4 5F F9 C2 60 1B FC 1F 2C C7 3A 39 AA 3E 28

    C4 F7 8B 94 B8 95 E5 DE A3 22 93 E1A8 EE 9B 8B E8 C7 73 89

    (用公钥加密的PIN数据密文,其对应的明文为: 30 36 31 32 33 34 35 36 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 4141 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 4141 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41(十六进制表示),其中PIN123456,其长度为6字节(30 36)

    5  附录A  密码机出错代码表

    错  误  码

    含        义

    01

    无基础主密钥

    05

    终端主密钥不存在

    0B

    终端主密钥索引错

    10

    MAC校验失败

    12

    算法选择错

    18

    版本号错

    19

    组号错

    20

    卡片密钥索引错

    21

    密钥类型错

    22

    算法方式域错

    23

    加密标志错

    24

    MAC数据长度域1错

    25

    MAC数据长度域2错

    26

    密钥奇偶校验错

    41

    计算MAC的数据长度指示域错(不应小于8)

    60

    命令代码错

    61

    消息太短

    62

    消息太长

    63

    线路传输错

    77

    非法ASCII码

    80

    字节超时错(1 秒)

    90

    密钥库的密钥校验错

    91

    卡片密钥、LSKEY、GCKEY不存在

    92

    密钥校验值不符合

     

    6  附录B 算法描述

    6.1  3DES算法描述

      64bits数据

     

     

     

     

     

    6.2  X_DES_MAC算法描述

    If (KMA = KMB)   Then x = 1

                                         Elsex = 3

    KMA

    KMB

    6.3  MAC_MODE_X算法描述

    6.3.1  MAC_MODE_1

    KMA

    6.3.2  MAC_MODE_2

    KMA

    6.3.3  MAC_MODE_3

    KMA

    7  附录C 公钥编码:

    SJL06密钥机采用如下的公钥编码方式:

    公钥包含如下内容:

    modulusn

    public_Exponente

    公钥按如下格式定义:

    Sequence

    Identifier

    Byte

    Length

    Integer

    Identifier

    Modulus

    Length

    Modulus

    Integer

    Identifier

    Exponent

    Length

    Exponent

    下面是一个modulus1024 bitsExponent3的公钥表示:

    0x30

    0x81,0x86

    0x02

    0x81,0x80

    128 byte

    Modulus

    0x02

    0x01

    0x03

    0x30:序列起始标志。

    0x81,0x86:指定了后面的字节长度。

    如果长度值为0x010x7F,直接指定后面的字节长度。

    如果长度值大于0x80,则长度值减0x80,所得结果为长度域的字节数。上例中,长度值为0x81,所以长度由随后的1字节指定(0x86――10进制为134)。

    0x02Modulus起始标志。

    0x81,0x80:指定了Modulus的字节数。与Byte Length表示法相同。

    128byte Modulus:公钥的Modulus

    0x02Exponent起始标志。

    0x01:指定了Exponent的字节数。与Byte Length表示法相同。

    0x03:公钥的Exponent

    8  附录D 填充方式

    填充方式0

    1. 如果数据正好是密钥长度的整倍数,不做填补。

    2. 如果数据不是密钥长度的整倍数,后面补0x00

    3. 进行分段签名/加密。

    4. 返回签名/加密结果:处理前明文的字节数(4字节)+处理结果

    注意:此方式,由用户保证每段数据不大于密钥,否则验证/解密会失败。

    处理前明文的字节数(4字节)的表示法:低字节在前,高字节在后。例如:78 56 34 12表示长度为0x12345678

    这种填充方式用于支持以下情况:

    用户要采用PKCS以外的某种填充方式,可在外部先自行填充,然后通过密码机进行处理。

    填充方式1

    PKCS填充方式,在用公钥或私钥进行处理前,数据按如下格式进行填充:

    00 BT PS 00 D

    BT1字节,用私钥时填0x01,用公钥时填0x02,。

    PS:填充串,至少8字节。BT01时填FF……FFBT02时填非0的随机数。

    D 是数据,最多为密钥长度-11字节。

    * 填充后的数据长度等于密钥长度。

     

     

    9  附录E 新增指令

    9.1 计算交易TAC

              

     

        

      

    类  型

          

    命   令

    2

    A

    6E

    FLAG

    1

    N

    0:不分散,1:1次离散,

    2:2次离散,3:3次离散

    Key_Flag

    1

    N

    0LSKEY  计算KEYA/KEYB

    1GCKEY  计算交易TAC

    厂商密钥的版本

    1

    N

    0-2

    厂商密钥的组号

    2

    N

    00’-‘31

    厂商密钥的索引

    2

    N

    01’-‘10

    Ls_Data1

    16

    H

    用于一次离散的数据,仅当FLAG=1和2和3时有此域

    Ls_Data2

    16

    H

    用于二次离散的数据,仅当FLAG=2和3时有此域

    Ls_Data3

    16

    H

    用于三次离散的数据,仅当FLAG=3时有此域

    GC_Data

    16

    H

    产生过程密钥的数据

    (仅当Key_Flag=1时有此项)

    Input Data

    16

    H

    计算TAC的输入数据

     

              

     

        

      

      

          

    应答码

    2

    A

    6F

    错误代码

    2

    H

    数据块的密文

    16/12

    H

    TAC / (KEYA/KEYB)

    9.2 报文加解密

    支持ECB、CBC、CFB等

              

     

        

      

    类  型

          

    命   令

    2

    A

    6B

    加密标志

    1

    N

    0:加密

    1:解密

    2:做1DES_MAC(密钥的左8字节)

    3:做3DES_MAC

    加解密算法选择

    2

    N

    01:  ECB

    02:  CBC

    03:  CFB

    04:  OFB

    离散标志

    1

    N

    0: 不分散1:一次分散 2:两次分散

    离散算法选择

    1

    N

    0:两次都用PBOC

    1:第一次用PBOC,第二次用OWF2

    2:第一次用OWF2,第二次用PBOC

    3:两次都用OWF2

    如果离散标志为0:此域请填‘0’

    如果离散标志为1:忽略第二次分散选择

    Version

    1

    N

    卡片密钥的版本号

    Group_Index

    2

    N

    卡片密钥的组号

    M_Number

    2

    N

    卡片密钥的索引号

    RND1

    16

    N

    用于产生第一次离散的数据(仅当离散标志为1或2时有此域)

    RND2

    16

    H

    用于产生第二次离散的数据(仅当离散标志为2时有此域)

    数据填充方式

    2

    N

    01:   不添补数据

    02:   添补数据(仅当加密标志为2或3时有此域)

    报文长度

    3

    N

    报文的字符数/2

    报文

    16*n

    H

    报文或须做MAC的数据 (CBC加密和MAC时IV为前8字节)

     

              

     

        

      

      

          

    应答码

    2

    A

    6C

    错误代码

    2

    H

    报文明/密文/

    MAC

    16*n或16

    H

    做MAC则返回16位MAC值

    1DES_MAC密钥:卡片密钥/一次分散密钥/二次分散密钥的左8字节;

    3DES_MAC密钥:卡片密钥/一次分散密钥/二次分散密钥;

    计算MAC时加密机对数据填充的要求:

    填充方式一:密码机对数据不做添补

    [数据]的前8字节为IV

    输入数据应为8字节的倍数,密码机对数据不做添补。

    填充方式二:密码机对数据做添补

    数据添补方式:

    1. 由加密机调用者提供一个不定长的数据块(前8字节为Initial Vector)。

    2. 将该数据块分成8字节为单位的数据块,标号为D0D1D2…等。最后的数据块有可能是1-8个字节。

    3. 如果最后的数据块长度为8字节的话,则在其后加上16进制数字‘0x80 00 00 00 00 00 00 00’,转到第5步。

    4 .如果最后的数据块长度不足8字节,则在其后加上16进制数字‘0x80,如果达到8字节长度,则转到第5步;否则在其后加入16进制数字‘0x 00’直到长度达到8字节。

  • 相关阅读:
    Leangoo:用敏捷开发管理思维做团队协作的SaaS软件
    张江男的逆袭,我如何使用leangoo提升团队效率
    探索leangoo常用快捷键
    Tkinter教程之Event篇(3)
    Tkinter教程之Event篇(2)
    Tkinter教程之Event篇(1)'
    Tkinter教程之Grid篇
    Tkinter教程之Pack篇
    Tkinter教程之Canvas篇(4)
    Tkinter教程之Canvas篇(3)
  • 原文地址:https://www.cnblogs.com/stx3220665294/p/15231308.html
Copyright © 2011-2022 走看看