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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/44208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小梦C嘎嘎——启航篇】vector 以及日常使用的接口介绍

【小梦C嘎嘎——启航篇】vector 日常使用的接口介绍😎 前言🙌vector 是什么?vector 比较常使用的接口 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧&#xff01…

TypeScript入门指南

TypeScript学习总结内容目录: TypeScript概述 TypeScript特性。Javascript与TypeScript的区别 * TypeScript安装及其环境搭建TypeScript类型声明 * 单个类型声明,多个类型声明 * 任意类型声明 * 函数类型声明 * unknown类型…

micropython SSD1306/SSD1315驱动

目录 简介 代码 功能 显示ASCII字符 ​编辑 画任意直线 画横线 画竖线 画矩形 画椭圆 画立方体 画点阵图 翻转 反相 滚动 横向滚动 纵向滚动 奇葩滚动 简介 我重新写了一个驱动,增加了一些功能,由于我的硬件是128*64oled单色I2C,我只…

【数据结构】如何用队列实现栈?图文详解(LeetCode)

LeetCode链接:225. 用队列实现栈 - 力扣(LeetCode) 本文默认读者已经掌握栈与队列的基本知识 或者先看我的另一篇博客:【数据结构】栈与队列_字节连结的博客-CSDN博客 做题思路 由于我们使用的是C语言,不能直接使用队…

npm 不是内部或外部命令,也不是可运行的程序或批处理文件。

遇到问题: 1.遇到问题:npm 不是内部或外部命令,也不是可运行的程序或批处理文件。 2.遇到问题:或者使用npm安装插件时会出现 XXX\node\node_modules\npm不可用 情况 如下图: 分析问题: nodejs在nodejs官网…

分布式ID

分布式ID 背景Snowflake(雪花算法)背景 分布式系统,用什么做为主键呢? uuid 太长(MySQL官方有明确的建议主键要尽量越短越好[4],36个字符长度的UUID不符合要求。)、 无规律(在InnoDB引擎下,UUID的无序性可能会引起数据位置频繁变动,严重影响性能。)SnowflakeLeaf h…

GO学习之 数据库(mysql)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…

Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四)

文章目录 Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四)服务端客户端 Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四) 服务端 服务端结构如下: UserModel using System; using System.Collections.Generic; usin…

pointnet C++推理部署--tensorrt框架

classification 如上图所示,由于直接export出的onnx文件有两个输出节点,不方便处理,所以编写脚本删除不需要的输出节点193: import onnxonnx_model onnx.load("cls.onnx") graph onnx_model.graphinputs graph.inpu…

【C++】C++入门基础:引用详解

本篇继续分享关于C入门的相关知识,有关命名空间、缺省参数和函数重载的部分欢迎阅读我的上一篇文章【C】C入门基础详解(1)_王笃笃的博客-CSDN博客 继续我们的学习 引用 在C语言中我们接触过指针,很多人都或多或少为他感到头痛过…

使用SSH隧道将Ubuntu云服务器Jupyter Notebook端口映射到本地

本文主要实现了在Ubuntu云服务器后台运行Jupyter Notebook,并使用SSH隧道将服务器端口映射到本地 1. 生成配置文件 运行以下命令生成Jupyter Notebook的配置文件: jupyter notebook --generate-config这将在用户主目录下生成一个名为.jupyter的文件夹&…

【傅里叶级数与傅里叶变换】数学推导——3、[Part4:傅里叶级数的复数形式] + [Part5:从傅里叶级数推导傅里叶变换] + 总结

文章内容来自DR_CAN关于傅里叶变换的视频,本篇文章提供了一些基础知识点,比如三角函数常用的导数、三角函数换算公式等。 文章全部链接: 基础知识点 Part1:三角函数系的正交性 Part2:T2π的周期函数的傅里叶级数展开 P…

【Rust日报】2023-08-18 RustShip:一个新的 Rust 播客

探索 Rust 编译器基准测试套件 在最近关于 Rust 编译器 CI(持续集成)和基准测试基础设施的文章中,作者承诺写一篇关于运行时基准测试的博客文章,这是 Rust 编译器基准测试套件的新补充。然而,在这样做之前,…

回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图)效果一览基…

aardio窗体缩放自动匹配批量生成plus实例

import win.ui; /*DSG{{*/ var winform win.form(text"窗体缩放批量生成plus";right759;bottom469;bgcolor15780518) winform.add( custom{cls"custom";text"自定义控件";left3;top6;right753;bottom460;ah1;aw1;bgcolor15780518;z1} ) /*}}*//…

UML基础模型

目录 1.抽象类2.接口3.继承4.实现接口5.关联关系6.聚合关系7.合成(组合)关系8.依赖关系 1.抽象类 矩形框代表一个类(Class)。 类图分为三层: 第一层显示类的名称,如果是抽象类,就用斜体显示&am…

操作系统的体系结构、内核、虚拟机

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 操作系统结构 一、操作系统体系结构1.1操作系统的内核1.1.…

TiDB 多集群告警监控-中章-融合多集群 Grafana

作者: longzhuquan 原文来源: https://tidb.net/blog/ac730b0f 背景 随着公司XC改造步伐的前进,越来越多的业务选择 TiDB,由于各个业务之间需要物理隔离,避免不了的 TiDB 集群数量越来越多。虽然每套 TiDB 集群均有…

Gateway网关路由以及predicates用法(项目中使用场景)

1.Gatewaynacos整合微服务 服务注册在nacos上,通过Gateway路由网关配置统一路由访问 这里主要通过yml方式说明: route: config: #type:database nacos yml data-type: yml group: DEFAULT_GROUP data-id: jeecg-gateway-router 配置路由:…

宁德时代与陕汽签署十年战略合作协议,助力商用车电动化进程

据报道,宁德时代新能源科技股份有限公司与陕西汽车控股集团有限公司已经签署了一项为期十年的战略合作协议。双方的合作旨在推动商用车电池技术的发展,并面向商用车全领域应用。 这次战略合作具有重要意义,为宁德时代和陕汽启动了全面合作的序…