革新的なエントロピー生成法

私はカオスです。 私はあなたの芸術家や科学者がリズムを​​構築する物質です。 私はあなたの子供と道化師が幸せな無政府状態で笑う精神です。 私はカオスです。 私は生きており、あなたが自由であることを伝えます。

-カリス、争い、混乱の女神エリス



整頓せずに注文することは不可能です。 プログラマーは、多くの場合、すべての自尊心のあるアプリケーションが持つべき独創的な思考、乱数、および魔法係数を求めて混乱に飛び込みます。 この記事では、カオスの友人と共有するなど、事実上何もないところからランダム性の高品質のサンプルを取得する方法を説明します。



弁護士、政治家、その他のロボットへの警告:これは半ば冗談の記事です。



入力データ



カオスを得るには、「混dの種」と「地球」と呼ぶ2つのファイルが必要です。 Seed of Chaos-カオスが生まれる小さなファイル。 Earth-任意のサイズのファイル。結果のエントロピーのボリュームを設定し、結果のランダム性をわずかに増加させます。 原則として、地球は不要だったかもしれませんが、念のために、それを使用する方が良いです-ランダムデータの特性は、非ランダムデータと区別するのが難しいことです。 突然いくつかのゼロが生成されましたか? 完全な作業ファイルにより、結果が常に少なくとも本物になります。



カオスの種



混Chaの種の役割にふさわしい候補者を選ぶのは難しい仕事です。 ファイルには初期エントロピーが良好である必要があります。また、今後、ひどく痛みを伴う変更が加えられるため、あなたはそれを心から憎む必要があります。 さらに、画像のランダム性の良い指標は、インターネット中に散らばっています。 インターネットにアクセスできない場合、混を食い止めるアプリケーションは、忙しい生活を送る代わりに、面白い写真を見て保存する人のコンピューターで起動される可能性が高いので、心配しないでください。



理想的なカオスシードファイル










DMCAロゴを使用しています。 今、あなたはそれで何かをする必要があります、何らかの形でそれを整然としたビットのセットから厄介なものに変えます。 疑似ランダム関数のファミリーは、このタスクにうまく対処します。 それらの定義により、真にランダムなビットシーケンスを生成する関数の出力とその出力を区別する効果的なアルゴリズムはありません-まさに必要なものです。



私のお気に入りの暗号化方式の1つであるAESは、疑似ランダム変換であるため、これを使用します。



暗号の安定性にはまったく興味がありません。シードオブカオスを可能な限り無限のチャンスの流れに変えるだけです。



AESのキーとしてシードの最初の16バイトを取得します。 その後、カウンタモードでファイル全体を暗号化し、常に5回連続で暗号化します。 シードオブカオスに含まれているよりも多くのエントロピーが必要な場合は、連続してさらに5回暗号化します。 とても簡単で、ランダムなデータ入力なしで、質の高いカオスの無限のソースを得ることができます! 最も重要なことは、ソースファイルを純粋なエントロピーに変換した後に削除し、使用したものを誰にも伝えないことです。 カオスはカオスでなくなり、捨てられなければなりません。 そのような場合に生成されたランダム性を常に捨てないために、シードをどこかにwhereきます。



地球



Earthとして任意のファイルを使用できます。 考えてみれば、それなしでもできたはずですが、地球なしではできない少なくとも5つの理由があります。 役割の理想的な候補は、たとえばオーディオやビデオの記録など、さまざまな圧縮データです。これらは非常に大きく、多くの場合ユーザーのコンピューターにあります。



ミハルコフの映画には大きなエントロピーがあり、場所によっては同じ地球があります。 それらを使用してコンセプトをデモンストレーションすることは良いことですが、私は単一のコピーを購入していません。 したがって、ミュージシャンのブラッド・サックスの作曲、特に「 あなたはどこにも行かない 」を使用します。 Bradは、CC BY-SAライセンスとすべてのソースコードの下で音楽をアップロードしたため、気分を害するべきではありません。 さらに、地球で検討されている他の候補者の多くとは異なり、彼の音楽はまったく吸わない。



私たちは、すべての暗号作成者の論理的機能であるXORの信頼できる最愛の助けを借りて、種子を地球に植えます。 ランダムデータとあまりランダムでないデータを混在させると、ランダムデータが得られます。 さらに、ランダムデータとランダムデータをいくら混合しても、出力はランダムデータになります。 ホメオパスの夢。 さらに、この機能は、1回限りのメモ帳の基礎であり、現時点で唯一の絶対的に安定した暗号です。



プログラム



あなたがpyyasを持っている場合、Pythonで20行かかります。



コード
from pyaes import AESModeOfOperationCTR as Cipher from os import sys with open(sys.argv[1], "rb") as TheSeedOfChaosFile: key = TheSeedOfChaosFile.read(16) cypher = Cipher(key) TheSeedOfChaosFile.seek(0) TheSeedOfChaos = TheSeedOfChaosFile.read() with open(sys.argv[2], "rb") as TheEarthFile: with open(sys.argv[3], "wb") as TheEntropyFile: chunk = TheEarthFile.read(len(TheSeedOfChaos)) while chunk: for i in range(5): TheSeedOfChaos = cypher.encrypt(TheSeedOfChaos) chunk = [x ^ y for x, y in zip(chunk, TheSeedOfChaos[0:len(chunk)])] TheEntropyFile.write(bytearray(chunk)) chunk = TheEarthFile.read(len(TheSeedOfChaos))
      
      





使用法:python script.py seed_file earth_file output_file

これ 、Bradの歌とDMCAのロゴ混ぜた結果です 。 自分でダウンロードまたは作成し、結論が完全にランダムであることを確認してください! 2行のファイルを貴重なカオスに変えるのはわずか20行です。



pyaesは機能し、そのシンプルさは美しいですが、インタープリターにインポートした中で最も遅いです。 誰かがこのアイデアを気に入って、より速いバージョンに書き換えてくれたら嬉しいです。 誰かが最も純粋なエントロピーをエリスの栄光と交換するためのオンラインサービスを作成した場合、私は正当な理由で住んでいたことがわかります。



分析



明らかに、ソースファイルのランダム性は最終的なものよりも小さくなります。 マシンと人の両方は、外出中に何が起こったかを理解しません。 念のため、ファイルの統計を読み取る小さなスクリプトを作成し、次のことを確認します。



スクリプトソースコード
 import sys import math with open(sys.argv[1], "rb") as file: data = file.read() filesize = len(data) frequencies = [0]*256 for byte in data: frequencies[byte] += 1 frequencies = [freq / float(filesize) for freq in frequencies] entropy = -sum([freq * math.log(freq, 2) for freq in frequencies]) mean = sum(frequencies) / len(frequencies) stddev = [(freq - mean) ** 2 for freq in frequencies] stddev = math.sqrt(sum(stddev) / len(stddev)) print('Shannon:') print(entropy) print('Mean: (ideal: ' + str(1/256) + ')') print(mean) print('StdDev:') print(stddev)
      
      





カオスの元の種の統計
シャノン:

7.942118575257812

平均:(理想:0.00390625)

0.003906250000000003

Stddev:

0.0011614891032870488



ソースアース統計
シャノン:

7.973164196428091

平均:(理想:0.00390625)

0.0039062499999999987

Stddev:

0.0008704476953482593



結果の統計
シャノン:

7.999936528333672

平均:(理想:0.00390625)

0.0039062499999999983

Stddev:

3.665423289519401e-05



結果は、ほぼ完全なエントロピーと、さまざまなバイトの非常に低い確率の広がりを持ちます。 特に誰かに送信する前に、エントロピーを常に確認してください。 おそらくあなたの混chaosは十分に混oticではなく、人はそのような贈り物に満足しないでしょう。



おわりに



この簡単な方法で、家庭でよく見られるファイルから、数ギガバイトの非常にランダムなバイトをすばやく取得できます。 主なものは、混osの種の源を取り除くことです。さもないと、攻撃者はあなたと同じカオスを手に入れ、全体の考えを台無しにすることができます。



結果として生じるカオスフローは、ディスク上で以前に削除したファイルを上書きするのに適しています(この目的のために、ディスクスペースの必要性が増加した場合にのみカオスを保存および削除することが望ましい)、さらに多くのランダムデータを必要とするさまざまなアプリケーションで便利になります統計指標は、ディスコルディアニズムの信者への素晴らしい提供です。

さて...ちょっとした混乱を避けてみませんか?



All Articles