密码学学习笔记(二十):DSA签名与X.509证书

数字签名

下图是一个制作以及使用数字签名过程的通用模型。

假设Bob发送一条消息给Alice,尽管消息并不重要,也不需要保密,但他想让Alice知道消息确实是他本人发的。出于这个目的,Bob利用一个安全的散列函数,比如SHA-512,产生消息的散列值然后将这个散列值用他的私钥加密,从而创建了数字签名。当Alice接收到带有签名的消息后,她要做的是:

  • 计算该消息的散列值
  • 利用Bob的公钥对签名解密
  • 将计算出的散列值和解密出的散列值做比较

如果这两个散列值相等,Alice就能确认所收到的消息是由Bob签名过的。因为其他人没有Bob的私钥,所以他们不能创建能用Bob的公钥解密的密文。另外,没有Bob的私钥也不可能对消息做修改。

数字签名并不提供机密性,发送消息不会被篡改但有可能被窃听。

公钥证书

公钥证书由公钥加上公钥所有者的用户ID以及可信第三方签名的整个数据块组成。

  1. 用户软件(客户端)创建一对密钥:一个公钥和一个私钥
  2. 客户端准备一个包含用户ID和公钥的未签名的证书。
  3. 用户通过某种安全手段将未签名的证书提交给Certificate Authority - CA(认证中心)。这种手段可能是面对面的会谈,也可能是使用已注册的电子邮件,或提交一个电子邮件认证的Web表单。
  4. CA以如下方式产生一个签名:(1) CA利用某个散列函数计算出未签名证书的散列码。该散列函数比如SHA,将一个可变长度的数据分组或消息映射到一个固定长度散列码。
  5. CA将签名附属在未签名的证书后,以此创建一个签名证书。
  6. CA将签名证书交还给客户端。
  7. 客户端可以将该签名证书提交给其他用户。
  8. 该签名证书的任何接收者可以通过(1)接收者计算证书的散列码(不包括签名),(2)接收者使用CA的公钥和签名认证算法来证实数字签名。这个算法返回值显示签名是否有效。

X.509标准已经被广泛接受,用来格式化公钥证书。

X.509

X.509 ITU-T标准在RFC 5280有详细的描述,是最为广泛接受的公钥证书格式。

RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile (rfc-editor.org)

X.509证书被用于大多数网络安全应用,包括IP安全、SSL、TLS、SET、S/MINE,以及电子商务应用。

X.509证书主要元素包括具有X.500主体名称的密钥和公钥信息、有效期、CA发放者名称,以及将这些信息绑定在一起的这些信息的签名。

X.509标准定义了一个证书吊销列表(CRL),是由颁发者签名的。 每一个被吊销的证书都包含了证书的序列号和证书吊销日期。CA颁发的证书序列号是唯一的,足以识别证书。当一个应用接收了一个证书,X.509标准声明应用应该在签发证书的CA的当前的CRL中确认证书是否已经被吊销。

相关推荐
AomanHao2 小时前
【阅读笔记】沙尘图像线性颜色校正A fusion-based enhancing approach for single sandstorm image
图像处理·笔记·isp·图像增强·沙尘图像·色偏·颜色校正
宇木灵4 小时前
C语言基础-十、文件操作
c语言·开发语言·学习
枷锁—sha4 小时前
【pwn系列】Pwndbg 汇编调试实操教程
网络·汇编·笔记·安全·网络安全
山岚的运维笔记5 小时前
SQL Server笔记 -- 第73章:排序/对行进行排序
数据库·笔记·后端·sql·microsoft·sqlserver
QQ24391977 小时前
语言在线考试与学习交流网页平台信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·spring boot·sql·学习·java-ee
眼镜哥(with glasses)8 小时前
0215笔记-语言模型,提问范式与 Token
人工智能·笔记·语言模型
FakeOccupational8 小时前
【电路笔记 通信】香农公式(Shannon-Hartley Theorem/香农-哈特利定理)证明(暂记)
笔记
The_Uniform_C@t29 小时前
论文浅读(第三期)|摘自《UAV Resilience Against Stealthy Attacks》(第一节)
网络·物联网·学习·网络安全
青衫码上行9 小时前
高频 SQL 50题(基础版)| 查询 + 连接
数据库·sql·学习·mysql
宇木灵9 小时前
C语言基础学习-X0前置
c语言·开发语言·学习