密码学学习笔记(二十):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中确认证书是否已经被吊销。

相关推荐
Nontee2 小时前
MySQL 插入冲突了怎么办?两种处理方式入门笔记
数据库·笔记·mysql
浔溺2 小时前
al+大数据每日学习笔记26
笔记·学习
xx~t3 小时前
嵌入式——进程与线程1
linux·c语言·学习·嵌入式·进程与线程
老当益壮梁奶奶3 小时前
Linux软件编程学习笔记(七):线程分离与线程间通信详解
linux·c语言·c++·笔记·学习
sel_94 小时前
【多轮对话论文导读(三)】多轮对话与Agent论文阅读笔记:用户模拟、轨迹生成与长期记忆
论文阅读·人工智能·笔记·深度学习·算法·机器学习
zzm6284 小时前
《SIGIR 2018论文精读|深度学习点击序列模型:对搜索页面点击行为进行序列建模》
笔记·深度学习·推荐系统·论文精读
我命由我123454 小时前
UI 设计 7 种排列方式
xml·学习·ui·html·产品运营·产品经理·学习方法
常驻客栈5 小时前
B-深入理解计算机系统第3版之第8章:异常控制流
笔记·学习·常驻客栈·深入理解计算机系统·学习笔记‘’
lzhdim5 小时前
13、JavaScript事件循环机制 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
小杨不想秃头5 小时前
信息安全工程师考试
学习·网络安全