GPC-SCP03安全通道协议

概述:

规范全称: GlobalPlatform Technology Secure Channel Protocol '03' Card Specification V2.3 - Amendment D Version 1.1.2

安全通道的建立的标志即通讯双方都形成三个安全通道共享密钥(Derived Session Key),它们是Kmac, Krmac, Kenc(即标准中的S-MAC,S-RMAC,S-ENC)。

SCP03还是分成两大部分:

  • 第一部分,对S-MAC,S-RMAC,S-ENC的生成和通讯双方双向认证的过程做出一种规范并说明;
  • 第二部分,说明了安全通道建立后如何利用这三个密钥进行安全通道通信的框架和流程。

用例与要求:

安全通道用于在发行和发行后进行个性化卡片。使用伪随机卡挑战数(pseudo-random card chanllenges)的安全通道协议的模式允许在卡不存在的情况下离线准备个性化脚本,并在不在线连接到准备脚本的实体的情况下在卡上处理这些脚本。

当个性化涉及加载密码密钥(cyptographic key)时,确保传输的传输密钥(transport key)必须至少与正在传输的密钥一样

为了帮助确定合适的传输密钥(transport),美国国家标准与技术研究所(NIST)发布了一份名为“密钥管理建议”(Recommendation for key Management)的文件。本文件可在NIST网站上免费获得,参考文献NIST 800-57第1部分([NIST 800-57])也可免费获得,是美国联邦政府使用的强制性标准,也得到了世界上许多其他政府的认可。[NIST 800-57]根据其算法和大小提供了密钥的加密强度。结果表明,2TDEA密钥可以作为传输密钥加密其他2TDEA密钥、RSA 1024密钥或具有f = 160-223的ECC密钥,但不能用于加密以下密钥:

  • 3TDEA Length Keys
  • RSA above 1024
  • AES-128
  • AES-192
  • AES-256
  • ECC (f = 224 and above)

此外,作为传输密钥的3TDEA密钥只能加密另一个3TDEA密钥、RSA 2048或具有f = 224-255的ECC密钥,但不能用于加密:

  • RSA above 2048
  • AES-128
  • AES-192
  • AES-256
  • ECC (f = 256 and above)

由于上述类型的密钥开始在最新一代的JavaCards™中可用,因此GP平台提供一种机制,通过该机制可以将这些密钥加载到卡中就变得很重要了。

根据上述标准,AES密钥更适合于传输密钥

  • AES-128密钥可用于加密3个TDEA密钥,RSA高达3072,AES-128和ECC,f up to383。
  • AES-192密钥还可用于加密RSA和f = 384-511的RSA高达7680、AES-192和ECC。
  • 一个AES-256密钥可用于加密RSA高达15360,AES-256和ECC的f = 512+。

从加密分析的角度来看,这将确保基于AES的安全通道的持久性。

安全通道使用

加密: 加密采用S-ENC,加密的过程如下图所示:

MAC: MAC生成过程如下图所示:

R-MAC: MAC生成过程,如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/239277.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sass 同时导出JavaScript 和 CSS变量

Sass 官网 安装插件 注意 sass-loader 版本没设太高,否则会报错 Syntax Error: TypeError: this.getOptions is not a function npm i sass sass-loader10 -D创建 Sass 文件 variables.module.scss。注意这里是 module.scss: 否则报错 Cant find st…

docker 搭建开发环境,解决deepin依赖问题

本机环境: deepin v23b2 删除docker旧包 sudo apt-get remove docker docker-engine docker.io containerd runc注意卸载docker旧包的时候Images, containers, volumes, 和networks 都保存在 /var/lib/docker 卸载的时候不会自动删除这块数据,如果你先…

PyQt6 QRadioButton单选按钮控件

​锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计33条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话…

Linux部分基础指令讲解

目录 1.echo指令 2.more指令 3.less指令(重要) 4.head指令 5.tail指令 6.管道| 7.时间相关的指令 8.cal指令 9.find指令 10.grep指令 1.echo指令 我们先看效果 如图所示我们可以看到显示器显示出了hellow world和hellow这两句话,我们的echo的…

SQL Server 2016(创建数据库)

1、实验环境。 某公司有一台已经安装了SQL Server 2016的服务器,现在需要新建数据库。 2、需求描述。 创建一个名为"db_class"的数据库,数据文件和日志文件初始大小设置为10MB,启用自动增长,数据库文件存放路径为C:\db…

《地理信息系统原理》笔记/期末复习资料(8. 数字高程模型)

目录 8. 数字高程模型 8.1 概述 8.1.1 数字高程模型概念 8.1.2 数字高程模型特点 8.2 DEM数据分布特征 8.2.1 格网状数据 8.2.2 离散数据 8.3 DEM的表示方法 8.3.1 数学方法 8.3.2 图形方法 8.3.3 DEM三维表达方法 8.4 TIN的生成方法 8.4.1 人工方法 8.4.2 程序自…

OpenTelemetry系列 - 第4篇 OpenTelemetry K8S生态

目录 一、【Helm】添加OTel Helm repo二、【Helm Chart】OTel Collector2.1 daemonset2.2 deloyment 三、【K8S Operator】OTel Operator3.1 安装OTel Operator3.2 部署OpenTelemetryCollector3.2.1 Deloyment Mode3.2.2 DeamonSet Mode3.2.3 StatefulSetMode3.2.4 Sidecar Mod…

表的创建和管理

表的创建和管理 一条数据的存储过程标识符的命名规则MySQL中的数据类型管理和创建数据库创建数据库使用数据库修改数据库 创建表创建方式1创建方式2查看数据表结构 修改表追加一个列修改一个列重命名一个列删除一个列 重命名表删除表清空表 一条数据的存储过程 存储数据是处理数…

配置中心--Spring Cloud Config

概述 因为微服务架构有很多个服务,手动一个一个管理各个服务配置很麻烦,不同的环境(开发、测试、生产)往往需要不同的配置文件,运行期间也需要动态调整配置,修改配置后微服务需要自动更新配置,…

从“芯”到云,看亚马逊云科技如何让未来“平等”发生

文章目录 业界最全面算力选择,有效解决多样性需求多年自研芯片积累,带来性能与性价比双重优势全球基础设施与独特的业务模式,让创新不受限 “科幻作家威廉吉布森说‘未来已至,只是还没有均匀分布’。”2023年6月底,当亚…

C语言实现猜数字游戏

前面我们已经了解了分支循环、数据类型及变量的知识点,今天我将用之前学过的知识进行实操,将所学的知识进行巩固和提升。下面的讲解仅我个人认知水平,如有欠缺之处,欢迎大家指正,并且我希望初学者在看完讲解后可以独立…

spring boot 3.2.0 idea从零开始

spring boot 3.2.0 idea从零开始 最新的spring initilizer 不再支持低版本java,只能选择17、21 。 我也被迫尝试下最新版本的java。 jdk下载地址 自定义好artifact和group之后点击下一步。 在这里选择需要的组件,我准备做web项目所以只选择spring web …