暗号化鍵

2章 暗号技術
FM15002 友池 絲子
2.1 暗号技術の基礎
▼2.1.1 暗号技術の用語
暗号とは
データの内容を他人には分からないようにするためのもの
暗号化データ
元データ
0123-456-7890
暗号化
ABCD-EF-GHIJ
電子メール
無線LAN
WEBページ閲覧
暗号化データ
ABCD-EF-GHIJ
元データ
複号
0123-456-7890
▼2.1.2 古典的な暗号化アルゴリズム
シーザー暗号
平文の各文字を辞書順に3文字のみシフトし、暗号文をつくる暗号
平文
M Y
S
E
C
R
E
T
I
S
M Y
各文字を後ろに3文字ずらし暗号化
P
B
V
H F
U H W
S
I
L
E
N C
E
各文字を前に3文字ずらす複号化
L
V
P
B
V
L
O H Q F
H
暗号文
■ バーナム暗号
送信者と受信者が事前にランダムビット列bを共有
同じ乱数を2回以上使用
何度も使うと安全性が失われる
Aをa bで
暗号化
C
b=(a
b)
b=a
復号化
送信者
受信者
バーナム暗号の問題点
暗号化鍵配送問題
暗号化鍵再利用不可能
乱数列を2者間で共有しておく
暗号化する必要性があるかs
再利用することで第三者に
暗号文を復号するヒントを与えてしまう
乱数列生成問題
厳密な乱数列を作り出すことは困難
一般的にコンピュータで生成されるものは
規則性があったり
一定間隔で同じ値を生成してします
▼2.1.3 共通鍵暗号化方式と公開鍵暗号化方式
共通鍵暗号化方式
暗号化と復号化で同じ鍵を使う方式
あらかじめ両者の間で鍵情報を共有しておく必要がある
鍵情報が漏えいすると誰でも復号化できるようになるので、鍵を安全に配布・保管することは、この暗号の安全性を
確保する上で一番重要なことである。
送信者
暗号化鍵
田中です。
秘密情報を
送信します
受信者
※◎▲あ@
G×〒*★
:□A$B
複合化鍵
暗号化
元の平文
田中です。
秘密情報を
送信します
※◎▲あ@
G×〒*★
:□A$B
復号化
暗号文
受信した暗号文
復元した平文
▼2.1.3 共通鍵暗号化方式と公開鍵暗号化方式
公開鍵暗号方式
この方式では、公開鍵と秘密鍵が利用される
相互に通信したければ、相互に公開鍵を交換する
公開鍵は秘匿する必要はなく、積極的に外部へ配布してよい
データを暗号化したい送信者は、受信者から受け取った公開鍵でデータを暗号化して送信する
受信者は、自分の秘密鍵で受け取った暗号文を復号化
受信者の公開鍵を事前に配布
送信者
受信者の公開鍵
田中です。
秘密情報を
送信します
受信者
※◎▲あ@
G×〒*★
:□A$B
受信者の秘密鍵
暗号化
元の平文
田中です。
秘密情報を
送信します
※◎▲あ@
G×〒*★
:□A$B
復号化
暗号文
受信した暗号文
復元した暗号文
2.2 共通鍵暗号化技術
▼2.2.1 ストリーム暗号化とブロック暗号化
ブロック暗号
ブロック暗号とは、データ何かを文字や符号、数値などのまとまりとして表現したもの
単にデータといった場合、IT..を一定の長さのブロックごとに区切り、ブロック単位で暗号化を行う暗号
鍵生成部
データ撹拌部
■ストリーム暗号
ブロック暗号は処理が簡単である半面、ブロックサイズが小さいと解読されやすいという問題点がある。例えば、以
前よく使われていたDESという暗号化方式ではブロックサイズが8bytes(64bit)だった。現在ではコンピューターが進化
した結果、非常に脆弱な暗号アルゴリズムとなってしまった。
そこで任意長の鍵ストリーム列を生成させて、これと入力の平文を演算させる「ストリーム暗号」という方式が考え
出された。1bitや1byte単位でデータを暗号化できるので、例えばSSL(HTTPS)や無線LAN(WEP)などでも、ネットワー
クのトラフィックを暗号化するために利用されている。
先ほど述べたワンタイムパッドはストリーム暗号だし、ブロック暗号(DESなど)と組み合わせて鍵ストリームを生成さ
せるストリーム暗号もある。
疑似乱数生成器
▼2.2.2 代表的な共通鍵暗号化技術
DES・・・(Data Encryption Standard)
64ビットのブロック単位で平文を復号化
3DES・・・(triple-DES)
安全性が疑問視されたDESを再利用
DESは3回(暗号化→復号→暗号化)行うことで暗号強度を高める
平
文
暗号化
DES Key
復号
暗号化
暗
号
文
AES・・・(Advanced Encryption Standard)
128ビット長のブロック暗号化方式
RC4・・・ストリーム暗号化方式の例として鍵長可変(40-256ビット)
で有名
▼2.2.4 パティング
ブロック暗号など、決まった長さのブロック谷で暗号化する場合に
平文がブロック長に満たない場合、
ブロック長に足りない部分に特定のデータを埋め込む処理
パディング名
概要
PKCS#5
RFC2898のSection6.1.1 step4で定義されたパディング方式
PKCS#7
PKCS#5を汎用化して定義したもの。PKCS#5ではブロック長が8バイト
単位であったものを最大255バイトまで対応できるように定義
ISO10126-2
基本的にはPKCS#7パディング同様。
パディングする文字が最後の文字を除いて乱数データになる点が異
なる
ISO09797
先頭の0×80のあとに必要なだけの0バイトを最終バイトに設定
ANSIX923
値が0のバイトで埋め、そのバイト数を最終バイトに設定
Zeros
最終ブロックの末尾を値が0のバイトで埋める