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のバイトで埋める
© Copyright 2024 ExpyDoc