見出し画像

AIで蘇るエニグマ:暗号の歴史とWEBアプリ

あなたはAIの生みの親と聞いて、誰を思い浮かべるでしょうか。

AIの生みの親と聞いて真っ先に思い浮かべるのは、アラン・チューリングです。彼の計算理論とチューリングテストの概念が、AIの基礎を築いたとされています。

ChatGPT-4o

アラン・チューリングです。コンピュータサイエンスの理論的基礎を築き、人工知能の概念を提唱した先駆者として、最も重要な存在だと考えています。

Claude 3.5 Sonnet

そうです。多くの人が「アラン・チューリング」と答えるでしょう。彼はチューリングテストを考案し、現代コンピュータの基盤を築いた天才数学者。その存在なくして、今私たちが享受するAI技術はおそらく存在しなかったはずです。

しかし、チューリングの功績はそれだけではありません。彼が成し遂げたもう一つの偉業──それは、第二次世界大戦の最中(さなか)、ドイツ軍の「解読不可能」とされた暗号機、エニグマを打ち破ったことです。

エニグマは当時、まさに絶対的な闇を作り出す装置でした。その複雑さは「神のパズル(※)」とも称され、解読することは不可能だと信じられていました。けれども、チューリングと彼の仲間たちは、不可能という壁を突破し、戦争の命運を変える一歩を刻んだのです。

この記事では、エニグマの仕組みや背景を簡単に解説するとともに、現代のAIを用いてエニグマを再現する挑戦をお届けします。驚くべきは、その再現がわずか15分で可能だったということ。そして、それを実現したのはClaude 3.5 SonnetというAIです。

※歴史上、そう呼ばれていたわけでは無いです。エニグマの語源自体は、古代ギリシャ語で「謎」や「パズル」を意味する ainigma に由来しています。

※アプリだけを試したい方は、目次から該当セクションへお進みください。「⭐️WEBアプリ本体⭐️」です。


闇に潜む知性──エニグマの物語

♪地上の星、あるいは世紀の映像のテーマ曲を——

第二次世界大戦。世界は混沌に飲み込まれ、信頼という言葉が最も遠い場所に追いやられた時代だった。この混迷の中、ドイツ軍は一つの「知性」を生み出した。それは、戦場の陰に潜む見えざる兵士とも言うべき存在だった。

その名は──エニグマ

エニグマはただの機械ではなかった。タイプライターのような外観に隠されたその心臓部は、幾重もの歯車が絡み合うように設計された暗号の迷宮だった。鍵の数、ローターの回転、配線の組み合わせ。それらがもたらす可能性は、星空に輝く無数の星の数に匹敵する。エニグマによって生成された暗号は、当時「世界一の精度」と称され、誰もがその解読を不可能だと信じた。

戦場を支配する暗号

戦争において、情報は命だ。敵の動きを知ることができれば、勝利への道筋が開かれる。だが逆に、情報が守られれば、計画は安全な闇の中に隠される。エニグマは、まさにその闇を生み出すための道具だった。

ドイツ軍の将校たちはエニグマを使い、作戦の指令を次々と暗号化した。それは一種の魔法のようなもので、文字を打ち込むたびに別の文字へと変換されていく。解読の鍵となる設定がない限り、どれだけ賢明な者でも、その文の意味を読み解くことはできなかった。彼らは確信していた──エニグマは「不滅の壁」だと。

挑む者たち

しかし、この壁に挑む者たちが現れる。連合国側の数学者、科学者、そして暗号解読者たちだ。彼らは、不可能と言われたエニグマの解読に命を懸けた。
その中心にいたのが、若き数学者アラン・チューリング。彼は、エニグマの解読を目指し、想像を絶する執念と創意工夫で新たな機械を開発した。それは「ボンベ(Bombe)」と呼ばれる装置で、膨大な組み合わせを一つずつ試すことでエニグマの秘密を暴こうとした。

解読への道のりは、苦難と失敗の連続だった。しかし、彼らは諦めなかった。なぜなら、エニグマが守る秘密を解き明かすことが、戦争の命運を握っていると知っていたからだ。

エニグマの神話

エニグマは、ただの機械ではなかった。戦場に散らばる兵士たちの希望を運び、また絶望をもたらした。暗号化されたメッセージは、運命を変える命令だった。そしてその背後には、エニグマの機構が持つ驚異的な美しさと恐ろしさが隠されていた。

解読できない暗号」という神話。それを作り上げたエニグマは、戦争の歴史に刻まれた最もドラマチックな存在の一つだ。そして、その神話を打ち破るために費やされた努力は、後にコンピュータ科学——そしてAIという新たな領域の扉を開くことになる。

エニグマ。それは暗号技術の頂点であり、人間の知性と機械の融合が生んだ奇跡だった。その物語は、ただの過去の遺物ではない。現代のサイバーセキュリティやAI技術に連なる深い教訓を、私たちに静かに語りかけている。

AIで蘇る暗号機:15分で誕生した「エニグマ」

現代に生きる私たちは、もはや暗号機を手作業で組み立てる必要はない。なぜなら、AIという新たな知性が、それを短時間で実現できるからだ。ある日、私はふと考えた──もしエニグマをAIに作らせたら、どれだけの時間で再現できるのだろうか?そうして始まったのが、Claude 3.5 Sonnetとの共同プロジェクトだった。

〜番組の区切り〜

指示はわずか数行

AIに与えたのは、以下の言葉だけだった——。

エニグマっぽいWEBアプリを作れますか?

これだけだ。この言葉を投げかけただけで、AIは即座にコードを生み出し始めた。

⭐️WEBアプリ本体⭐️

15分後、エニグマは動き出した

AIが作成したコードをテストした瞬間、私は息を呑んだ。そこには、かつて戦場を支配した暗号機エニグマが、21世紀の画面の中で蘇っていた。

ユーザーインターフェースはモダンかつ直感的。3つのスライダーでローター位置を設定し、テキスト入力欄に文字列を打ち込むだけで、エニグマの魔法が始まる。暗号化ボタンを押すと、ローターが回転し、文字が次々に変換されていく様子がリアルタイムで表示された。結果の文字列はクリック一つでコピー可能。必要であれば、リセットボタンでローターを初期位置に戻し、再び挑戦できる。

また、暗号化の仕組みが可視化されたことで、かつて「解読不能」とされたエニグマのアルゴリズムが驚くほど身近に感じられた。

AIとエニグマの共演

このアプリケーションは、エニグマの歴史的再現だけではなく、AIの可能性そのものを示していた。15分という短い時間で、AIはただ指示に従うだけでなく、人間がその全貌を理解するのに何年もかかった技術を再現したのだ。

「エニグマ」の現代的意義

このプロジェクトは単なる暗号機の再現に留まらない。かつては不可能とされた技術を、今やAIが数分で再現できる時代に私たちは生きている。それは歴史への敬意であり、同時にAI技術の進化が生む可能性への挑戦だ。

こうして、エニグマは再び命を吹き込まれた。ただし今回は、戦争のためではなく、学びと探求のために。


仕様やユーザインタフェースや機能

使用に関しても簡単に作り手に解説してもらいました。

まず、このWEBアプリでは初期ローダーの位置のみ重要視されます。複雑な仕様にしなかったのは賢明だと思います。

はい、その通りです。このアプリでは実装を簡略化しているため、暗号化/複合化の際に初期ローター位置のみが重要で、実行中のローター位置の表示は進捗表示としての役割しかありません。本来のエニグマ機のような複雑な暗号化機構は実装していません。より本格的な実装にするには、各ローターの配線パターンやリフレクターなどの機能を追加する必要があります。

Claude 3.5 Sonnetより

アプリケーションの仕様(Claude 3.5 Sonnet出力ママ):

1.ユーザーインターフェース

  • 3つのローター位置設定(0-25の数値)

  • テキスト入力欄

  • 暗号化/複合化/リセットボタン

  • 結果表示領域(クリックでコピー可能)

2.機能

  • 英字のみを処理(自動的に大文字に変換)

  • ローター位置に基づく暗号化/複合化

  • 暗号化過程でのローター回転表示

  • 結果のワンクリックコピー機能

3.基本原理

入力: HELLO

ステップ1: 文字を数値に変換 (A=0, B=1, ... Z=25)
H → 7

ステップ2: ローター位置を加算
例:ローター位置が[1,2,3]の場合
7 + 1 + 2 + 3 = 13

ステップ3: 26で割った余りを取る(アルファベット26文字に収める)
13 % 26 = 13

ステップ4: 数値を文字に戻す
13 → N

4.ローターの動き

  • 1文字入力ごとに最初のローターが1進む

  • 1周(26回転)すると次のローターが1進む

  • 自転車のオドメーターのような仕組み

5.複合化

  • 暗号化と逆の計算を行う(加算を減算に変更)

  • 同じ初期ローター位置を使用することで元の文字に戻る

※この単純化されたバージョンは、本物のエニグマの複雑な配線パターンやプラグボードは省略していますが、基本的な暗号化の概念を理解するのに役立ちます。

使用例:暗号化から複合化

第二次対戦中に送られたメッセージを想像します。

Attack will begin at dawn. Two submarines spotted near coastline. Exercise extreme caution.

これを以下のルールに則って整えておきます(実際のエニグマも、ピリオドや記号は使えなかったので)。

スペース → 削除
ピリオド → XSTOPX
文の区切り → XZ

主な変換ルール

ATTACKWILLBEGINATDAWNXSTOPXZTWOSUBMARINESSPOTTEDNEARCOASTLINEXSTOPXZEXERCISEEXTREMECAUTIONXSTOP

初期ローダー位置を「1,2,3」とし、暗号化します。

HBCKNWJWABSWZCIWQBZWOZVXUWFIDHAFIQCRJBHZOPNNTUGGRJHZLYLEGZXDVPLNJLUXDXFTFMXKMGDCQZSRQLLBIITPRNP

これを、では複合してみます。初期ローダー位置を「1,2,3」とします。

ATTACKWILLBEGINATDAWNXSTOPXZTWOSUBMARINESSPOTTEDNEARCOASTLINEXSTOPXZEXERCISEEXTREMECAUTIONXSTOP

終わりに

今回、かなり突貫で思いつきベースで進めましたが、思った以上に面白いものができた気がします。デザインに関しては、まだ少し粗削りな部分がありますが(右側がズレている)、そこを修正すればもっと見栄えが良くなりそうです。

ちなみに、本文中で「15分」としていますが、実際にはAIとのやり取りが何往復かあり、それを込みでの15分です。コード自体には一切人間の手を加えていません。

本文のトーンについては、「プロジェクトX」や「映像の世紀シリーズ」をイメージして仕上げました。なかなか面白いまとめになったと思います。

おまけ

以下、書き出しのやりとりです。

Claude 3.5 Sonnetの回答

※見出し画像はAI生成です(DALL-E 3)

いいなと思ったら応援しよう!