暗号技術 ~暗号技術の基本原理~ (1週目) 情報工学科 04A1004 石川 真悟
はじめに インターネットが普及した現在、情報の盗聴、情報の改竄(かいざん)、なりすましなどのネット犯罪が多発している。 このような犯罪から情報を守るための技術として暗号技術が重要視されるようになった。 そこで、暗号技術について研究する。
暗号技術の基本原理 暗号技術の基本・・・第三者が情報を読むことができないようにすること(暗号化)。暗号化された情報を元の状態に戻すことを復号化、暗号化する前の情報を平文、暗号化した後の情報を暗号文という。暗号化するための様々なルール(暗号化方式、暗号化アルゴリズム)がある。 近年の暗号化と復号化は、鍵と呼ばれる特殊な情報を使って処理する。 ※暗号化のルールを第三者が知らないこと、鍵を持っていないことが前提。第三者が暗号化された情報を復元しようとする行為を暗号解読(暗号解析)という。
セキュリティの脅威と暗号技術の関係 セキュリティの脅威 特性 暗号技術 暗号化方式 情報を読むことが できないようにする ための暗号技術 対称暗号 (共通鍵暗号) 情報の盗み見 (盗聴) 機密性 公開鍵暗号 情報が改竄されて いないことを確認す るための暗号技術 情報の破壊 (改竄) 一方向 ハッシュ関数 正真性 完全性 電子署名 情報を送った相手 を確認するための 暗号技術 他人のふり (なりすまし) 信頼性
暗号化方式の概要 ☆対称暗号 ・・・情報の暗号化を行うための技術。同じ鍵を使って送信側で暗 ☆対称暗号 ・・・情報の暗号化を行うための技術。同じ鍵を使って送信側で暗 (共通鍵暗号) 号化、受信側で復号化を行う。同じ鍵を使うため、暗号化の変 換処理と対称的な逆変換処理を行えば、復号化できる。 ☆公開鍵暗号 ・・・情報の暗号化を行うための技術。送信側で公開鍵を使って暗 号化を行い、受信側で秘密鍵を使って復号化を行う。秘密鍵は 本人しか持っていないことが原則のため、公開鍵を使って暗号 化された暗号文は、秘密鍵を持った本人しか復号化できない。 ☆一方向ハッシュ関数・・・情報の改竄チェックを行うための技術。送信側で情報の ハッシュ計算を行い、計算結果を情報に付加する。受信 側で再度ハッシュ計算を行い、送信側の計算結果と比較 し、一致していれば改竄されていないと判断。 ☆電子署名 ・・・情報の改竄と送信相手のチェックをするための技術。送信側で 秘密鍵を使ってハッシュ計算を行い、計算結果を情報に付加。 受信側で公開鍵を使ってハッシュ計算を行い、送信側の計算 結果と比較し、結果が合っていれば改竄されていない正しい相 手から送信された情報であると判断。 ※公開鍵暗号と電子署名は、自分自身で秘密鍵を厳重に管理すれば、第三者に渡ることはない。
シーザー暗号 紀元前100年にローマに生まれた、ジュリアス・シーザーが使った暗号技術。 ローマ文字(ラテン文字)の並び順をそのままの順番で、ある一定文字ずらして暗号化する。この暗号技術は、アルファベットや日本語にも適用できる。 暗号化のルールが単純なため、比較的簡単に解読することができる。 ※アルファベットの場合の鍵のパターン数=26 この鍵のパターン数のことを鍵空間という。
暗号ルール→文字を右にずらす 鍵→ずらす文字数(ここでは3文字) シーザー暗号の例 a b c d e f g h i j k l m n o p q r s t u v w x y z d e f g h i j k l m n o p q r s t u v w x y z a b c 暗号ルール→文字を右にずらす 鍵→ずらす文字数(ここでは3文字) 暗号ルール→文字を左にずらす 鍵→ずらす文字数(ここでは3文字) 平文 暗号ルール 暗号文 暗号文 復号ルール 平文 hello 文字を右にずらす khoor khoor 文字を左にずらす hello 3文字 鍵 3文字 鍵
シーザー暗号で生成された暗号文は、この方法で解読できる。これは、暗号のルールが判明している場合に、鍵の値を見つけ出す方法。 ブルート・フォース・アタック シーザー暗号で生成された暗号文は、この方法で解読できる。これは、暗号のルールが判明している場合に、鍵の値を見つけ出す方法。
ブルート・フォース・アタックによる解読処理 暗号文 鍵 解読結果 khoor 0文字 khoor 1文字 jgnnq khoor khoor 2文字 ifmmp khoor 3文字 hello khoor 4文字 gdkkn ・・・・・ ・・・・・ ・・・・・ khoor 24文字 mjqqt khoor 25文字 lipps
単一換字暗号 一対一の対応関係を持つ文字の変換表を作り、この変換表を使って暗号化するもの。 変換表は、一対一の関係で、文字の順番をランダムに並べ替えるようなイメージで作成する。この変換表に規則性はない。 ※鍵空間=26x25x24x23x22x・・・・・・x1 =403291461126605635584000000 鍵空間が膨大なため、ブルート・フォース・アタックで解読するのは困難 平文 暗号ルール 暗号文 暗号文 復号ルール 平文 hello 変換表を使った 変換 変換表を使った 変換 favvu favvu hello 変換表 鍵 変換表 鍵
排他的論理和 文字コード、静止画像、音声、動画といった情報は、ビット列で表現され、暗号化では、このビット列を変換する。暗号化処理では、よく排他的論理和であるXORが使用される。 暗号化処理で、平文を鍵に相当するビット列で排他的論理和を行い、暗号文を生成。復号化処理で、生成した暗号文を暗号化と同じ鍵に相当するビット列で排他的論理和を行うと、元の平文に戻る。 排他的論理和には、このような性質があるため、暗号化した暗号文を元の平文に戻さなければならない暗号処理の一部として、多く使用される。 真理値表 1 1 ※1が真、0が偽
例 ①平文のビット列(7ビットASCIIの文字コードで表現) H e l l o 01001000 01100101 01101100 01101100 01101111 ②鍵のビット列(鍵に相当する40ビットのビット列を生成) 01000001 01101110 01100111 01101111 01110101 ③暗号化のXOR計算(暗号化処理として、平文のビット列と鍵のビット列のXORの計算) H e l l o 01001000 01100101 01101100 01101100 01101111 平文 XOR 01000001 01101110 01100111 01101111 01110101 鍵 暗号文 00001001 00001011 00001011 00000011 00011010 ④復号化のXOR計算(復号化処理として、暗号文のビット列と鍵のビット列のXORの計算) 00001001 00001011 00001011 00000011 00011010 暗号文 XOR 01000001 01101110 01100111 01101111 01110101 鍵 01001000 01100101 01101100 01101100 01101111 H e l l o 平文