正確な科学を守る魔法のエコー

画像






金曜日の夕方が近づいており、次の週の就業週は論理的な結論に向かって積極的に忍び寄っています。 そして、この死すべき世界が存在するパターンについて洗練された空想にふけるよりも魅力的なものは何でしょうか? 絶対に何もない...



このテキストで、私はほとんどのhabropublicationsの高度の深刻さを薄め、そして彼の椅子に/仕事/研究からの途中で傾いて、宇宙のすべての秘密を明らかにする1つの妄想的な興味深い類推の論理に従うことを提案します。



免責事項 著者は、この投稿を究極の真実と見なすことを決して求めませんが、自分の視点を共有しています(ちなみに、これは星の位置によって異なる場合があります)。 さて、カモン、最後に夢を見てみましょう!


背景



私の燃え上がった心から生まれた比較をするためには、遠くから始めなければなりません。



1年ほど前に、私はそのような暗号の問題を解決していました。 プログラムのハイライトは、一連の数値の特別な置換でした \上0255 AES-256暗号化アルゴリズムの準実装で使用され、解読不能な暗号を無駄な代数変換の山に変えました。



この置換は次のとおりです。



2b c4 4d a2 76 99 10 ff 56 b9 30 df 0b e4 6d 82

db 34 bd 52 86 69 e0 0f a6 49 c0 2f fb 14 9d 72

95 7a f3 1c c8 27 ae 41 e8 07 8e 61 b5 5a d3 3c

65 8a 03 ec 38 d7 5e b1 18 f7 7e 91 45 aa 23 cc

cb 24 ad 42 96 79 f0 1f b6 59 d0 3f eb 04 8d 62

3b d4 5d b2 66 89 00 ef 46 a9 20 cf 1b f4 7d 92

75 9a 13 fc 28 c7 4e a1 08 e7 6e 81 55 ba 33 dc

85 6a e3 0c d8 37 be 51 f8 17 9e 71 a5 4a c3 2c

6f 80 09 e6 32 dd 54 bb 12 fd 74 9b 4f a0 29 c6

9f 70 f9 16 c2 2d a4 4b e2 0d 84 6b bf 50 d9 36

d1 3e b7 58 8c 63 ea 05 ac 43 ca 25 f1 1e 97 78

21 ce 47 a8 7c 93 1a f5 5c b3 3a d5 01 ee 67 88

8f 60 e9 06 d2 3d b4 5b f2 1d 94 7b af 40 c9 26

7f 90 19 f6 22 cd 44 ab 02 ed 64 8b 5f b0 39 d6

31 de 57 b8 6c 83 0a e5 4c a3 2a c5 11 fe 77 98

c1 2e a7 48 9c 73 fa 15 bc 53 da 35 e1 0e 87 68







10進数形式:

Sbox-M 10進数
43 196 77 162 118 153 16 255

86 185 48 223 11 228 109 130

219 52 189 82 134 105 224 15

166 73 192 47 251 20 157 114

149 122 243 28 200 39 174 65

232 7 142 97 181 90 211 60

101 138 3 236 56 215 94 177

24 247 126 145 69 170 35 204

203 36 173 66 150 121 240 31

182 89 208 63 235 4 141 98

59 212 93 178 102 137 0 239

70 169 32 207 27 244 125 146

117 154 19 252 40 199 78 161

8 231 110 129 85 186 51 220

133 106 227 12 216 55 190 81

248 23 158 113 165 74 195 44

111 128 9 230 50 221 84 187

18 253 116 155 79 160 41 198

159 112 249 22 194 45 164 75

226 13 132 107 191 80 217 54

209 62 183 88 140 99 234 5

172 67 202 37 241 30 151 120

33 206 71 168 124 147 26 245

92 179 58 213 1 238 103 136

143 96 233 6 210 61 180 91

242 29 148 123 175 64 201 38

127 144 25 246 34 205 68 171

2 237 100 139 95 176 57 214

49 222 87 184 108 131 10 229

76 163 42 197 17 254 119 152

193 46 167 72 156 115 250 21

188 83 218 53 225 14 135 104









ソリューションの開始方法:

  1. 微分特性の表を作成します。
  2. 結果のテーブルの特徴に基づいて(退化することが判明)、奇妙な置換の「祖先」は次の形式のアフィン関数であると結論付けます。 fx=Mx oplusv


上記の正しい結論に至る前に、この置換が「生きる」他のパターンに注意を向けました。



たとえば、ここにそれらのほんの一部( sbox -1次元配列で指定された置換。  oplus -2を法とする加算演算(別名XOR)):





これは、すべてが単なる「副作用」であり、そのような置換を生成するために真の方法を適用する(数学的変換を使用する)「結果」であることは明らかです。



アフィンSboxを構築するための正しいアルゴリズムを取得する前に、私はこの「3つのXORの魔法中毒」に非常に興味があったので、それらを受け取る人工的な方法(偽のSbox )を推測しようとしました。 そして、私は成功しました:十分な数の一貫したパターンを見つけました(これマットの結果にすぎないことを思い出します。使用された操作)置換(256要素の長さ)を生成することができます。 diff。 特性、および「正しい」方法で構築された置換。



以下のネタバレにある単純なアルゴリズム。

emulate_affine_sbox.py
 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # Usage: python3 emulate_affine_sbox.py from random import sample from itertools import product def xor(x, y, z): """   XOR'.""" return x ^ y ^ z def next_unique(rnd_sample, sbox): """    rnd_sample,       sbox. """ while True: front = rnd_sample.pop() if front not in sbox: return front def emulate_affine_sbox_generation(): """    sbox.""" rnd_sample = sample(range(256), 256) sbox = [-1] * 256 # 0..16 for i in range(0, 16): if (i == 0 or i == 1 or i == 2 or i == 4 or i == 8): sbox[i] = next_unique(rnd_sample, sbox) elif (i == 3 or i == 5 or i == 7 or i == 9 or i == 11 or i == 13 or i == 15): sbox[i] = xor(sbox[i-3] ,sbox[i-2], sbox[i-1]) elif (i == 6 or i == 10 or i == 14): sbox[i] = xor(sbox[i-6], sbox[i-4], sbox[i-2]) elif (i == 12): sbox[i] = xor(sbox[i-12], sbox[i-8], sbox[i-4]) # 16..256 for i in range(16, 256): if (i == 16 or i == 32 or i == 64 or i == 128): sbox[i] = next_unique(rnd_sample, sbox) elif (i in range(17, 32) or i in range(33, 48) or i in range(65, 80) or i in range(129, 144)): sbox[i] = xor(sbox[i-17], sbox[i-1], sbox[i-16]) elif (i in range(80, 96) or i in range(144, 160) or i in range(208, 224)): sbox[i] = xor(sbox[i-16], sbox[16], sbox[0]) elif (i in range(96, 112) or i in range(160, 176) or i in range(224, 240)): sbox[i] = xor(sbox[i-32], sbox[32], sbox[0]) elif (i in range(192, 208)): sbox[i] = xor(sbox[i-64], sbox[64], sbox[0]) elif (i in range(48, 64) or i in range(112, 128) or i in range(176, 192) or i in range(240, 256)): sbox[i] = xor(sbox[i-48], sbox[i-32], sbox[i-16]) if not any_duplicates(sbox) and is_sbox_degenerate(sbox): return sbox return None def any_duplicates(sbox): """ True  ,  sbox   ,  - False. """ seen = set() for item in sbox: if item not in seen: seen.add(item) else: return True return False def is_sbox_degenerate(sbox): """ True  ,  sbox ,  - False.""" length = len(sbox) diff_table = [[0] * length for _ in range(length)] for c, d in product( *([list(range(length))]*2) ): diff_table[c ^ d][sbox[c] ^ sbox[d]] += 1 count_prob = 0 for c, d in product( *([list(range(length))]*2) ): if diff_table[c][d] == length: count_prob += 1 return count_prob == length if __name__ == '__main__': print(emulate_affine_sbox_generation())
      
      







夢に戻る



さて、金曜日の夢に戻りましょう。現在のすべての数学が、まだ理解できていないいくつかの現象の単なる「副作用」であるとしたらどうでしょうか。 アフィン置換の私の話は「ミニチュアの科学の現代レイアウト」であり、人類にそのような努力を要するすべての発見は、実際にボールを支配している現象のエコーにすぎません。



確かに、人類は、数学の最も抽象的なセクションでさえ、そのニーズの利益のために見事に使用することを学んだ:一般代数、マット。 論理、有限体理論、および数論により強力な暗号が得られましたが、それなしでは現代のインターネット技術の存在は考えられません。 偉大な科学者たちは、無数の定理を生み出し、奇妙なアイコンで無数の異なる表記法を導入し、少なくとも「世界」の根底にある「魔法」の「エコー」を体系化し、分類しようとしました。 人々は基本法則の結果を善に適用することを学びましたが、その本質は1つのイオタを理解していません:素粒子物理学のさまざまな分野からの成功はこれの優れた証拠です。



だから、私はこれをすべてやっています:あなたが目を閉じて、 どのような変化が私たちの世界の機能のまさに基礎の理解をもたらす想像すると( 実際の科学の悲惨なエコーだけが私たちの周りに観察できるすべてをもたらすなら)、あなたは楽しい思考のトランスに突入することができます次の週末の前夜に。



それを試して、あなたは失望することはなく、良い週末を過ごしますhave()▽))╭



All Articles