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级的数据库丢失的情况。此外ÿ…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
