PKCS#11认识(二)—Object 与 Attribute
文章目录0 背景1 什么是Object2 什么是Attribute2.1 什么是Attribute2.2 为什么设计 Attributes2.3 Attributes分类概览3 借助工具理解概念3.1 Object3.1.1 列出现有Object3.1.2 查询 slots3.1.3 登录 Token 创建 AES Key3.1.4 再次查看Object3.2 Attribute3.2.1 属性结构3.2.2 通用属性所有对象共有3.2.3 密钥相关属性3.2.4 RSA 密钥特有属性3.2.5 证书相关属性4.参考文献0 背景场景问题描述如果我们将一个私钥或者对称密钥写入到HSM/TEE但又不允许导出密钥材料的的情况下下次如何确认里边的密钥与预期导入的密钥一样呢PKCS#11 的解决方案存储的密钥不仅仅含有密钥本身还有会有属性这些属性可以理解为密钥的说明书有密钥的id有密钥的用途类型描述。PKCS#11不仅仅定义了很多标准化的属性还支持属性的扩展。如下图流程可以达到不获取真实密钥而实现校验的目的1 什么是ObjectObject 是 PKCS#11 对所有安全资源密钥、证书、数据等的统一抽象。它屏蔽了不同资源类型的差异使应用程序可以通过统一的 API 创建、查找、使用、复制和销毁对象而对象的具体特性则由 Attributes 描述应用程序通过 Object Handle 引用和操作这些对象。这里的安全资源包括密钥Key证书Certificate普通数据Data厂商扩展对象Vendor ObjectPKCS#11 │ 管理 Object │ ┌────────┴────────┐ │ │ Handle Attributes 如何访问 对象是什么2 什么是Attribute2.1 什么是AttributeAttribute属性就是用于描述 PKCS#11 Object 特征的一组键值对Key-Value Pair。例如一把 AES 密钥AES Key在 PKCS#11 中并不是只有Key Value而是一个 Object 数据Value Attributes元数据Object ├── CKA_CLASS Secret Key ├── CKA_KEY_TYPE AES ├── CKA_LABEL AES_KEY ├── CKA_ID 01 ├── CKA_VALUE ******** ├── CKA_ENCRYPT TRUE ├── CKA_DECRYPT TRUE ├── CKA_WRAP FALSE ├── CKA_UNWRAP FALSE ├── CKA_SENSITIVE TRUE ├── CKA_EXTRACTABLE FALSE └── ...2.2 为什么设计 Attributes如果没有 Attributes一把密钥只有00112233445566778899AABBCCDDEEFFKCS#11 根本不知道是 RSA是 ECC是 AES能不能签名能不能加密能不能导出谁拥有它敲黑板PKCS#11 不仅需要保存 Key Value更需要保存 Key 的身份和行为2.3 Attributes分类概览3 借助工具理解概念3.1 Object3.1.1 列出现有Object上一篇文章中在token中生成了RSA密钥pkcs11-tool \ --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so \ --login \ --pin 123456 \ --list-objects Using slot 0 with a present token (0x7de1ea57) Private Key Object; RSA label: MyRSA_key1 ID: 01 Usage: decrypt, sign, signRecover, unwrap Access: sensitive, always sensitive, never extractable, local Public Key Object; RSA 2048 bits label: MyRSA_key1 ID: 01 Usage: encrypt, verify, verifyRecover, wrap Access: local3.1.2 查询 slots目的为了查询slot的 Label下一步新建AES key的时候需要指定softhsm2-util --show-slots Available slots: Slot 2111957591 Slot info: Description: SoftHSM slot ID 0x7de1ea57 Manufacturer ID: SoftHSM project Hardware version: 2.6 Firmware version: 2.6 Token present: yes Token info: Manufacturer ID: SoftHSM project Model: SoftHSM v2 Hardware version: 2.6 Firmware version: 2.6 Serial number: e63da68afde1ea57 Initialized: yes User PIN init.: yes Label: test13.1.3 登录 Token 创建 AES Keypkcs11-tool \ --module /usr/lib/softhsm/libsofthsm2.so \ --login \ --pin 123456 \ --token-label test1 \ --keygen \ --key-type AES:16 \ --label AES_KEY_128 \ --id 023.1.4 再次查看Object发现已经新增了~/Desktop$ pkcs11-tool \ --module /usr/lib/softhsm/libsofthsm2.so \ --login \ --pin 123456 \ --token-label test1 \ --list-objects3.2 Attribute3.2.1 属性结构/* General Structure definitions */structCK_ATTRIBUTE{CK_ATTRIBUTE_TYPE type;void*pValue;CK_ULONG ulValueLen;};3.2.2 通用属性所有对象共有CKA_CLASS // 对象类型密钥/证书/数据对象等 CKA_TOKEN // 是否存储在 Token 中true持久化, false会话对象 CKA_PRIVATE // 是否需要登录才能访问 CKA_LABEL // 人类可读的标签名 CKA_MODIFIABLE // 属性是否可修改 CKA_COPYABLE // 是否可复制 CKA_DESTROYABLE // 是否可销毁3.2.3 密钥相关属性CKA_KEY_TYPE// 密钥类型RSA/EC/AES等CKA_ID// 密钥标识符用于匹配公私钥对和证书CKA_SENSITIVE// 是否敏感true私钥值不可读出CKA_ENCRYPT// 是否可用于加密CKA_DECRYPT// 是否可用于解密CKA_SIGN// 是否可用于签名CKA_VERIFY// 是否可用于验签CKA_EXTRACTABLE// 密钥是否可导出CKA_VALUE_LEN// 密钥长度3.2.4 RSA 密钥特有属性CKA_MODULUS// 模数 nCKA_MODULUS_BITS// 模数位数如 2048CKA_PUBLIC_EXPONENT// 公钥指数 eCKA_PRIVATE_EXPONENT// 私钥指数 d3.2.5 证书相关属性CKA_CERTIFICATE_TYPE // 证书类型X.509 等 CKA_SUBJECT // 证书主题 CKA_ISSUER // 证书颁发者 CKA_SERIAL_NUMBER // 序列号 CKA_VALUE // 证书的 DER 编码内容4.参考文献PKCS #11 Cryptographic Token Interface Base Specification Version 2.40https://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.htmlSoftHSM2https://github.com/softhsm/SoftHSMv2OpenSChttps://github.com/OpenSC/OpenSC

相关新闻

AI时代,为什么泛知识能力正在变得越来越重要

AI时代,为什么泛知识能力正在变得越来越重要

——从专业深度到知识连接能力的转变AI 时代,人类的竞争力正在从“掌握多少知识”转向“如何组织、理解和应用知识”。摘要过去几十年,技术人员的成长路径非常明确:选择一个方向,持续深入,成为某个领域的专家。程序员学…

2026/10/14 2:16:22 阅读更多 →
2026吉安黄金回收白银回收铂金回收工商备案可查全城上门回收旧金老店联系方式推荐

2026吉安黄金回收白银回收铂金回收工商备案可查全城上门回收旧金老店联系方式推荐

2026吉安黄金白银铂金回收实测榜单|工商备案可查全城上门回收旧金老店联系方式推荐 吉安黄金回收哪家靠谱|工商公安双备案中检认证实体门店 吉安贵金属回收店铺遍地丛生,行业套路层出不穷,不少市民变现遭遇虚高报价、克扣损耗、未…

2026/10/8 0:09:17 阅读更多 →
安得和众|制造行业:产线图纸与工艺参数安全防护方案

安得和众|制造行业:产线图纸与工艺参数安全防护方案

行业背景:图纸流转失控,工艺数据外泄风险高企装备制造企业的核心竞争力凝结在一张张设计图纸和一份份工艺参数中。从研发设计到工艺规划、从生产制造到外协加工,图纸和工艺数据在企业内部及供应链上下游高频流转。然而,多数制造企…

2026/10/8 15:20:04 阅读更多 →

最新新闻

问题:ubuntu与linux开发板互ping

问题:ubuntu与linux开发板互ping

一、问题原理要解决ubuntu与开发板互ping的问题,就是要使ubuntu和开发板在同一个网段上面。本次问题解决环境:开发板 和 windows 均通过wifi的方式连接网络。二、解决方法1、首先将ubuntu设置成桥接模式状态栏上方点击 虚拟机,点击 设置&…

2026/10/14 3:05:32 阅读更多 →
2026年全国3D溜溜网云渲染速度表现及选购参考指南

2026年全国3D溜溜网云渲染速度表现及选购参考指南

云渲染服务核心评估维度与行业标准当前3D设计领域数字化服务需求持续增长,云渲染服务已成为设计师提升出图效率的核心工具,不同平台的服务能力差异较大,明确统一的评估标准可帮助用户降低选型成本。对于同时承接3个家装项目、自有设备单张4K效…

2026/10/14 3:05:32 阅读更多 →
Chat2DB:开源AI数据库终端,自然语言转SQL的工程实践

Chat2DB:开源AI数据库终端,自然语言转SQL的工程实践

简介:Chat2DB是一款面向软件开发者的AI驱动型开源数据库管理工具,专为降低SQL使用门槛而设计,特别适合非数据库专家、初级开发者及数据分析师快速开展数据库查询、分析与迁移工作。资源包为项目源码压缩包(zip格式)&am…

2026/10/14 3:05:32 阅读更多 →
MySQL索引优化:从B+树原理到慢查询实战

MySQL索引优化:从B+树原理到慢查询实战

做后端开发这几年,最常被拉到群里去救火的场景,十有八九是数据库慢查询。系统跑得好好的,突然某天接口变慢、CPU飙高,一看日志全是SELECT走了全表扫描,几百万行的表一次查询几秒钟才回来。这种时候,十次里有…

2026/10/14 3:05:32 阅读更多 →
RGF_CJ 全局函数全解析:从应用生命周期、系统定时器到窗口与指针互操作

RGF_CJ 全局函数全解析:从应用生命周期、系统定时器到窗口与指针互操作

图形学桌面应用 【免费下载链接】RGF_CJ RGF是仓颉Windows系统下的通用渲染框架(兼应用开发框架)。RGF仓颉版(后续简称"RGF")基于RGF(C/C版)封装优化而来。RGF为开发者提供轻量化、安全、高性能以及高度一致性的2D渲染能…

2026/10/14 3:05:32 阅读更多 →
Python爬虫实战:手机APP数据抓取与解析全流程

Python爬虫实战:手机APP数据抓取与解析全流程

简介:这份PDF资料面向具备Python基础、对网络请求与爬虫开发感兴趣的技术爱好者与研发工程师,围绕手机APP数据传输的抓取与解析展开,重点讲解如何借助Fiddler抓包定位登录与话题接口,再通过urllib2构造HTTP请求、携带Header与表单…

2026/10/14 3:04:31 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →