06.02.2015 Views

Lecture 2 密码学

Lecture 2 密码学

Lecture 2 密码学

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!