SGP.22-V.3.1-安全1
有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题,欢迎+W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot).
2.6.4.4 Command TLV MACing and Encryption
在提供的文件 "RSP Technical Specification Version 3.1 Final" 中,第 2.6.4.4 节 "Command TLV MACing and Encryption" 描述了如何通过 BSP(BPP Security Protocol)对命令 TLV(Tag-Length-Value)进行 MAC(Message Authentication Code)计算和加密。以下是该部分的概要:
### 2.6.4.4 Command TLV MACing and Encryption (命令 TLV MAC计算和加密)
**数据加密和MAC计算的步骤**:
1. **数据填充(Padding)**:根据使用的加密算法和模式,对数据字段进行填充。例如,如果使用 AES-CBC-128 或 SM4-CBC,需要在数据块的右侧添加一个值为 '80' 的字节,然后添加 0 到 15 字节的 '00',使得填充后的数据块长度为 16 字节的倍数。
2. **加密(Encryption)**:对填充后的数据进行加密。数据块将根据所使用的算法和模式进行加密。数据块将从 1 开始编号,并使用会话加密密钥(S-ENC)加密,以产生命令加密的 ICV(Integrity Check Value)。
3. **MAC链值(MAC Chaining Value)**:输入数据用于 C-MAC 计算,包括 MAC 链值、标签、长度和加密后的数据。
4. **MAC值计算(MAC Value Computation)**:使用定义的 MAC 算法计算完整的 MAC 值。输出数据通过连接标签、最终长度、加密后的数据和 C-MAC 值来计算。
如果使用的算法是 AES-CMAC-128 或 SM4-CMAC,C-MAC 值是步骤 4 结果的 8 个最高有效字节。
**关键点**:
- BSP 定义了两种保护命令 TLV 的方式:MAC 和加密,以及仅 MAC。
- 命令 TLV 不产生响应 TLVs,这意味着它们是单向的命令,不期待有返回值。
- 通过使用 MAC 和加密,可以确保数据的完整性和保密性。
- MAC 计算确保了数据在传输过程中未被篡改,而加密则提供了数据的安全性。
这部分内容是 RSP 架构中保护数据传输的关键环节,确保了在远程 SIM 配置过程中数据的安全性和完整性。通过这些机制,可以防止未授权的篡改和保证数据的机密性。
SGP.02-v4.2
4.1.3.3 Download and Installation of a Profile
P238 - Description of the SCP03t security protocol
eUICC接收到 Replace session key command 命令时的行为:
密钥长度验证:eUICC将验证新密钥与旧密钥的长度是否相同。如果长度不同,eUICC将返回错误代码'01',并中止加载配置文件。
替换会话密钥:如果新密钥的长度验证通过,eUICC将用新密钥集替换当前的会话密钥。
使用新密钥集:一旦命令成功执行,eUICC将使用这组新密钥对后续的SCP03t数据块进行解密和MAC(消息认证码)验证,以及对响应进行加密和MAC生成。新密钥集的类型与它们替换的会话密钥类型相同。
命令成功执行后的响应
如果命令消息被接受,eUICC将返回一个带有标记'87'和长度为零的响应TLV(标记-长度-值)。这个TLV不返回R-MAC(响应消息认证码)。
命令目的
“Replace session key”命令用于在下载受保护的配置文件时,用一组新的会话密钥替换现有的SCP03t会话密钥(S-ENC、S-MAC和S-RMAC)。通常,新的会话密钥是PPK-ENC、PPK-MAC和PPK-RMAC,它们用于保护命令和响应的TLVs(标记-长度-值)。
密钥替换规则
全部替换:命令要求同时替换所有会话密钥(S-ENC、S-MAC和S-RMAC),不允许只替换部分会话密钥。
响应加密和MAC:命令的响应必须使用PPK-ENC加密,并使用PPK-RMAC进行MAC操作。
PPK-RMAC的特殊要求
每次下载尝试不同:对于同一配置文件的每次下载尝试,PPK-RMAC都应该是不同的,以增强安全性。
数据封装
BER-TLV:命令中的数据应该封装在带有标记'87'的基本编码规则(BER)TLV中。
总结
这个命令是确保在配置文件下载过程中密钥安全性的关键步骤。通过替换会话密钥,可以为传输的数据提供额外的安全层,特别是当使用随机密钥模式时。
这种机制有助于防止重放攻击,因为每次尝试下载配置文件时都会使用不同的响应消息认证码(R-MAC)。
SGP22.V3.1 - 5.5.1 Function: InitialiseSecureChannel
### 功能:InitialiseSecureChannel(初始化安全通道)
- **相关流程**:配置文件的下载和安装。
- **功能提供实体**:ISD-R(集成安全域-远程)。
### 功能描述
- SM-DP+(订阅管理数据准备服务器)使用此功能初始化与目标eUICC的安全通道。
- 此功能携带远程操作类型标识符,以及与eUICC进行具有完美前向保密性(PFS)的密钥协商所需的材料,从而允许SM-DP+和eUICC之间安全的端到端通信。
### 所需材料
- **事务ID**(Transaction ID)
- **密钥生成描述**(Description of the keys to generate)
- **SM-DP+生成的一次性公钥**(One-time public key for key agreement generated by SM-DP+,otPK.DP.KA)
- **材料签名**(Signature upon material),包括之前生成的otPK.EUICC.KA(也作为eUICC的挑战),以确保其完整性和真实性。
### 安全级别
- 安全级别隐式地从要执行的远程操作类型中推导出来。
### eUICC接收命令时的行为
1. **验证SM-DP+签名**:使用PK.DPpb.SIG验证签名,如果签名无效,将拒绝命令,并在配置文件安装结果中返回invalidSignature错误,中止配置文件安装,并丢弃与其配置文件安装相关的所有上下文数据(如SM-DP+证书)。
2. **验证远程操作类型**:确保请求的远程操作类型是已定义的类型之一,否则在配置文件安装结果中返回unsupportedRemoteOperationType错误。
3. **验证事务ID**:确保接收到的事务ID与正在进行的RSP会话的事务ID匹配,否则在配置文件安装结果中返回invalidTransactionId错误。
4. **验证控制参考模板**:确保描述密钥生成的控制参考模板与此处下(命令消息部分)定义的值匹配,否则在配置文件安装结果中返回unsupportedCrtValues错误。
5. **生成会话密钥**:使用接收到的otPK.DP.KA和之前生成的otSK.EUICC.KA,根据2.6.5节确定的密钥协商算法生成会话密钥(S-ENC和S-MAC)和初始MAC链值。
### SCP标识符和参数
- 此规范不使用标记'90'(SCP标识符和参数),只使用一个根据GlobalPlatform卡规范修正案F [13]中定义的SCP11a派生的SCP类型。
### 密钥使用限定符
- 此规范不使用标记'95'(Key Usage Qualifier),由'远程操作类型标识符'(见下文)确定。
### 密钥类型和长度验证
- 当SM-DP+选择AES-128时,keyType应包含值'88',keyLen应包含'10'。
- 当SM-DP+选择SM4时,keyType应包含值'89',keyLen应包含'10'。
### SM-DP+签名计算
- SM-DP+签名(smdpSign)如2.6.9节所述,使用SM-DP+私钥SK.DPpb.SIG计算,跨越以下连接的数据对象:
- remoteOpId
- transactionId
- controlRefTemplate
- smdpOtpk
- euiccOtpk,如在“ES9+.GetBoundProfilePackage”功能中接收到的prepareDownloadResponse数据对象中提供的。
### 签名包含otPK.EUICC.KA
- 由于签名包含otPK.EUICC.KA,eUICC可以认证SM-DP+。
### 远程操作类型为installBoundProfilePackage时
- 隐式的密钥使用限定符应设置为MAC和加密。
### 总结
这段文本详细说明了在eUICC中初始化安全通道的过程,包括密钥协商、签名验证和事务管理。这个过程对于确保配置文件的安全下载和安装至关重要,因为它提供了一个安全的通信通道,并且可以防止未授权的访问和篡改。
相关文章:
SGP.22-V.3.1-安全1
有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题,欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 2.6.4.4 Command TLV MACing and Encryption 在提供的文件 "RSP Technical Specification Version 3.1 Final" 中&a…...
STM32单片机ADC功能详解
文章目录 1. ADC概述 2. ADC结构图 3. 引脚定义 4. 转换模式 5. 数据对齐 6. 转换时间 7. 硬件电路 8. STM32使用ADC单/多通道检测数据 1. ADC概述 功能:ADC是一个将模拟信号(如电压)转换为数字信号的设备。在微控制器中,…...
47.Redis学习笔记
小林coding -> 图解redis的学习笔记 文章目录 Rediswindwos安装docker安装redis启动redis使用RDM访问虚拟机中的redispython连接redis缓存穿透、击穿、雪崩基本数据类型高级数据类型高并发指标布隆过滤器分布式锁Redis 的有序集合底层为什么要用跳表,而不用平衡…...
数控六面钻适用场景-不止家具制造
在快节奏的现代生活中,家具作为我们生活的重要组成部分,其美观度和实用性日益受到人们的关注。而在这背后,一个不可或缺的“工匠”正默默地发挥着它的作用——那就是数控六面钻。 数控六面钻,顾名思义,是一种高度自动…...
【力扣】86. 分隔链表
86. 分隔链表 题目描述 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入:head […...
海云安受邀参加诸子云 4.27南京「金融互联网」私董会
4月27日,“安在新媒体网安用户行业活动”第四期私董会在南京顺利举办。活动以“金融&互联网”为主题,邀请十余位业内资深的甲方用户以及典型厂商代表。摒弃传统的议题分享,采取“随时问答,自由讨论”的形式,提问题…...
docker操作使用注意事项
文章目录 一、运行docker二、拉取的镜像存放位置1、查询所有拉取的镜像2、查询所有安装的镜像3、查询docker应用的所有信息 一、运行docker 该命令执行后是在窗口下运行的,关闭或退出后docker应用会停止运行 -p:设置绑定端口映射,10022对应…...
Leetcode—163. 缺失的区间【简单】Plus
2024每日刷题(126) Leetcode—163. 缺失的区间 实现代码 class Solution { public:vector<vector<int>> findMissingRanges(vector<int>& nums, int lower, int upper) {int n nums.size();vector<vector<int>> an…...
Ansible自动化运维工具 - playbook 剧本编写
一. inventory 主机清单 Inventory 支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。 1.1 inventory 中的变量含义 Inventory 变量名 含义ansible_hostansible连接节点时的IP地址ansible_port连接对方…...
Web前端一套全部清晰 ⑥ day4 CSS.2 复合选择器、CSS特性、背景属性、标签的显示模式
别人的议论,那是别人的,你的人生,才是你的 —— 24.5.7 一、复合选择器 定义:由两个或多个基础选择器,通过不同的方式组合而成 作用:更准确、更高效的选择目标元素(标签) 1.后代选择…...
Linux 认识与学习Bash——3
在Linux bash中,数据流重定向是指将命令的输出从默认的标准输出(通常是终端)重定向到其他位置,如文件或另一个命令的输入。这是通过使用特定的符号来实现的。例如,>用于将输出重定向到文件,而<用于将…...
匠心精神与创新力量:构筑网络安全的新防线
一、匠心精神在网络安全中的重要性 匠心精神代表着对工作的专注和对质量的极致追求。在网络安全领域,这意味着对每一个安全漏洞的深入挖掘,对每一项安全技术的精心打磨。亿林网络李璐昆的提名,正是对其在网络安全领域匠心精神的认可。 二、…...
接口信息解析
目录 一、通讯流程 二、如何获取接口信息--抓包 1、抓包步骤: 2、抓包工具 接口文档:又称为API文档,是由后端开发编写,用来描述接口信息的文档 一、通讯流程 功能(比如:登录)请求(请求路径、请求方式、…...
scikit-learn实现单因子线性回归模型
1.是什么: 针对机器学习提供了数据预处理,分类,回归等常见算法的框架 2.基于scikit-learn求解线性回归的问题: 2.1.求解a,b对新数据进行预测: 2.2评估模型表现(y和y’的方差MSE)…...
【笔记】Anaconda命令提示符(Anaconda Prompt)操作
通过anaconda配置python环境有时需要conda安装一些包或者文件,这里作为一个笔记记录如何打开Anaconda命令提示符(Anaconda Prompt),并用conda操作 1.打开Anaconda命令提示符(Anaconda Prompt) 可直接在搜…...
Unity射击游戏开发教程:(12)使用后处理
后处理 后期处理是向您的游戏场景添加一个或多个滤镜,确实可以为您的游戏提供精美的外观。在本文中,我们将讨论如何在 Unity 中设置后处理系统,从那里您可以探索和试验 Unity 提供的所有过滤器。 首先,我们需要从包管理器添加后处理器堆栈。包管理器是 Unity 产品的集合,…...
python:机器学习特征优选
作者:CSDN _养乐多_ 在Python中进行机器学习特征选择的方法有很多种。以下是一些常用的方法: 过滤法(Filter Methods):通过统计方法或者相关性分析来评估每个特征的重要性,然后选择最相关的特征。常用的…...
花一个月时间为 vue3 重制了 vue-styled-components
花一个月时间为 vue3 重制了 vue-styled-components 前言 styled-components 在 React 是一个超级热门的 css in js 工具库。其实 styled-components 也有 Vue 版本(vue-styled-components),可惜的是只支持 Vue2,并且该项目已有…...
API接口调用|京东API接口|淘宝API接口
什么是电商API接口: 电商API接口是电商服务平台对外提供的一种接口服务,允许第三方开发者通过编程方式与电商系统进行数据交互和功能调用。 这些接口提供了一种标准化的方法来获取、更新或处理电商平台上的商品信息、订单状态、用户数据、支付信息、物流…...
pgsql和mysql比较
pgsql相对于mysql的优势主要体现在以下几个方面: 稳定性和可靠性:PostgreSQL的稳定性极强,即使在崩溃、断电等灾难场景下也能表现出很好的抗打击能力。相比之下,很多MySQL用户都遇到过Server级的数据库丢失的情况。此外ÿ…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
