私が主に利用してる地銀のネットバンクだが、ログインが指紋認証になり、取引が”ワンタイムパスワード”になったお陰で、異様な便利さになった錯覚がする。
今までは、ログインする度にネットバンクの会員番号を入力し、取引する時は、2種類の暗証番号(4桁)を入力する必要があった。
一昔前もセキュリティを強化する為にワンタイムパスワードというのがあったが、初期の奴はメインのパスを盗まれるとワンタイムも盗まれるので、すぐに廃止になった。
笑えない話だが、カエサルの暗号でもエニグマでも同じ様な脆弱性があったのだ。
そして今月、ドコモ口座の顧客パスワードが突破されたとして、大きな騒ぎになった。
これには、”逆総当たり攻撃”(リバースブルートフォースアタック)の可能性が指摘されてる。固定した暗証番号を使い、片っ端から多数の口座にアクセスを繰り返すという力技ですね。
以下でも述べますが、まるで約2千年前のカエサルの暗号を見破る様な、原始的なやり方で、ドコモ口座を突破した事になる。
そこで今日は、暗号についての話題です。
現在、最強の暗号はRSAシステムですが、素因数分解の困難さと剰余演算を組合せた”非可逆”暗号で、”暗号のしくみ、その2”でも紹介しましたが。書いてて気が滅入る程にややこしいですね。
しかし、今日はRSA暗号の起源となった、カエサルの暗号とエニグマのお話です。RSAに比べればずっと単純なので、気楽に眺めて下さい。
カエサルの暗号
暗号の歴史は、紀元前1900年頃の古代エジプトにまで遡るとされる。
ユリウス•カエサルも手紙や軍事機密の為に単純な暗号を使ったとされます。
しかし、このカエサルの暗号は、アルファベットをずらしただけの簡単な暗号システムであった。
ただ、異常なまでに単純ではあるが、現在の暗号システムであるRSAにも共通する基本的な概念(流れ)が含まれてます。
元のメッセージ(平文)を暗号化(アルゴリズム)して暗号文にし、それを復号化(アルゴリズム)して平文に戻す。RSA暗号はもっと複雑で難解だが、流れは全く同じである。
カエサルの暗号の場合、暗号化キーはアルファベットをずらした文字数”k”である。復号化キーは逆向きにずらした”−k”だ。つまり逆方向にk文字だけずらせば平文に戻る。
つまり、”ずらす”という行為がアルゴリズムに相当し、暗号キーがわかれば復号キーもばれる。この様な暗号法を”対称鍵暗号”という。
さてと、このカエサルの暗号も数学的に表すことが出来ます。それは、現代のRSA暗号システムでも使われてる”モジュラ算術”です。
今、アルゴリズムの文字数26を法(モジュール=mod)とする。つまり、AからZは0から25で表し、A(=0)をF(=5)へずらす暗号化は、n→n+5(mod 26)と表せる。
例えば、U(=20)は20+5=25(mod 26)でZ(=25)となるが、V(=21)は21+5=26=0(mod 26)でZ(=25)で、A(=0)となる。つまり、元の数は26時間時計みたいに、26になれば0に戻る
復号化も同様に、n→n−5(mod 26)と表せる。一般に暗号キーが右にk文字ずらすであれば、暗号化はn→n+k(mod 26)となり、復号化はn→n−k(mod 26)となります。
つまり、暗号をモジュラ算術(剰余計算)に置き換えると、暗号を正確な形で表わせる。故に、アルファベットに限らず、全ての数字や記号や小文字や大文字も、極論を言えば漢字も暗号に使えるのだ。
どんな暗号にも癖がある?
しかし、カエサルの暗号は26通りの選択肢を全て調べあげれば、簡単に解読できる。
アルファベットをずらすだけでなく、ごちゃまぜに入れ替える”換字式暗号”なら、そんなに単純じゃない。後に述べるエニグマみたいに、暗号の種類が26!(=403291461126605635584000000)通りと膨大になる。
でも、そんな膨大な暗号でも見破る方法があるのだ。
それは、どんな記号でも頻繁に使われる文字がある。数学で言えば”偏り”という事になる。つまり、暗号にも傾向(癖)があるのだ。
一般に、英語で一番使われる文字はEとされ、約13%を占める。以下、T(9%)、A(8%)と続く。つまり、暗号文を傍受し、頻繁に出現する文字を入れ替えたものだと睨んだら、それぞれの文字の頻度を計算すればいい。
例えば、Qが一番多く使われてたなら、QをEに置き換える。次に多いのがMならTに置き換えてみる。勿論、正確には一致しないだろうが、これで選択肢の幅はずっと少なくなる。
そこで、暗号文の一部をXJMNQXJMABWとし、暗号文全体で使われてる文字の多い順のトップ3がQ、M、Jとする。
上で見たように、QをE、MをT、JをAに置き換え、残りを空ける。すると、上の暗号文は−AT−E−AT−−−となる。
仮に、このメッセージをMATHEMATICSと推測すれば、XはM、NはH、AはI、BはC、WはSと解読できる。
もし暗号文の何処かに、WBAQRBQHABMALRという部分があり、これを仮に、SCIE−CE−ICTI−−と解読すれば、SCIENCEFICTIONと予想できる。
これは、Nが2度使われてる事で更に確証が得られ、N,F,OがR,H,Lに暗号化されてる事が判る。極端な例だが、手作業でもこの様に暗号を破る事は可能だ。
しかし暗号法は何千通りもある。それに応じ、解読する方法も違ってくる。
上で述べた様な頻度以外にも、単語中の出現位置や他の文字との多重相関をとり、元の文の意味を推定するなどクロスワードパズルを解く様に暗号を解読する方法もある。
しかし、エニグマ暗号では、一文字毎に文字の交換関係が変わり、単純な頻度分析では解読できない。
勿論、破るのがほぼ不可能な方法もある。破ろうとする者が情報を得る前に、次々と鍵を変えていく方法だ。事実、第二次世界大戦では”ワンタイムパッド”が使われ、そのノート(Pad)に複雑な鍵が書かれ、メッセージを暗号化する度に1つずつ破棄した。
しかしこの大きな弱点は、スパイが秘密のノートを持ち歩く必要があり、この機密がバレたら一巻の終りである。
エニグママシン
有名な暗号システムと言えば、第二次大戦で使われたドイツのエニグマ”謎”ですね。
この暗号を破ったのがアラン•チューリングですが、解読する上で役に立ったのが、1939年にポーランド人が提供した1台のエニグママシンでした。
このエニグママシンは、平文を入力するキーボードとアルファベットの26文字に対応する”ローター”からなる単純なマシンだ。
初期のマシンは3連ローターだったが、後に5つ(海軍は8つ)に増やされ、1日毎に3つが選ばれた。このローターでは1文字タイプする毎に、異なる規則で文字を入れ替える。
それぞれのローターは、カエサルの暗号と同様に文字をずらすが、何文字ずらすかはローターの最初の位置で決まる。
つまり、最初の文字がタイプされると、ずらされた文字が2個目のローターに渡され、再びずらされ、3個目のローターで3度ずらされる。
次にその文字信号は、13本のワイヤーにより各文字がそれぞれペアになった構造の”リフレクター”(反射板)に届き、そのリフレクターにより各文字がそのペアと入れ替わる。
更に、その文字が3つのローターに戻され、入力した文字に対応する暗号文字がランプボードに点灯するしくみだ。
このマシンで一番工夫されてるのは、キーを打つ毎に平文の文字と暗号文の文字の対応関係が変わる事。つまり、キーを打つ度にローターが切り替わり、アルファベットが違う順序に入れ替えられる。
その上、3つのローターは車のタコメーターみたいに、右端のメーターがZからAに戻る度に中央のローターが1つ前に進む。その左のローターも同様だ。
しかも、エニグマのローターは26個の記号がつくから、まず、26×26×26=17576通りの初期設定ができる。スタート位置は自由に設定でき、1日が終われば設定し直す。
実際には、3つローターの6つの組合せが設定できるから、設定は17576×6=105456通りとなる。
軍事利用では、更に安全性を高める為に、電線を繋いで文字と文字を入れ替える”プラグボード”が使われ、最大10本の電線が使われる。お陰でその組み合わせは、26文字から20文字を選び、それを10本のコードで結線するので、約150×10¹²通りある。
故に、総組合せは、150738274937250通りと天文学的数字となる。また、プラグボードの設定も毎日変更された。
私はもうこの時点で、ギブアップですな。
エニグマにも弱点があった
それに、エニグママシンは”対称性”があり、同じマシンをメッセージの復号化にも使えるのだ。つまり、暗号文を入力すれば、平文が点灯する。
勿論、真正面から全数探索するのは不可能ですね。それに、これを全部試し、典型的なドイツ語の文字頻度分布が出てくるかどうか調べる計算は、今のスパコンでも少々無理である。故にドイツ軍は、エニグマ暗号は絶対に破られないと信じていた。
しかし、このエニグマにも弱点があった。設定を見抜かれたら、その日の全てのメッセージが解読できてしまう。それに、2日連続で同じ設定を使えば、破られ易くなる。
英ロンドンのチームは、これらの弱点を付き、1940年1月に初めてエニグマを打ち破った。
これには、エニグママシンを提供したポーランド人が大きな貢献を果たしました。
ポーランド人数学者マリアン•レイチェフスキーのチームは、1932年からエニグマの解読に挑戦していたが、エニグマの設定にある弱点を見つけた。
これにより、考慮する設定の数が10¹⁶から10万通りに激減。その上、設定を素早く導く為に”サイクロメーター”を開発し、完成には1年程掛かったが、僅か15分でその日の設定を導き、暗号を破れる様になる。詳しくは「暗号解読」(サイモン•シン)を参考です。
しかし、1937年ドイツ軍が暗号を改良した事で、1からの出発となったが、ポーランドチームは新たに、”ボンバー•クリプトロジチナ”(暗号爆弾)を編み出した。
この装置を使い、1台毎の3個ローターによる17576通りの初期設定を力尽くで解析した。結局は、力技なんですね(苦笑)。
一方、1939年にチューリングは英国版の暗号爆弾”ボンベ”を導入した。
この装置もローターの設定を暴いた。1941年6月には5台のボンベが稼働し、終戦時の1945年には210台に増えた。
ドイツ海軍が4個のローターマシンに切り替えると、ボンベも改良された。つまり、ドイツがエニグマを改良すれば、連合軍側もそれを無力にする方法を考え、ほぼ全てのエニグマを解読できる様になっていた。
しかし、ドイツの最高司令官はエニグマは100%安全だと信じて疑わなかった。勿論、暗号製作者はそんな幻想こそ抱いてなかったが、このエニグマを破る為に、気の遠くなる様な労力を費やす等とは思ってもいない。
最後に〜暗号解読の永遠の謎
因みに、暗号学の歴史史上最大のアイデアの1つが”非対称鍵”である。エニグママシンですら、ある特異な種の”対称鍵”でした。
これは暗号鍵が複号鍵とは異なり、暗号キーが判っても複合キーを導くのが不可能なシステムだ。判り易く言えば、家を閉める鍵と開ける鍵が別々という事。
しかし、プロセスはもう一方の逆プロセスなので、奇妙に思えるかもしれないが、”暗号化を逆方向に作用させる”のを不可能にする方法がある。
しかし、そのいい例がモジュラ演算における素数の性質を元にした”RSA暗号”です。
剰余演算と素因数分解を組み合わせる事で、暗号化アルゴリズムと復号化アルゴリズムと暗号キーが公表されても、復号キーを導く事は不可能とされる。
これも判り易く言えば、鍵を閉じるしくみと開けるしくみと、それに家を閉じる鍵をもってしても、扉を開ける事は出来ないと。
つまりRSA暗号では、”素数の謎”が分厚い扉となり、モジュラ演算がその分厚い扉を塞ぐ。
暗号を作る側も破る側も、途方もない労力を費やしました。そして、それを突破するきっかけとなったのが、コンピュータというAIでした。
人間の生身の脳みそとAIという乾いたデジタルの脳が融合した結果、人類が生み出した複雑で難解な暗号を解読する事が出来た。
神様が存在するとしても、カエサルの暗号くらいは見抜けるでしょうが。エニグマは元よりRSA暗号となると、神様ですらプライドをかなぐり捨て、仏様に手を合わせるんでしょうか。
”開け〰ゴマ”
”ああ〜やっぱアカンか〜”
https://blog.goo.ne.jp/items/e/003356cd8ea3ec1c9bd2c94c7dadb356
まるで神様のうめき声が聞こえそうでんな
最後の二行には笑ってしもた
でもエニグマを見破った数学者って神を超えてるな
が故に殺されたんだろ
英国のチームにはロシア人スパイもいたし
見破られないように研究するのも大変だったろうに
神は数学を元にこの世界を作ったのか?
いや数学こそが神を作ったのか?
数学には不条理な有効性がある
数学者は暗号を作り、暗号は神を超えたとなりますね。
でも今から2千年も前にRSA暗号の地盤が既に出来てたとは?人類恐るべしです。
数学は小説よりも奇なり過ぎですよね
日本のトップの数学者は世界でもトップクラスです。でも底辺が小さく、数学は未だ受験数学の域を脱してません。
欧米は言語がアルファベットだから、数学と言語の親和性があるんですが、日本語は漢字なので、そこまで親和性はないですね。
数学を美しい日本語で表現できる数学者が日本にはどれ位いるのか?そういう事から初めないと、少しキツイですかね。
神が数を作り、人間がその数を使って数学を作り、その数学が神となった。
が故に、数学は奇怪な合理性があるんですかね。
しかし、その暗号を作った数学者は行方不明になったか?殺されたか?しました。エニグマが解読する以前に、ドイツは白旗を上げてましたから。
流石に神様の逆鱗に触れたのでしょうか。何でもやりすぎは災の元ですね。