暗号化の基礎 - 擬似乱数生成器
猎豹区块链安全
2019-01-10 06:51
本文约2550字,阅读全文需要约10分钟
暗号を理解することによってのみ、ブロックチェーンを真に理解することができます。

ブロックチェーンとブロックチェーンプロジェクトを深く理解したい場合は、必然的に暗号化を理解する必要があります。ブロックチェーンは暗号の統合アプリケーションであり、暗号を理解することによってのみ、ブロックチェーンを真に理解することができます。

チーターブロックチェーンセンターが開設されました暗号の起源に関する人気の科学記事最初のレベルのタイトル


エニグマ暗号機

第二次世界大戦初期において、ファシズムの総合的な戦力は実は同盟国に比べてはるかに劣っていたが、ドイツと日本は第二次世界大戦初期に多数の奇襲戦術や先制攻撃を採用し、一定の戦争上の優位性を獲得した。

襲撃戦術を効果的に実行するには、インテリジェンスが非常に重要であるため、第二次世界大戦中の暗号の主な目標は、インテリジェンスのセキュリティをどのように確保するかでした。

前回の記事で、情報の絶対的な安全性を確保するには、ワンタイムパッド方式、つまり各文字をランダムにずらして暗号化する必要があると述べました。各入力文字を入力し、暗号化された文字を出力します。

当時の最新鋭の機械はローター暗号機と呼ばれるもので、ワンタイム暗号化を非常によく実現していました。そしてその原理は、実は私たちがよく知っている走行距離計と非常によく似ています。

(下位ユニットのホイールは1回転、上位ユニットのホイールは1グリッド分回転します)

走行距離計の機械は誰もが知っていますが、1週間を繰り返すには長い時間がかかります。

オドメーターホイールの数字をスクランブルし、前進がない場合は、ローターの各数字を加算して変位数を取得し、暗号化したい文字に対して変位暗号化を実行することを想像してください。これが一般原理です。ローター暗号化マシンの。


暗号化装置と受信装置は、次の方法に従って同じ変位シーケンスを生成できます。まず、暗号化装置と受信装置は同じマシンを共有し、次に初期状態に同意する必要があります。これをマシンコード設定として定義し、それぞれのマシンを同じ位置に調整し、最終的には同じシーケンスを得るために同じ操作を繰り返します。

それぞれが26の番号を有する3つのロータの場合、各シーケンスの変位シーケンスは、ロータ26の3乗(17576の番号)の回転を通じて繰り返される。

各ローターの位置はシーケンス内の対応する位置と等しく、マシンの初期状態をマシンコード設定と呼び、すべてのマシンコード設定をまとめたものをマシンコード空間と呼びますが、マシンの初期設定方法が増えると、マシンコード空間も増加します。

マシンコード設定を選択するときは、この領域で開始点を選択します。マシンコードが公開されるように設定されている場合、暗号化されたシーケンス全体が漏洩します。

したがって、このロータ暗号機の安全性は、コード空間のサイズとコード設定のランダム性に依存します。

第二次世界大戦中にナチスが使用した最も重要な暗号化技術の 1 つは、エニグマとして知られる暗号化マシンでした。


戦争の終わり近くには、エニグマは 1 億 5,000 万通り以上の方法で設定される可能性がありました。このため、ドイツ軍は連合国がエニグマを入手し、考えられるすべてのコード設定を検証できなかったと信じました。

エニグマを使用して双方が通信するには、まず毎日のマシン コード設定を共有する必要があります。これにより、それぞれのマシンを同じ位置に調整できるようになります。このプロトコルは戦時中に繰り返し変更されましたが、通常はすべてのオペレーターに配布されます毎日、オペレーターはその日の設定を切り出し、その日の機械に必要な構成、たとえばどのローターを使用するか、ローターの順序を示し、使用後にそれを伝えます。 、マシンコード設定は破壊されます。

ただし、オペレーターにとっては、通信の前に、各ローターの初期位置を選択する必要があるという重要なステップがまだ残っています。怠惰なオペレーターの中には、非常に単純な間違いを犯す人もいます。これは、私たちが犯す間違いと同じです。自転車の機械式ロックでは、ローターを初期位置から数回移動するか、一般的な組み合わせを再利用する傾向があります。これにより、ローターの初期位置の均一な分布が破壊され、繰り返し観察した結果、軍隊が回路を完全に復元できるようになります。ローターの配分が逆。

このような低レベルの人為的ミスがエニグマの最終的な解読につながり、間接的に戦争の動向に影響を及ぼした。

最初のレベルのタイトル


擬似乱数発生器

擬似乱数を理解する前に、実際の乱数について見てみましょう。私たちの物理世界にはランダムな変動が存在しており、ノイズと呼ばれるランダムな変動を測定することで、真の乱数を生成できます。ノイズを測定するプロセスはサンプリングと呼ばれます、サンプリングによって何らかの乱数を取得できます。ただし、相対的に言えば、マシンは決定論的であり、その動作は予測可能であり、再現可能です。

1946 年、フォン ノイマンは軍の水爆の設計に参加し、ENIAC という名前のコンピュータを適用しました。彼は、核融合プロセスのシミュレーションを繰り返し計算することを意図していました。しかし、これには、ランダムに生成された数値に高速にアクセスする必要があり、これらの数値が再現可能であることが保証されていました。ただし、ENIAC のメモリは非常に限られており、長いランダム シーケンスを保存することは不可能です。

そこで、フォン・ノイマンは、ランダム性を機械的に模倣する次のようなアルゴリズムを設計しました: まず、シードと呼ばれる真の乱数が選択され、この数値は、シードと呼ばれるミリ秒単位の現在時刻などのノイズの測定値から得られる場合があります。次に、このシードを入力として受け取り、単純な計算を実行します。シードをそれ自体で乗算し、この結果の中間部分を出力します。次に、この出力を次のシードとして使用し、このプロセスを必要な回数だけ繰り返します。


これは中間スコアリングと呼ばれ、多くの疑似乱数ジェネレーターの 1 つです。では、ランダムに生成されたシーケンスと擬似ランダムに生成されたシーケンスの違いは何でしょうか?

主要な違いは、擬似乱数が特定の数に達すると、最終的にシーケンスが繰り返されることです。以前に使用されたシード番号がアルゴリズムに現れると、サイクルが始まります。擬似乱数のシーケンスが繰り返されるまでの長さを期間と呼びます。この期間は、最初のシードの長さによって厳密に制限されます。

たとえば、2 桁のシードを使用する場合、アルゴリズムはループを繰り返す前に最大 100 個の数値を生成でき、3 桁のシードはループを繰り返す前に 1000 個の数値を生成でき、4 桁のシードはループを繰り返す前に 1000 個の数値を生成できます。ループを繰り返すことで 10,000 個の数値が生成されますが、十分な大きさのシードを使用すると、シーケンス内の数値は繰り返す前に数兆に拡張されます。

非常に重要な重要な違いがもう 1 つあります。それは、数値を擬似ランダムに生成する場合、生成できないシーケンスが存在することです。

たとえば、暗号化側のアリスが 20 個の変位の真にランダムなシーケンスを生成した場合、これは、26 の 20 乗の可能性を含むすべての可能な変位シーケンスのスタックからシーケンスをランダムに選択することに相当します。これは天文学的です。形。

しかし、暗号化者が 4 桁のランダム シードを使用して 20 桁の擬似乱数シーケンスを生成する場合、暗号化者は 10,000 通りの結果の中から同様に一般的な選択しか行うことができません。つまり、暗号化者は 10,000 通りの異なるシーケンスしか生成できません。

ランダム ディスプレイスメントから擬似ランダム ディスプレイスメントに移行することは、キー空間を比較的小さなシード空間に縮小することに相当します。

擬似乱数の概念は、暗号化装置と受信者がランダム ディスプレイスメント シーケンス全体を事前に共有する必要がなく、比較的短いランダム シードを共有するだけでよく、それを一見同じランダム シーケンスに拡張するために提案されています。必要に応じて、できます。

しかし、もし彼らがこの種を分かち合うために会わなかったらどうなるでしょうか?これは最新の暗号化技術の最も重要な内容であり、ブロックチェーンの暗号化の中核であり、次の記事で焦点を当てます。

猎豹区块链安全
作者文库