猫にはわかる暗号技術 1

Post on 16-Apr-2017

345 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

猫にはわかる暗号技術 1

Tokyo Crypto Cats2016 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の任意の平文m

1

• 長さLのm1とは異なる

任意の平文m2

• オラクルにm

1 || m

1 と m

1 || m

2 を

渡す (右図)

– このとき、どちらの暗号文か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無視可能関数とセキュリティパラメータ

top related