此次复习:Chapter-5: 公钥密码技术
Chapter-6: 密钥管理
Chapter-7: 安全协议
内容概述
Chapter-5: 公钥密码技术
公钥密码的加密密钥公开,解决了密钥管理与分发问题。本章介绍几个典型的公钥密钥算法,包括基于大数分解难题的 RSA 算法,基于离散对数难解问题的 Diffie-Hellman / ElGamal 密码体制
- RSA 公钥密码算法
- Diffie-Hellman 密钥协商机制
Chapter-6: 密钥管理
密钥管理是密码技术应用的核心,本章讲解对称密钥和公钥密码应用中的密钥管理技术。
- 对称密码中密钥的管理与分发
- 公钥密码中密钥管理与应用 —— 公钥基础设施 PKI
- 公钥基础设施中公钥载体 —— 数字证书
Chapter-7: 安全协议
本章讲解安全协议的概念、网络分层体系结构中典型安全协议分类。重点讲解的虚拟专用网协议 IPSec、传输层安全协议 TLS。
- 网络体系结构中各层实现安全保护的机制
- 虚拟专用网协议 IPSec 安全保护机理及工作过程
- 传输层安全协议 TLS 安全保护机理及工作过程
# 公钥密码技术
# RSA 公钥密码算法
- RSA 是一个经典公钥密码系统,以其设计者 Rivest 、 Shamir 和 Adleman 三人名字命名,1978 年公开其描述
- RSA 既可以用于 加密 也可以用于 签名 ,应用广泛
- RSA 算法包括公钥和私钥两个密钥
- 公钥可以让任何人知道并用于加密消息
- 使用公钥加密的消息只能使用对应的私钥解密
- RSA 公钥密码系统包括 密钥产生 、 加密 和 解密 3 个内容。
# 密钥产生
用户 A 进行以下工作
- 选择两个 素数 和
- 随机选择,具有相似的比特长度
- 计算
- 用于公钥和私钥的 模运算
- 计算 欧拉函数
欧拉函数:在数论中,对正整数 ,欧拉函数 是 小于或等于 的正整数中与 互质的数的数目。
(一般认为 )
有重要定理如下:p 和 q 是互素的数字,, 。 特别地,若 p 和 q 都是素数,则有 。
拓展阅读:欧拉函数(Euler’s Totient Function)的通式与分析
- 计算 公钥指数
- 必须是欧拉函数 中的一个整数
- 与 互素(即 与 除了 1 以外没有其他公因子)
- 计算 私钥指数
- 使 满足 全等关系 (ps:同余定理)
同余定理:给定一个正整数 ,如果两个整数 和 满足 能够被 整除,即 得到一个整数,那么就称整数 和 对模 同余,记作。对模 m 同余是整数的一个等价关系。
换言之, 只能被 整除- 通常使用 拓展欧几里得算法 快速计算 (求乘法逆元)
- 作为私钥指数 保密
- 用户 A 发布公钥
# 举个栗子
选择 使得 与 互素,即 与 除了 1 以外没有其他公因子,可选择一个素数 ,然后判断相互是否整除。(3120 不整除 17,所以 ok)
计算 , 实际上是计算模 的 e 的 乘法逆元 。因为 ,即 46801 除 3120 余 1。所以
- 即公钥为
- 私钥为
# 加解密过程
用户 B 加密消息 M 发送给 用户 A,加密过程如下:
- 将消息 M 转换为一个整数
- 计算 即 (公钥加密)
用户 A 收到消息 后,做如下工作
- 计算 即 (私钥解密)
- 计算出的 m 可以转换为消息 M
# RSA 安全的保证
- RSA 的安全性依赖于大整数分解问题,对于一个大整数进行素因数分解在数学上仍然是一个困难
- 然而,目前能够分解的整数已经超过十进制的 200 位,因此建议 RSA 的模数 n 至少要在 1024 比特以上长度
# Diffie-Hellman 密钥协商机制
能不能在不安全的通信信道上传输一些公开信息,最终使得双方获得秘密信息?这就需要 密钥协商
- D-H 密钥协商机制 可以实现 在不安全信道上 为两个实体建立一个共享秘密,协商的秘密可以作为后续对称密码体制的密钥使用
懒得写了,看去吧 Diffie-Hellman 密钥协商算法 & 中间人攻击
# 密钥管理
现代密码技术要求密码算法公开,因此密钥安全是密码系统的关键,是密码应用中最困难的问题。
- 对称密码体制:密钥被共享双方或多方持有,且高度保密。
- 要考虑密钥 在哪里产生 ?
- 如何 分发 ?
- 如何定期 更新 ?
- 如何处理密钥 泄露 ?
- 公钥密码体制:公钥被共享双方或多方持有,但不高度保密。
- 要考虑 密钥对 如何产生?
- 谁 来产生?
- 私钥如何 存储?
- 正在使用的公钥是有效且正确的吗?
- 私钥泄露或丢失如何 更新 密钥对?
密钥管理就是对密钥 从产生到销毁的全过程进行安全控制,涵盖了密钥的设置、产生、分发、存储、装入、使用、备份、恢复、提取、更新、吊销、销毁以及保护等一系列的内容和过程,其 核心是确保密钥的安全性不受威胁。
- 对称密码体制:以密钥分发中心
KDC
(Key Distribution Center) 作为 可信第三方TTP
(Trusted Third Party) - 公钥密码体制:授权中心
CA
(Certification Authority)
密钥管理的一些基本要求如下:
- 密钥产生:密钥生成算法及其实现是保证密钥质量的根本,密钥产生应具有较好的随机性
- 密钥长度:决定了 密钥空间大小,也决定了 密码强度
- 密钥存储:
- 软保护 (口令加密文件)
- 硬保护 (智能卡、USB Key 等存储设备)
- 密钥更新:密钥应有 有效期
- 密钥撤销:密钥丢失或遭受攻击时要 及时更新 密钥
- 会话密钥 (Session Key) :一次性使用的即时密钥
# 对称密钥管理与分发
在有 N 个用户的对称密码系统中,如果要求两两共享密钥,则需要的密钥总数为 N (N-1)/2。
- 简单密钥分发:由一个用户产生密钥并通过安全方式分发给其他参与实体
- 当用户数较多时,简单密钥分发不可行。
借助 公钥密码 实现对称密码共享密钥动态协商和更新
- 利用 D-H 密钥协商协议产生 共享密钥
- 利用 对方公钥 加密传递 会话密钥
# 密钥的层次化使用
密钥分类与层次化管理:提高安全性
- 使用不同的密钥分别用于不同的用途:
- 加密会话消息
- 加密其它密钥
- 计算消息认证码……
- 按层次化管理:实体之间先共享主密钥,再使用特定算法 基于主密钥扩展 生成多个子密钥。
密钥分类举例
- 主密钥
MK
(Master Key):在密钥层次结构的 最高层- 一般用人工方式建立
- 或借助密钥协商机制
- 或利用公钥密码体制完成主密钥协商或传递。
- 密钥确认密钥
KCK
(Key Confirmation Key):用于在通信中产生消息认证码,对已产生的密钥或消息进行确认 - 密钥加密密钥
KEK
(Key-encrypting Keys):在密钥传输协议中加密其他密钥。 - 临时密钥
TK
(Temporal Key):也称会话密钥 (Session Key) 。用于加密用户的通信数据。
# 公钥基础设施 PKI
如何能够方便地获取所需要的、有效的、正确的公钥?
- 解决办法就是 公钥基础设施 PKI (Public Key Infrastructure)
# PKI 概述
- PKI 是指使用 公钥密码技术 实施和提供安全服务的、具有 普适性 的安全基础设施,是信息安全领域核心技术之一
- PKI 通过 权威第三方机构 —— 授权中心 CA 以签发 数字证书 的形式 发布 有效实体的 公钥。
- 数字证书 (Certificate) 是一种特殊的电子文档(也称电子凭证),包括 公钥持有者 (称为主体) 的信息及其公钥、有效期、使用方法等信息。数字证书将证书持有者的身份及其公钥绑定在一起。
- 数字证书的完整性保护
- 持有者身份与其公钥的绑定关系不能篡改
- 解决办法:由 CA 对数字证书进行 数字签名
- PKI 是一种 由权威机构签发数字证书 和 管理数字证书通信实体使用数字证书 的方法、过程和系统。
- 具有可信任的授权中心和认证机构 ——CA
- 负责证书的产生、管理、存档、发放、撤销等证书管理
- 为用户提供全方位的安全服务
- PKI 安全服务的 实现与应用分离 是作为 基础设施 的重要特征
# PKI 功能
PKI 的功能包括 数字证书管理 和 基于数字证书的服务
- 证书管理:是 PKI 的核心工作,由 CA 负责
- 证书申请
- 证书生成
- 证书发布
- 证书撤销
- 证书更新
- 证书备份与恢复
- PKI 服务:确立证书持有者可信赖的数字身份,通过数字身份与密码机制相结合,提供认证、授权和数字签名等服务
- 保密服务
- 完整性服务
- 认证服务
- 不可否认服务
- 时间戳
- PKI 的交叉认证:不同 PKI 系统的互联互通和业务整合
- 在 PKI 之间建立信任关系,实现一个 PKI 的用户可以验证另一个 PKI 的用户证书
- 不同 PKI 的 CA 之间相互签发交叉认证证书:证书的签发者是一个 CA,证书的主体是另一个 CA,在不同安全域之间建立信任关系。
# PKI 体系结构
- 一个完整的 PKI 系统由 认证中心 CA 、密钥管理中心 KMC、注册机构 RA、目录服务、证书应用服务 以及 安全认证应用软件 等部分组成。
- 大规模的 PKI 可以有 多个 CA,并按层次结构组织成树型,形成基于顶级 CA (根 CA) 的信任链。
PKI 的体系结构图
# 数字证书
数字证书是实体公钥的载体,用以实现公钥与实体身份的绑定。
数字证书是一种电子文档,由 3 部分内容构成,其 ASN.1 描述如下:
Certificate::=SEQUENCE{ | |
tbsCertificate TBSCertificate, // 证书主体数据 | |
signatureAlgorithm AlgorithmIdentifier, // 签名算法 | |
signatureValue BITSTRING //CA 的签名 | |
} |
# 数字证书结构
证书主体数据如下:
- 版本号:0(v1)、1(v2),2(v3)
- 序列号:证书唯一性编号
- 签名算法标识:CA 为证书签名所用 签名算法 和 HASH 算法
- 颁发者名称:用颁发者属性集合标识证书颁发者
- 有效期:证书起始时间和失效时间
- 主体名称:证书持有者属性集合
- 主体公钥:公钥算法和公钥值
- 颁发者 / 主体唯一标识符:可选
- 扩展项:主体、公钥的附加属性,可选
# 安全协议
# 安全协议概述
什么是协议 (protocol)?
- 协议是指在 对等实体 (两方或多方) 之间为完成某项任务所执行的一系列确定的步骤,是协议实体必须共同遵循的一套规则
- 协议步骤(或规则)是 明确定义 的
- 协议必须是 完整 的
什么是安全协议?
- 为了 实现特定安全目标,使用 密码技术 在网络和分布式系统中提供各种安全服务的协议,称为安全协议或密码协议
- 两类最基本的安全协议: 实体认证协议 和 密钥协商协议
网络协议栈各层上的安全协议:在网络环境下,安全服务可以在不同的网络层次上实施,如下。
所处层次 | 安全协议 |
---|---|
应用层 | HTTPS、SSH、PGP、Kerberos、SET、MIME |
传输层 | TCP、UDP、SSL、TLS、SOCK5 |
网络层 | IPSec |
数据链路层 | PPP-PAP/CHAP、WEP |
# 数据链路层安全协议
# PPP-PAP
PPP-PAP
(Password Authentication Protocol - Point to Point Protocol)
口令认证协议
PAP
是PPP
的一个链路控制子协议,对等实体建立初始连接之后,使用 两次握手 实现实体认证
- 被认证一方向认证方持续重复发送 “用户 ID / 口令”
- 直至认证得到响应或连接终止。
PAP 认证口令以明文文本形式在链路上传输,不能防止窃听、重放等攻击,是一种弱认证方法。
# PPP-CHAP (验证对等实体身份)
PPP-CHAP
(Challenge Handshake Authentication Protocol)
质询握手认证协议
PPP-CHAP
是PPP
协议簇中的一个子协议。通过 三次握手 验证对等实体身份
- 被认证方向认证方发送 “标识”
- 认证方向被认证方发送 “质询” (Challenge:随机数) 消息
- 被认证方使用质询和口令字(双方事先共享)共同计算哈希值做应答
# WEP (提供对无线链路的保护)
WEP(Wired Equivalent Privacy)
有线网等同保密
WEP
是 IEEE802.11b 标准中定义的无线局域网安全协议。WEP 在数据链路层提供对无线链路的保护,实现无线节点之间的相互认证和数据保密传输
- WEP 使用共享密钥认证,使用 RC4 流密码算法加密数据帧
- WEP 在 802.11 中是可选的,已经发现其存在缺陷,在新的 802.11 标准中被新的协议 (IEEE802.11i) 替换
# 应用层安全协议
# MIME / S-MIME (电子邮件安全协议)
Multipurpose Internet Mail Extensions / Secure-MIME
MIME
多用途网际邮件扩充协议 定义了邮件消息格式,方便不同邮件系统之间消息交换。它允许邮件中包含任意类型的文件,如文本、图象、声音、视频及其它应用程序等
S-MIME
是 MIME 的安全版本,提供了一种安全电子邮件机制,基于 MIME 标准,S-MIME 为电子消息应用程序提供邮件安全服务,包括认证、完整性保护、数据保密等
# PGP (Pretty Good Privacy)
- 用于电子邮件、 存储数据加密 和 数字签名 的 开源 应用程序
- PGP 基于 RSA 公钥加密体制,实现了对邮件的加密保护,以及基于数字签名的源认证和不可否认性保护。
- PGP 支持密钥管理服务器,但其证书模型不同于 X.509
- PGP 模型允许多重、独立而非特殊可信个体签署 “名字 / 密钥” 关联来证明证书的有效性
“只要有足够的签名,名字 / 密钥> 关联就是可信的,因为不会所有的签名者都是‘坏’的”,即所谓 “信任网” 模型
# SET (一种电子支付安全模型)
SET (Secure Electronic Transaction)
- 是一种电子支付安全模型,用于电子商务的安全保障
- 解决 B2C 模式下商家、消费者和银行之间的信任和安全交易问题
- 涉及电子商务交易中的交易协定、信息保密、资料完整、数据认证、数据签名等问题
# 虚拟专用网协议 IPSec
如何在 IP 层实现安全的数据通信?
VPN (Virtual Private Network)
- VPN 是建立在公共网络 (如 Internet) 上的专用网络
- 通过在两个系统之间建立安全的信道实现重要数据的安全传输
- VPN 可在路由器、交换机或防火墙等网络设备上实现
- VPN 可以帮助远程用户或公司分支机构以及商业伙伴与内部网络建立可信的安全连接,保证数据传输的安全性
- 利用 VPN 技术在互联网环境下建立虚拟的企业用网络,可以大大缩减企业运营成本,增强竞争力。
IP 层安全协议 IPSec (Internet Protocol Security)
- IPSec 是 IETF 制订的 VPN 安全标准,工作在 IP 层,提供 对 IP 分组进行加密和认证 的功能。
- 用于保护一对主机之间 (主机到主机)、一对安全网关 (网关到网关) 或者安全主机与网关之间 (主机到网关) 的数据流安全。
- IPSec 为 IP 报文段提供 保密性、完整性、访问控制和数据源认证 等安全保护服务。
- IPSec 是一个协议簇,包括会话初始化阶段通信双方双向认证协议、密钥协商协议,以及对通信会话中每个 IP 报文保护(认证和 / 或加密)协议。
# SSL VPN (Secure Sockets Layer VPN)
- 使用安全套接层 SSL 协议实现 VPN 的机制
- 通常 SSL 协议被内置于 IE 等浏览器中,使用 SSL 协议进行认证和数据加密的 SSL VPN 就可以免于安装客户端
- SSL VPN 部署简单,同时性能也远低于使用 IPSec 实现的 VPN
# 传输层安全协议 TLS
如何实现 Internet 中通信的两个应用程序之间认证和数据保密传输?
# TLS 概述
TLS (Transport Layer Security) 的由来
- TLS 协议是一个用于 Internet 上实现保密通信的安全协议
- TLS 协议是 IETF 在 Netscape 公司开发的 SSL (Secure Socket Layer) 协议基础上改进发展而来的
- Netscape 于 1994 年开发了用于保护 Web 通讯的 SSL 协议并在推出 SSL 3.1 时改名为 TLS 1.0
- 1997 年 IETF 发布 Draft,1999 年发布 TLSv1.0 (RFC 2246)
- IETF 于 2006 年发布了 TLS v1.1 版本 (RFC 4363)
# TLS 设计目标
TLS 的设计目标如下:
- 密码安全性:TLS 用于在通讯实体间建立安全连接
- 互操作性:独立开发者可以使用 TLS 开发应用程序,而无需交换程序的代码
- 扩展性:提供一种框架,便于加入新的公钥、对称密码
- 相对效率性:密码操作是高 CPU 敏感的,尤其是公钥密码操作,TLS 提供了 会话缓存机制 以减少建立的连接数,此外尽量减少网络活动
# TLS 体系结构
TLS 的 体系结构:
- TLS 位于 TCP 层与应用层之间,对应用层透明,在可靠传输协议 TCP 之上建立一个可靠的端到端安全服务,为两个通信实体之间提供保密性和完整性保护
- TLS 协议分为两层
- 底层:记录协议层
- 上层:握手协议层
- TLS 记录协议层:
- TLS 记录协议建立在可靠的 TCP 协议上,为高层协议提供数据封装,实现压缩 / 解压、加密 / 解密、计算 / 验证 MAC 等操作
- TLS 记录协议要使用 TLS 握手协议协商的密码算法和密钥对上层数据加密,实现保密性。同时使用
HMAC
实现传输消息的完整性
- TLS 握手协议层:
- 包含 3 个子协议:TLS 握手协议、TLS 密码规格变更协议、TLS 报警协议
- TLS 握手协议层负责在客户与服务器间进行身份认证、协商加密算法和密钥
- TLS 协议使用 对称密码 体制加密传输数据,使用 公钥密码 体制进行身份认证 和 交换加密密钥
# TLS 会话与连接
TLS 中有两个重要概念如下:
- TLS 连接(connection)
- 一个连接是一个提供一种合适类型服务的传输过程
- TLS 连接是端到端的关系
- 连接是暂时的,每一个连接和一个会话关联
- TLS 会话 (session)
- 1 个 TLS 会话 是在客户与服务器之间的一个关联
- 会话由握手协议创建,定义一组可供多个连接共享的密码安全参数
- 会话用以避免为每一个连接提供新的安全参数所需的协商代价
会话的状态
- 有多个状态与一个会话相关联
- 一旦一个会话建立,就存在一个读或写的当前状态
- 在握手协议中,创建了挂起的读写状态
- 握手协议 成功,则将挂起状态转变为当前状态
- 每个会话状态实际上是一组参数