ニューラル暗号は、暗号化および暗号解読における確率的アルゴリズム、特に人工ニューラルネットワークアルゴリズムの応用を分析することに特化した暗号学の一分野である。
人工ニューラルネットワークは、与えられた問題の解空間を選択的に探索する能力でよく知られています。この特性は、暗号解読の分野で自然な応用分野を見出しています。同時に、ニューラルネットワークは、あらゆる関数をニューラルネットワークで再現できるという原理に基づき、暗号アルゴリズムを攻撃する新しいアプローチを提供します。ニューラルネットワークは、あらゆる暗号アルゴリズムの逆関数を見つけるために使用できる、強力で実績のある計算ツールです。
ニューラルネットワークや類似のアルゴリズムにおける相互学習、自己学習、確率的挙動といった概念は、公開鍵暗号、ニューラルネットワークの相互同期を用いた鍵配布問題の解決、ハッシュ化、擬似乱数の生成など、暗号のさまざまな側面に応用できる。
もう一つのアイデアは、ニューラルネットワークが「バイアス」を用いて空間を非線形な部分に分割する能力です。これにより、ニューラルネットワークを活性化する確率としない確率が異なります。これは暗号解読において非常に有用です。
同じ研究分野を指すのに、ニューロ暗号学とニューラル暗号学という2つの名称が用いられる。
このテーマに関する最初の研究は、1995年のIT修士論文に遡ることができる。
1995年、セバスチャン・ドゥルレンスは、ニューラルネットワークを用いてDESのSテーブルの反転方法を学習させることで、DESの暗号解読にニューラルネットワークを応用した。アディ・シャミアによる差分暗号解読で研究されたDESのバイアスが強調されている。実験では、鍵ビットの約50%が特定できることが示され、短時間で完全な鍵を特定できるようになった。多層ニューラルネットワークはハードウェアに容易に実装できるため、マルチマイクロコントローラを用いたハードウェアアプリケーションが提案されている。
公開鍵プロトコルの一例として、Khalil Shihab氏が挙げているものがあります。彼は、バックプロパゲーションニューラルネットワークに基づいた復号方式と公開鍵生成について説明しています。暗号化方式と秘密鍵生成プロセスはブール代数に基づいています。この手法の利点は、時間とメモリの計算量が少ないことです。欠点は、バックプロパゲーションアルゴリズムの特性にあります。膨大な訓練データセットが必要となるため、ニューラルネットワークの学習フェーズが非常に長くなります。そのため、このプロトコルの使用は今のところ理論上のものにとどまっています。
実際にAとBの間で鍵交換を行う際に最もよく用いられるプロトコルは、ディフィー・ヘルマン鍵交換プロトコルである。2つのツリーパリティマシンの同期に基づくニューラル鍵交換は、この方法の安全な代替手段となるはずである。これら2つのマシンの同期は、カオス通信における2つのカオス発振器の同期に似ている。

ツリーパリティマシンは、特殊なタイプの多層フィードフォワードニューラルネットワークである。
これは、1つの出力ニューロン、K個の隠れニューロン、およびK × N個の入力ニューロンから構成されます。ネットワークへの入力は次の3つの値をとります。
入力ニューロンと隠れニューロン間の重みは、以下の値をとります。
各隠れニューロンの出力値は、入力ニューロンとこれらの重みとの積の合計として計算されます。
Signumは、-1、0、または1を返すシンプルな関数です。
スカラー積が0の場合、バイナリ出力値を保証するために、隠れニューロンの出力は-1にマッピングされます。ニューラルネットワークの出力は、隠れ要素によって生成されたすべての値の乗算として計算されます。
ツリーパリティマシンの出力はバイナリです。
各当事者(AとB)はそれぞれ独自のツリーパリティマシンを使用する。ツリーパリティマシンの同期は、以下の手順で実現される。
完全な同期が達成された後(両方のツリーパリティマシンの重み w ijが同じになった後)、 AとB はそれぞれの重みを鍵として使用できます。 この方法は双方向学習として知られています。同期には、 以下の学習ルール[ 1 ]のいずれかを使用できます。
どこ:
そして:
あらゆる攻撃において、攻撃者Eは当事者AとBの間のメッセージを盗聴することはできるが、メッセージを改ざんする機会はないものとみなされる。
総当たり攻撃を行うには、攻撃者は考えられるすべての鍵(重みwijのすべての可能な値)をテストする必要があります。K個の隠れニューロン、K × N個の入力ニューロン、および重みの境界Lによって、(2L+1) KN通りの可能性が生じます。例えば、K =3、L =3、N =100の構成では、3× 10²⁵³通りの鍵の可能性が生じ、今日のコンピュータの処理能力では攻撃は不可能です。
基本的な攻撃の一つは、 AとBと同じツリーパリティマシンを所有する攻撃者によって行われる。攻撃者は、自身のツリーパリティマシンをAとBの2つのマシンと同期させたいと考えている。各ステップには、次の3つの状況が考えられる。
二者間の同期は、攻撃者が鍵を学習するよりも速いことが証明されています。ニューラルネットワークのシナプス深度Lを増やすことで、この速度をさらに向上させることができます。これにより、このプロトコルは十分なセキュリティを確保し、攻撃者が鍵を見つける確率はごくわずかになります。
従来の暗号システムでは、鍵長を長くすることでプロトコルのセキュリティを向上させることができます。ニューラル暗号の場合、ニューラルネットワークのシナプス深度Lを長くすることでセキュリティを向上させます。このパラメータを変更すると、攻撃が成功するコストは指数関数的に増加する一方、ユーザーの労力は多項式的に増加します。したがって、ニューラル鍵交換のセキュリティを破ることは、複雑性クラスNPに属します。
Alexander Klimov、Anton Mityaguine、および Adi Shamir は、元のニューラル同期スキームは、少なくとも 3 種類の攻撃 (幾何学的、確率的分析、および遺伝的アルゴリズムの使用) によって破られる可能性があると述べています。この特定の実装は安全ではありませんが、カオス同期の背後にあるアイデアは、安全な実装につながる可能性があります。[ 2 ]
順列パリティマシンは、ツリーパリティマシンのバイナリ版である。[ 3 ]
これは、1つの入力層、1つの隠れ層、および1つの出力層から構成されます。出力層のニューロン数は、隠れユニット数Kに依存します。各隠れニューロンはN個のバイナリ入力ニューロンを持ちます。
入力ニューロンと隠れニューロン間の重みもバイナリ値です。
各隠れニューロンの出力値は、入力ニューロンとこれらの重みのすべての排他的論理和(排他的論理和)の合計として計算されます。
(⊕はXORを表します。)
機能これは閾値関数であり、0または1を返します。
2つ以上の隠れニューロンを持つニューラルネットワークの出力は、隠れ要素によって生成される値の排他的論理和として計算できます。
K>2の場合の出力層の他の構成も可能です。[ 3 ]
このマシンはいくつかの攻撃に対して十分堅牢であることが証明されているため[ 4 ]、暗号化手段として使用できるが、確率的攻撃に対して脆弱であることが示されている[ 5 ] 。
量子コンピュータとは、量子メカニズムを用いて計算を行う装置です。この装置では、データは量子ビット(量子バイナリ数字)として保存されます。そのため、従来のコンピュータと比較して、量子コンピュータは離散対数問題や因数分解といった複雑な問題を短時間で解決できるという利点があります。この特性を利用して、これらの数論の問題に基づかないアルゴリズムの開発が進められています。
ニューラル鍵交換プロトコルは、いかなる数論にも基づいていません。ニューラルネットワークの単方向同期と双方向同期の違いに基づいています。したがって、ニューラル鍵交換プロトコルのようなものは、より高速な鍵交換方式を生み出す可能性があります。[ 2 ]