暗号(あんごう、cipher)あるいは
暗号化(あんごうか、Encryption)とは、第三者に通信内容を知られないように
行う特殊な通信(秘匿通信)方法のうち、通信文を見ても特別な知識なしでは読めないように変換する表記法(変換
アルゴリズム)のことである。通信ではなく保管する文書等の内容を秘匿する方法としても用いることができる。
概要
秘匿通信には、主に次の3種類の方法がある。
- ステガノグラフィ 通信文を人目に付かない場所に記録する。画像などに情報を埋め込む電子透かしなど。
- コード 通信文の単語やフレーズを、事前に決めておいた言葉・記号で置き換える。これらは符牒や隠語とも呼ばれる。
- サイファ 通信文を、意味とは関係なく、所定のアルゴリズムに従って、(1つまたは複数の)文字やビットごとに置換や転置を行うことで、読めない文に変換する。
秘匿通信を
行う上で最も単純な方法は、(1)の通信文そのものの所在を隠してしまうことである。歴史上実際に
行われたものとしては、通信文を丸めて飲み込んだり、ベルトの内側に書き普通の被服のように身につけたり、新聞の文字に印(文字横に穴を開ける等)をつけて文章を作る、頭を剃りあげて頭皮に通信文を刺青し、再び頭髪が生えそろうことで隠す、などもあったようである。
(2)の事前に「○◇△といえば、~のこと」等と事前に取り決めておくことで秘匿することも
行われた。個人間で
行うものから組合やギルド等の特定のグループ内で
行うものがある。事前の取り決めではなく、特定の人達だけが知る事項などを元に、意味は同じままで、言い方を変えることで秘匿することもある。秘匿したい特定の単語だけ置き換えることも、コードブックと呼ばれる辞書を作成して、全ての単語を置き換えることもあり、「ルイ14世の大暗号」、「ナポレオンの小暗号」などが知られている。しかし、(2)のコードは、歴史的な使用例は幾つか知られているが、現代の通信技術での使用例はあまり知られていない。コードという言葉自体は「
圧縮」や「
誤り訂正」の目的で使われるコード(符号)や、
認証用のコード(
MAC)などで使用されている。
秘匿通信を
行う方法としては(特に第二次世界大戦後は)、(3)のサイファが主流である。
戦時下における作戦や命令を敵に知られると作戦の裏をかかれて文字通り致命的な結果を招くことになるなど、第三者に通信内容を知られては困ることがある。暗号はそのような場合に独特の表記法を使って通信文を変換することによって、第三者が通信文を盗み見ても意味が分からないようにする為に考案され、主に戦時下において軍事技術の一つとして発達してきた。初期の暗号は、安全性が不確かなものも多く、使用中に解読され、その場しのぎに改良を試みるものの、更に巧妙な手口によって破られてしまうといった、イタチごっこに陥る事もあった。暗号の歴史については暗号史を参照。
この記事では、主に(3)の解説を行い、(2)にもふれることにする。また、暗号技術は、秘匿通信に限らず、相手の身元を確認する
認証や改竄の検出にも応用され、貨幣の偽造防止技術への応用も研究されている。これらについては
電子署名、
認証、
ハッシュ関数、
電子マネー等を参照。