惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
GbyAI
GbyAI
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
小众软件
小众软件
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
F
Fortinet All Blogs
博客园 - 【当耐特】
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
O
OpenAI News
V
V2EX
博客园 - 三生石上(FineUI控件)
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Stack Overflow Blog
Stack Overflow Blog
P
Privacy International News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
H
Help Net Security
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tenable Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cisco Talos Blog
Cisco Talos Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Hacker News: Ask HN
Hacker News: Ask HN
S
Security @ Cisco Blogs
S
Securelist
T
The Blog of Author Tim Ferriss
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
雷峰网
雷峰网
V2EX - 技术
V2EX - 技术

Razeen`s Blog

Let's Encrypt 推出 Gen Y 根证书架构:揭示 Web PKI 的五大未来趋势 通过 Wi-Fi 自动备份你的 iPhone 到 Nas 管理培训感悟:从技术视角看管理之路 UPS 一拖多:保护你的 NAS 和 Linux 服务器 从影音中心到 AI 助手:我的50款 Homelab 服务清单 从SSL证书有效期将缩短到47天聊开去 部署一个自己的 Running Page 谈谈特斯拉 Model Y 用车一年的感受和费用分析 弃用 Disqus 评论,使用自建 Waline 使用 Prometheus 和 Grafana 搭建你的证书监控面板 服务器迁移记:一次磁盘换板引发的Linux分区与挂载的学习 改善信息来源, 利用 RSS 高效获取资讯 (RSShub + Reeder5 + WeWe RSS) 多种 Docker 镜像拉取解决方案与实践 App分享 | AppCleaner - Mac上的卸载神器 Azure OpenAI API 申请和使用 如何开通 OneKey 虚拟信用卡,并充值消费 如何拥有一个可长期在国内使用的国外手机号码 分享开通 ChatGPT Plus 过程 如何开通 Depay 虚拟信用卡,并充值消费 如何开通欧易Web3钱包, 交易入账 如何5分钟内1块钱注册 ChatGPT 如何注册美区的 Apple ID (2023年/无需科学上网) NAS折腾记(11): NASTool3.0体验和降级 NAS折腾记(10): Docker版本的NASTool配置 NAS折腾记(9): NASTool与微信交互,微信发送消息远程下载电影【多图】 NAS折腾记(8):群晖安装 NASTool 实现影音半自动化【多图】 内网穿透(2):Tailscale 组网实现内网穿透,操作简单,无成本 内网穿透(1):总结了11中内网穿透的方式,总有一种适合你 NAS折腾记(7):从零开始设置(黑)群晖系统 NAS折腾记(6):黑群晖系统安装好后怎么洗白? NAS折腾记(5):群晖硬盘休眠设置与分析 NAS折腾记(4): 20分钟手把手带你完美安装 DS918+ 黑群晖7.1.1 NAS折腾记(3):NAS 装机 NAS折腾记(2):B360-ITX 双M.2 双2.5G网口 6 SATA主版 开箱 NAS折腾记(1):328元的4盘位Nas机箱开箱 Openwrt + Clash 全局科学上网 Newifi3 刷入 OpenWrt 固件 v21.02 利用 Markdown 画一些流程图、时序图、甘特图等 Homelab(8): 搭建自用 Gitlab 与 Docker 仓库 Nginx Tcp 转发保留客户端真实 IP (PROXY Protocol) Homelab (7):IPSec VPN(基于证书认证)客户端设置 Homelab (6): 基于自签发证书的 IPSec VPN 搭建 Homelab (5): DDNS 动态域名解析 Homelab (4): Linux 服务器基础环境准备 Homelab (3): 整体网络与基础硬件介绍 Go学习笔记(十)老项目迁移 go module 大型灾难记录 Github Actions 初体验之自动化部署 Hexo 博客 记一次 Nginx DNS 缓存导致转发问题 Homelab (2): 电信悦me网关修改桥接模式,路由器拨号 Homelab (1):5分钟上手黑群晖 NAS 终极 Bash 脚本指南 Typora 自动上传图片到七牛云 Ubuntu 20.04 LTS 有线网卡驱动安装 折腾 Ubuntu 20.04 LTS 开发环境 Go学习笔记(九) 计时器的生命周期[译] 利用 git hook 规范你的代码与 commit message 规范 git commit message 与自动化版本控制 超详细 vim 配置 (with MacVim) Golang 中的 RESTful API 最佳实践 折腾服务器(开篇) 我的第一台个人服务器 Newifi3 实现低成本家庭级科学上网 Go学习笔记(八) | 使用 os/exec 执行命令 如何用 Go 调用 Windows API Mac OS 自动根据 WI-FI 名字改变网络位置 关于 Docker 清理 MIME Types 速查表 Go学习笔记(七) | 理解OAuth 2.0并实现一个客户端 我又又又把博客迁移了 Go学习笔记(六) | 使用swaggo自动生成Restful API文档 Go学习笔记(五) | 使用代码片段(snippets)提高编码效率 书单 - 2018 IPFS 初体验,利用 IPFS 托管你的静态网站 记一次 PostgreSQL LIKE 索引优化,联合字段 LIKE 查询优化。 Disqus 添加有趣的 Reactions 的功能 TLS 1.3 详解 (RFC 8446解读) gRPC在Go中的使用(三)gRPC实现TLS加密通信与流模式 gRPC在Go中的使用(二)gRPC实现简单通讯 gRPC在Go中的使用(一)Protocol Buffers语法与相关使用 CentOS 安装 tshark 抓包工具 Go学习笔记(四) | win上使用VSCode搭建Go开发环境 日常 Postgres 数据库点滴记录 美食篇 | DIY戚风蛋糕(烤箱做蛋糕) Go学习笔记(三) | 怎么写Go基准测试(性能测试) TLS1.3正式更新,为Nginx添加TLS1.3的支持 一次诡异的数据库删除 GitHub Pages自定义域名开启HTTPS 证书透明度是什么?它是怎么工作的? Go学习笔记(二) | 我对 recover 的一点误解 搭建证书透明度(certificate-transparency)日志服务之从入门到放弃 修复远程登陆 Centos 时,出现 UTF-8 Warning HTTPS篇之SSL握手过程详解 Go学习笔记(一) | postgres与golang点点滴滴 AWS 命令行界面(aws-cli)从安装到快速上手 数字证书分类及怎么区分各类数字证书 常用 linux 命令小结(一)文件目录操作 云服务器搭建 hexo 博客,git hooks自动更新 SSH 免密登陆, SSH Config 配置 Golang CGO Mac 交叉编译 Windows 使用 goose 让数据库迁移更加轻松 开始使用Ghost
简单了解 PKCS 规范
2018-05-09 · via Razeen`s Blog

接触过密码学的童鞋可能都听说或接触过PKCS #1, PKCS #7, PKCS #8, PKCS #12等等,或许你早已了解PKCS就是指公钥密码标准(Public Key Cryptography Standards),而这篇博客将带你系统的了解一下整个PKCS规范。

概览

PKCS即公钥密码标准(Public Key Cryptography Standards),它是由美国RSA实验室与遍布全球的安全系统开发者一起合作指定的一组规范,以推动公钥密码的发展。最早发布的PKCS文档是早期一群公钥技术使用者在1991年召开的一次会议的成果。目前PKCS规范早已被广泛的应用和实施,部分PKCS规范已经成为多个国际组织正式或事实上的标准,如ANSI X9文档系列,PKIXSETS/MIMESSL等。PKCS系列主要包括以下标准。

名称RFC
PKCS #1RSA Cryptography Standard (RSA密码标准)RFC 3447
PKCS #2已撤销,用以规范RSA加密摘要的转换方式,已并入PKCS #1-
PKCS #3Diffie–Hellman Key Agreement Standard (DH秘钥协商标准)-
PKCS #4已撤销,用以定义RSA秘钥的格式,已并入PKCS #1-
PKCS #5Password-based Encryption Standard (基于口令的密码标准)RFC 2898
PKCS #6Extended-Certificate Syntax Standard (扩展的证书语法标准)-
PKCS #7Cryptographic Message Syntax Standard (密码消息语法标准)RFC 2315
PKCS #8Private-Key Information Syntax Standard (私钥信息语法标准)RFC 5958
PKCS #9Selected Attribute Types (可供选择的属性类型)RFC 2985
PKCS #10Certification Request Standard (证书请求语法标准)RFC 2986
PKCS #11Cryptographic Token Interface (密码Token接口标准)-
PKCS #12Personal Information Exchange Syntax Standar (个人信息交换语法标准)RFC 7292
PKCS #13Elliptic Curve Cryptography Standard (椭圆曲线密码标准),正在制定中
PKCS #14Pseudo-random Number Generation (伪随机数生成算法PRNG),正在制定中
PKCS #15Cryptographic Token Information Format Standard (密码Token信息格式标准)

简介

PKCS #1

PKCS #1 v2.1定义了基于RSA公钥算法的加密解密和签名验签机制,主要包括以下内容:

  1. 秘钥类型:
    • 公钥
    • 私钥
  2. 数据转换原子操作: 在数学公式中遇到的潜在大型非负整数与其计算机数据表示形式之间的转换,作为字节序列(一个字节字符串
    • 12OSP (Integer-to-Octet-String primitive)
    • OS2IP (Otter-String-to-Integer primitive)
  3. 密码原子操作:
    • 加密RSAEP,解密RSADP : 基本的加密和解密算法
    • 签名RSASP1,验签RSAVP1 : 用于生成和验证签名的算法
  4. 加密解密方案:
  5. 签名验签方案:
    • RSASSA-PSS : 改进的带有附录的概率签名方案; 基于Bellare和Rogaway最初发明的概率签名方案 。
    • RSASSA-PKCS-v1_5:带有附录的旧签名方案,在PKCS#1版本1.5中首次标准化。
  6. 签名编码方法:
    • EMSA-PSS:签名附件的编码方法,概率签名方案。
    • EMSA-PKCS-v1_5 :PKCS#1版本1.5中首次标准化的签名附录的编码方法。

PKCS #3

PKCS #3 v1.4描述了一种基于DH算法进行密钥协商的方法。无需预先沟通,交易双发就可以协商出一个只有双方知道的秘密密钥,该密钥可以对后续双方的数据通信进行加密保护。

PKCS #5

PKCS #5 v2.0 描述了一种基于口令产生对称密钥的方法。使用MD2或MD5从口令中派生密码,采用DES的CBC模式加密。这个功能主要用于加密从一个计算机传送到另一个计算机的私人密钥,而不是用于加密消息。主要包括:

  1. 密钥获取函数:
    • PBKDF1
    • PBKDF2
  2. 加密解密方案:
    • PBES1
    • PBES2
  3. 消息认证方案:
    • MAC产生
    • MAC验证

PKCS #6

PKCS #6 v1.5描述扩展证书的语法格式。该扩展证书只是对X.509格式进行了扩展,并兼容X.509证书格式。

PKCS #7

PKCS #7 v1.5 描述了密码消息的通用语法。该语法允许嵌套,如一个数字信封可以包含另外一个数字信封,或可以对自己做数字信封的数据进行签名;该语法也允许扩展各种属性,还可以用于分发证书和CRL。

PKCS #7与PEM兼容,可以直接将加密的消息转换成PEM消息,反正亦然。PKCS #7 支持多种基于证书的管理系统,PEM就是其中之一。在RFC 5652中有增强定义。该标准主要包括消息通用语法和6种内容类型(明文、签名、信封、签名信封、摘要、密文)。

PKCS #8

PKCS #8 v1.2描述私钥信息的语法格式。私钥信息包括私钥和一组属性。该标准还描述了私钥密文语法,且允许使用基于口令的加密算法来加密私钥。在RFC 5208中又重新定义。

PKCS #9

PKCS #9 v2.0 定义了两个新的辅助对象类(pkcsEntity和naturalPerson)和精选的属性类型(基于这两个对象类)。

PKCS #10

PKCS #10 v1.7 描述了证书请求的语法格式。证书请求包括DN名字、公钥和一组可选的属性,以及请求方对上述信息的签名。一个证书请求包括可辨别名、公开密钥和(可选的)一组属性,所有这些均由请求证书的用户签名。证书请求被发送给CA,由CA基于证书请求中的内容签发数字证书。在RFC2986中重新定义。

PKCS #11

PKCS #11 v2.2 定义了与密码令牌(如硬件安全模块(HSM)和智能卡)的独立于平台的API。主要内容包括:

  1. 通用数据类型(General Data Types)
  2. 对象 (Objects)
  3. 函数(Functions)
  4. 机制(Mechanisms)

PKCS #12

PKCS #12 v1.0 描述了用于存储和传递个人身份信息的语法格式。个人身份信息包括私钥、证书、各种秘密以及扩展等。支持本标准的机器设备、应用系统、浏览器、上网亭(Internet Kiosk)等应允许用户导入、导出和操作这种格式的个人身份信息。它的目标是为各种应用提供一个标准的单一秘钥文件。常见的PFX文件就是遵循PKCS #12格式的文件。

PKCS #15

PKCS #15v1.1 描述了存储于密码Token中密码凭证的一种格式标准,允许密码令牌的用户向应用程序标识自己。此标准独立于PKCS #11接口和其他API、RSA已经放弃了这个标准的IC卡相关部分,并提交给了ISO/IEC 7816-15。

实例

在后续的学习过程中将补充一些实例来更加深入了解这些规范,先挖个坑~

参考资料

  • PKI/CA与数字证书技术大全