暗号とは
暗号(cryptography, cipher, code)について
暗号とは
暗号とは第三者に内容を知られないように、暗号文を特別な知識なしでは読めないように変換する表記法です。
情報を暗号化(encrypt)することで、悪意のある盗聴者(eavesdropper)への情報漏洩を防止します。
暗号は情報の機密性(confidentiality)を守る役割となります。
暗号化と複合化
暗号化を行う前のメッセージを「平文(plaintext)」と呼び、暗号化したメッセージを「暗号文(ciphertext)」と呼びます。
暗号文を平文にすることを「復号化(decrypt)」といいます。
暗号の解読について
正規に復号化する手段を持たない第三者が暗号文を復号を試みることを「暗号解読(cryptanalysis)」といいます。
なお、暗号解読は暗号解析とも呼ばれます。
暗号解読は必ずしも悪意ある第三者が行うのではなく、暗号研究者が暗号の強度を判定する手段としても行います。
鍵(key)について
暗号技術において、暗号化/復号化を行う「鍵」は重要な要素となります。
鍵が漏洩することは平文が漏洩することと同義であり、暗号技術とは「平文を鍵にする」ことといえます。
鍵空間(keyspace)について
鍵空間とは暗号に対して使用できる「鍵の集合」を意味します。
使用可能な鍵の総数を「鍵空間の大きさ」と呼び、鍵ビット長が長いほど鍵空間が大きくなります。
鍵空間が大きいほど総当たりでの暗号解読(全数探索またはブルートフォースアタック)が困難となります。
対称鍵
対称鍵とは、同一の鍵で暗号化と復号化を行う暗号方式(共通鍵暗号方式)において使用する鍵です。
鍵を保持した者は誰でも暗号文の復号化を行えるため、鍵が外部に漏洩することを防止する必要があります。
非対称鍵
非対称鍵とは、暗号化と復号化で別々の鍵を利用する暗号方式(公開鍵暗号方式)で用いる鍵です。
暗号化で用いる「秘密鍵」と復号化で用いる「公開鍵」は関連付いており、同時に生成するため「鍵ペア」と呼ばれます。
鍵の生成について
鍵の生成における最前の方法は「乱数」を利用することです。
乱数を用いることで「他人に推測されにくい」性質を利用できます。
記憶しやすい固定長文字列(パスワード)を利用すると、推測や辞書攻撃によって解読される可能性が高まります。
パスワードについて
saltとは
暗号におけるsalt(ソルト)とは擬似乱数生成器で生成した乱数のことです。
ソルトをパスワードに組み合わせることで解読を困難にし、暗号パスワードへの辞書攻撃を防ぐ可能性が高まります。
saltは英語で「塩」を意味します。
命名由来の一説として、塩で味を変えるようにパスワードにソルトを付加することで生成する鍵の値を変化させることといわれます。
パスワードの作成について
複数パスワードを利用する場合、各パスワードの関連性が無いようにする必要があります。
推測や辞書攻撃として事前準備されるようなパスワードを利用しない工夫が必要です。
英数字のみの文字列から作成したパスワードは「62(文字)の文字列乗」です。
8文字ならば218兆通りであり、ビット数でいえば48ビットです。
このようなパスワードは総当たり(ブルートフォースアタック)で解読することが現実的に可能であるといえます。