Lecture 2 密码学
Lecture 2 密码学
Lecture 2 密码学
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Lecture</strong> 2 密 码 学
基 本 概 念<br />
• 密 码 学 (Cryptology): 是 研 究 信 息 系 统 安<br />
全 保 密 的 科 学 .<br />
‣ 密 码 编 码 学 (Cryptography): 主 要 研 究 对<br />
信 息 进 行 编 码 , 实 现 对 信 息 的 隐 蔽 .<br />
‣ 密 码 分 析 学 (Cryptanalytics): 主 要 研 究 加<br />
密 消 息 的 破 译 或 消 息 的 伪 造 .<br />
2
基 本 术 语<br />
• 消 息 被 称 为 明 文 (Plaintext)。 用 某 种 方 法 伪 装 消 息 以<br />
隐 藏 它 的 内 容 的 过 程 称 为 加 密 (Encrytption), 被 加 密<br />
的 消 息 称 为 密 文 (Ciphertext), 而 把 密 文 转 变 为 明 文<br />
的 过 程 称 为 解 密 (Decryption)。<br />
• 对 明 文 进 行 加 密 操 作 的 人 员 称 作 加 密 员 或 密 码 员<br />
(Cryptographer).<br />
• 密 码 算 法 (Cryptography Algorithm): 是 用 于 加 密 和 解<br />
密 的 数 学 函 数 。<br />
• 密 码 员 对 明 文 进 行 加 密 操 作 时 所 采 用 的 一 组 规 则 称 作<br />
加 密 算 法 (Encryption Algorithm).<br />
• 所 传 送 消 息 的 预 定 对 象 称 为 接 收 者 (Receiver).<br />
• 接 收 者 对 密 文 解 密 所 采 用 的 一 组 规 则 称 为 解 密 算 法<br />
(Decryption Algorithm).<br />
3
密 钥<br />
密 钥<br />
密 文<br />
明 文<br />
加 密 算 法<br />
解 密 算 法<br />
明 文<br />
加 解 密 过 程 示 意 图<br />
• 加 密 和 解 密 算 法 的 操 作 通 常 都 是 在 一 组 密<br />
钥 的 控 制 下 进 行 的 , 分 别 称 为 加 密 密 钥<br />
(Encryption Key) 和 解 密 密 钥 (Decryption<br />
Key).<br />
4
加 密 通 信 的 模 型<br />
Oscar<br />
x y x<br />
Alice 加 密 机 解 密 机 Bob<br />
k<br />
密 钥 源<br />
安 全 信 道<br />
k<br />
密 钥 源<br />
密 码 学 的 目 的 :Alice 和 Bob 两 个 人 在 不 安 全 的<br />
信 道 上 进 行 通 信 , 而 破 译 者 Oscar 不 能 理 解 他<br />
们 通 信 的 内 容 。<br />
5
密 码 体 制<br />
• 密 码 体 制 : 它 是 一 个 五 元 组 (P,C,K,E,D) 满 足 条 件 :<br />
(1)P 是 可 能 明 文 的 有 限 集 ;( 明 文 空 间 )<br />
(2)C 是 可 能 密 文 的 有 限 集 ;( 密 文 空 间 )<br />
(3)K 是 一 切 可 能 密 钥 构 成 的 有 限 集 ;( 密 钥 空 间 )<br />
(4) 任 意 k∈ K, 有 一 个 加 密 算 法 e k<br />
∈E 和 相 应 的 解 密 算<br />
法 d k<br />
∈D<br />
, 使 得 e k<br />
: P →C<br />
和 d k<br />
: C→P分 别 为 加 密 解<br />
密 函 数 , 满 足 d k (e k (x))=x, 这 里 x ∈P。<br />
6
密 码 算 法 分 类 -i<br />
• 按 照 保 密 的 内 容 分 :<br />
‣ 受 限 制 的 (restricted) 算 法 : 算 法 的 保 密 性 基 于<br />
保 持 算 法 的 秘 密<br />
‣ 基 于 密 钥 (key-based) 的 算 法 : 算 法 的 保 密 性<br />
基 于 对 密 钥 的 保 密<br />
‣ 传 统 加 密 和 现 代 加 密 的 区 别 : 算 法 和 密 钥 的<br />
分 离<br />
7
密 码 算 法 分 类 -ii<br />
• 按 照 明 文 的 处 理 方 法 :<br />
‣ 分 组 密 码 (block cipher): 将 明 文 分 成 固<br />
定 长 度 的 组 , 用 同 一 密 钥 和 算 法 对 每 一<br />
块 加 密 , 输 出 也 是 固 定 长 度 的 密 文 。<br />
‣ 流 密 码 (stream cipher): 又 称 序 列 密 码 .<br />
序 列 密 码 每 次 加 密 一 位 或 一 字 节 的 明<br />
文 , 也 可 以 称 为 流 密 码 。<br />
序 列 密 码 是 手 工 和 机 械 密 码 时 代 的 主<br />
流<br />
8
密 码 算 法 分 类 -iii<br />
• 基 于 密 钥 的 算 法 , 按 照 密 钥 的 特 点 分 类 :<br />
‣ 对 称 密 码 算 法 (symmetric cipher): 又 称 传 统 密 码 算 法<br />
(conventional cipher), 就 是 加 密 密 钥 和 解 密 密 钥 相 同 ,<br />
或 实 质 上 等 同 , 即 从 一 个 易 于 推 出 另 一 个 。 又 称 秘 密 密 钥<br />
算 法 或 单 密 钥 算 法<br />
‣ 非 对 称 密 钥 算 法 (asymmetric cipher): 加 密 密 钥 和 解 密 密<br />
钥 不 相 同 , 从 一 个 很 难 推 出 另 一 个 。 又 称 公 开 密 钥 算 法<br />
(public-key cipher)<br />
• 公 开 密 钥 算 法 用 一 个 密 钥 进 行 加 密 , 而 用 另 一 个 进<br />
行 解 密 . 其 中 的 加 密 密 钥 可 以 公 开 , 又 称 公 开 密 钥<br />
(public key), 简 称 公 钥 . 解 密 密 钥 必 须 保 密 , 又 称 私<br />
人 密 钥 (private key) 私 钥 . 简 称 私 钥<br />
9
密 码 算 法 分 类 -iv<br />
• 对 称 密 钥 密 码 又 可 分 为 :<br />
‣ 分 组 密 码<br />
每 次 对 一 块 数 据 加 密<br />
多 数 网 络 加 密 应 用<br />
DES,IDEA,RC6,Rijndael<br />
‣ 流 密 码<br />
每 次 对 一 位 或 一 字 节 加 密<br />
10
密 码 算 法 分 类 -v<br />
• 公 开 密 钥 密 码 :<br />
‣ 大 部 分 是 分 组 密 码<br />
每 次 对 一 块 数 据 加 密<br />
数 字 签 名 , 身 份 认 证<br />
RSA,ECC,ElGamal<br />
加 密 解 密 速 度 慢<br />
11
密 码 分 析<br />
• 假 设 破 译 者 Oscar 是 在 已 知 密 码 体 制 的 前 提 下 来<br />
破 译 Bob 使 用 的 密 钥 。 最 常 见 的 破 解 类 型 如 下 :<br />
‣1. 唯 密 文 攻 击 :Oscar 具 有 密 文 串 y.<br />
‣2. 已 知 明 文 攻 击 : Oscar 具 有 明 文 串 x 和 相 应 的 密 文<br />
y.<br />
‣3. 选 择 明 文 攻 击 :Oscar 可 获 得 对 加 密 机 的 暂 时 访<br />
问 , 因 此 他 能 选 择 明 文 串 x 并 构 造 出 相 应 的 密 文 串<br />
y。<br />
‣4. 选 择 密 文 攻 击 :Oscar 可 暂 时 接 近 密 码 机 , 可 选 择<br />
密 文 串 y, 并 构 造 出 相 应 的 明 文 x.<br />
这 一 切 的 目 的 在 于 破 译 出 密 钥 或 明 文<br />
12
密 码 算 法 的 安 全 性<br />
• 无 条 件 安 全 (Unconditionally secure)<br />
无 论 破 译 者 有 多 少 密 文 , 他 也 无 法 解 出 对<br />
应 的 明 文 , 即 使 他 解 出 了 , 他 也 无 法 验 证 结 果<br />
的 正 确 性 .<br />
Onetime pad<br />
• 计 算 上 安 全 (Computationally secure)<br />
‣ 破 译 的 代 价 超 出 信 息 本 身 的 价 值<br />
‣ 破 译 的 时 间 超 出 了 信 息 的 有 效 期<br />
13
古 典 密 码<br />
基 于 字 符 的 密 码<br />
• 代 替 密 码 (substitution cipher): 就 是 明<br />
文 中 的 每 一 个 字 符 被 替 换 成 密 文 中 的 另<br />
一 个 字 符 。 接 收 者 对 密 文 做 反 向 替 换 就<br />
可 以 恢 复 出 明 文 。<br />
• 置 换 密 码 (permutation cipher), 又 称 换<br />
位 密 码 (transposition cipher): 明 文 的<br />
字 母 保 持 相 同 , 但 顺 序 被 打 乱 了 。<br />
14
代 替 密 码<br />
• 简 单 代 替 密 码 (simple substitution cipher),<br />
又 称 单 字 母 密 码 (monoalphabetic cipher):<br />
明 文 的 一 个 字 符 用 相 应 的 一 个 密 文 字 符 代<br />
替 。<br />
• 多 字 母 密 码 (ployalphabetic cipher): 明 文<br />
中 的 字 符 映 射 到 密 文 空 间 的 字 符 还 依 赖 于<br />
它 在 上 下 文 中 的 位 置 。<br />
15
单 字 母 密 码<br />
• 单 表 代 换 密 码<br />
移 位 (shift ) 密 码 、 乘 数 (multiplicative) 密 码<br />
仿 射 (affine ) 密 码 、 多 项 式 (Polynomial) 密 码<br />
密 钥 短 语 (Key Word) 密 码<br />
• 多 表 代 换 密 码<br />
维 吉 尼 亚 (Vigenere) 密 码<br />
博 福 特 (Beaufort) 密 码<br />
滚 动 密 钥 (running-key) 密 码<br />
弗 纳 姆 (Vernam) 密 码<br />
转 子 机 (rotor machine)<br />
16
多 字 母 代 换 密 码<br />
• 可 以 用 矩 阵 变 换 方 便 地 描 述 多 字 母 代 换 密<br />
码 , 有 时 又 称 起 为 矩 阵 变 换 密 码 。<br />
Hill cipher<br />
Playfair cipher<br />
17
移 位 密 码 算 法<br />
• 设 P=C=K=Z/(26), 对 k∈ K, 定 义 e k (x)=x+k (mod<br />
26)=y ∈C<br />
同 时 d k (y)=y-k (mod 26)<br />
注 1 * :26 个 英 文 字 母 与 模 26 剩 余 类 集 合 {0,….,25}<br />
建 立 一 一 对 应 :<br />
2 * . 当 k=3 时 , 为 Caesar 密 码<br />
abcdefghijklmnopqrstuvwxyz<br />
DEFGHIJKLMNOPQRSTUVWXYZABC<br />
例 子 : cipher => FLSKHU<br />
实 际 算 法 为 : ∀x∈ P 有 e ( 3<br />
x)<br />
= x + 3(mod 26)<br />
= y<br />
同 时 有 ,d 3 (y)=y-3 (mod 26)<br />
18
乘 数 密 码 算 法<br />
• 加 密 函 数 取 形 式 为<br />
e(x)=ax (mod 26), a∈Z/(26)<br />
要 求 唯 一 解 的 充 要 条 件 是 gcd( a,26)=1<br />
该 算 法 描 述 为 :<br />
设 P=C=Z/(26), K={a ∈Z/(26) |gcd(a,26)=1},<br />
对 k=a ∈K,<br />
定 义 e k (x)=ax (mod 26) 和 d k (y)=a -1 (y)(mod 26)<br />
x,y ∈Z/(26)<br />
例 子 : a=9,<br />
ABCDEFGHIJKLMNOPQRSTUVWXYZ<br />
AJSBKTCLUDMVENWFOXGPYHQZIR<br />
明 文 密 文<br />
cipher => SUFLKX<br />
19
仿 射 密 码 算 法<br />
• 加 密 函 数 取 形 式 为<br />
e(x)=ax+b (mod 26), a,b∈Z/(26)<br />
要 求 唯 一 解 的 充 要 条 件 是 gcd( a,26)=1<br />
该 算 法 描 述 为 :<br />
设 P=C=Z/(26)<br />
K={(a,b) ∈Z/(26)×Z/(26)|gcd(a,26)=1},<br />
对 k=(a,b) ∈K,<br />
定 义 e k (x)=ax+b (mod 26) 和 d k (y)=a -1 (y-b)(mod 26)<br />
x,y ∈Z/(26)<br />
• q=26 时 , 可 能 的 密 钥 是 26X12 个<br />
20
单 表 替 换 密 码 的 破 译<br />
• 语 言 的 统 计 特 性 :<br />
◦ 语 言 的 频 率 特 征<br />
◦ 连 接 特 征<br />
◦ 重 复 特 征<br />
21
英 文 字 母 的 普 遍 使 用 频 率<br />
• 美 国 密 码 学 家 W.F.Friedman 在 调 查 了 大 量 英 文 资<br />
料 后 , 得 出 英 文 字 母 的 普 遍 使 用 规 律<br />
◦I 0.0627 R 0.0677<br />
◦H 0.0528 Q 0.0012 Z 0.0008<br />
◦G 0.0199 P 0.0199 Y 0.0199<br />
◦F 0.0289 O 0.0797 X 0.0017<br />
◦E 0.1304 N 0.0707 W 0.0149<br />
◦D 0.0378 M 0.0249 V 0.0092<br />
◦C 0.0279 L 0.0339 U 0.0249<br />
◦B 0.0139 K 0.0042 T 0.1045<br />
◦A 0.0856 J 0.0013 S 0.0607<br />
22
连 接 特 征<br />
• 后 连 接 :q … u<br />
• 前 连 接 : x 的 前 面 总 是 i, e 很 少 是 o 和 a<br />
• 间 断 连 接 : 在 e 和 e 之 间 ,r 的 出 现 频 率 最 高<br />
23
对 抗 频 率 分 析 的 办 法<br />
• 多 名 或 同 音 代 替 密 码<br />
• 多 表 代 替 密 码<br />
• 多 字 母 代 替 密 码<br />
24
多 名 代 替 密 码<br />
• 与 简 单 代 替 密 码 类 似 , 只 是 映 射 是 一 对 多 的 ,<br />
每 个 明 文 字 母 可 以 加 密 成 多 个 密 文 字 母 。<br />
例 如 , A 可 能 对 应 于 5、13、25<br />
B 可 能 对 应 于 7、9、31、42<br />
• 当 对 字 母 的 赋 值 个 数 与 字 母 出 现 频 率 成 比 例<br />
时 。 这 是 因 为 密 文 符 号 的 相 关 分 布 会 近 似 于 平<br />
的 , 可 以 挫 败 频 率 分 析 。<br />
• 然 而 , 若 明 文 字 母 的 其 它 统 计 信 息 在 密 文 中 仍<br />
很 明 显 时 , 那 么 同 音 代 替 密 码 仍 然 是 可 破 译<br />
的 。<br />
25
多 表 代 替 密 码<br />
• 多 表 代 替 密 码 : 是 以 一 系 列 ( 两 个 以<br />
上 ) 代 换 表 依 次 对 明 文 消 息 的 字 母 进 行<br />
代 换 的 方 法 。<br />
‣ 非 周 期 多 标 代 替 密 码 :<br />
代 换 表 是 非 周 期 的 无 限 序 列<br />
一 次 一 密 密 码 (one time padding): 对 每<br />
个 明 文 每 次 采 用 不 同 的 代 换 表 。<br />
‣ 周 期 多 表 代 替 密 码 : 代 换 表 个 数 有 限 ,<br />
重 复 使 用 。<br />
26
Vigenére cipher (1858)<br />
• 是 一 种 多 表 移 位 代 替 密 码<br />
设 d 为 一 固 定 的 正 整 数 ,d 个 移 位 代 换 表 π=( π 1 ,<br />
π 2 ,… π d ) 由 密 钥 序 列 K=( k 1 ,k 2 ,…,k d ) 给 定 , 第 i+td<br />
个 明 文 字 母 由 表 π i 决 定 , 即 密 钥 k i 决 定<br />
e k (x i+td )=(x i+td +k i ,) mod q =y, 注 意 ,x 需 要 根 据 k 的 长<br />
度 分 组 ( 表 )<br />
d k (y i+td )= (x i+td -k i ) mod q =x<br />
例 子 :q=26, x=polyalphabetic cipher, K=RADIO<br />
明 文 x=p o l y a l p ha b e t i c c i p h e r<br />
密 钥 k=RAD I ORADI ORADI ORADIO<br />
密 文 y=GOOGOCPKTP NTLKQZPKMF<br />
27
滚 动 密 钥 密 码<br />
• 对 于 周 期 代 换 密 码 , 当 密 钥 的 长 度 d 和 明 文<br />
一 样 长 时 , 就 成 为 滚 动 密 钥 密 码 。<br />
Vigenére 本 人 建 议 密 钥 与 明 文 一 样 长<br />
28
Vernam 密 码<br />
• 1918 年 ,Gillbert Vernam 建 议 密 钥 与 明 文<br />
一 样 长 并 且 没 有 统 计 关 系 的 密 钥 内 容 , 他<br />
采 用 的 是 二 进 制 数 据 :<br />
加 密 :C i = P i ⊕ K i<br />
解 密 P i = C i ⊕ K i<br />
核 心 : 构 造 和 消 息 一 样 长 的 随 机 密 钥<br />
29
多 字 母 代 替 密 码 -Playfair<br />
• Playfair: 将 明 文 中 的 双 字 母 组 合 作 为 一 个 单 元 对 待 , 并<br />
将 这 些 单 元 转 换 为 密 文 的 双 字 母 组 合 。<br />
• 5×5 变 换 矩 阵 : I 与 J 视 为 同 一 字 符<br />
C I P H E<br />
R A B D F<br />
G K L M N(cipher)<br />
O Q S T U<br />
V W X Y Z<br />
• 加 密 规 则 : 按 成 对 字 母 加 密<br />
1) 相 同 对 中 的 字 母 加 分 隔 符 ( 如 x)<br />
2) balloon ba lx lo on<br />
3) 同 行 取 右 边 : he EC<br />
4) 同 列 取 下 边 : dm MT<br />
5) 其 他 取 交 叉 : kt MQ OD TR<br />
30
置 换 密 码<br />
• 换 位 密 码 把 明 文 按 列 写 入 , 按 行 读 出<br />
• 密 钥 包 含 3 方 面 信 息 : 行 宽 , 列 高 , 读 出 顺 序<br />
key: 4 3 1 2 5 6 7<br />
plaintext: a t t a c k p<br />
o s t p o n e<br />
d u n t i l t<br />
w o a m x y z<br />
ciphertext:TTNAAPTMTSUOAODWCOIXPETZ<br />
• 完 全 保 留 字 符 的 统 计 信 息<br />
• 使 用 多 轮 加 密 可 提 高 安 全 性<br />
31
古 典 密 码 小 结<br />
• Substitution & permutation<br />
• 密 码 分 析<br />
• 多 轮 加 密<br />
• 数 据 安 全 基 于 算 法 的 保 密<br />
32
现 代 常 规 加 密 技 术<br />
•DES(Data Encryption Standard)<br />
• Triple DES<br />
•IDEA<br />
•Blowfish<br />
•RC5<br />
•CAST-128<br />
•……<br />
33
DES 的 产 生 -i<br />
• 1973 年 5 月 15 日 , 美 国 国 家 标 准 局 (NBS) 开 始 公 开 征 集 标<br />
准 加 密 算 法 , 并 公 布 了 它 的 设 计 要 求 :<br />
(1) 算 法 必 须 提 供 高 度 的 安 全 性<br />
(2) 算 法 必 须 有 详 细 的 说 明 , 并 易 于 理 解<br />
(3) 算 法 的 安 全 性 取 决 于 密 钥 , 不 依 赖 于 算 法<br />
(4) 算 法 适 用 于 所 有 用 户<br />
(5) 算 法 适 用 于 不 同 应 用 场 合<br />
(6) 算 法 必 须 高 效 、 经 济<br />
(7) 算 法 必 须 能 被 证 实 有 效<br />
(8) 算 法 必 须 是 可 出 口 的<br />
34
DES 的 产 生 -ii<br />
• 1974 年 8 月 27 日 , NBS 开 始 第 二 次 征 集 ,IBM 提 交 了<br />
算 法 LUCIFER, 该 算 法 由 IBM 的 工 程 师 在 1971~<br />
1972 年 研 制<br />
• 1975 年 3 月 17 日 , NBS 公 开 了 全 部 细 节<br />
• 1976 年 ,NBS 指 派 了 两 个 小 组 进 行 评 价<br />
• 1976 年 11 月 23 日 , 采 纳 为 联 邦 标 准 , 批 准 用 于 非<br />
军 事 场 合 的 各 种 政 府 机 构<br />
• 1977 年 1 月 15 日 ,“ 数 据 加 密 标 准 ”FIPS PUB 46 发<br />
布<br />
35
DES 的 应 用<br />
• 1979 年 , 美 国 银 行 协 会 批 准 使 用<br />
• 1980 年 , 美 国 国 家 标 准 化 组 织 (ANSI) 赞 同 DES<br />
作 为 私 人 使 用 的 标 准 , 称 之 为 DEA(ANSI X.392)<br />
1983 年 , 国 际 化 标 准 组 织 ISO 赞 同 DES 作 为 国 际<br />
标 准 , 称 之 为 DEA-1<br />
• 该 标 准 规 定 每 五 年 审 查 一 次 , 计 划 十 年 后 采 用 新<br />
标 准<br />
• 最 近 的 一 次 评 估 是 在 1994 年 1 月 , 已 决 定 1998 年<br />
12 月 以 后 ,DES 将 不 再 作 为 联 邦 加 密 标 准 。<br />
36
分 组 密 码 的 一 般 设 计 原 理<br />
• 分 组 密 码 是 将 明 文 消 息 编 码 表 示 后 的 数<br />
字 ( 简 称 明 文 数 字 ) 序 列 , 划 分 成 长 度<br />
为 n 的 组 ( 可 看 成 长 度 为 n 的 矢 量 ), 每<br />
组 分 别 在 密 钥 的 控 制 下 变 换 成 等 长 的 输<br />
出 数 字 ( 简 称 密 文 数 字 ) 序 列<br />
37
直 觉 : 什 么 是 一 个 好 的 加 密 算 法<br />
• 假 设 密 码 k 是 固 定 的<br />
• 明 文 和 密 文 是 一 个 映 射 关 系 : 单 射 , 即 Ek(x1) !=<br />
Ek(x2) if x1 != x2<br />
• 通 常 情 况 是 : 明 文 非 常 有 序<br />
• 好 的 密 码 条 件 下 , 我 们 期 望 得 到 什 么 样 的 密 文<br />
◦ 随 机 性<br />
• 如 何 理 解 随 机 性<br />
◦ 静 态 : 特 殊 的 点<br />
◦ 动 态 : 小 的 扰 动 带 来 的 变 化 不 可 知<br />
38
考 虑 设 计 一 个 加 密 算 法<br />
• 打 破 明 文 本 身 的 规 律 性<br />
◦ 随 机 性 ( 可 望 不 可 及 )<br />
◦ 非 线 性 ( 一 定 要 )<br />
◦ 统 计 意 义 上 的 规 律<br />
• 多 次 迭 代<br />
◦ 迭 代 是 否 会 增 加 变 换 的 复 杂 性<br />
◦ 是 否 存 在 通 用 的 框 架 , 用 于 迭 代<br />
• 复 杂 性 带 来 密 码 分 析 的 困 难 和 不 可 知 性<br />
◦ 实 践 的 检 验 和 考 验<br />
39
两 个 基 本 设 计 方 法<br />
Shannon 称 之 为 理 想 密 码 系 统 中 , 密 文 的<br />
所 有 统 计 特 性 都 与 所 使 用 的 密 钥 独 立<br />
• 扩 散 (Diffusion): 明 文 的 统 计 结 构 被 扩 散 消<br />
失 到 密 文 的 长 程 统 计 特 性 , 使 得 明 文 和 密 文<br />
之 间 的 统 计 关 系 尽 量 复 杂<br />
• 混 乱 (confusion): 使 得 密 文 的 统 计 特 性 与 密<br />
钥 的 取 值 之 间 的 关 系 尽 量 复 杂<br />
40
实 现 的 设 计 原 则<br />
• 软 件 实 现 的 要 求 : 使 用 子 块 和 简 单 的 运 算 。 密<br />
码 运 算 在 子 块 上 进 行 , 要 求 子 块 的 长 度 能 自 然<br />
地 适 应 软 件 编 程 , 如 8、16、32 比 特 等 。 应 尽<br />
量 避 免 按 比 特 置 换 , 在 子 块 上 所 进 行 的 密 码 运<br />
算 尽 量 采 用 易 于 软 件 实 现 的 运 算 。 最 好 是 用 处<br />
理 器 的 基 本 运 算 , 如 加 法 、 乘 法 、 移 位 等 。<br />
• 硬 件 实 现 的 要 求 : 加 密 和 解 密 的 相 似 性 , 即 加<br />
密 和 解 密 过 程 的 不 同 应 仅 仅 在 密 钥 使 用 方 式<br />
上 , 以 便 采 用 同 样 的 器 件 来 实 现 加 密 和 解 密 ,<br />
以 节 省 费 用 和 体 积 。 尽 量 采 用 标 准 的 组 件 结<br />
构 , 以 便 能 适 应 于 在 超 大 规 模 集 成 电 路 中 实<br />
现 。<br />
41
Feistel<br />
结 构 图<br />
42
Feistel 结 构 定 义<br />
• 加 密 :L i = R i-1 ; R i = L i-1 ⊕F(R i-1 ,K i )<br />
• 解 密 : R i-1 = L i<br />
L i-1 = R i ⊕F(R i-1 ,K i )<br />
= R i ⊕F(L i ,K i )<br />
43
DES 示 意 图<br />
44
DES 的 描 述<br />
• DES 利 用 56 比 特 串 长 度 的 密 钥 K 来 加 密 长 度 为<br />
64 位 的 明 文 , 得 到 长 度 为 64 位 的 密 文<br />
输 入 64 比 特 明 文 数 据<br />
初 始 置 换 IP<br />
在 密 钥 控 制 下<br />
16 轮 迭 代<br />
交 换 左 右 32 比 特<br />
初 始 逆 置 换 IP -1<br />
输 出 64 比 特 密 文 数 据<br />
DES 算 法 框 图<br />
45
初 始 置 换 IP 和 初 始 逆 置 换 IP —1<br />
46
L i-1 (32 比 特 ) R i-1 (32 比 特 )<br />
选 择 扩 展 运 算 E<br />
48 比 特 寄 存 器<br />
子 密 钥 K i<br />
(48 比 特 )<br />
48 比 特 寄 存 器<br />
选 择 压 缩 运 算 S<br />
32 比 特 寄 存 器<br />
置 换 运 算 P<br />
L i (32 比 特 )<br />
R i (32 比 特 )<br />
L i =R i-1<br />
DES 的 一 轮 迭 代<br />
47
DES: Function F<br />
Expansion: 32 48<br />
S-box: 6 4<br />
Permutation:<br />
48
选 择 扩 展 运 算<br />
32 | 01 02 03 04 | 05<br />
04 | 05 06 07 08 | 09<br />
08 | 09 10 11 12 | 13<br />
12 | 13 14 15 16 | 17<br />
16 | 17 18 19 20 | 21<br />
20 | 21 22 23 24 | 25<br />
24 | 25 26 27 28 | 29<br />
28 | 29 30 31 32 | 01<br />
49
选 择 压 缩 运 算<br />
50
S-Box-i<br />
51
S-Box-ii<br />
52
S-Box<br />
• 对 每 个 盒 ,6 比 特 输 入 中 的 第 1 和 第 6 比 特<br />
组 成 的 二 进 制 数 确 定 的 行 , 中 间 4 位 二 进<br />
制 数 用 来 确 定 的 列 。 中 相 应 行 、 列 位 置<br />
的 十 进 制 数 的 4 位 二 进 制 数 表 示 作 为 输<br />
出 。 例 如 的 输 入 为 101001, 则 行 数 和 列<br />
数 的 二 进 制 表 示 分 别 是 11 和 0100, 即 第<br />
3 行 和 第 4 列 , 第 3 行 和 第 4 列 的 十 进 制 数<br />
为 3, 用 4 位 二 进 制 数 表 示 为 0011, 所 以<br />
的 输 出 为 0011。<br />
53
Permutation<br />
16 07 20 21 29 12 28 17<br />
01 15 23 26 05 18 31 10<br />
02 08 24 14 32 27 03 09<br />
19 13 30 06 22 11 04 25<br />
54
子 密 钥 的 产 生<br />
64 位 密 钥<br />
置 换 选 择 1<br />
C 0 ( 28 位 ) D 0 ( 28 位 )<br />
循 环 左 移<br />
循 环 左 移<br />
C 1 ( 28 位 ) D 1 ( 28 位 )<br />
密 钥 表 的 计 算 逻 辑<br />
循 环 左 移 :<br />
1 1 9 1<br />
2 1 10 2<br />
3 2 11 2<br />
4 2 12 2<br />
5 2 13 2<br />
6 2 14 2<br />
7 2 15 2<br />
8 2 16 1<br />
k 1<br />
( 56 位 )<br />
置 换 选 择 2<br />
(48 位 )<br />
循 环 左 移<br />
循 环 左 移<br />
C i ( 28 位 ) D i ( 28 位 )<br />
置 换 选 择 2<br />
( 56 位 ) ( 48 位 )<br />
k i<br />
55
置 换 选 择 1(PC-1)<br />
和 置 换 选 择 2(PC-2)<br />
56
密 钥 长 度<br />
• 关 于 DES 算 法 的 另 一 个 最 有 争 议 的 问 题<br />
就 是 担 心 实 际 56 比 特 的 密 钥 长 度 不 足 以<br />
56<br />
抵 御 穷 举 式 攻 击 , 因 为 密 钥 量 只 有 2 ≈10<br />
个<br />
• 早 在 1977 年 ,Diffie 和 Hellman 已 建 议 制<br />
造 一 个 每 秒 能 测 试 100 万 个 密 钥 的 VLSI 芯<br />
片 。 他 们 估 计 制 造 这 样 的 机 器 大 约 需 要<br />
2000 万 美 元 。<br />
17<br />
57
•1998 年 7 月 电 子 前 沿 基 金 会 (EFF) 使<br />
用 一 台 25 万 美 圆 的 电 脑 在 56 小 时 内 破<br />
译 了 56 比 特 密 钥 的 DES。<br />
•1999 年 1 月 RSA 数 据 安 全 会 议 期 间 ,<br />
电 子 前 沿 基 金 会 用 22 小 时 15 分 钟 就 宣<br />
告 破 解 了 一 个 DES 的 密 钥 。<br />
58
S 盒 的 设 计 准 则<br />
• S- 盒 首 次 出 现 在 Lucifer 算 法 中 , 因 DES 的 使 用 而 流 行 .<br />
• S- 盒 是 许 多 密 码 算 法 的 唯 一 非 线 性 部 件 , 因 此 , 它 的<br />
密 码 强 度 决 定 了 整 个 算 法 的 安 全 强 度 .<br />
• 提 供 了 密 码 算 法 所 必 须 的 混 乱 作 用 .<br />
• 如 何 全 面 准 确 地 度 量 S- 盒 的 密 码 强 度 和 设 计 有 效 的<br />
S- 盒 是 分 组 密 码 设 计 和 分 析 中 的 难 题 .<br />
• 非 线 性 度 、 差 分 均 匀 性 、 严 格 雪 崩 准 则 、 可 逆 性 、<br />
没 有 陷 门<br />
59
P 置 换 的 设 计 准 则<br />
•P 置 换 的 目 的 是 提 供 雪 崩 效 应 ( 明 文 或 密<br />
钥 的 一 点 小 的 变 动 都 引 起 密 文 的 较 大 变<br />
化 )<br />
60
轮 函 数 的 设 计 准 则<br />
• 安 全 性<br />
• 速 度<br />
• 灵 活 性 : 能 在 多 种 平 台 实 现<br />
61
轮 函 数 的 构 造<br />
• 加 法 、 减 法 和 异 或<br />
• 固 定 循 环 / 移 位<br />
• 数 据 依 赖 循 环<br />
• 乘 法<br />
62
分 组 密 码 的 操 作 模 式<br />
• 电 子 密 码 本 ECB (Electronic CodeBook<br />
mode)<br />
• 密 码 分 组 链 接 CBC (Cipher Block<br />
Chaining)<br />
• 密 码 反 馈 CFB (Cipher FeedBack)<br />
• 输 出 反 馈 OFB (Output FeedBack)<br />
63
电 子 密 码 本 (ECB)<br />
‣C i = E K (P i ) ⇔ P i = D K (C i )<br />
64
ECB 特 点<br />
• 对 明 文 进 行 64bit 分 组<br />
• 可 以 并 行 实 现<br />
• 不 能 隐 藏 明 文 的 模 式 信 息<br />
– 相 同 明 文 相 同 密 文<br />
– 同 样 信 息 多 次 出 现 造 成 泄 漏<br />
• 对 明 文 的 主 动 攻 击 是 可 能 的<br />
– 信 息 块 可 被 替 换 、 重 排 、 删 除 、 重 放<br />
• 误 差 传 递 : 密 文 块 损 坏 仅 对 应 明 文 块 损 坏<br />
• 适 合 于 传 输 短 信 息<br />
65
密 码 分 组 链 接 CBC<br />
• C i =E K (C i-1 ⊕P i ) ⇔ P i =E K (C i )⊕ C i-1<br />
66
CBC 特 点<br />
• 没 有 已 知 的 并 行 实 现 算 法<br />
• 能 隐 藏 明 文 的 模 式 信 息<br />
– 需 要 共 同 的 初 始 化 向 量 IV<br />
– 相 同 明 文 不 同 密 文<br />
• 对 明 文 的 主 动 攻 击 是 不 容 易 的<br />
– 信 息 块 不 容 易 被 替 换 、 重 排 、 删 除 、 重 放<br />
• 误 差 传 递 : 密 文 块 损 坏 明 文 块 损 坏<br />
• 安 全 性 好 于 ECB<br />
• 适 合 于 传 输 长 度 大 于 64 位 的 报 文 , 还 可 以 进 行<br />
用 户 鉴 别 , 是 大 多 系 统 的 标 准 如 SSL、IPSec<br />
67
CFB 加 密 示 意 图<br />
C i =P i ⊕(E K (S i ) 的 高 j 位 ) ; S i+1 =(S i
CFB 解 密 示 意 图<br />
P i =C i ⊕(E K (S i ) 的 高 j 位 ); S i+1 =(S i
CFB 特 点<br />
• 分 组 密 码 流 密 码<br />
• 没 有 已 知 的 并 行 实 现 算 法<br />
• 隐 藏 了 明 文 模 式<br />
• 需 要 共 同 的 移 位 寄 存 器 初 始 值 IV<br />
• 对 于 不 同 的 消 息 ,IV 必 须 唯 一<br />
• 误 差 传 递 : 一 个 单 元 损 坏 影 响 多 个 单 元<br />
70
OFB 加 密 示 意 图<br />
C i =P i ⊕(E K (S i ) 的 高 j 位 );S i+1 =(S i
OFB 解 密 示 意 图<br />
P i =C i ⊕(E K (S i ) 的 高 j 位 ); S i+1 =(S i
OFB 特 点<br />
• OFB: 分 组 密 码 流 密 码<br />
• 没 有 已 知 的 并 行 实 现 算 法<br />
• 隐 藏 了 明 文 模 式<br />
• 需 要 共 同 的 移 位 寄 存 器 初 始 值 IV<br />
• 误 差 传 递 : 一 个 单 元 损 坏 只 影 响 对 应 单 元<br />
• 对 明 文 的 主 动 攻 击 是 可 能 的<br />
– 信 息 块 可 被 替 换 、 重 排 、 删 除 、 重 放<br />
• 安 全 性 较 CFB 差<br />
73
双 密 钥 的 三 重 DES<br />
(Triple DES with Two Keys)<br />
•C=E K1 (D K2 (E K1 (P))) ⇔ P=D K1 (E K2 (D K1 (C)))<br />
74
国 际 数 据 加 密 IDEA(International Data<br />
Encryption Algorithm) 算 法<br />
•1990 年 瑞 士 联 邦 技 术 学 院 的 来 学 嘉 和<br />
Massey 提 出 了 PES,91 年 修 订 ,92 公 布 细<br />
节<br />
• 设 计 目 标 从 两 个 方 面 考 虑<br />
◦ 加 密 强 度<br />
◦ 易 实 现 性<br />
• 强 化 了 抗 差 分 分 析 的 能 力<br />
75
IDEA<br />
加 密<br />
算 法<br />
76
IDEA<br />
每 一 轮<br />
77
AES 背 景 -i<br />
• 1997 年 4 月 15 日 ,( 美 国 ) 国 家 标 准 技 术 研 究 所 (NIST)<br />
发 起 征 集 高 级 加 密 标 准 (Advanced Encryption<br />
Standard)AES 的 活 动 , 活 动 目 的 是 确 定 一 个 非 保 密 的 、<br />
可 以 公 开 技 术 细 节 的 、 全 球 免 费 使 用 的 分 组 密 码 算 法 , 作<br />
为 新 的 数 据 加 密 标 准 。<br />
• 1997 年 9 月 12 日 , 美 国 联 邦 登 记 处 公 布 了 正 式 征 集 AES 候<br />
选 算 法 的 通 告 。 作 为 进 入 AES 候 选 过 程 的 一 个 条 件 , 开 发<br />
者 承 诺 放 弃 被 选 中 算 法 的 知 识 产 权 。<br />
◦ 对 AES 的 基 本 要 求 是 : 比 三 重 DES 快 、 至 少 与 三 重 DES 一 样 安<br />
全 、 数 据 分 组 长 度 为 128 比 特 、 密 钥 长 度 为 128/192/256 比 特 。<br />
78
AES 背 景 -ii<br />
• 1998 年 8 月 12 日 , 在 首 届 AES 会 议 上 指 定 了 15 个<br />
候 选 算 法 。<br />
• 1999 年 3 月 22 日 第 二 次 AES 会 议 上 , 将 候 选 名 单<br />
减 少 为 5 个 , 这 5 个 算 法 是 RC6 , Rijndael ,<br />
SERPENT,Twofish 和 MARS。<br />
• 2000 年 4 月 13 日 , 第 三 次 AES 会 议 上 , 对 这 5 个<br />
候 选 算 法 的 各 种 分 析 结 果 进 行 了 讨 论 。<br />
• 2000 年 10 月 2 日 ,NIST 宣 布 了 获 胜 者 —Rijndael<br />
算 法 ,2001 年 11 月 出 版 了 最 终 标 准 FIPS<br />
PUB197。<br />
79
Rijndael 简 介<br />
• 不 属 于 Feistel 结 构<br />
• 加 密 、 解 密 相 似 但 不 对 称<br />
• 支 持 128/32=Nb 数 据 块 大 小<br />
• 支 持 128/192/256(/32=Nk) 密 钥 长 度<br />
• 有 较 好 的 数 学 理 论 作 为 基 础<br />
• 结 构 简 单 、 速 度 快<br />
80
AES 参 数<br />
81
SP 网 络 结 构<br />
在 这 种 结 构 的 每 一 轮 中 , 轮 输 入 首 先 被 一 个 由 子 密 钥 控<br />
制 的 可 逆 函 数 S 作 用 , 然 后 再 对 所 得 结 果 用 置 换 ( 或 可 逆<br />
线 性 变 换 )P 作 用 。S 和 P 分 别 被 称 为 混 乱 层 和 扩 散 层 , 主<br />
要 起 混 乱 和 扩 散 作 用 。<br />
82
AES 算 法 结 构 -ii<br />
83
AES-<br />
128<br />
加 解<br />
密 过<br />
程<br />
84
字 节 代 替 (Substitute Bytes ) 变 换<br />
• 字 节 代 替 是 一 个 非 线 性 的 字 节 代 替 , 独 立 地 在 每 个<br />
状 态 字 节 上 进 行 运 算 。 代 替 表 (S- 盒 ) 是 可 逆 的 ,<br />
是 一 个 16×16 的 矩 阵 。<br />
85
ByteRotation( 字 节 移 位 )<br />
在 ByteRotation 变 换 中 , 状 态 阵 列 的 后 3 行 循 环 移 位 不<br />
同 的 偏 移 量 。 第 1 行 循 环 移 位 C1 字 节 , 第 2 行 循 环 移 位 C2 字<br />
节 , 第 3 行 循 环 移 位 C3 字 节 。<br />
偏 移 量 C1、C2、C3 与 分 组 长 度 Nb 有 关 , 如 下 表 所 示 :<br />
Nb C1 C2 C3<br />
4 1 2 3<br />
6 1 2 3<br />
8 1 3 4<br />
87
Fig 7. ByteRotation<br />
0 4 8 12<br />
1 5 9 13<br />
2 6 10 14<br />
3 7 11 15<br />
循 环 左 移 1 字 节<br />
循 环 左 移 2 字 节<br />
循 环 左 移 3 字 节<br />
0 4 8 12<br />
5 9 13 1<br />
10 14 2 6<br />
15 3 7 11<br />
88
MixColumn( 列 混 合 )<br />
令 b(x) = c(x) × a(x), 写 成 矩 阵 形 式 为 :<br />
b0<br />
02 03 01 01 a0<br />
b1 = 01<br />
02 03 01 a1<br />
b2 01 01<br />
02 03 a2<br />
b3 03 01 01 02 a3<br />
89
Fig 8. MixColumn<br />
这 一 运 算 作 用 在 每 一 列 上<br />
A0,0 A0,1 A0,2 A0,3<br />
B0,0 B0,1 B0,2 B0,3<br />
A1,0 A1,1 A1,2 A1,3<br />
B1,0 B1,1 B1,2 B1,3<br />
A2,0 A2,1 A2,2 A2,3<br />
B2,0 B2,1 B2,2 B2,3<br />
A3,0 A3,1 A3,2 A3,3<br />
B3,0 B3,1 B3,2 B3,3<br />
× C(X)<br />
90
2.4 AddRoundKey( 轮 密 钥 加 )<br />
将 轮 密 钥 与 状 态 按 比 特 异 或 。 轮 密 钥 是 通 过 Key Schedule<br />
过 程 从 密 码 密 钥 中 得 到 的 , 轮 密 钥 长 度 等 于 分 组 长 度 。<br />
91
A0,0 A0,1 A0,2 A0,3<br />
K0,0 K0,1 K0,2 K0,3<br />
A1,0 A1,1 A1,2 A1,3<br />
A2,0 A2,1 A2,2 A2,3<br />
+<br />
K1,0 K1,1 K1,2 K1,3<br />
K2,0 K2,1 K2,2 K2,3<br />
A3,0 A3,1 A3,2 A3,3<br />
K3,0 K3,1 K3,2 K3,3<br />
B0,0 B0,1 B0,2 B0,3<br />
B1,0 B1,1 B1,2 B1,3<br />
A3,3 + K3,3 = B3,3 (mod 2)<br />
B2,0 B2,1 B2,2 B2,3<br />
B3,0 B3,1 B3,2 B3,3<br />
92
AES 的 密 钥 调 度<br />
密 钥 调 度 包 括 两 个 部 分 : 密 钥 扩 展 和 轮 密 钥 选 取 。<br />
• 密 钥 bit 的 总 数 = 分 组 长 度 ×( 轮 数 Round+1)<br />
例 如 当 分 组 长 度 为 128bits 和 轮 数 Round 为 10<br />
时 , 轮 密 钥 长 度 为 128×(10+1)=1408bits。<br />
• 将 密 码 密 钥 扩 展 成 一 个 扩 展 密 钥 。<br />
• 从 扩 展 密 钥 中 取 出 轮 密 钥 : 第 一 个 轮 密 钥 由 扩 展<br />
密 钥 的 第 一 个 Nb 个 4 字 节 字 , 第 二 个 圈 密 钥 由 接<br />
下 来 的 Nb 个 4 字 节 字 组 成 , 以 此 类 推 。<br />
93
密 钥 扩 展<br />
K0,0 K0,1 K0,2 K0,3<br />
K1,0 K1,1 K1,2 K1,3<br />
K2,0 K2,1 K2,2 K2,3<br />
K3,0 K3,1 K3,2 K3,3<br />
K0 K1 K2 K3<br />
+<br />
K0 K1 K2 K3 K4 K5 K6 K7<br />
+<br />
+<br />
94
K0 K1 K2 K3 K4 K5 K6 K7<br />
Byte<br />
Substitution<br />
ByteRotate<br />
+ Rcon<br />
95
4 =< i < 4 ( Rnd + 1 )<br />
Wi-4<br />
Wi-3<br />
Wi-2<br />
+<br />
Wi-1<br />
Byte<br />
Substituion<br />
Byte<br />
Rotate<br />
+ Rcons<br />
i mod 4 != 0<br />
Wi<br />
i mod 4 = 0<br />
Key expansion<br />
96
轮 密 钥 选 取<br />
K0 K1 K2 K3 K4 K5 K6 K7 K8 K9 K10 K11 K12<br />
轮 密 钥 0 轮 密 钥 1 轮 密 钥 2<br />
97
公 钥 密 码<br />
• 公 钥 密 码 又 称 为 双 钥 密 码 和 非 对 称 密 码 , 是 1976 年 由<br />
Diffie 和 Hellman 在 其 “ 密 码 学 新 方 向 ” 一 文 中 提 出 的 , 见<br />
文 献 :<br />
W.Diffie and M.E.Hellman, New Directrions in<br />
Cryptography, IEEE Transaction on Information<br />
Theory, V.IT-22.No.6, Nov 1976, PP.644-654<br />
• RSA 公 钥 算 法 是 由 Rivest,Shamir 和 Adleman 在 1978 年<br />
提 出 来 的 , 见<br />
Communications of the ACM. Vol.21.No.2. Feb.<br />
1978, PP.120-126<br />
98
公 开 密 钥 密 码 的 重 要 特 性<br />
• 加 密 与 解 密 由 不 同 的 密 钥 完 成<br />
加 密 : XY: Y = E KU (X)<br />
解 密 : YX: X = D KR (Y) = D KR (E KU (X))<br />
• 知 道 加 密 算 法 , 从 加 密 密 钥 得 到 解 密 密 钥 在<br />
计 算 上 是 不 可 行 的<br />
• 两 个 密 钥 中 任 何 一 个 都 可 以 用 作 加 密 而 另<br />
一 个 用 作 解 密<br />
X = D KR (E KU (X)) = E KU (D KR (X))<br />
99
用 公 钥 密 码 实 现 保 密<br />
• 用 户 拥 有 自 己 的 密 钥 对 (K U ,K R )<br />
• 公 钥 K U 公 开 , 私 钥 K R 保 密<br />
•AB: Y=E KUb (X)<br />
•B: D KRb (Y)= D KRb (E KUb (X))=X<br />
100
基 于 公 开 密 钥 的 加 密 过 程<br />
101
用 公 钥 密 码 实 现 鉴 别<br />
• 鉴 别 :<br />
AALL: Y=D KRa (X)<br />
ALL: E KUa (Y)=E KUa (D KRa (X))=X<br />
• 鉴 别 + 保 密 :<br />
AB: Z= E KUb (D KRa (X))<br />
B: E KUa (D KRb (Z))=X<br />
102
基 于 公 开 密 钥 的 鉴 别 过 程<br />
103
基 本 思 想 和 要 求<br />
• 涉 及 到 各 方 : 发 送 方 、 接 收 方 、 攻 击 者<br />
• 涉 及 到 数 据 : 公 钥 、 私 钥 、 明 文 、 密 文<br />
• 公 钥 算 法 的 条 件 :<br />
◦ 产 生 一 对 密 钥 是 计 算 可 行 的<br />
◦ 已 知 公 钥 和 明 文 , 产 生 密 文 是 计 算 可 行 的<br />
◦ 接 收 方 利 用 私 钥 来 解 密 密 文 是 计 算 可 行 的<br />
◦ 对 于 攻 击 者 , 利 用 公 钥 来 推 断 私 钥 是 计 算 不 可 行<br />
的<br />
◦ 已 知 公 钥 和 密 文 , 恢 复 明 文 是 计 算 不 可 行 的<br />
◦( 可 选 ) 加 密 和 解 密 的 顺 序 可 交 换<br />
104
公 钥 密 码 基 于 的 数 学 难 题<br />
• 大 整 数 分 解 问 题 (The Integer Factorization<br />
Problem,RSA 体 制 )<br />
• 背 包 问 题<br />
• 有 限 域 的 乘 法 群 上 的 离 散 对 数 问 题<br />
(The Discrete Logarithm Problem,<br />
ElGamal 体 制 )<br />
• 椭 圆 曲 线 上 的 离 散 对 数 问 题 (The Elliptic<br />
Curve Discrete Logarithm Problem,<br />
类 比 的 ElGamal 体 制 )<br />
105
RSA 算 法<br />
• 1977 年 由 Ron Rivest、Adi Shamir 和 Len Adleman<br />
发 明 ,1978 年 公 布<br />
• 是 一 种 分 组 加 密 算 法<br />
• 应 用 最 广 泛 的 公 钥 密 码 算 法<br />
• 只 在 美 国 申 请 专 利 , 且 已 于 2000 年 9 月 到 期<br />
106
RSA 算 法 描 述<br />
RSA 加 、 解 密 算 法<br />
• 分 组 大 小 为 k, 2k < n<br />
• 公 开 密 钥 n( 两 素 数 p 和 q 的 乘 积 )( 推 荐 p,q 等 长 )<br />
e( 与 (p-1)(q-1) 互 素 )<br />
ed≡1(mod(p-1)(q-1))<br />
• 私 人 密 钥 d=e -1 mod(p-1)(q-1) )<br />
• 加 密 c=m e mod n<br />
• 解 密 m=c d mod n<br />
107
密 钥 生 成 算 法<br />
• 选 择 两 个 素 数 p,q p 和 q 都 是 素 数<br />
• 计 算 n=pq<br />
• 计 算 Φ(n)=(p-1)(q-1)<br />
• 选 择 整 数 e gcd(Φ(n),e)=1,1
加 密 / 解 密 算 法<br />
• 加 密<br />
◦ 明 文 :M
举 例 ( 密 钥 产 生 )<br />
• 选 择 两 个 素 数 p,q p=7,q=17<br />
• 计 算 n=pq<br />
n=pq=7x17=119<br />
• 计 算 Φ(n)=(p-1)(q-1) Φ(n)=6x16=96<br />
• 选 择 整 数 e gcd(Φ(n),e)=1,1
举 例 ( 加 密 / 解 密 )<br />
明 文 =19<br />
19^5=2476099<br />
2476099/119=20807 余 数 为 66<br />
密 文 =66<br />
密 文 =66<br />
KU=5,119<br />
66^77=1.27…x10^140<br />
1.27…x10^140 /119=1.06…x10^138 余 数 为<br />
19<br />
明 文 =19<br />
KR=77,119<br />
111
实 现 要 求<br />
• 要 求 : 若 使 RSA 安 全 ,p 与 q 必 为 足 够 大 的<br />
素 数 , 使 分 析 者 没 有 办 法 在 多 项 式 时 间 内<br />
将 n 分 解 出 来 。 建 议 选 择 p 和 q 大 约 是 100 位<br />
的 十 进 制 素 数 。 模 n 的 长 度 要 求 至 少 是<br />
512 比 特 。EDI 攻 击 标 准 使 用 的 RSA 算 法 中<br />
规 定 n 的 长 度 为 512 至 1024 比 特 位 之 间 ,<br />
但 必 须 是 128 的 倍 数 。 国 际 数 字 签 名 标 准<br />
ISO/IEC 9796 中 规 定 n 的 长 度 为 512 比 特 位 .<br />
至 1996 年 , 建 议 使 用 768 位 的 模 n。<br />
112
背 包 问 题<br />
• 背 包 问 题 描 述 : 给 定 重 量 分 别 为 a 1 ,a 2 ,…a n 的 n 个<br />
物 品 , 装 入 一 个 背 包 中 , 要 求 重 量 等 于 一 个 给 定 值 ,<br />
那 么 究 竟 是 那 些 物 品 <br />
• 0-1 背 包 问 题 :<br />
◦ 给 定 一 个 正 整 数 S 和 一 个 背 包 向 量 A=(a 1 ,…,a n ), 其 中 a i 是<br />
正 整 数 , 求 满 足 方 程<br />
S = ∑a i x i 的 二 进 制 向 量 X=(x 1 ,…,x n )。<br />
◦ 这 是 一 个 NP 完 全 问 题 , 解 决 这 个 问 题 所 需 要 的 时 间 与 n 呈<br />
指 数 增 长<br />
113
背 包 问 题 用 于 公 钥 密 码 学<br />
• 做 法 : 明 文 为 X,S 为 密 文<br />
• 奥 妙 在 于 有 两 类 背 包 , 一 类 可 以 在 线 性 时 间<br />
内 求 解 , 另 一 类 则 不 能<br />
• 把 易 解 的 背 包 问 题 修 改 成 难 解 的 背 包 问 题<br />
– 公 开 密 钥 使 用 难 解 的 背 包 问 题<br />
– 私 钥 使 用 易 解 的 背 包 问 题<br />
114
易 解 的 背 包 问 题 —— 超 递 增 背 包<br />
• 满 足 下 列 条 件 的 背 包<br />
a i > ∑a j (j = 1,…,i-1)<br />
• 这 样 的 背 包 也 被 称 为 简 单 背 包<br />
• 求 解<br />
– 从 最 大 的 a i 开 始 , 如 果 S 大 于 这 个 数 , 则 减 去 a i , 记 x i 为<br />
1, 否 则 记 x i 为 0<br />
– 如 此 下 去 , 直 到 最 小 的 a i<br />
• 例 如 背 包 序 列 {2, 3, 6, 13, 27, 52}<br />
– 求 解 70 的 背 包<br />
• 结 果 为 {2, 3, 13, 52}<br />
• 所 以 , 密 文 70 对 应 的 明 文 为 110101<br />
115
转 换 背 包<br />
• 简 单 背 包 用 作 私 钥<br />
• 如 何 产 生 相 应 的 公 钥 —— 转 换<br />
– 做 法 :<br />
选 择 一 个 整 数 m > ∑a i (i = 1,…,n)<br />
然 后 选 择 一 个 与 m 互 素 的 整 数 w,<br />
a i' = wa i (mod m) (i = 1,…,n)<br />
这 里 的 a i<br />
'<br />
是 伪 随 机 分 布 的<br />
这 样 得 到 的 背 包 是 非 超 递 增 背 包<br />
116
基 于 背 包 问 题 的 公 钥 密 码 系 统<br />
• 加 密<br />
– 将 明 文 分 为 长 度 为 n 的 块 X=(x 1 ,…,x n )<br />
– 然 后 用 公 钥 A ' = (a 1 '<br />
, …, a n '<br />
), 将 明 文 变 为 密 文<br />
S = E(X) = ∑a i '<br />
x i<br />
• 解 密<br />
– 先 计 算 S ' = w -1 S mod m<br />
– 再 求 解 简 单 背 包 问 题<br />
S ' = ∑a i x i<br />
117
Eaxmple- 从 私 钥 计 算 公 钥<br />
• 私 钥 {2,3,6,13,27,52}<br />
•w=31, m=105<br />
2*31 mod 105= 62<br />
3*31 mod 105=93<br />
6*31 mod 105=81<br />
13*31 mod 105= 88<br />
27*31 mod 105=102<br />
52*31 mod 105= 37<br />
• 公 钥 {62,93,81,88,102,37}<br />
118
Eaxmple- 加 密<br />
• 消 息 =011000 110101 101110<br />
• 明 文 : 0 1 1 0 0 0<br />
• 背 包 : 62 93 81 88 102 37<br />
• 密 文 :93+81=174<br />
•011000 对 应 于 93+81=174<br />
•110101 对 应 于 62+93+88+37=280<br />
•101110 对 应 于 62+81+88+102=333<br />
119
Eaxmple- 解 密<br />
• 解 密 者 知 道 {2,3,6,13,27,52}, w,m<br />
• 计 算 w(w -1 )=1mod(m)<br />
• w -1 =61<br />
• 174*61 mod 105=9=3+6, 对 应 于 011000<br />
• 280*61 mod 105=70=2+3+13+52, 对 应 于 110101<br />
• 333*61 mod 105=48=2+6+13+27, 对 应 于 101110<br />
• 因 此 , 消 息 =011000 110101 101110<br />
120
公 开 密 钥 密 码 总 结<br />
• 三 类 算 法 : RSA, ElGamal, ECC<br />
•RSA<br />
– 基 础 : IFP(Integer Factorization Problem)<br />
– 加 / 解 密 、 密 钥 交 换 、 数 字 签 名<br />
– 使 用 最 广 泛<br />
•ElGamal<br />
– 基 础 : DLP(Discrete Logarithm Problem)<br />
– 加 / 解 密 、 密 钥 交 换 、 数 字 签 名<br />
121
公 开 密 钥 密 码 总 结<br />
•ECC<br />
– 基 础 : ECDLP(Elliptic Curve Discrete<br />
Logarithm Problem)<br />
– 加 / 解 密 、 密 钥 交 换 、 数 字 签 名<br />
– 密 钥 短 , 速 度 快<br />
– 正 在 开 始 广 泛 应 用<br />
• 公 钥 算 法 加 密 解 密 速 度 慢<br />
• 误 区 : 公 开 密 钥 密 码 算 法 更 安 全<br />
公 开 密 钥 密 码 使 对 称 密 钥 密 码 过 时 了<br />
公 钥 的 分 发 是 简 单 和 一 目 了 然 的<br />
122