目次
●その他の暗号化・プライバシー保護ツール
個人の秘密を守ることだけが目的の場合には、暗号の方式はおろか暗号を使っていることさえも知られていないほうが良いに決まっている。互換性などは不要な概念であり、自分だけが使えれば良いということになる。以下で紹介するツールの多くはプラットホーム依存だが、目的を考えれば、そのほうが好都合だと言える。
●なぜ「暗号」なのか?
秘密とプライバシーは違う。また、暗号は、秘密を守る、プライバシーを守るばかりでなく、情報を共有するためにも役立てることができる。
| Step0 10以上100未満の素数は次のとおり。 11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97 | ||||||
| Step1 任意の素数を入力すると、公開鍵(1)となるnと、以下の計算で必要になるλが計算される <n=p*q, λ=LCM(p-1,q-1) ただしLCMは最小公倍数> | ||||||
| Step1 平文mはn以下の整数(大きい数字を暗号化する場合には区切って使えば良い)、それぞれの公開鍵を入力 <c=memod n> | ||||||||||||||||||
| 平文m(任意) | 公開鍵(2)e | 公開鍵(1)n | → | 暗号c | ||||||||||||||
| Step2 暗号文cと秘密鍵d、公開鍵(1)nを入力 <m=cdmod n> | ||||||||||||||||||
| 暗号c | 秘密鍵d | 公開鍵(1)n | → | 平文m | ||||||||||||||
| Step1 通信文m(m<n)に対する署名sの生成は、自分が持つ秘密鍵によって行い、mとsを送信する。 なお、ハッシュ関数h(m)とは、この場合にはh(x)=h(y)である(x,y)を特定することが困難な関数である(代表的なものとしてSHAなどがある)。しかし、ここではハッシュ関数を使わず(だって面倒なんだもん)、簡単にごまかしてある。したがって計算の過程だけを参照し、数値は信用しないこと。 <s=h(m)dmod n> | ||||||||||||||||||||||
| 通信文m(任意) | 秘密鍵d | 公開鍵(1)n | → | 署名s | 参考:関数h(m) | |||||||||||||||||
| Step2 通信文mからh(m)を求め、署名sおよび公開鍵(1)eによって計算される結果とを比較する。合っていればOK。 <h(m)=semod n> | ||||||||||||||||||||||
| 通信文m | 署名s | 公開鍵(2)e | 公開鍵(1)n | → | 計算結果 | 関数h(m) | ||||||||||||||||
■参考文献
(1)「現代暗号」、産業図書。
Enigma――驚異の電気・機械式暗号機
Enigmaとは、ドイツで開発され、第二次世界大戦中に軍用として使われた暗号機械である。下のリンクで形を見ることができるが、タイプした文字が、対応する文字に置換されることによって暗号が作られる。一文字打つごとに複数のロータが回転して対応表が変わるので、たとえ同じ文字を続けて打っても違う文字が出力されるようになっている。ロータの設定は可変で、出力パターンを変えられるので、それだけ強度が増す。復号は、同じ設定のEnigmaに暗号文を入力することで行う。
はっきり言って、これを考えた人は凄いと思わず感動してしまう(それに対抗したアラン・チューリングの解読器(Bombe)も凄いが)。
ここで紹介するにあたり、その動作を体験できるアプレットを下に示す。
なお、このアプレットは、Virtual Enigmaよりコードをダウンロードしたものである。同ページではアプレットへのリンクが途切れており(実際にはここ)、また是非ともこの感動をすぐに体験していただきたいので、張り付けてしまうことにした。
使い方
(1)「Text Enterd」に適当な文字列を入力する
(2)「Text Output」に出力された暗号文を書きとめ、リセットする
(3)「Text Enterd」に暗号文を打ち込めば元の文が出力される
(4)「Trace Diagram」で暗号発生の様子が観察できるが、これはかなり感動する。特に一つのキーを押しっぱなしにしてみると各ロータの回転する様子が観察できて非常に興味深い。どのようにして長周期の乱数もどきを発生させているのかがわかる。