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