猫にはわかる暗号技術 1
Tokyo Crypto Cats
2016 Winter
1.1 暗号技術の必要性
1.2 安全性の種類
1.3 ブロック暗号
1.4 暗号利用モード
1. 共通鍵暗号
1.1 暗号技術の必要性
1.2 安全性の種類
1.3 ブロック暗号
1.4 暗号利用モード
1. 共通鍵暗号
暗号技術の必要性
外交, 防衛に関する
機密情報など
競争力の源泉である
ノウハウ・営業秘密
知的財産
個人情報など
盗聴、改竄、なりすましなどから保護したい情報をどう守るか
法や契約
技術
不正競争防止法、知的財産権法 (著作権法, 特許法など)
個人情報保護法、秘密保持契約など
暗号技術、電子透かし技術など
安全な通信の満たすべき性質
• 機密性
– (秘密の) 情報が漏れないこと
• (データの)完全性
– 通信中にメッセージを改ざんされないこと
• メッセージ認証
– 第三者がメッセージを偽造できないこと
• 否認不可
– メッセージを作成した事実を証明できること
機密性
傍受してもメッセージを理解できない
アリス
悪い人
ボブ
(データの)完全性
通信中にメッセージが改竄されない
あるいは改竄を検出可能
内容を書き換えたメー
ルに差し替える
メッセージ認証
作成者を騙ってメッセージを偽造できない
あるいは偽造を検出可能
午後7時
光陽園駅前公園にて待つ
アリス
アリスじゃない!
否認不可
「そんなこと言っていない」と否認されても…
振り込んだから契約通りト
リーバーチの財布
おくって
そんな契約
交わしてない
※トリーバーチはオークションサイトの詐欺で
好まれるブランドらしいから気を付けよう!
ニセモノが多いんだって!
否認不可
確かに以前そう仰ってたよ?と証明できる
振り込んだから契約通りト
リーバーチの財布
おくって
そんな契約
交わしてない
暗号技術で何を守れるか
性質 技術
機密性
(Confidentiality)
共通鍵暗号
公開鍵暗号 (ペアリング暗号を含む)
完全性
(Integrity)
暗号学的ハッシュ関数
メッセージ認証コード
ディジタル署名
メッセージ認証
(message authentication)
メッセージ認証コード
ディジタル署名
否認不可
(Non-repudiation)
ディジタル署名
2000年頃からプライバシー保護、匿名化を強化した技術が増える。
OTRメッセージングでは「否認可能性」も求められる
1.1 暗号技術の必要性
1.2 安全性の種類
1.3 ブロック暗号
1.4 暗号利用モード
1. 共通鍵暗号
安全とは?
• ある性質を破ろうとする試み (攻撃) が
成功しないこと = 安全性を達成
攻撃のモデル
暗号文から平文を復元する、
メッセージ認証においてメッセージを偽造する、など
対象の暗号技術ごとに確認するとよい
安全性の達成度
暗号文から平文のいかなる情報も漏れない、など
対象の暗号技術ごとに確認するとよい
安全性の種類
無条件に安全性を達成するか否か
無条件 → 情報理論的安全性
暗号の安全性の種類
• 2つの安全性
情報理論的安全性 計算量的安全性
解読可能性 不可能
(現実的な時間では)
困難
暗号の危殆化 危殆化しない 危殆化する
代表的な暗号方式 バーナム暗号
DES, AES, RSAなど
ほぼ全ての暗号
鍵管理のコスト
(鍵生成, 配送など)
コスト大 相対的に小
情報理論的安全性 (1)
解読できる暗号
• 暗号文から平文のなにがしか
の情報が漏れる
• 暗号文を得ることで平文の確
率分布が変わる
事前確率 ≠ 事後確率
と言い換えてもよい
M
P(M)
M
P(M|C)
対象言語における各平文∈Mの生起確率
事後確率の分布が変化する
情報理論的安全性 (2)
 
情報理論的安全性 (3)
• シーザー暗号の例
– 平文: CREASE TO
– 暗号文: SHUQIU JE
(17字ずらし)
– 解読者が1字読む毎に
事後確率分布が変化
– 5字読むと上の平文に
収束 (事後確率=1)
– 暗号文を集めるほど
平文の情報が漏れている
…と考えられる
情報理論的安全性 (4)
解読できない暗号
• 暗号文をいくら集めても
集める前と同じ確率分布
– 正解の平文を当てる確率が
当てずっぽうと同じ
• 無限の計算力があっても
解読不能 → 危殆化しない
• 完全秘匿性をもっている
という(情報理論的安全性) M
P(M|C)
事後確率の分布 (何の情報も得られていない)
M
P(M)
対象言語における各平文∈Mの生起確率
情報理論的安全な暗号の難しさ
情報理論的安全な暗号
• |K| ≥ |M|
• 鍵は一様ランダムに選ぶ
• 鍵は一度限り使い切り
平文より長い真正の乱数を生成
する必要がある
• 鍵生成のコスト大
• 鍵配送のコスト大
確実に鍵廃棄する必要がある
• 鍵廃棄にコストがかかる…
通信ごとに鍵を生成しなおす
• 鍵生成のコスト大
ほとんどのケースで
鍵管理のコスト > 暗号化によるベネフィット
バーナム暗号 (One Time Pad)
• |M| = |K| = |C|
– 理論上もっとも鍵空間K, 暗号文空間Cが小
• 鍵は真の乱数 (一様ランダムに選ぶ)
r1
r2
… … … … … rn
m1
m2
… … … … … mn
c1
c2
… … … … … cn
r1
r2
… … … … … rn
m1
m2
… … … … … mn
c1
c2
… … … … … cn
⊕ ⊕
暗号化 復号
平文
暗号文
鍵(乱数)
平文
暗号文
鍵(乱数)
事前共有
QKD + One Time Pad
• OTPは完全秘匿で絶対に危殆化しないのが魅力的
• 鍵配送の問題は量子鍵配送(QKD)で解決
• 試験運用中
– 東京QKD
ネットワーク
https://www.nict.go.jp/press
/2010/10/14-1.html
計算量的安全性
• 安全性を緩める
• 現実的な時間とは?
– いかなる(確率)多項式時間アルゴリズム
(PPTアルゴリズム) でも解けないこと!
– …を満たせば現実的な時間で解けないと仮定
– 実際には、「いかなる…も知られていない」
情報理論的安全性 計算量的安全性
解読不可能
(現実的な時間では)
解読困難
計算量的安全性 暗号の危殆化
• 新しい(解読)アルゴリズムの発見
• ムーアの法則(右図)
• 今日の安全は
X年後安全でない
暗号の強め方
• Confusion (混乱)
– 非線形な換字処理
– 暗号文と平文の関係を
めちゃくちゃに掻き乱す
– S-Box (右図)
• Diffusion (拡散)
– 入力の各1 bitが暗号文の
至るところに影響を及ぼす
(Avalanche Effect)
– Permutation (右図)
1.1 暗号技術の必要性
1.2 安全性の種類
1.3 ブロック暗号
1.4 暗号利用モード
1. 共通鍵暗号
ブロック暗号
• 平文をある長さの
ブロック単位で暗号化
• 暗号化と復号に
同じ鍵を使う
– 共通鍵暗号という
• 共通鍵暗号
– ブロック暗号のほか
ストリーム暗号もある
m1
m2
… … … … … mn平文
c1
c2
… … … … … cn暗号文
ブロック暗号化
補足: ブロック暗号は置換(1)
• 平文空間と暗号文空間が同じサイズ
• 一意に復号可 = 逆写像がある = 全単射
平文空間 暗号文空間
THISIS
APPLE
AN UIJTJT
BQQMF
BO
補足: ブロック暗号は置換(2)
読み方
読み方
補足: ブロック暗号は置換(3)
普通はこの間が
とてつもなく大きい
弱い鍵 (Weak Key)
(DESには4つある)
ブロック暗号の攻撃モデル
暗号文単独攻撃 (COA)
既知平文攻撃 (KPA)
選択平文攻撃 (CPA)
選択暗号文攻撃 (CCA)
適応的選択暗号文攻撃 (CCA2)
攻撃者の自由度
暗号文単独攻撃 (COA)
• Ciphertext Only Attack
• 暗号文だけ読める攻撃者が、
暗号文のみから暗号解読を試みる
既知平文攻撃 (KPA)
• Known Plaintext Attack
• 解読対象以外の平文・暗号文のペアを
入手できるという条件
選択平文攻撃 (CPA)
• Chosen Plaintext Attack
• 解読対象以外の平文・暗号文のペアを
攻撃者が平文を選択して入手できる
暗号化よろ~
攻撃者は暗号化できる者に
平文の暗号化を依頼する
(暗号化オラクルという)
選択暗号文攻撃 (CCA)
• Chosen Ciphertext Attack
• 解読対象の暗号文の入手前に、予め
任意の暗号文を復号できる条件
復号よろ~
攻撃者は復号できる者に
暗号文の復号を依頼する
(復号オラクルという)
適応的選択暗号文攻撃 (CCA2)
• Chosen Ciphertext Attack 2
• 解読対象の暗号文の入手後にも、
解読対象以外の任意の暗号文を復号可
復号よろ~
攻撃者は復号できる者に
暗号文の復号を依頼する
(復号オラクルという)
ブロック暗号の安全性達成度
• 一方向性 (Onewayness: OW)
– 暗号文から (鍵の情報なしに) 平文全文を
復号できる確率多項式時間アルゴリズムがない
• 識別不可能性 (Indistinguishability: IND)
– 渡された2つの平文のうちいずれかを暗号化して返すオラクルに攻撃
者がアクセスできるとする
– 任意に平文2つを選んで渡したときに、
返ってきた暗号文がどちらの平文のものか
識別する確率多項式時間アルゴリズムがない
– 強秘匿性 (第3章 公開鍵暗号を参照) と実は等価
ブロック暗号の安全性達成度
• 一方向性 (Onewayness: OW)
– 暗号文から (鍵の情報なしに) 平文全文を
復号できる確率多項式時間アルゴリズムがない
• 識別不可能性 (Indistinguishability: IND)
– 渡された2つの平文のうちいずれかを暗号化して返すオラクルに攻撃
者がアクセスできるとする
– 任意に平文2つを選んで渡したときに、
返ってきた暗号文がどちらの平文のものか
識別する確率多項式時間アルゴリズムがない
– 強秘匿性 (第3章 公開鍵暗号を参照) と実は等価
超重要
識別不可能性 (IND)
平文1, 平文2
どちらかの
平文を暗号化
どちらかの暗号文
攻撃者 オラクルさん
2つの識別不可能性
• Left-or-Right indistinguishability
– 先ほどのINDの説明の通り
– 二つの平文 (左と右) のどちらだ?って問題
• Real-or-Random indistinguishability
– こういうゲーム
• 平文をオラクルに渡す
• オラクルは平文を素直に暗号化するか、
あるいは同じ長さの乱数を暗号化する
• 攻撃者が元の平文の暗号文かランダムか
区別できれば攻撃者の勝ち
– Left-or-Rightと等価
Real-or-Random識別不可能性
平文
平文 or
同じ長さの
乱数を暗号化
どちらかの暗号文
オラクルさん攻撃者
1.1 暗号技術の必要性
1.2 安全性の種類
1.3 ブロック暗号
1.4 暗号利用モード
1. 共通鍵暗号
決定的 or 確率的
• 決定的アルゴリズム
– 暗号方式の暗号化アルゴリズムにおいて、
ランダムな要素が全くない場合は…
• 同じ平文から常に同じ暗号文が生成
• IND-CPAの意味で安全にならない
= 選択平文攻撃で解読されるおそれがある
• ECBは決定的
• 確率的アルゴリズム
– 暗号方式の暗号化アルゴリズムにおいては
必ずランダムな要素を入れる!
• CBCモード + ランダムなIV (初期化ベクトル) など
ECBモード (1)
暗号化
平文ブロック1 平文ブロック2 平文ブロック3 平文ブロック4
暗号文ブロック1 暗号文ブロック2 暗号文ブロック3 暗号文ブロック4
…
内容の同じ平文ブロックは
内容の同じ暗号文ブロックに変換される
暗号化 暗号化 暗号化
ECBモード (2)
• IND-CPAにならない
– ブロック長をLとする
– 攻撃者は以下の平文を用意
• 長さLの任意の平文m1
• 長さLのm1
とは異なる
任意の平文m2
• オラクルに
m1
|| m1
と m1
|| m2
を
渡す (右図)
– このとき、どちらの暗号文か
100%識別できる
m1
|| m1
c1
|| c1
m1
|| m2
c1
|| c2
同じ
異なる
オラクルさん
• IND-CPA
– ブロック暗号が擬似ランダム置換であれば
– IVがランダムであれば
CBCモード
暗号化
平文ブロック1 平文ブロック2
暗号文ブロック1 暗号文ブロック2
…
IV
暗号化
Padding Oracle攻撃
• 選択暗号文攻撃の一種
– Paddingが不正であるか否かという情報から、
平文に関する情報がわずかに漏れる
– SSL 3.0のPadding Oracle
– Lucky13
• プロトコルの安全性?
– AESなど共通鍵暗号、CBCモード、HMACなど
安全なプリミティブを使っていても
プロトコルの組み方によっては脆弱になる例
Appendix A
完全秘匿な暗号方式 鍵の長さ (1)
証明
Appendix A
完全秘匿な暗号方式 鍵の長さ (2)
Appendix A
完全秘匿な暗号方式 別の表現
Appendix B
無視可能関数とセキュリティパラメータ

猫にはわかる暗号技術 1