暗号 【cryptograph】 cipher
概要
暗号(cryptograph)とは、ある情報を特定の決まった人しか読めないように一定の手順に基づいて無意味な文字や符号の列に置き換えたもの。情報の伝送や記録、保存の際、第三者に盗み見られたり改竄されないようにするために作成される。通信や記録の内容を秘匿する手法には様々な種類があり、内容を記録した媒体の存在自体を隠す方法などもあるが、暗号は記録内容が読み取られても何が書かれているのか分からないようにする手法を指す。
歴史的には、暗号表などを事前に作成・共有し、単語やフレーズ単位で無関係な別の文字などに置き換える「コード」(code)と、文字単位で置き換えや位置の入れ替えを行う「サイファー」(cipher)に分類される。現代のコンピュータなどが利用する暗号は後者の一種とみなされる。
暗号にまつわる用語
暗号によって秘匿したい情報のことを「平文」(ひらぶん/plain text)、これを暗号に変換する操作を「暗号化」(encryption)、出来上がった無意味な符号列を「暗号文」(cipher text)という。現代のコンピュータによる暗号化は一定の数学的な計算手順「暗号アルゴリズム」(encryption algorithm)によってビット列を操作することによって行われる。
同じ平文を同じアルゴリズムで暗号化しても毎回異なる暗号文が得られるように、平文の他に毎回異なる「暗号鍵」(cipher key)を生成し、計算手順に加える。平文が同じでも暗号鍵が異なれば暗号文も異なり、アルゴリズムが分かっていても暗号鍵が分からなければ読み解くことはできない。
正規の権限を持つ人が、暗号鍵を用いて暗号文を平文に戻すことを「復号」(decryption / decode / decipher)、権限の無い第三者が内容を盗み見るため暗号鍵の割り出しや他の方法による平文の復元を試みることを「解読」(cryptanalysis)あるいは「攻撃」(attack)という。
共通鍵暗号と公開鍵暗号
暗号化と復号に同じ暗号鍵を用いる暗号方式を「共通鍵暗号」(common key cryptosystem/共有鍵暗号)あるいは「秘密鍵暗号」(secret key cryptosystem)という。情報の送信者と受信者は安全な方法で鍵を共有する必要がある。
一方、対になる二つの鍵を用いて片方で暗号化、もう一方で復号を行う方式を「公開鍵暗号」(public key cryptosystem)という。暗号化に用いた鍵では復号できず、一方の鍵からもう一方を割り出すことも困難という性質があり、片方は所有者の元で秘匿され、対になるもう片方は公開されるためこのように呼ばれる。
暗号に似た変換処理
暗号は平文への復元を前提とした(情報の欠損を伴わない)変換を行う手法を指すが、情報を秘匿するために行われる変換処理の中には、元の状態に戻せない不可逆な変換を行う手法もある。データのハッシュ化やプログラムコードの難読化などである。逆に、映像伝送のスクランブル化などは伝送符号を乱雑化するが、情報を秘匿する目的は無いため一定の手順で誰でも元の情報を復元できる(暗号化を兼ねる場合もある)。