暗号技術 ~対称暗号方式の仕組み~ (2週目)

24
暗暗暗暗 対対対対対対対対対対対 ~~ 対対対 (2) 暗暗暗暗暗 04A1004 暗暗 暗暗

Upload: kort

Post on 05-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

暗号技術 ~対称暗号方式の仕組み~ (2週目). 情報工学科   04A1004 石川 真悟. 対称暗号(共通鍵暗号). ストリーム暗号 ブロック暗号 DES(米国標準の暗号技術) トリプルDES(DESを強化したもの) AES / Rijndael(DESに代わる新しい米国標準暗号技術). ストリーム暗号(逐次暗号). 同じ鍵を使って平文を 1 ビット、または8ビット(1バイト)単位で逐次的に暗号化。 例えば、鍵の長さが32ビットあっても、暗号化処理の単位は 1 ビットまたは8ビット(1バイト)単位になる。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

暗号技術 ~対称暗号方式の仕組み~

(2週目)

情報工学科   04A1004

石川 真悟

Page 2: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

対称暗号(共通鍵暗号)

• ストリーム暗号• ブロック暗号• DES(米国標準の暗号技術)• トリプルDES(DESを強化したもの)• AES /Rijndael(DESに代わる新しい米国標準暗号技術)

Page 3: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

ストリーム暗号(逐次暗号)同じ鍵を使って平文を 1ビット、または8ビット(1バイト)単位で逐次的に暗号化。例えば、鍵の長さが32ビットあっても、暗号化処理の単位は 1ビットまたは8ビット(1バイト)単位になる。平文のデータがなくなるまで、8ビット単位で繰り返し処理が行われる。

Page 4: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

ストリーム暗号の処理例(32ビット)

10101010   10101010   10101010   10101010平文8ビット

8ビット 8ビット

8ビット

+ +++11111111   11111111   11111111   11111111鍵

処理 1 処理 2処理1 処理 3 処理 4

暗号文 01010101   01010101   01010101   01010101

Page 5: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

ストリーム暗号の特徴同じ処理を繰り返すだけなので、平文と暗号文の対応関係から鍵の情報を解読することが、比較的容易にできる。⇒できるだけ頻繁に鍵を変える必要がある。鍵を生成する際には、できるだけ複雑な乱数を生成する必要がある。ストリーム暗号は乱数を使った鍵の生成が、とても高速に処理できる。⇒音声通話、データ通信の暗号化方式として多く用いられる。ストリーム暗号の1つに、バーナム暗号がある。バーナム暗号は、乱数を使って平文と同じ長さの鍵を生成し、この鍵は1回利用する毎に完全に使い捨てる。このため、バーナム暗号は理論的には解読不可能とされている。ただし、鍵の生成処理や鍵の受け渡し、鍵の保管など解決されていない多くの課題があるために実用化されていない。近年のストリーム暗号は、特定の長さで鍵を生成するため、バーナム暗号に比べて暗号強度が低いものの、実用的な暗号化方式として一般に利用されている。

Page 6: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

ブロック暗号

同じ鍵を使って平文を一定のビットのまとまりごとに暗号化する。この一定のビットのまとまりをブロックと呼び、1つのブロックの長さをブロック長と呼ぶ。

ストリーム暗号との違い⇒ストリーム暗号は同じ暗号化処理を行なうのに対しブロック暗号は、換字暗号や転置暗号と呼ばれる暗号化処理をブロック毎に複雑に組み合わせて暗号化処理を行なう。

Page 7: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

ブロック暗号の処理例(64ビット)

101010 ・・・ 10   101010 ・・・ 10   101010 ・・・ 10平文64ビット

64ビット

64ビット

+ ++111111 ・・・ 11   111111 ・・・ 11   11111 ・・・ 111鍵

処理 2(転置暗号)

処理1(換字暗号)

処理 3(換字暗号)

暗号文010101 ・・・ 01   010101 ・・・ 01   010101 ・・・ 01

Page 8: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

ブロック暗号の特徴ブロック毎に換字暗号や転置暗号といった異なった暗号化を複雑に組み合わせて処理を行なうため、一部のブロックの平文と暗号文の対応関係がわかったとしても、鍵の情報を簡単に解読できない。最も暗号強度が高いブロック暗号は、平文の途中1ビットが正しく変換されなかった場合、このビット以降の暗号文全体に影響して、平文と暗号文の関係を見つけられなくする。近年のブロック暗号は、これに近い暗号強度を持っているため、暗号解読は、現実的な時間内では困難。しかし、近年のコンピュータの性能が飛躍的に向上しているので、解読処理にかかる時間が短縮されつつある。よって、コンピュータの性能が向上するにつれて、鍵の長さをさらに長くしたり、暗号化の組み合わせをさらに複雑にするといった対処が必要。

Page 9: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

ブロック暗号のモードブロック暗号はブロックごとに暗号化処理を行なうが、処理の順番や方法がいくつかある。この処理の方法をモードと呼ぶ。モード 名称 説明ECBモード

電子符号表モード

平文ブロックを最初から順番にそのまま暗号化する。シンプルだが、弱点があるため、あまり使われていない。

CBCモード

暗号ブロック連鎖モード

1つ前の暗号文ブロックと平文ブロックの内容を混ぜ合わせてから暗号化を行なう。

CFBモード

暗号フィードバックモード

1つ前の暗号化ブロックを暗号アルゴリズムの入力に戻して暗号化し、平文ブロックの内容と混ぜ合わせる。

OFBモード

出力フィードバックモード

1つ前の暗号化の出力を暗号アルゴリズムの入力に戻して暗号化し、平文ブロックの内容と混ぜ合わせる。

CTRモード

カウンタモード 1ずつ増加していくカウンタを暗号化して、鍵ストリームを作り出し、平文ブロックの内容と混ぜ合わせる。

Page 10: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

ECBモードECBモードで暗号化すると平文ブロックと暗号文ブロックは一対一の関係の対応表ができる。このことから、ECBモードは電子符号表モードと呼ばれる。平文ブロックを最初から順番に暗号化し最後の平文ブロックがブロック長に満たない場合、パディングと呼ばれるダミーのデータを埋め込み、暗号化処理が行なわれる。

ECBモードの暗号化

平文 平文ブロック1

平文ブロック2

平文ブロック3

・・・

暗号化 暗号化 暗号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

・・・

・・・

ECBモードの復号化

平文ブロック1

平文ブロック2

平文ブロック3

・・・

復号化 復号化 復号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

・・・

・・・

平文

弱点・・・どれか1つの平文ブロックと暗号文ブロックの関係を解析できてしまうと、ここから鍵の情報がわかってしまい、他のブロックも解読される。また、ブロックの長さがわかってしまうと、暗号文ブロックを入れ替えるだけで、巧妙に情報を改竄できる。暗号文ブロックを入れ替えると、復号化では正常に処理ができる。

Page 11: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

CBCモード1つ前の暗号文ブロックと平文ブロックの内容を混ぜ合わせてから、さらに暗号化を行なう。ブロックがチェーンのように連携していくため、暗号ブロック連鎖モードと呼ばれる。最初の平文ブロックを暗号化するときには、1つ前の暗号化ブロックがないため、この暗号ブロックの代わりに、初期化ベクトルと呼ばれる特別なビット列のブロックを用意する必要がある。初期化ベクトルは、暗号化のたびに変化させることで暗号強度を高くすることができる。CBCモードは、必ず1つ前の暗号文ブロックと平文ブロックの内容を混ぜ合わせてから、さらに暗号化するため、平文ブロック1と平文ブロック2の値が等しくても、暗号化ブロック1と暗号化ブロック2の値が等しくなるとは限らない。また、途中のブロックだけ抜き出しても解読することはできない。例えば、暗号ブロック3を解読したい場合には、初期化ベクトルと解読を終えた平文ブロック1と平文ブロック2が必要になる。このため、CBCモードは解読が難しいのが特徴。

Page 12: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

CBCモードの暗号化・復号化CBCモードの暗号化

平文 平文ブロック1

平文ブロック2

平文ブロック3

暗号化 暗号化 暗号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

XOR処理

XOR処理

XOR処理

初期化ベクトル

・・

・・・

・・・

・・

CBCモードの復号化

平文平文ブロック1

平文ブロック2

平文ブロック3

復号化 復号化 復号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

XOR処理

XOR処理

XOR処理

初期化ベクトル

・・

・・

・・

・・

Page 13: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

CFBモード

1つ前の暗号文ブロックを暗号アルゴリズムの入力に戻し、再度暗号化を行なった後、平文ブロックの内容と混ぜ合わせを行なう。暗号ブロックを暗号アルゴリズムの入力に戻すため、暗号フィードバックモードと呼ばれる。最初の平文を暗号化するときには、1つ前の暗号文ブロックがないため、この暗号文ブロックの代わりに、初期化ベクトルのブロックを用意する必要がある。暗号アルゴリズムが生成するビット列を鍵ストリームという。CFBモードでは、復号化を行なう時にも暗号化を行なう。初期化ベクトルは、暗号化のたびに変化させることで暗号強度を高くすることができる。

Page 14: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

CFBモードの暗号化・復号化CFBモードの暗号化

平文 平文ブロック1

平文ブロック2

平文ブロック3

暗号化 暗号化 暗号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

XOR処理

XOR処理

XOR処理

初期化ベクトル

・・

・・・

・・・

・・

CFBモードの復号化

平文 平文ブロック1

平文ブロック2

平文ブロック3

暗号化 暗号化 暗号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

XOR処理

XOR処理

XOR処理

初期化ベクトル

 ・・

・・

・・

・・

Page 15: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

OFBモード1つ前の暗号化の出力を暗号アルゴリズムの入力に戻し、再度暗号化を行なった後、平文ブロックの内容と混ぜ合わせる。暗号化の出力を暗号アルゴリズムの入力に戻すため、出力フィードバックモードと呼ばれる。最初の平文を暗号化するときには、1つ前の暗号文ブロックがないため、この暗号文ブロックの代わりに、初期化ベクトルのブロックを用意する必要がある。暗号アルゴリズムが生成するビット列を鍵ストリームという。OFBモードでは、復号化を行なう時にも暗号化を行なう。初期化ベクトルは、暗号化のたびに変化させることで暗号強度を高くすることができる。この暗号アルゴリズムでの鍵の生成は、平文ブロックの処理とは無関係に処理できるため、事前に鍵を生成しておけば実際の平文の処理を高速に行なえる。

Page 16: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

OFBモードの暗号化・復号化OFBモードの暗号化

平文 平文ブロック1

平文ブロック2

平文ブロック3

暗号化 暗号化 暗号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

XOR処理

XOR処理

XOR処理

初期化ベクトル

・・

・・・

・・

・・

OFBモードの復号化

平文 平文ブロック1

平文ブロック2

平文ブロック3

暗号化 暗号化 暗号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

XOR処理

XOR処理

XOR処理初期化

ベクトル

・・・

・・

・・

・・

Page 17: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

CTRモード1つずつ増加していくカウンタを暗号化して、鍵ストリーム(暗号アルゴリズムが生成するビット列)を作りだし、平文ブロックの内容と混ぜ合わせる。カウンタから鍵ストリームを生成するため、CTRモードはカウンタモードと呼ばれる。CTRモードは、復号化を行なう時にも暗号化を行なう。この暗号アルゴリズムでの鍵の生成は、平文ブロックの処理とは無関係に処理できるため、事前に鍵を生成しておけば実際の平文の処理を高速に行なえる。カウンタの初期値は、ノンスと呼ばれる暗号化のたびに異なる値とカウントアップする値を組み合わせて生成する。(例)カウンタの長さが 128ビットの時、前半 64ビットをノンス、後半 64ビットをカウントアップ値として使用する。

CTRモードでは、このカウンタの値をさらに暗号化しているため、暗号強度はより高くなる。

11   22   33   44   55   66   77   88   00   00   00   00   00   00   00   01          ノンス                カウントアップ値

Page 18: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

CTRモードの暗号化・復号化CTRモードの暗号化

平文 平文ブロック1

平文ブロック2

平文ブロック3

暗号化 暗号化 暗号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

XOR処理

XOR処理

XOR処理

・・

・・・

・・

・・

CTRモードの復号化

カウンタ カウンタ+1 カウンタ+2・

平文 平文ブロック1

平文ブロック2

平文ブロック3

暗号化 暗号化 暗号化

暗号文ブロック1

暗号文ブロック2

暗号文ブロック3

暗号文

XOR処理

XOR処理

XOR処理

・・

・・・

・・

・・

カウンタ カウンタ+1 カウンタ+2・・・

Page 19: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

使い捨てパット(バーナム暗号)

代表的なストリーム暗号方式。平文とランダムなビット列で生成した鍵でXOR(排他的論理和)の計算を行なう。シンプルな暗号方式だが、鍵の情報が外部に漏れない限り、解読することはできない。

Page 20: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

使い捨てパットの特徴

解読することが不可能な暗号方式(あくまで、鍵の情報が外部に漏れないことが前提)鍵の情報は、ランダムなビット列なため、あらゆるパターンが考えられる。解読する際、このすべてのパターンのビット列の鍵の中から本当の鍵を見つけなければならない。しかし、盗聴者は鍵の情報も平文の情報も知らないため、復号化した平文から本当の鍵を見つけることができない。また、使い捨てパットは、平文と同じ長さのビット列の鍵を使って暗号化するという特徴がある。これが、さらに解読を難しくしている。

Page 21: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

使い捨てパットの欠点

• 鍵の生成の問題• 鍵の受け渡しの問題• 鍵の保管の問題

Page 22: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

鍵の生成の問題使い捨てパットは、平文と同じ長さのビット列の鍵を、平文ごとに生成する必要がある。平文がまれに同じ長さであっても、鍵は作り替える必要がある。これは、同じ鍵を使って情報交換を続けることは、盗聴者に対して読解のパターンと機会を多く与えてしまうことになるから。このため、一度使った鍵は捨てる必要がある。また、簡単に解読されないようにするため、コンピュータを使って生成した擬似的な乱数でなく、再現性のない真の乱数を使って鍵を生成する必要がある。この鍵の生成が手間のかかる作業になる。※ 擬似乱数とは、乱数列 (乱数 )のように見えるが、実際には確定的な計算によって求めている数列に含まれる数を指す。擬似乱数を生成する機器(やアルゴリズム)を擬似乱数生成器(や擬似乱数生成法)と呼ぶ。乱数は本来規則性も再現性も無いために予測は不可能だが、擬似乱数は計算によって作るので、作り方が分かれば理論的には予測可能であり、また内部の初期値(シード)が分かれば、先に計算しておくこともできる。弱い擬似乱数・・・ 無作為性しか持たない 強い擬似乱数・・・ 無作為性、予測不可能性を持つ 真の乱数・・・ 3つすべての性質を持つ

無作為性・・・ 統計的な偏りがなく、でたらめな数列になっているという性質。 予測不可能性・・・ 過去の数列から次の数を予測できないという性質。 再現不可能性・・・ 同じ数列を再現できないという性質。再現するためには、数列そのものを保存しておくしかない。

Page 23: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

鍵の受け渡しの問題

使い捨てパットは、平文と同じ長さのビット列の鍵を使って暗号化するため、復号化する際には、この同じ鍵を使う必要がある。暗号文をネットワークを介して相手に送る際、鍵は別ルートで安全に受け渡す必要がある。また、鍵は平文ごとに作り直す必要があるため、平文を送るたびに鍵も受け渡す必要がある。

Page 24: 暗号技術 ~対称暗号方式の仕組み~ (2週目)

鍵の保管の問題

情報を暗号化して保管する場合には、鍵も保管する必要がある。鍵を紛失すると暗号文を復号化できなくなる。情報が100Mバイトのサイズがあると鍵の長さも100Mバイトになり、保管しなければならない情報のサイズが2倍になってしまう。また、同じ場所に保管していても意味がないため、保管場所を考慮する必要がある。