Echos der Magie auf der Hut vor den exakten Wissenschaften

Bild

Der Freitagabend rückt näher, die Arbeitswochen der nächsten Schulwoche schleichen sich aggressiv zu ihrem logischen Abschluss, und dies bedeutet, dass Sie den Würgegriff der offiziellen Pflichten nur ein wenig lockern und ein wenig herumlungern können. Und was könnte ansprechender sein, als sich raffinierten Fantasien über die Muster hinzugeben, nach denen diese sterbliche Welt existiert? Absolut nichts ...

Mit diesem Text schlage ich vor, den hohen Grad an Ernsthaftigkeit der meisten Habropublikationen zu verwässern und auf dem Weg von der Arbeit / dem Studium auf dem Stuhl zurückzulehnen, um der Logik einer wahnhaften interessanten Analogie zu folgen, die alle Geheimnisse des Universums (ernsthaft) enthüllt.

Haftungsausschluss. Der Autor fordert in keinem Fall, diesen Beitrag als die ultimative Wahrheit zu betrachten, sondern teilt einfach seinen eigenen Standpunkt (der übrigens je nach Position der Sterne variieren kann). Nun, Kamon, lass mich am Ende träumen!

Hintergrund


Um den Vergleich anstellen zu können, der aus meinem entzündeten Verstand geboren wurde, muss er von weitem beginnen.

Vor ungefähr einem Jahr habe ich einmal ein solches kryptografisches Problem gelöst. Der Höhepunkt des Programms war eine spezielle Ersetzung einer Reihe von Zahlen  overline0,255Wird bei der Quasi-Implementierung des AES-256-Verschlüsselungsalgorithmus verwendet, der aus einer unzerbrechlichen Chiffre einen Haufen nutzloser algebraischer Transformationen machte.

Diese Substitution war wie folgt:

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

In Dezimalform:
Sbox-M Dezimal
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


So starten Sie die Lösung:
  1. Erstellen Sie eine Tabelle mit unterschiedlichen Merkmalen.
  2. Basierend auf den Merkmalen der resultierenden Tabelle (es stellt sich als entartet heraus) schließen wir, dass der „Vorfahr“ der seltsamen Permutation eine affine Funktion ist f(x)=Mx oplusv.

Bevor ich zu der oben beschriebenen korrekten Schlussfolgerung kam, machte ich auf andere Muster aufmerksam, mit denen diese Substitution „lebt“.

Zum Beispiel sind hier nur einige davon ( sbox- die durch das eindimensionale Array angegebene Substitution;  oplus- Additionsoperation Modulo 2 (auch bekannt als XOR)):

  • \ forall i \ in \ {0, 1, 2, 4, 8, 16, 32, 64, 128 \}: sbox [i] = random \ _unique - willkürlich, nicht mit anderen Substitutionselementen übereinstimmend.
  • \ forall i \ in \ {3, 5, 7, 9, 11, 13, 15 \}: sbox [i] = sbox [i-3] \ oplus sbox [i-2] \ oplus sbox [i-1 ]
  • \ forall i \ in \ {6, 10, 14 \}: sbox [i] = sbox [i-6] \ oplus sbox [i-4] \ oplus sbox [i-2]
  • i=12:sbox[i]=sbox[i12] oplussbox[i8] oplussbox[i4]
  •  foralli in overline17,32 cup overline33,48 cup overline65,80 cup overline129,144:sbox[i]=sbox[i17] oplussbox[i16] oplussbox[i1]
  •  foralli in overline80,96 cup overline144,160 cup overline208,224:sbox[i]=sbox[i16] oplussbox[16] oplussbox[0]
  •  foralli in overline96,112 cup overline160,176 cup overline224,240:sbox[i]=sbox[i32] oplussbox[32] oplussbox[0]
  •  foralli in overline192,208:sbox[i]=sbox[i64] oplussbox[64] oplussbox[0]
  •  foralli in overline48,64 cup overline112,128 cup overline176,192 cup overline240,256:sbox[i]=sbox[i48] oplussbox[i32] oplussbox[i16]
  •  ldots

Nun ist es offensichtlich, dass all dies nur ein "Nebeneffekt" ist, die "Konsequenzen" der Anwendung der wahren Methode (unter Verwendung der mathematischen Transformation), um solche Permutationen zu erzeugen.

Bevor ich den richtigen Algorithmus zum Erstellen affiner Sboxen erhielt , war ich so an dieser „magischen Sucht nach drei XORs“ interessiert, dass ich versuchte, eine künstliche Methode für den Empfang dieser Boxen abzuleiten (gefälschte Sboxen ). Und es gelang mir: Ich fand eine ausreichende Anzahl konsistenter Muster (die, wie ich mich erinnere, nur eine Folge der verwendeten mat. Operation sind), um Substitutionen (256 Elemente lang) erzeugen zu können, die wiederum dieselbe entartete Tabelle haben diff. Eigenschaften sowie Permutationen, die auf die „richtige“ Weise konstruiert wurden.

Ein einfacher Algorithmus unter dem Spoiler unten.
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()) 


Zurück zum Träumen


Kehren wir nun zu den Träumen vom Freitag zurück: Stellen Sie sich vor, was wäre, wenn die gesamte derzeit existierende Mathematik nur ein „Nebeneffekt“ einiger Phänomene wäre, die wir noch nicht verstehen konnten? dass meine Geschichte mit affiner Substitution „ein modernes Layout der Wissenschaft in Miniatur“ ist, in dem alle Entdeckungen, die die Menschheit solche Anstrengungen kosten, nur ein Echo der Phänomene sind, die tatsächlich den Ball beherrschen.

In der Tat hat die Menschheit gelernt, selbst die abstraktesten Abschnitte der Mathematik meisterhaft zum Wohle ihrer Bedürfnisse einzusetzen: allgemeine Algebra, mat. Logik, Finite-Feld-Theorie und Zahlentheorie gaben uns eine starke Kryptographie, ohne die die Existenz moderner Internet-Technologien nicht denkbar ist. Große Wissenschaftler haben unzählige Theoreme aufgestellt, eine Vielzahl verschiedener Notationen mit bizarren Symbolen eingeführt und versucht, die „Echos“ der echten „Magie“, die der materiellen Welt zugrunde liegen (nicht?), Zumindest zu systematisieren und zu klassifizieren. Die Menschen haben gelernt, die Konsequenzen grundlegender Gesetze für das Gute anzuwenden, deren wahre Natur wir nicht ein Jota verstehen: Erfolge aus verschiedenen Bereichen der Teilchenphysik sind ein hervorragender Beweis dafür.

Also, warum bin ich das alles? Wenn Sie Ihre Augen schließen und sich vorstellen, welche Art von Veränderungen das Verständnis für die Grundlagen des Funktionierens unserer Welt bringen (wenn nur das miserable Echo der realen Wissenschaft uns alles bringt, was beobachtet werden kann), können Sie in eine Trance angenehmer Gedanken eintauchen am Vorabend des kommenden Wochenendes.

Probieren Sie es aus, Sie werden nicht enttäuscht sein und ein gutes Wochenende haben ╮ (︶ ▽ ︶) ╭

Source: https://habr.com/ru/post/de428702/


All Articles