24秋网络认证技术总结

news2025/1/5 12:09:50

CH5 PKI基本结构

PKI组件

PKI系统的核心组件包括:

  1. CA(Certificate Authority)认证机构
    • 权威第三方,用于签发和管理数字证书。
    • 包括 根CA子CA
  2. RA(Registration Authority)注册机构
    • 负责证书申请的身份验证,减轻CA的负担。
  3. Repository
    • 用于发布证书和CRL(证书撤销列表),支持多种访问协议(HTTP、FTP、LDAP等)。
  4. CRL Issuer
    • 专门负责签发和发布证书撤销列表(CRL)。
  5. OCSP Server
    • 提供在线证书状态查询服务。
  6. 订户(Subscriber)
    • 拥有证书并使用证书进行通信的实体(如用户、设备)。
  7. 用户(User)
    • 使用证书来验证通信对方身份的实体。

CA的结构一步步完善过程

  1. 最简单的PKI结构
    • 仅包括一个CA和订户。
    • CA直接处理所有证书签发和管理工作。
  2. 引入RA(Registration Authority)
    • 负责身份验证,减轻CA的负担。
    • RA可并行处理多个申请。
  3. 分层CA结构
    • 根CA签发自签名证书,负责签发子CA证书。
    • 子CA直接与订户交互,签发订户证书。
    • 根CA通常离线以增强安全性,子CA保持在线。
  4. 引入Repository
    • 用于发布证书、CRL及其他信息。
    • 提供多种访问接口,提升用户获取证书的便利性。
  5. 进一步优化
    • 引入专门的CRL Issuer。
    • 增加OCSP服务器以减少撤销信息延迟。

CRL(证书撤销列表)的概念

  • 定义: 包含已被撤销但仍在有效期内的证书序列号的列表。
  • 功能:
    • 防止使用被撤销的证书进行通信。
  • 工作流程:
    1. 订户向RA申请撤销证书。
    2. RA审核通过后通知CA。
    3. CA定期签发CRL,并发布至Repository。
  • 特点:
    • 定期更新(通常为24小时)。
    • 内容包含撤销证书的序列号和其他基本信息。
    • CRL文件可能较大,可能影响效率。

OCSP(在线证书状态协议)的概念

  • 定义: 用于实时查询证书状态的协议。
  • 流程:
    1. PKI用户向OCSP服务器发送查询请求。
    2. OCSP服务器返回证书状态(Good、Revoked、Unknown)。
  • 优势:
    • 减少CRL文件缓存需求。
    • 提供实时的撤销状态信息。
  • 安全需求:
    • 数据源鉴别:响应需签名以确保来源可信。
    • 完整性:防止数据篡改。
    • 防重放攻击:响应中包含时间戳。

谁的证书,颁发给谁

  1. 谁的证书?
    • 证书属于 订户(Subscriber),如个人、设备、组织。
  2. 颁发给谁?
    • 由CA颁发。
    • 根CA颁发给子CA,子CA颁发给最终订户
      证书链示例
  • 根CA → 子CA → 最终订户
  • 根CA自签名,子CA和订户证书分别由上级签发。

证书包含的信息

  1. 基本信息:
    • 证书持有者名称(订户的身份信息)。
    • 颁发者名称(CA的信息)。
    • 证书序列号(证书的唯一标识)。
    • 有效期(起始时间和结束时间)。
    • 证书公钥(持有者的公钥信息)。
    • 数字签名(由CA对证书进行签名,保证真实性)。
  2. 其他信息(扩展字段):
    • 密钥用途(如加密、签名)。
    • 证书策略(使用场景和约定)。

证书的基本结构

基于 X.509版本3 标准的证书结构包括:

  1. 版本号:
    • 指明证书版本,支持扩展功能。
  2. 证书序列号:
    • 每个证书的唯一标识,由CA生成。
  3. 签发者信息(Issuer):
    • CA的名称,采用X.500标准的DN(Distinguished Name)表示。
  4. 有效期:
    • 包括起始时间和结束时间。
  5. 证书主题(Subject):
    • 订户的名称(DN格式)。
  6. 公钥信息:
    • 持有者的公钥及其使用的算法。
  7. 签名算法:
    • CA用于签名的算法标识(如RSA)。
  8. 签名值:
    • CA对证书内容的数字签名。

CH6 PKI证书编码

证书编码基本数据类型含义、关键字含义、编码格式(不考细节计
算)、消岐问题
如何将基本数据类型和关键字转化为0/1比特串-》编码
各种编码的value需要熟悉,显式标签,隐式标签

1. ASN.1 基本数据类型含义

ASN.1 是一种描述数据结构的方法,定义了一些基本的数据类型:

  • INTEGER:整数类型,例如证书版本号、序列号。
  • BOOLEAN:布尔类型,TRUE 或 FALSE。
  • NULL:表示空值。
  • OCTET STRING:字节串。
  • BIT STRING:比特串。
  • OBJECT IDENTIFIER (OID):对象标识符,用来唯一标识算法或扩展。
  • UTCTime / GeneralizedTime:时间类型。
  • SEQUENCE / SEQUENCE OF:表示有序的组合。
  • SET / SET OF:表示无序的组合。

这些类型相当于 C 语言中的基本数据类型,如 int、char 等。


2. ASN.1 关键字含义

ASN.1 提供了一些关键字,用于组合数据类型以构造复杂的数据结构:

  • SEQUENCE:有序组合,例如 X.509 证书的定义。
  • SET:无序组合。
  • CHOICE:多选项,可以是定义的任何一种类型。
  • OPTIONAL:表示该字段是可选的。
  • DEFAULT:字段可以有默认值。
  • ANY DEFINED BY:具体类型由某个值动态决定。

例如,证书中的 AlgorithmIdentifier 是一个 SEQUENCE,包含 algorithm 和 parameter,后者可以为 OPTIONAL。


3. 编码格式(TLV 格式)

编码将 ASN.1 的数据结构转化为二进制串,常见的编码规则包括 BER、DER 和 CER。

  • 编码采用TLV结构:
    • T (Type):数据类型,例如 INTEGER (02)、BOOLEAN (01)。
    • L (Length):数据长度。
      • 如果长度 ≤ 127,使用Short Form,1 字节表示长度。
      • 如果长度 > 127,使用Long Form,第一个字节指示后续长度字节数。
    • V (Value):数据值。

例如,BOOLEAN 类型 TRUE 的 DER 编码为 01 01 FF,其中:

  • Type = 01(BOOLEAN 类型)。
  • Length = 01(值长度为 1 字节)。
  • Value = FF(TRUE)。

4. 消歧问题及解决方案

当多个字段的数据类型相同且为 OPTIONAL 时,会导致解析歧义。例如:

TBSCertificate ::= SEQUENCE {
    version [0] EXPLICIT Version DEFAULT v1,
    serialNumber CertificateSerialNumber,
    ...
}

为解决歧义:

  • 使用标签 (Tag) 区分:为字段添加明确的标记。
    • EXPLICIT Tag:在数据前额外嵌套一层编码,用于无歧义解析。
    • IMPLICIT Tag:在 Type 中直接修改标记,不额外嵌套编码。

5. 显式标签 (Explicit Tag) 和隐式标签 (Implicit Tag)

  • 显式标签 (EXPLICIT)
    • 在编码中额外嵌套一层。例如: version=2 的编码从 02 01 02 变为 A0 03 02 01 02
  • 隐式标签 (IMPLICIT)
    • 不额外嵌套,直接在 Type 中修改。例如: KeyIdentifier 的编码从 04 02 33 77 变为 80 02 33 77

6. 基本数据类型和关键字转化为 0/1 比特串的过程

以 INTEGER 类型为例:

  1. Type (T):INTEGER 的类型值是 0x02。
  2. Length (L)
    • 如果整数占用 1 字节,长度为 0x01。
  3. Value (V)
    • 例如,整数 548 的二进制为 02 24(高位在前)。
    • 编码结果为:02 02 02 24

7. 编码 Value 的特殊情况

  • OID 编码
    • 首字节 = 40 × 第一个值 + 第二个值。
    • 后续值使用 128 进制表示,高位设置为 1。
    • 例如,OID 1.2.840.113549 的编码为:06 09 2A 86 48 86 F7 0D
  • BIT STRING
    • 需要填充至字节的倍数,并在首字节记录填充位数。
    • 例如,比特串 01101110010111,编码为:03 03 05 6E 57

8. 重点:显式标签与隐式标签的应用场景

  • 隐式标签节省字节数,但改变了原始数据类型。
  • 显式标签保留了原始类型,用于解决复杂结构的歧义。

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

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

相关文章

基于51单片机(STC12C5A60S2)和8X8彩色点阵屏(WS2812B驱动)的小游戏《贪吃蛇》(普中开发板矩阵按键控制)

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、矩阵按键3、8X8彩色点阵屏 四、主函数总结 系列文章目录 前言 《贪吃蛇》,一款经典的、怀旧的小游戏,单片机入门必写程序。 以《贪吃蛇》为载体,熟悉各种屏幕的使…

爆肝1个月:DDR4 的信号完整性(万字长文SI)

前言: 大学里面,总有很多课程,很浪费时间,学了没点用处,问过老师,为什么信号完整性,示波器使用等课程不开呢,这种是对工作真实有帮助的? 老师:因为老师…

使用Xjar给SpringBoot项目jar包加密

1. 新建一个SpringBoot项目 2. 在pom文件添加依赖&#xff0c;github地址&#xff1a;https://github.com/core-lib/xjar <dependencies><!-- 添加 XJar 依赖 --><dependency><groupId>com.github.core-lib</groupId><artifactId>xjar&l…

UNI-APP_i18n国际化引入

官方文档&#xff1a;https://uniapp.dcloud.net.cn/tutorial/i18n.html vue2中使用 1. 新建文件 locale/index.js import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from ./zh-Hant.json const messages {en,zh-Hans: zhHans,zh-Hant: zhHant }…

AI大模型系列之七:Transformer架构讲解

目录 Transformer网络是什么&#xff1f; 输入模块结构&#xff1a; 编码器模块结构&#xff1a; 解码器模块: 输出模块结构&#xff1a; Transformer 具体是如何工作的&#xff1f; Transformer核心思想是什么&#xff1f; Transformer的代码架构 自注意力机制是什么…

【Linux】:多线程(读写锁 自旋锁)

✨ 倘若南方知我意&#xff0c;莫将晚霞落黄昏 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#…

SELECT的使用

目录 1、SQL的查询命令 1.1 SELECT语句 1.2 投影查询 1.3 选择查询 1.4 聚合函数查询 1.5 简单分组查询(GROUP BY) 1.6 内连接查询 1.7 外连接查询 1.8 子查询 1. 无关子查询 2. 相关子查询 带exists的相关子查询&#xff1a; 1.9 集合查询 1. UNION(并) 2. INT…

Vue项目结构推荐(复杂国际化项目与一般项目结构)

Vue项目结构推荐 一、一般项目结构二、复杂国际化项目结构总结/建议 下面结构是基于Vue和TypeScript开发的项目结构下src包下的结构&#xff0c;若只用到vue与js。则去掉typescript部分的包即可。 一、一般项目结构 assets&#xff1a;存放静态资源&#xff0c;如图片、字体、样…

BOC调制信号matlab性能仿真分析,对比功率谱,自相关性以及抗干扰性

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 &#xff08;完整版代码包含详细中文注释和操作步骤视频&#xff09…

电影院售票 - 策略模式(Strategy Pattern)

策略模式&#xff08;Strategy Pattern&#xff09; 策略模式&#xff08;Strategy Pattern&#xff09;策略模式概述策略模式结构图策略模式主要包含的角色 talk is cheap&#xff0c; show you my code总结 策略模式&#xff08;Strategy Pattern&#xff09; 策略模式&…

重学 Android 自定义 View 系列(十):带指针的渐变环形进度条

前言 该篇文章根据前面 重学 Android 自定义 View 系列(六)&#xff1a;环形进度条 拓展而来。 最终效果如下&#xff1a; 1. 扩展功能 支持进度顺时针或逆时针显示在进度条末尾添加自定义指针图片使用线性渐变为进度条添加颜色效果 2. 关键技术点解析 2.1 进度方向控制的…

【北京迅为】iTOP-4412全能版使用手册-第七十章 Linux内核移植

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

CG顶会论文阅读|《科技论文写作》硕士课程报告

文章目录 一、基本信息1.1 论文基本信息1.2 课程基本信息1.3 博文基本信息 二、论文评述&#xff08;中英双语&#xff09;2.1 研究问题&#xff08;Research Problem&#xff09;2.2 创新点&#xff08;Innovation/Contribution&#xff09;2.3 优点&#xff08;Why this pape…

.NET周刊【12月第4期 2024-12-22】

国内文章 dotnet 简单使用 ICU 库进行分词和分行 https://www.cnblogs.com/lindexi/p/18622917 本文将和大家介绍如何使用 ICU 库进行文本的分词和分行。 dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用 https://www.cnblogs.com/lindexi/p/18621674 本文将和大…

git 问题解决记录

在用git上传文件到仓库中出现了2个问题 第一个问题&#xff1a; 需要修改git的代理端口与电脑自己的代理服务器设置中的端口和VPN的端口保持一致&#xff0c; 比如我的端口是7897&#xff0c;就设置 git config --global http.proxy http://127.0.0.1:7897 git config --glo…

XML结构快捷转JSON结构API集成指南

XML结构快捷转JSON结构API集成指南 引言 在当今的软件开发世界中&#xff0c;数据交换格式的选择对于系统的互操作性和效率至关重要。JSON&#xff08;JavaScript Object Notation&#xff09;和XML&#xff08;eXtensible Markup Language&#xff09;是两种广泛使用的数据表…

Oracle 创建本地用户,授予权限,创建表并插入数据

目录 一. 用户的种类二. 切换session为PDB三. 创建用户并授予权限四. 创建表空间五. 为用户分配默认表空间并指定表空间配额六. 通过创建的用户进行登录七. 创建脚本&#xff0c;简化登录八. 查看用户信息九. 创建表&#xff0c;并插入数据9.1 查看当前用户的schema9.2 插入数据…

系统设计——大文件传输方案设计

摘要 大文件传输是指通过网络将体积较大的文件从一个位置发送到另一个位置的过程。这些文件可能包括高清视频、大型数据库、复杂的软件安装包等&#xff0c;它们的大小通常超过几百兆字节&#xff08;MB&#xff09;甚至达到几个吉字节&#xff08;GB&#xff09;或更大。大文…

【老白学 Java】简单位移动画

简单位移动画 文章来源&#xff1a;《Head First Java》修炼感悟。 上一篇文章中&#xff0c;老白利用内部类的特性完成了多个事件的处理&#xff0c;感觉还不错。 为了更深入理解内部类&#xff0c;本篇文章继续使用内部类创建一个画板&#xff0c;完成简单的位移动画&#x…

彻底解决 Selenium ChromeDriver 不匹配问题:Selenium ChromeDriver 最新版本下载安装教程

在 Python 的 Selenium 自动化测试中&#xff0c;ChromeDriver 是不可或缺的工具。它作为代码与 Chrome 浏览器的桥梁&#xff0c;但如果版本不匹配&#xff0c;就会导致各种报错&#xff0c;尤其是以下常见问题&#xff1a; selenium.common.exceptions.SessionNotCreatedExc…