2022年03月01日 | 更新。 |
暗号は、通信において、特定の人物や団体にのみ情報を伝えたい場合に、通信の内容が漏洩しても、第三者にはその意味が分からない様に、一定のルールで伝えたい情報を別の形に置き換える手法、あるいはその手法により生成された、第三者には意味の分からない情報の事を指します。
最も単純なタイプの暗号の例を紹介します。
今、平仮名のみで構成される文の暗号を考えます。文を構成する各文字を、五十音表で次に来る文字に置き換えると、一見、意味の分からない文が生成できます。
例えば、「あしたはあめ」という文を、その方法で、第三者には意味の分からない文に変換してみましょう。
「あしたはあめ」の1文字目は「あ」ですが、これを、五十音表で「あ」の次に来る文字の「い」に置き換えます。「あしたはあめ」の2文字目は「し」ですが、これを、五十音表で「し」の次に来る文字の「す」に、次に置き換えます。同様の置き換えを5文字全てに行なうと、最終的に「いすちひいも」という文が得られます。(図1参照)
得られた「いすちひいも」を通信で相手に送ると、第三者に傍受されても、簡単には意味は分からないでしょう。
次の章からは、この単純な暗号を例として使い、暗号に関する用語を説明します。
暗号において、相手に伝えたい文、言い換えれば、そのままで意味の分かる元の文を平文またはクリアテキストといいます。平文は通常「ひらぶん」と読みますが、「へいぶん」と読む事もあります。
それに対し、一定のルールで処理を施して生成した、第三者には意味の分からない文を暗号文といいます。
注:最初に説明した通り、暗号文の事を単に暗号と呼ぶ事もあります。しかし、言葉の意味が不明瞭になるので、暗号と暗号文という2つの言葉は区別して使う方がいいでしょう。暗号は、平文を暗号文に変換し、通信を傍受されても第三者に情報が漏洩しない様にする手法の事を指し、暗号文は、暗号化の結果得られる文を指す様に区別すれば、暗号の意味が明瞭になります。
図1の例では、元の「あしたはあめ」が平文で、その文を処理してできた「いすちひいも」が暗号文になります。
なお、暗号は、元々文章を第三者に知られない様に相手に伝える技術として発達したため、「平文」や「暗号文」には「文」という言葉が付きますが、現在においては、平文や暗号文は文や文章を指すだけではなく、数値や画像など、さまざまな情報を指します。
平文を一定のルールで処理し、第三者には意味の分からない暗号文を生成する処理の事を暗号化といいます。
図1の例では、「あしたはあめ」から「いすちひいも」に変換する処理が暗号化です。
暗号化の際のルールは、第三者には生成した文(暗号文)が理解ができないというだけでは不十分で、どんな平文を処理しても、生成した文が元の平文に戻せるルールである必要があります。
例えば、「文中の各文字を、全て『あ』という文字に置き換える」というルールでは、「あしたはあめ」という文は「ああああああ」に変換され、確かに第三者には意味が分からなくなりますが、「ああああああ」から元の「あしたはあめ」に戻せなくなってしまいます。これでは、本当に意味を伝えたい相手にも意味が伝わらなくなってしまい、暗号化とは呼べません。
同じ暗号を何度も使っていると、それを傍受している第三者に、暗号化のルールを感付かれてしまう危険性が高まります。そのため、ある程度の回数や時間、同じ方式の暗号を使った通信をした後は、暗号化のルールを変更する方が、同じルールで暗号化し続けるより安全に通信を続ける事ができます。
図1の暗号とは別の暗号の例として、例えば図2に示す様に、色々な単語を別の単語に対応させた表(変換表)を作っておき、暗号化の際に、平文の中の単語を、その変換表を用いて置き換える方式の暗号を考えます。
図2の暗号なら、「いぬ が ほえる」という平文は「うま に のる」という暗号文に変換され、また「ねこ を だく」という平文は「かえる が とぶ」という暗号文に変換されます。
また、変換表を逆方向(右の単語から左の単語の方向)に引けば、「うま に のる」という暗号文は、「いぬ が ほえる」という平文に戻せますし、「かえる が とぶ」という暗号文は、「ねこ を だく」という平文に戻せます。
図1の暗号を一定回数使った後に図2の暗号に切り替えれば、引き続き安全に通信が続けられるのですが、暗号の方式を切り替える際に、何らかの安全な方法(通信相手に直接会って説明する等)で、新しい暗号方式の説明を、通信相手にしなければなりません。また、毎回新しい暗号方式を考案するのはかなり難儀な問題です。
そこで、暗号の方式を全く変えてしまうのではなく、同一の暗号方式で、パラメータを変更すると、生成される暗号文が変わる様にできる方式が考案され、広く使われています。このパラメータの事を鍵といいます。
例えば、図1の暗号を、鍵を使える様に拡張するなら、平文の各文字を五十音表で次の文字に置き換えるのではなく、各文字を五十音表でk個後の文字に置き換える(ただし、k=1,2,3,…)という様に変更すればいいでしょう。(図3参照)この場合、パラメータkが鍵になります。
図3の暗号では、「あしたはあめ」という平文をk=1で暗号化すると、図1の場合と同様、「いすちひいも」という暗号文が得られます。一方で、同じ平文をk=2で暗号化すると、今度は「うせつふうや」という、異なった暗号文が得られます。
あらかじめ鍵kを教えられていた相手には、暗号文の各文字を、五十音表でk文字前の文字に置き換える事で、平文に戻す事ができます。
また、図2の暗号を、鍵を使える様に拡張するなら、あらかじめたくさんの変換表を通信相手と共有しておき、各変換表に通し番号を付けておきます。そうすると、暗号化の際に使う変換表の番号が鍵となります。
鍵が使える暗号方式を使うと、暗号方式を頻繁に変えるなくても、鍵を頻繁に変えるだけで、暗号の安全性が確保できる様になります。鍵を変える時に、通信相手に鍵を教えるための安全な通知手段が必要があるという欠点は残るものの、暗号方式を変えるよりは簡便になります。
ここで説明した暗号では、送信者が暗号化に使う鍵と、受信者が復号に使う鍵は同じでした。この様に、暗号化に使う鍵と復号に使う鍵が同じ暗号を、共通鍵暗号といいます。
一方で、暗号化に使う鍵と復号に使う鍵が異なり、暗号化に使う鍵を一般に公開しても機密性が保たれる様にした暗号もあります。このタイプの暗号は公開鍵暗号といいます。公開鍵暗号を使うと、共通鍵暗号の持つ、鍵を伝えるための安全な通知手段が必要だという問題点が解決します。公開鍵暗号の詳しい説明については、wikipediaの公開鍵暗号のページをご覧ください。
「うせつふうや」という暗号文が、図3の暗号でk=2で暗号化されたと知らされている人になら、暗号文の各文字を、五十音表で2つ前の文字に置き換えれば、平文「あしたはあめ」が得られると分かるはずです。この様に、暗号の方式と鍵を知らされている人が、暗号文から平文を復元する処理を、復号と呼びます。
注:復号という用語は、暗号に関する場合だけでなく、広く、符号化した情報を、元の情報に戻す処理の事を指します。
図4に、平文、暗号文、暗号化、復号の4つの用語の関係を図示しました。
暗号の鍵、あるいは暗号の方式と鍵の両方を知らされていない人が、方式や鍵を何とか推測するか、あるいは他の手段によって、暗号文を平文に戻す事は解読(あるいは暗号解読)といいます。また、暗号を解読しようとする試みの事を攻撃といいます。
「暗号を解読する」という文は「鍵を知らずに暗号文を平文に戻す」事を意味します。一方で、「暗号を攻撃する」という文なら、「(成功するか失敗するかにかかわらず、)鍵を知らずに暗号文を平文に戻そうと試みる」事を意味します。