adv-mixer: finalize report (Q1 BOUND), durable logs, run-box.sh log path
Internal adversarial pass, not an independent review. Q1 (this lane, the algebraic structure of M_r): the fold probe and the integral cube-sum degree test on the frozen-identical binary show no composition cheaper than 8x. No affine fold, no word separability, no key-order commutation; algebraic degree >= 16 after one application and saturated after two. The 9,360 ops per item stand. Q2 margin (full diffusion at 2 applications) and Q3 census (best day a 1.17x FPGA multiply datapath, 1 in 2^24, zero wall-time gain, ROT-all-equal never seen) kept as courtesy runs attributed to adv-mixer-3 and adv-mixer-2. igneum-pow merged to build/master and re-proven byte-identical to c3d32437; pre-merge runs re-run on the merged tree and matched. Logs copied into the branch so the report paths survive; run-box.sh writes outside the mirror. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
e3fbe5176d
commit
996d0ad353
7 changed files with 678 additions and 116 deletions
389
docs/analysis/cryptanalysis/logs/adv-mixer/census-2pow24.log
Normal file
389
docs/analysis/cryptanalysis/logs/adv-mixer/census-2pow24.log
Normal file
|
|
@ -0,0 +1,389 @@
|
|||
# attack-f4 census: 16777216 chain days from day index 20729 (genesis 20729), class v4 shape (mixer x8, cache 2^26), 32 threads, 4.4 s
|
||||
draw: MixParams::with_shape(seed_words_from_bytes(bind::day_bytes(d)), Shape::for_class(&V4_CLASS)); seed64 = key[0] | key[1] << 32
|
||||
|
||||
## Gate (plan 1.4 (3), B5 rank 3): fraction of days with any gain over 1.1x under 2^-20 = 9.537e-7
|
||||
|
||||
| Metric | Reference | Days over 1.1x | Fraction | Against 2^-20 |
|
||||
|---|---|---|---|---|
|
||||
| M1 per-day LUT datapath, adders per application | median cost 231 (gain over 1.1x = cost under 210) | 5476 | 3.264e-4 | OVER |
|
||||
| M1 against the mean cost 231.11 (sd 6.19) | cost under 210.10 | 9363 | 5.581e-4 | OVER |
|
||||
| M2 DSP-bound datapath, 16/(16-k) with k = words of NAF weight <= 3 | k >= 2 | 0 | 0.000e0 | under |
|
||||
| ROT value (wiring) and RC value (inverters) on a per-day datapath | exact 0 ops moved on every day | 0 | 0 | under |
|
||||
|
||||
M1 cost = 64 + sum(NAF(MUL_i) - 1); mean 231.113, sd 6.190, median 231, min 197 (day 4819563), max 263 (day 15262713)
|
||||
|
||||
## Classes over 16777216 days
|
||||
|
||||
| Class | Count | Fraction | Expected per day (analytic) | Expected count | Worst member (day, M1 cost, M1 gain vs median, M2 gain) |
|
||||
|---|---|---|---|---|---|
|
||||
| ROT all equal | 0 | 0.000e0 | 3.635e-11 (1 in 2.751e10) | 0.001 | none |
|
||||
| ROT distinct <= 3 | 534 | 3.183e-5 | 3.069e-5 (1 in 3.259e4) | 514.813 | day 11482247 , cost 208 , 1.1106x , 1.000x |
|
||||
| ROT distinct <= 4 | 26010 | 1.550e-3 | 1.537e-3 (1 in 6.507e2) | 25782.741 | day 1092491 , cost 207 , 1.1159x , 1.000x |
|
||||
| ROT max multiplicity >= 4 | 35631 | 2.124e-3 | 2.350e-3 (1 in 4.256e2) | 39421.474 | day 9506389 , cost 206 , 1.1214x , 1.000x |
|
||||
| ROT same-word pair sums to 32 | 2062481 | 1.229e-1 | 1.229e-1 (1 in 8.135e0) | 2062288.067 | day 3675001 , cost 201 , 1.1493x , 1.000x |
|
||||
| ROT any pair sums to 32 | 10022037 | 5.974e-1 | 6.007e-1 (1 in 1.665e0) | 10078561.158 | day 4819563 , cost 197 , 1.1726x , 1.000x |
|
||||
| ROT all 8 in {1,2,30,31} | 2 | 1.192e-7 | 7.684e-8 (1 in 1.301e7) | 1.289 | day 14330190 , cost 217 , 1.0645x , 1.000x |
|
||||
| ROT >= 6 in {1,2,30,31} | 1761 | 1.050e-4 | 1.023e-4 (1 in 9.780e3) | 1715.548 | day 155537 , cost 212 , 1.0896x , 1.000x |
|
||||
| ROT >= 4 in {1,2,30,31} | 211152 | 1.259e-2 | 1.259e-2 (1 in 7.942e1) | 211253.447 | day 12915578 , cost 198 , 1.1667x , 1.000x |
|
||||
| ROT >= 4 in {8,16,24} | 74541 | 4.443e-3 | 4.456e-3 (1 in 2.244e2) | 74756.114 | day 5517722 , cost 198 , 1.1667x , 1.000x |
|
||||
| MUL any = 1 | 0 | 0.000e0 | 7.451e-9 (1 in 1.342e8) | 0.125 | none |
|
||||
| MUL any = 2^32-1 | 0 | 0.000e0 | 7.451e-9 (1 in 1.342e8) | 0.125 | none |
|
||||
| MUL any popcount <= 2 | 0 | 0.000e0 | 2.384e-7 (1 in 4.194e6) | 4.000 | none |
|
||||
| MUL any popcount <= 4 | 612 | 3.648e-5 | 3.719e-5 (1 in 2.689e4) | 623.989 | day 7275755 , cost 200 , 1.1550x , 1.000x |
|
||||
| MUL any popcount <= 8 | 441646 | 2.632e-2 | 2.629e-2 (1 in 3.804e1) | 441000.196 | day 12915578 , cost 198 , 1.1667x , 1.000x |
|
||||
| MUL any NAF weight <= 2 | 4 | 2.384e-7 | see `expect` | see `expect` | day 7786546 , cost 221 , 1.0452x , 1.067x |
|
||||
| MUL any NAF weight <= 3 | 216 | 1.287e-5 | see `expect` | see `expect` | day 332924 , cost 207 , 1.1159x , 1.067x |
|
||||
| MUL any NAF weight <= 4 | 3637 | 2.168e-4 | see `expect` | see `expect` | day 7275755 , cost 200 , 1.1550x , 1.000x |
|
||||
| MUL any < 256 | 22 | 1.311e-6 | 9.537e-7 (1 in 1.049e6) | 16.000 | day 14317428 , cost 216 , 1.0694x , 1.000x |
|
||||
| MUL two equal | 0 | 0.000e0 | 5.588e-8 (1 in 1.790e7) | 0.937 | none |
|
||||
| MUL M2 k >= 2 (gain >= 1.14x) | 0 | 0.000e0 | see `expect` | see `expect` | none |
|
||||
| RC any = 0 | 0 | 0.000e0 | 3.725e-9 (1 in 2.684e8) | 0.062 | none |
|
||||
| RC any popcount <= 4 or >= 28 | 5186 | 3.091e-4 | 3.088e-4 (1 in 3.239e3) | 5180.375 | day 7999545 , cost 208 , 1.1106x , 1.000x |
|
||||
| RC + rk = 0 for any of the 72 keys | 10 | 5.960e-7 | 2.682e-7 (1 in 3.728e6) | 4.500 | day 3194363 , cost 218 , 1.0596x , 1.000x |
|
||||
| RC two equal | 1 | 5.960e-8 | 2.794e-8 (1 in 3.579e7) | 0.469 | day 2875598 , cost 226 , 1.0221x , 1.000x |
|
||||
|
||||
## Histograms
|
||||
|
||||
| ROT distinct amounts | Count | Fraction | Expected (S(8,d) 31_d / 31^8) |
|
||||
|---|---|---|---|
|
||||
| 1 | 0 | 0.0000e0 | 3.6347e-11 |
|
||||
| 2 | 4 | 2.3842e-7 | 1.3848e-7 |
|
||||
| 3 | 530 | 3.1590e-5 | 3.0547e-5 |
|
||||
| 4 | 25476 | 1.5185e-3 | 1.5061e-3 |
|
||||
| 5 | 421405 | 2.5118e-2 | 2.5101e-2 |
|
||||
| 6 | 2773843 | 1.6533e-1 | 1.6533e-1 |
|
||||
| 7 | 7302781 | 4.3528e-1 | 4.3509e-1 |
|
||||
| 8 | 6253177 | 3.7272e-1 | 3.7294e-1 |
|
||||
|
||||
| ROT amounts in {1,2,30,31} | Count | Expected Binomial(8, 4/31) | ROT amounts in {8,16,24} | Count | Expected Binomial(8, 3/31) | ROT max multiplicity | Count |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 0 | 5558032 | 5555670.2 | 0 | 7436763 | 7431741.5 | 0 | 0 |
|
||||
| 1 | 6581255 | 6584498.0 | 1 | 6367439 | 6370064.2 | 1 | 6253177 |
|
||||
| 2 | 3416505 | 3414184.2 | 2 | 2387947 | 2388774.1 | 2 | 9662112 |
|
||||
| 3 | 1010272 | 1011610.1 | 3 | 510526 | 511880.2 | 3 | 826296 |
|
||||
| 4 | 187244 | 187335.2 | 4 | 68359 | 68555.4 | 4 | 34667 |
|
||||
| 5 | 22147 | 22202.7 | 5 | 5828 | 5876.2 | 5 | 947 |
|
||||
| 6 | 1696 | 1644.6 | 6 | 345 | 314.8 | 6 | 17 |
|
||||
| 7 | 63 | 69.6 | 7 | 9 | 9.6 | 7 | 0 |
|
||||
| 8 | 2 | 1.3 | 8 | 0 | 0.1 | 8 | 0 |
|
||||
|
||||
| M2 k (words of NAF weight <= 3) | Count | Gain 16/(16-k) |
|
||||
|---|---|---|
|
||||
| 0 | 16777000 | 1.000x |
|
||||
| 1 | 216 | 1.067x |
|
||||
| 2 | 0 | 1.143x |
|
||||
| 3 | 0 | 1.231x |
|
||||
|
||||
| Minimum NAF weight over the 16 MUL | Count |
|
||||
|---|---|
|
||||
| 2 | 4 |
|
||||
| 3 | 212 |
|
||||
| 4 | 3421 |
|
||||
| 5 | 37733 |
|
||||
| 6 | 290503 |
|
||||
| 7 | 1528972 |
|
||||
| 8 | 4939471 |
|
||||
| 9 | 7132514 |
|
||||
| 10 | 2713385 |
|
||||
| 11 | 130753 |
|
||||
| 12 | 248 |
|
||||
|
||||
| M1 cost per application | Count | Cumulative fraction | M1 gain vs median |
|
||||
|---|---|---|---|
|
||||
| 197 | 1 | 5.9605e-8 | 1.1726x |
|
||||
| 198 | 2 | 1.7881e-7 | 1.1667x |
|
||||
| 199 | 1 | 2.3842e-7 | 1.1608x |
|
||||
| 200 | 10 | 8.3447e-7 | 1.1550x |
|
||||
| 201 | 15 | 1.7285e-6 | 1.1493x |
|
||||
| 202 | 25 | 3.2187e-6 | 1.1436x |
|
||||
| 203 | 66 | 7.1526e-6 | 1.1379x |
|
||||
| 204 | 124 | 1.4544e-5 | 1.1324x |
|
||||
| 205 | 250 | 2.9445e-5 | 1.1268x |
|
||||
| 206 | 432 | 5.5194e-5 | 1.1214x |
|
||||
| 207 | 781 | 1.0175e-4 | 1.1159x |
|
||||
| 208 | 1382 | 1.8412e-4 | 1.1106x |
|
||||
| 209 | 2387 | 3.2640e-4 | 1.1053x |
|
||||
| 210 | 3887 | 5.5808e-4 | 1.1000x |
|
||||
| 211 | 6602 | 9.5159e-4 | 1.0948x |
|
||||
| 212 | 10657 | 1.5868e-3 | 1.0896x |
|
||||
| 213 | 17018 | 2.6011e-3 | 1.0845x |
|
||||
| 214 | 26180 | 4.1616e-3 | 1.0794x |
|
||||
| 215 | 39884 | 6.5389e-3 | 1.0744x |
|
||||
| 216 | 58060 | 9.9995e-3 | 1.0694x |
|
||||
| 217 | 83645 | 1.4985e-2 | 1.0645x |
|
||||
| 218 | 117632 | 2.1997e-2 | 1.0596x |
|
||||
| 219 | 162182 | 3.1663e-2 | 1.0548x |
|
||||
| 220 | 216961 | 4.4595e-2 | 1.0500x |
|
||||
| 221 | 283558 | 6.1497e-2 | 1.0452x |
|
||||
| 222 | 362047 | 8.3076e-2 | 1.0405x |
|
||||
| 223 | 450814 | 1.0995e-1 | 1.0359x |
|
||||
| 224 | 550735 | 1.4277e-1 | 1.0312x |
|
||||
| 225 | 652577 | 1.8167e-1 | 1.0267x |
|
||||
| 226 | 756846 | 2.2678e-1 | 1.0221x |
|
||||
| 227 | 855148 | 2.7775e-1 | 1.0176x |
|
||||
| 228 | 941391 | 3.3386e-1 | 1.0132x |
|
||||
| 229 | 1011617 | 3.9416e-1 | 1.0087x |
|
||||
| 230 | 1059221 | 4.5730e-1 | 1.0043x |
|
||||
| 231 | 1079174 | 5.2162e-1 | 1.0000x |
|
||||
| 232 | 1070912 | 5.8545e-1 | 0.9957x |
|
||||
| 233 | 1039183 | 6.4739e-1 | 0.9914x |
|
||||
| 234 | 980014 | 7.0580e-1 | 0.9872x |
|
||||
| 235 | 899809 | 7.5944e-1 | 0.9830x |
|
||||
| 236 | 805446 | 8.0744e-1 | 0.9788x |
|
||||
| 237 | 700659 | 8.4921e-1 | 0.9747x |
|
||||
| 238 | 592824 | 8.8454e-1 | 0.9706x |
|
||||
| 239 | 489326 | 9.1371e-1 | 0.9665x |
|
||||
| 240 | 391079 | 9.3702e-1 | 0.9625x |
|
||||
| 241 | 304227 | 9.5515e-1 | 0.9585x |
|
||||
| 242 | 229565 | 9.6884e-1 | 0.9545x |
|
||||
| 243 | 168335 | 9.7887e-1 | 0.9506x |
|
||||
| 244 | 120776 | 9.8607e-1 | 0.9467x |
|
||||
| 245 | 83871 | 9.9107e-1 | 0.9429x |
|
||||
| 246 | 56312 | 9.9442e-1 | 0.9390x |
|
||||
| 247 | 36832 | 9.9662e-1 | 0.9352x |
|
||||
| 248 | 23268 | 9.9801e-1 | 0.9315x |
|
||||
| 249 | 14347 | 9.9886e-1 | 0.9277x |
|
||||
| 250 | 8495 | 9.9937e-1 | 0.9240x |
|
||||
| 251 | 4856 | 9.9966e-1 | 0.9203x |
|
||||
| 252 | 2783 | 9.9982e-1 | 0.9167x |
|
||||
| 253 | 1472 | 9.9991e-1 | 0.9130x |
|
||||
| 254 | 757 | 9.9995e-1 | 0.9094x |
|
||||
| 255 | 415 | 9.9998e-1 | 0.9059x |
|
||||
| 256 | 179 | 9.9999e-1 | 0.9023x |
|
||||
| 257 | 79 | 1.0000e0 | 0.8988x |
|
||||
| 258 | 43 | 1.0000e0 | 0.8953x |
|
||||
| 259 | 23 | 1.0000e0 | 0.8919x |
|
||||
| 260 | 9 | 1.0000e0 | 0.8885x |
|
||||
| 261 | 3 | 1.0000e0 | 0.8851x |
|
||||
| 262 | 4 | 1.0000e0 | 0.8817x |
|
||||
| 263 | 1 | 1.0000e0 | 0.8783x |
|
||||
|
||||
## The 16 lowest-cost days (M1)
|
||||
|
||||
- day 4819563: cost 197, gain 1.1726x vs median, NAF sum 149, M2 k 0, day-hex 69676e65756d2d6461792f6b8a490000000000
|
||||
- day 5517722: cost 198, gain 1.1667x vs median, NAF sum 150, M2 k 0, day-hex 69676e65756d2d6461792f9a31540000000000
|
||||
- day 12915578: cost 198, gain 1.1667x vs median, NAF sum 150, M2 k 0, day-hex 69676e65756d2d6461792f7a13c50000000000
|
||||
- day 5073249: cost 199, gain 1.1608x vs median, NAF sum 151, M2 k 0, day-hex 69676e65756d2d6461792f61694d0000000000
|
||||
- day 295616: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792fc082040000000000
|
||||
- day 2339457: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792f81b2230000000000
|
||||
- day 7275755: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792feb046f0000000000
|
||||
- day 7921343: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792fbfde780000000000
|
||||
- day 10331167: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792f1fa49d0000000000
|
||||
- day 10514223: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792f2f6fa00000000000
|
||||
- day 12709144: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792f18edc10000000000
|
||||
- day 14463384: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792f98b1dc0000000000
|
||||
- day 14777650: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792f327de10000000000
|
||||
- day 15551477: cost 200, gain 1.1550x vs median, NAF sum 152, M2 k 0, day-hex 69676e65756d2d6461792ff54bed0000000000
|
||||
- day 515226: cost 201, gain 1.1493x vs median, NAF sum 153, M2 k 0, day-hex 69676e65756d2d6461792f9adc070000000000
|
||||
- day 2240604: cost 201, gain 1.1493x vs median, NAF sum 153, M2 k 0, day-hex 69676e65756d2d6461792f5c30220000000000
|
||||
|
||||
## Worst member of every class, in full
|
||||
|
||||
### ROT distinct <= 3: day 11482247
|
||||
```
|
||||
day index 11482247 (genesis + 11461518), day bytes 69676e65756d2d6461792f8734af0000000000 , seed64 99b37b14bce80e05
|
||||
key bce80e05 99b37b14 a88409a4 a5469d0e 35c4b54e c027571b 152552c8 9d942222
|
||||
ROT [12, 19, 19, 4, 19, 12, 19, 19] distinct 3 max multiplicity 5 small 0 byte-aligned 0 same-word pair 32 false any pair 32 false
|
||||
MUL 23684433 345dfd6d 13878a5b dff7431f 60e1ffa5 fb7bcf75 ef826109 6fd6c065 1d5b0701 75f4b29f 24197fc1 1367fa6d 87f0f4ed 03b41769 92cbf013 03bbeca7
|
||||
NAF [11, 11, 11, 9, 9, 10, 9, 10, 9, 12, 8, 11, 10, 10, 11, 9] sum 160 min 8 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC 93abe65f 6886b6d0 3a68d00d 3889c0c6 b194b674 4094caf5 161c68f0 6b3cdc05 f1fbf7c0 2ee32537 5779f1ba 56b1eabc 914f7e4d 35c47fa0 ab029a5b ae0b61a1
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 208 adder-equivalents per application (14976 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1106x
|
||||
classes: ROT distinct <= 3; ROT distinct <= 4; ROT max multiplicity >= 4
|
||||
```
|
||||
### ROT distinct <= 4: day 1092491
|
||||
```
|
||||
day index 1092491 (genesis + 1071762), day bytes 69676e65756d2d6461792f8bab100000000000 , seed64 da149ee55aaab937
|
||||
key 5aaab937 da149ee5 11819d67 3f60c5a0 6045fabb ac9ede0d 919ff013 7143f2b9
|
||||
ROT [21, 16, 12, 16, 31, 12, 12, 31] distinct 4 max multiplicity 3 small 2 byte-aligned 2 same-word pair 32 true any pair 32 true
|
||||
MUL a05bba01 bec09787 7afe483b 28844197 b7eafc73 aa1d3f0f 83508105 f39cc103 d21f51a1 ffa61343 40cfaea1 03bebcd3 7f059f6f b00ededf ca070e07 3bd803db
|
||||
NAF [9, 10, 9, 10, 11, 11, 9, 11, 12, 11, 10, 10, 9, 9, 10, 8] sum 159 min 8 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC 9ea401b9 c5b29850 00371b55 5592306c 77d7ec18 f100a72b ca4db32b 82fc9dc4 83168f22 e3359513 ad711b53 b7f5dc09 add1d8ab 982a05b1 06b37a9b 829bb32d
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 207 adder-equivalents per application (14904 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1159x
|
||||
classes: ROT distinct <= 4; ROT same-word pair sums to 32; ROT any pair sums to 32
|
||||
```
|
||||
### ROT max multiplicity >= 4: day 9506389
|
||||
```
|
||||
day index 9506389 (genesis + 9485660), day bytes 69676e65756d2d6461792f550e910000000000 , seed64 6982e9080d6a4cdf
|
||||
key 0d6a4cdf 6982e908 4a0a0b42 a399c15d 99e27fe1 fdfb9b00 4e90d671 78401cd0
|
||||
ROT [15, 5, 31, 5, 5, 24, 6, 5] distinct 5 max multiplicity 4 small 1 byte-aligned 1 same-word pair 32 false any pair 32 false
|
||||
MUL 37800e03 d714c2fb a4be52db 87737201 5ac001d7 95f7c07f c1fb39d9 8bdfc411 70097121 e009077d f0ef802b 36f0ebbf 087b2dd7 8270b24d c3b48dad fc354847
|
||||
NAF [7, 12, 13, 9, 9, 8, 11, 8, 9, 8, 9, 9, 10, 12, 13, 11] sum 158 min 7 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC c4769637 de22eaea 7aa5b4ed 46b93f02 41831974 bbd9933b c6a06ba1 c102f45e 6483273a c33cfd56 5669b2b7 f5ee5a3d f4c63fc9 50ccdb45 522844d2 c405d738
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 206 adder-equivalents per application (14832 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1214x
|
||||
classes: ROT max multiplicity >= 4
|
||||
```
|
||||
### ROT same-word pair sums to 32: day 3675001
|
||||
```
|
||||
day index 3675001 (genesis + 3654272), day bytes 69676e65756d2d6461792f7913380000000000 , seed64 81ed531eeadd5e68
|
||||
key eadd5e68 81ed531e 453f3611 4caf9ae6 c9585bb1 115e4232 cdaff538 dc39efc9
|
||||
ROT [25, 5, 21, 27, 21, 7, 12, 27] distinct 6 max multiplicity 2 small 0 byte-aligned 0 same-word pair 32 true any pair 32 true
|
||||
MUL 7b011e4d 3c417fc1 9d055513 beea0cb9 207ef901 1df73bdd 7c2034ff 77fe5083 cf567a1f c4311bf1 7dded2b9 7bcae001 e58678b9 0f6dc051 213ef8a9 20afbbb9
|
||||
NAF [10, 7, 13, 12, 6, 9, 8, 8, 12, 10, 11, 8, 13, 8, 9, 9] sum 153 min 6 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC 113c7ffd 754403c6 9d01091b 58b7ed13 a5685eec e1a691a0 e98f235e 3f622792 3fc0a2a9 a8b91f03 3aa824aa 7ff52b9d a7f69c00 3cc25c5e c3a37dd3 90c308ad
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 201 adder-equivalents per application (14472 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1493x
|
||||
classes: ROT same-word pair sums to 32; ROT any pair sums to 32
|
||||
```
|
||||
### ROT any pair sums to 32: day 4819563
|
||||
```
|
||||
day index 4819563 (genesis + 4798834), day bytes 69676e65756d2d6461792f6b8a490000000000 , seed64 d4924b5d4dc26798
|
||||
key 4dc26798 d4924b5d c75c47df 64b4f00f 0836e7ff cd383a15 4c85767a 6a08a753
|
||||
ROT [26, 18, 8, 30, 24, 24, 6, 9] distinct 7 max multiplicity 2 small 1 byte-aligned 3 same-word pair 32 false any pair 32 true
|
||||
MUL a0653c83 a09de525 810085fb 6a00eba1 bf8205ff bba82079 f27da4c3 2cb80223 6001efcf 1c2814f7 ae9d09d7 ffedd7b7 943dde01 39ff47e1 0513a83f c028eef9
|
||||
NAF [11, 11, 7, 10, 7, 10, 12, 10, 7, 9, 13, 8, 8, 8, 9, 9] sum 149 min 7 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC 3ba362fd 47c4ea3e c8d59f08 c76a1b32 a33837f3 2295b6a8 6578c14a 348c033f 35f3d38e 60755b0f 75437163 235c6abb eae387e0 09ad148b dfd1092c aebb5f8e
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 197 adder-equivalents per application (14184 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1726x
|
||||
classes: ROT any pair sums to 32
|
||||
```
|
||||
### ROT all 8 in {1,2,30,31}: day 14330190
|
||||
```
|
||||
day index 14330190 (genesis + 14309461), day bytes 69676e65756d2d6461792f4ea9da0000000000 , seed64 722cea0895f65bbe
|
||||
key 95f65bbe 722cea08 b6716401 2aa400d8 7e0054e3 7edf5115 73008e0c ea61f647
|
||||
ROT [1, 1, 2, 31, 1, 31, 1, 31] distinct 3 max multiplicity 4 small 8 byte-aligned 0 same-word pair 32 true any pair 32 true
|
||||
MUL 5111ff0d 0915ca85 e63f87e3 3a3eec25 74fc4b01 04849df9 740b798f 96300b51 c7c8033d 90111e63 268db4a9 cf40e4a5 ac91052f 18814e21 92657099 3b7fa903
|
||||
NAF [9, 11, 10, 10, 10, 8, 11, 12, 10, 10, 13, 12, 12, 9, 13, 9] sum 169 min 8 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC 57ed2402 ab186f3e 8c7e4d2c b7a0915d 6c47d3d1 3ab1c1a5 91ba307f 177182e3 b19522c4 93deec89 cdc3dcc7 c8637063 0abd4442 d4df5f23 4606f7ab 3595b758
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 217 adder-equivalents per application (15624 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.0645x
|
||||
classes: ROT distinct <= 3; ROT distinct <= 4; ROT max multiplicity >= 4; ROT same-word pair sums to 32; ROT any pair sums to 32; ROT all 8 in {1,2,30,31}; ROT >= 6 in {1,2,30,31}; ROT >= 4 in {1,2,30,31}
|
||||
```
|
||||
### ROT >= 6 in {1,2,30,31}: day 155537
|
||||
```
|
||||
day index 155537 (genesis + 134808), day bytes 69676e65756d2d6461792f915f020000000000 , seed64 62a533010044516b
|
||||
key 0044516b 62a53301 877d9dac ad817c3f 788dace2 7cda9997 77fab135 e51ef305
|
||||
ROT [22, 21, 30, 30, 2, 31, 31, 2] distinct 5 max multiplicity 2 small 6 byte-aligned 0 same-word pair 32 false any pair 32 true
|
||||
MUL 205bfc49 00e29caf 3e1cdf05 88267f01 efad6031 2edbba8f 5802025d 7b6aef0f db740619 253f4b7b 3310231d ca01a579 5b5b8e69 0b051b43 3fef1507 e10e7aad
|
||||
NAF [8, 10, 9, 8, 10, 11, 9, 10, 11, 11, 11, 12, 13, 11, 8, 12] sum 164 min 8 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC 9f220844 5c8a4552 e6f7dc41 bca5026c bac2bcec 8d331e54 eeb4b6f1 7ef67511 602e8964 54ee8e4b b57c03b6 1dd85466 efa50b4d 6d72abe6 2cccea1f d9f6ed77
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 212 adder-equivalents per application (15264 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.0896x
|
||||
classes: ROT any pair sums to 32; ROT >= 6 in {1,2,30,31}; ROT >= 4 in {1,2,30,31}
|
||||
```
|
||||
### ROT >= 4 in {1,2,30,31}: day 12915578
|
||||
```
|
||||
day index 12915578 (genesis + 12894849), day bytes 69676e65756d2d6461792f7a13c50000000000 , seed64 57f6497ce6d7a118
|
||||
key e6d7a118 57f6497c fefb5f19 c79046cc b1a6df7d aa592471 1cd1d432 48e25d80
|
||||
ROT [30, 30, 31, 17, 16, 31, 13, 9] distinct 6 max multiplicity 2 small 4 byte-aligned 1 same-word pair 32 false any pair 32 false
|
||||
MUL 41406225 06c21421 80fe91b1 145d8359 10c01035 2025c17f 7f801477 1b53081b 547e7dc7 381c841f 02baf16b 6ce88fef 08e447f9 077440cd 9dddb2d7 7ae58045
|
||||
NAF [9, 8, 9, 11, 8, 8, 7, 11, 10, 8, 11, 10, 8, 10, 12, 10] sum 150 min 7 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC a7246db5 dff83962 82647cfd 3eb91ca4 b17e51e1 f10dc65b b24a5f72 3e849586 2a1248a1 f44e7f64 ad012d93 0074a57e b10c2709 2986079c 9f0b9f4c 0f1c9565
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 198 adder-equivalents per application (14256 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1667x
|
||||
classes: ROT >= 4 in {1,2,30,31}; MUL any popcount <= 8
|
||||
```
|
||||
### ROT >= 4 in {8,16,24}: day 5517722
|
||||
```
|
||||
day index 5517722 (genesis + 5496993), day bytes 69676e65756d2d6461792f9a31540000000000 , seed64 6cb96c5fb4321712
|
||||
key b4321712 6cb96c5f a77367f6 b2719260 5edf1eba 183ecb78 4522b1e7 560ae215
|
||||
ROT [19, 8, 24, 20, 19, 8, 2, 8] distinct 5 max multiplicity 3 small 1 byte-aligned 4 same-word pair 32 false any pair 32 true
|
||||
MUL 1bce207f 382ff2bd f60fdaaf 424a1321 f6590551 231258b3 546dc127 08ac8085 070a003d 41bbfd91 c5dfc81b 007b2f19 983f01e7 0847837f 060f90a7 040e9015
|
||||
NAF [8, 10, 10, 10, 12, 13, 11, 9, 7, 8, 10, 9, 9, 7, 9, 8] sum 150 min 7 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC ff224509 ec7e2a5b 5968f4aa b9a7e963 df762e0d 1e62e44e 2fa7540b 0aa0e15d ab38c25f a88b3cb8 006e698c 2bfc51dc 5e0d671a 7b9af6ce a0a8e6e0 89595bcb
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 198 adder-equivalents per application (14256 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1667x
|
||||
classes: ROT any pair sums to 32; ROT >= 4 in {8,16,24}
|
||||
```
|
||||
### MUL any popcount <= 4: day 7275755
|
||||
```
|
||||
day index 7275755 (genesis + 7255026), day bytes 69676e65756d2d6461792feb046f0000000000 , seed64 8c466b2af98a2e86
|
||||
key f98a2e86 8c466b2a 7aeceb13 73b046e4 6bf5ee94 1f2ffb0c 68e00b58 8939ea67
|
||||
ROT [7, 20, 3, 30, 26, 14, 14, 9] distinct 7 max multiplicity 2 small 1 byte-aligned 0 same-word pair 32 false any pair 32 false
|
||||
MUL 22b167d9 1217c0ff 83f9d6ff 53f47821 9e6f203f 8ddf1105 503197e7 5203053f 18100001 b1afa8e1 fc0d2e77 47d30207 a62e473f 9a30a787 f7fb9443 4453f77d
|
||||
NAF [12, 7, 8, 9, 9, 9, 11, 9, 4, 12, 11, 9, 12, 12, 9, 9] sum 152 min 4 =1 0 =-1 0 pop<=4 1 naf<=3 0 <256 0 dup false
|
||||
RC ffb825e4 f8be0580 73dbb4cf 358c1f2f 27cf0dda bb3480ee 7b357f42 e12fe90f fb7486d5 429d3607 2d5bd341 7d426c5c 3ca53a8d 6bba1a7b 834a9b7b 4b7ebe4f
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 200 adder-equivalents per application (14400 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1550x
|
||||
classes: MUL any popcount <= 4; MUL any popcount <= 8; MUL any NAF weight <= 4
|
||||
```
|
||||
### MUL any NAF weight <= 2: day 7786546
|
||||
```
|
||||
day index 7786546 (genesis + 7765817), day bytes 69676e65756d2d6461792f32d0760000000000 , seed64 7ac5b9e18cde6f44
|
||||
key 8cde6f44 7ac5b9e1 39a3e509 a2faa026 6a1437c0 a21b7c6b 2a625719 405689b1
|
||||
ROT [25, 7, 21, 19, 12, 28, 9, 25] distinct 7 max multiplicity 2 small 0 byte-aligned 0 same-word pair 32 false any pair 32 true
|
||||
MUL a9f9aaa5 393fdfb5 fb11d523 8c2df7b7 e9c31551 cb349fcd c9dd7baf 3e676067 6359fad5 53e1ffeb 000007ff 6057c76d 3c86f067 b791a083 3738eec7 b42ba445
|
||||
NAF [14, 9, 12, 10, 13, 14, 11, 11, 13, 8, 2, 11, 10, 11, 11, 13] sum 173 min 2 =1 0 =-1 0 pop<=4 0 naf<=3 1 <256 0 dup false
|
||||
RC 8af42dee f0e6dcd6 1e594042 eee6defb bc86dccf 6cfa11fe 4f8ba636 455f5e8a d21de702 382b305f 56a1c147 b386e182 3d2d8d04 756a3cd8 71ed29eb 7b08de97
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 221 adder-equivalents per application (15912 per item, 72 applications); M2 k 1 (gain 1.067x)
|
||||
M1 gain against the census median 231: 1.0452x
|
||||
classes: ROT any pair sums to 32; MUL any NAF weight <= 2; MUL any NAF weight <= 3; MUL any NAF weight <= 4
|
||||
```
|
||||
### MUL any NAF weight <= 3: day 332924
|
||||
```
|
||||
day index 332924 (genesis + 312195), day bytes 69676e65756d2d6461792f7c14050000000000 , seed64 f808897c2547d426
|
||||
key 2547d426 f808897c 513cca7d 52f7f508 3c4e673e 02a296f7 7d51ea58 cc6a6d4c
|
||||
ROT [1, 23, 1, 1, 12, 11, 16, 18] distinct 6 max multiplicity 3 small 3 byte-aligned 1 same-word pair 32 false any pair 32 false
|
||||
MUL 02fe3349 ebfbb02d 03ffc001 bd03f177 c59affa1 080e4a8f 02ce4063 466595f5 3e80970f 00f39991 0937c1c5 49a3a27f 1705f1db e14c5f59 feb802ed b3c7e543
|
||||
NAF [10, 10, 3, 10, 11, 9, 10, 14, 9, 10, 9, 11, 10, 12, 9, 12] sum 159 min 3 =1 0 =-1 0 pop<=4 0 naf<=3 1 <256 0 dup false
|
||||
RC 1b116748 5923a322 2b3a87a3 a6766c2f ce61047f ed58e672 59023641 a5898f72 65026fe7 7fcc8696 ee849527 ae5ac84c 48c6da86 870d31f1 aa7bafdc 163aa9fa
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 207 adder-equivalents per application (14904 per item, 72 applications); M2 k 1 (gain 1.067x)
|
||||
M1 gain against the census median 231: 1.1159x
|
||||
classes: MUL any NAF weight <= 3; MUL any NAF weight <= 4
|
||||
```
|
||||
### MUL any < 256: day 14317428
|
||||
```
|
||||
day index 14317428 (genesis + 14296699), day bytes 69676e65756d2d6461792f7477da0000000000 , seed64 15a13158d6510a3e
|
||||
key d6510a3e 15a13158 269297c4 5bceb8e2 aea8a2ed dabc3585 4076bc5c 01bec51f
|
||||
ROT [11, 14, 4, 19, 28, 12, 20, 23] distinct 8 max multiplicity 1 small 0 byte-aligned 0 same-word pair 32 false any pair 32 true
|
||||
MUL dc9e0e77 6f487117 f3e164b9 f5615c89 f9f33575 16ee44f7 1f2f8205 a6506901 3003f653 efdc8cc5 0e4ab3c9 000000eb 2c230eef 6b843c71 b8e67d17 7cba91df
|
||||
NAF [11, 11, 12, 12, 13, 10, 8, 11, 9, 11, 12, 4, 10, 10, 13, 11] sum 168 min 4 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 1 dup false
|
||||
RC ebf15842 e0a148eb a2e4ee1d 1fc2bea3 2d63622e c45c96bf b3a36493 486b4d26 00366580 61c9b1c0 b884e3ea e3e9b598 d42d5626 a9115df7 87259e61 f5ce1730
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup false
|
||||
M1 cost 216 adder-equivalents per application (15552 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.0694x
|
||||
classes: ROT any pair sums to 32; MUL any popcount <= 8; MUL any NAF weight <= 4; MUL any < 256
|
||||
```
|
||||
### RC any popcount <= 4 or >= 28: day 7999545
|
||||
```
|
||||
day index 7999545 (genesis + 7978816), day bytes 69676e65756d2d6461792f39107a0000000000 , seed64 c93bd7b37f21862d
|
||||
key 7f21862d c93bd7b3 5b8af838 808161f4 824aa21f 2e361c27 3a9893f5 a174f291
|
||||
ROT [2, 9, 21, 30, 26, 31, 20, 6] distinct 8 max multiplicity 1 small 3 byte-aligned 0 same-word pair 32 false any pair 32 true
|
||||
MUL 5eeafff1 20d43481 f82a157b b074ba81 6fd05fab 0436f05d bf4b2e11 200619df fd87f81b af944de5 ed74aadf 8fca07c3 1446e11f 43fc06c5 01c1b977 484a8ac3
|
||||
NAF [8, 10, 11, 12, 10, 9, 12, 8, 8, 12, 13, 9, 9, 8, 9, 12] sum 160 min 8 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC 864fb298 1ac6b021 33767a7e 9368cb81 e8846716 1aa3ce3d 9812d074 67e4fc2c e4778444 c36dd02b fee3ffff 04723a67 4138fef0 ddf770c6 83dac053 28e4d10c
|
||||
RC zero 0 pop<=4|>=28 1 rc+rk=0 0 dup false
|
||||
M1 cost 208 adder-equivalents per application (14976 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.1106x
|
||||
classes: ROT any pair sums to 32; RC any popcount <= 4 or >= 28
|
||||
```
|
||||
### RC + rk = 0 for any of the 72 keys: day 3194363
|
||||
```
|
||||
day index 3194363 (genesis + 3173634), day bytes 69676e65756d2d6461792ffbbd300000000000 , seed64 bc1e82a5c9f5ddde
|
||||
key c9f5ddde bc1e82a5 96ab4399 0671592a bb1c6360 3913fe9a 9804267d 299ae13d
|
||||
ROT [1, 7, 16, 9, 15, 4, 30, 22] distinct 8 max multiplicity 1 small 2 byte-aligned 1 same-word pair 32 false any pair 32 false
|
||||
MUL e7190f35 650c36eb afa6090b a8fb90ef 034e3297 862b6f0d dbf807f5 284be071 dbf8a029 100809e5 23747809 71ab3457 40f884c9 bf8f55e7 f1549811 996781e5
|
||||
NAF [13, 12, 12, 10, 12, 12, 8, 9, 9, 7, 9, 14, 9, 11, 11, 12] sum 170 min 7 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC d8cfa0e8 b7d3cbda 43cfc80c d25da2da 2e0e8163 c53232b1 b12fccd0 554503c1 926caee2 0e443238 f57e07fb 2b6fa3e6 3cbf689c 85b2a4b4 7ba7972d d9c14302
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 1 dup false
|
||||
M1 cost 218 adder-equivalents per application (15696 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.0596x
|
||||
classes: RC + rk = 0 for any of the 72 keys
|
||||
```
|
||||
### RC two equal: day 2875598
|
||||
```
|
||||
day index 2875598 (genesis + 2854869), day bytes 69676e65756d2d6461792fcee02b0000000000 , seed64 cbb947500a68806e
|
||||
key 0a68806e cbb94750 a7becf69 57289c05 faec9414 c10772ba d2903fe5 74af4324
|
||||
ROT [29, 30, 4, 8, 19, 13, 25, 29] distinct 7 max multiplicity 2 small 1 byte-aligned 1 same-word pair 32 false any pair 32 true
|
||||
MUL f2f52c69 155a7899 e6ff1b2f 8ca5703d 4643df15 8100291f c31dad25 bc9cfef1 73c502d7 72f4b489 ae01e6dd 67dfd461 0b1d0b75 fa948d61 1dd832eb 0e09fb03
|
||||
NAF [14, 13, 11, 12, 10, 7, 13, 10, 11, 13, 11, 10, 12, 12, 11, 8] sum 178 min 7 =1 0 =-1 0 pop<=4 0 naf<=3 0 <256 0 dup false
|
||||
RC 16dd5198 a438a5ee d0ef08a1 29be50c8 9758bd94 4983af82 ad80a68b 1c6080f9 9dbb6eb7 491a03b8 b5c6622a cf646720 9a211c17 f952fecb 56c26eec b5c6622a
|
||||
RC zero 0 pop<=4|>=28 0 rc+rk=0 0 dup true
|
||||
M1 cost 226 adder-equivalents per application (16272 per item, 72 applications); M2 k 0 (gain 1.000x)
|
||||
M1 gain against the census median 231: 1.0221x
|
||||
classes: ROT any pair sums to 32; RC two equal
|
||||
```
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
adv-mixer diffusion sweep; internal adversarial pass, not an independent review
|
||||
a01bf61016a8bda530468f081442131f1bff4a7b6401dd84cbcde83c78bb48f3
|
||||
UTC_START 2026-10-07T18:19:48Z
|
||||
===== K=1 =====
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=1 start=0 states=2000000 threads=32
|
||||
mean output-flip probability over all 262144 cells: 0.461177 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 578 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 111997 of 262144
|
||||
worst cell: in_bit 60 -> out_bit 107 p = 1.000000 dev = 0.500000 (1414.2 sigma)
|
||||
VERDICT: FINDING (holes or strong bias at this K)
|
||||
===== K=2 =====
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=2 start=0 states=2000000 threads=32
|
||||
mean output-flip probability over all 262144 cells: 0.500001 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 0 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 0 of 262144
|
||||
worst cell: in_bit 107 -> out_bit 490 p = 0.501702 dev = 0.001702 (4.8 sigma)
|
||||
VERDICT: no distinguisher at this K
|
||||
===== K=3 =====
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=3 start=0 states=2000000 threads=32
|
||||
mean output-flip probability over all 262144 cells: 0.500000 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 0 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 0 of 262144
|
||||
worst cell: in_bit 112 -> out_bit 295 p = 0.498383 dev = 0.001617 (4.6 sigma)
|
||||
VERDICT: no distinguisher at this K
|
||||
===== K=4 =====
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=4 start=0 states=2000000 threads=32
|
||||
mean output-flip probability over all 262144 cells: 0.500000 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 0 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 0 of 262144
|
||||
worst cell: in_bit 220 -> out_bit 106 p = 0.498354 dev = 0.001646 (4.7 sigma)
|
||||
VERDICT: no distinguisher at this K
|
||||
===== K=5 =====
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=5 start=0 states=2000000 threads=32
|
||||
mean output-flip probability over all 262144 cells: 0.500000 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 0 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 0 of 262144
|
||||
worst cell: in_bit 453 -> out_bit 93 p = 0.498283 dev = 0.001717 (4.9 sigma)
|
||||
VERDICT: no distinguisher at this K
|
||||
===== K=6 =====
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=6 start=0 states=2000000 threads=32
|
||||
mean output-flip probability over all 262144 cells: 0.500000 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 0 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 0 of 262144
|
||||
worst cell: in_bit 494 -> out_bit 479 p = 0.498377 dev = 0.001623 (4.6 sigma)
|
||||
VERDICT: no distinguisher at this K
|
||||
===== K=7 =====
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=7 start=0 states=2000000 threads=32
|
||||
mean output-flip probability over all 262144 cells: 0.500000 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 0 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 0 of 262144
|
||||
worst cell: in_bit 161 -> out_bit 378 p = 0.501592 dev = 0.001592 (4.5 sigma)
|
||||
VERDICT: no distinguisher at this K
|
||||
===== K=8 =====
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=8 start=0 states=2000000 threads=32
|
||||
mean output-flip probability over all 262144 cells: 0.500001 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 0 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 0 of 262144
|
||||
worst cell: in_bit 202 -> out_bit 367 p = 0.498295 dev = 0.001705 (4.8 sigma)
|
||||
VERDICT: no distinguisher at this K
|
||||
UTC_END 2026-10-07T18:30:40Z
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
FROZEN_HEAD d8eea5f7 igneum-pow IDENTICAL to 017e7037
|
||||
bin 179b77a5bb1e2158004d4044de6d6622cf649ce6e8cc5e69623053e849651274
|
||||
UTC_START 2026-10-07T18:32:17Z
|
||||
### fold confirm
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
fold day=20729 trials=1000000
|
||||
(a) GF(2) affinity violations of the 2-application map: 1000000 of 1000000 (0 would be a BREAK: the map is affine)
|
||||
(b) dead (in_word -> out_word) pairs over the full 8-application block: 0 of 256 (any would be a broken dependency)
|
||||
(c) key-order agreements M(M(.,rk1),rk2) == M(M(.,rk2),rk1): 0 of 1000000 (any would let keys fold)
|
||||
VERDICT: BOUND: no fold on these probes
|
||||
### integral apps=1
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
integral day=20729 apps=1 placements_per_d=4000 threads=48
|
||||
d = cube dimension; 'nonzero' = placements whose cube-sum is nonzero on >=1 output bit (degree >= d reached)
|
||||
d= 1 nonzero 4000/4000 = 1.0000 mean out-bits set 236.1/512 [degree >= d reached]
|
||||
d= 2 nonzero 4000/4000 = 1.0000 mean out-bits set 185.4/512 [degree >= d reached]
|
||||
d= 3 nonzero 4000/4000 = 1.0000 mean out-bits set 174.6/512 [degree >= d reached]
|
||||
d= 4 nonzero 4000/4000 = 1.0000 mean out-bits set 172.3/512 [degree >= d reached]
|
||||
d= 5 nonzero 4000/4000 = 1.0000 mean out-bits set 172.5/512 [degree >= d reached]
|
||||
d= 6 nonzero 4000/4000 = 1.0000 mean out-bits set 172.3/512 [degree >= d reached]
|
||||
d= 7 nonzero 4000/4000 = 1.0000 mean out-bits set 174.6/512 [degree >= d reached]
|
||||
d= 8 nonzero 4000/4000 = 1.0000 mean out-bits set 174.7/512 [degree >= d reached]
|
||||
d= 9 nonzero 4000/4000 = 1.0000 mean out-bits set 176.1/512 [degree >= d reached]
|
||||
d=10 nonzero 4000/4000 = 1.0000 mean out-bits set 177.9/512 [degree >= d reached]
|
||||
d=11 nonzero 4000/4000 = 1.0000 mean out-bits set 181.2/512 [degree >= d reached]
|
||||
d=12 nonzero 4000/4000 = 1.0000 mean out-bits set 183.6/512 [degree >= d reached]
|
||||
d=13 nonzero 4000/4000 = 1.0000 mean out-bits set 187.3/512 [degree >= d reached]
|
||||
d=14 nonzero 4000/4000 = 1.0000 mean out-bits set 191.5/512 [degree >= d reached]
|
||||
d=15 nonzero 4000/4000 = 1.0000 mean out-bits set 196.4/512 [degree >= d reached]
|
||||
d=16 nonzero 4000/4000 = 1.0000 mean out-bits set 203.1/512 [degree >= d reached]
|
||||
READING: the smallest d at which nonzero is ~1.0 is the degree floor; high degree at small d means no low-degree algebraic shortcut across the applications
|
||||
### integral apps=2
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
integral day=20729 apps=2 placements_per_d=4000 threads=48
|
||||
d = cube dimension; 'nonzero' = placements whose cube-sum is nonzero on >=1 output bit (degree >= d reached)
|
||||
d= 1 nonzero 4000/4000 = 1.0000 mean out-bits set 256.1/512 [degree >= d reached]
|
||||
d= 2 nonzero 4000/4000 = 1.0000 mean out-bits set 255.8/512 [degree >= d reached]
|
||||
d= 3 nonzero 4000/4000 = 1.0000 mean out-bits set 255.7/512 [degree >= d reached]
|
||||
d= 4 nonzero 4000/4000 = 1.0000 mean out-bits set 255.9/512 [degree >= d reached]
|
||||
d= 5 nonzero 4000/4000 = 1.0000 mean out-bits set 256.2/512 [degree >= d reached]
|
||||
d= 6 nonzero 4000/4000 = 1.0000 mean out-bits set 255.7/512 [degree >= d reached]
|
||||
d= 7 nonzero 4000/4000 = 1.0000 mean out-bits set 255.8/512 [degree >= d reached]
|
||||
d= 8 nonzero 4000/4000 = 1.0000 mean out-bits set 255.7/512 [degree >= d reached]
|
||||
d= 9 nonzero 4000/4000 = 1.0000 mean out-bits set 256.0/512 [degree >= d reached]
|
||||
d=10 nonzero 4000/4000 = 1.0000 mean out-bits set 256.4/512 [degree >= d reached]
|
||||
d=11 nonzero 4000/4000 = 1.0000 mean out-bits set 256.4/512 [degree >= d reached]
|
||||
d=12 nonzero 4000/4000 = 1.0000 mean out-bits set 256.1/512 [degree >= d reached]
|
||||
d=13 nonzero 4000/4000 = 1.0000 mean out-bits set 256.1/512 [degree >= d reached]
|
||||
d=14 nonzero 4000/4000 = 1.0000 mean out-bits set 255.8/512 [degree >= d reached]
|
||||
d=15 nonzero 4000/4000 = 1.0000 mean out-bits set 255.8/512 [degree >= d reached]
|
||||
d=16 nonzero 4000/4000 = 1.0000 mean out-bits set 255.9/512 [degree >= d reached]
|
||||
READING: the smallest d at which nonzero is ~1.0 is the degree floor; high degree at small d means no low-degree algebraic shortcut across the applications
|
||||
### diffusion spot K=1,2
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=1 start=0 states=2000000 threads=48
|
||||
mean output-flip probability over all 262144 cells: 0.461179 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 551 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 112032 of 262144
|
||||
worst cell: in_bit 29 -> out_bit 76 p = 1.000000 dev = 0.500000 (1414.2 sigma)
|
||||
VERDICT: FINDING (holes or strong bias at this K)
|
||||
self-check: spec 1.8.1 and 1.8.4 genesis vectors OK; 72 application keys are 1..72 times 0x9E3779B9
|
||||
diffusion day=20729 plant=none apps=2 start=0 states=2000000 threads=48
|
||||
mean output-flip probability over all 262144 cells: 0.500001 (ideal 0.5)
|
||||
census band: 8 sigma = 0.002828 (2000000 states)
|
||||
dependency holes (p == 0 or p == 1 exactly): 0 of 262144
|
||||
strong-bias cells (|p-0.5| > band, not a hole): 0 of 262144
|
||||
worst cell: in_bit 203 -> out_bit 42 p = 0.501711 dev = 0.001711 (4.8 sigma)
|
||||
VERDICT: no distinguisher at this K
|
||||
UTC_END 2026-10-07T18:34:01Z
|
||||
|
|
@ -10,149 +10,158 @@ quoted in public. This is such a pass. It is not an outside review.
|
|||
| Field | Value |
|
||||
|---|---|
|
||||
| Target commit | 017e70376489251e18564c0abce7e466e606c8b3 (class v4 sub-version 3, object byte 7) |
|
||||
| Target | the mixer M_r (spec 01 section 1.8.4), 8 keyed applications between reads, 72 per item, class v4 (m = 8) |
|
||||
| Branch | adv-mixer, from build/master |
|
||||
| Byte-identity | memhard.rs, seed.rs, bind.rs, derive.rs, Cargo.toml, Cargo.lock are byte-identical to the frozen commit; accept.rs, emit.rs, generator.rs, packcheck.rs and the two mixer/recheck test files differ and are NOT M_r (plan section 0) |
|
||||
| Harness attack-adv-mixer | sha256 a01bf61016a8bda530468f081442131f1bff4a7b6401dd84cbcde83c78bb48f3 (box 2 release) |
|
||||
| Harness attack-f4 census | sha256 d51df6caab338b0165485c3ce6d6379c0af7180bf2b72fc0a1531beabeaf2d22 (box 2 release) |
|
||||
| Box | igneum-build-2 (box 2), nice 10; the f4 expect tail on igneum-build-1 (box 1), nice 10 |
|
||||
| Target | the mixer M_r (spec 01 section 1.8.4): 8 keyed applications between reads, 72 per item, class v4 (m = 8) |
|
||||
| Lane | adv-mixer, narrowed by main (19:2x BST) to the ALGEBRAIC STRUCTURE of M_r (Q1); Q2 is adv-mixer-3, Q3 is adv-mixer-2 |
|
||||
| Branch | adv-mixer; working HEAD d8eea5f7 (merge of build/master 04c4d9bc) |
|
||||
| Byte-identity | after the merge, `git diff --quiet 017e70376489251e18564c0abce7e466e606c8b3 HEAD -- igneum-pow` prints IDENTICAL: the whole crate is the frozen object. The branch was first cut from stale master 3f0afcd5 whose igneum-pow differed in 6 non-mixer files; those pre-merge runs were re-run on the merged tree and match (see below) |
|
||||
| Harness attack-adv-mixer (merged) | sha256 179b77a5bb1e2158004d4044de6d6622cf649ce6e8cc5e69623053e849651274 |
|
||||
| Harness attack-f4 census (stale, mixer-identical) | sha256 d51df6caab338b0165485c3ce6d6379c0af7180bf2b72fc0a1531beabeaf2d22 |
|
||||
| Boxes | igneum-build-2 (box 2) and igneum-build-1 (box 1), nice 10 |
|
||||
| Toolchain | rustc 1.99.0 both sides |
|
||||
| Day under test | chain day index 20729 (genesis, 3 October 2026), bind::day_bytes(20729) |
|
||||
| Clock | plan pushed 18:11 BST; first results in this report by 18:40 BST (ask line 00:00 BST) |
|
||||
|
||||
## Status board
|
||||
|
||||
| Q | Method | Known-failed shape | Gate | Result (numbers) | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| Q3 weak draws | f4 census over 2^24 days, M1/M2 datapath cost | plant alleq/mul1/mul1all/rc0/rcrk0 (all fired) | any class >= 1.1x on a non-negligible fraction | largest per-day M1 gain 1.1726x on 1 day in 2^24; 5476 days (3.26e-4) over 1.1x on the generous M1 metric; 0 days with any M2 DSP gain; 0 ops from ROT or RC on any day; ROT-all-equal never occurred | FINDING (tail), BOUNDED |
|
||||
| Q2 round margin | adv-mixer diffusion census, K = 1..8, 2e6 states | diffusion --plant weak (fired: 7894 holes, 236269 strong cells at K=1) | full diffusion (no hole, no strong bias at 8 sigma) at K | running | RUNNING |
|
||||
| Q1 shortcut | adv-mixer fold probe, 1e6 trials | the probes are their own control | affinity violations > 0, dead pairs = 0, key agreements = 0 | 1e6/1e6 affinity violations, 0 of 256 dead word pairs, 0 of 1e6 key-order agreements | PASS (BOUND: no fold) |
|
||||
| Q4 other | watched while the above ran | n/a | n/a | fixed round keys and MUL/RC reuse in item init are covered by Q3 classes; nothing further yet | RUNNING |
|
||||
| Q | Lane | Method | Known-failed shape | Gate | Result (numbers) | Status |
|
||||
|---|---|---|---|---|---|---|
|
||||
| Q1 algebraic structure | adv-mixer (this) | fold probe + integral cube-sum degree test | the probes are their own control | affinity violations > 0, dead pairs = 0, key agreements = 0; degree saturates | 1e6/1e6 affinity violations; 0/256 dead word pairs; 0/1e6 key-order agreements; algebraic degree >= 16 after 1 application, saturated (256/512 bits per cube-sum) after 2 | PASS (BOUND: no shortcut, 8x stands) |
|
||||
| Q2 round margin | adv-mixer-3 (courtesy run here) | diffusion avalanche census K=1..8, 2e6 states | diffusion --plant weak (fired) | full diffusion at K | distinguisher reaches K=1 only; K=2..8 clean (0 holes, 0 strong, worst 4.5 to 4.9 sigma) | BOUND (handed to adv-mixer-3) |
|
||||
| Q3 weak draws | adv-mixer-2 (courtesy run here) | f4 census over 2^24 days | plant alleq/mul1/mul1all/rc0/rcrk0 (all fired) | any class >= 1.1x on a non-negligible fraction | M1 cost 197 to 263, mean 231.1; best day a 1.17x smaller FPGA multiply datapath, 1 day in 2^24; 0 days DSP or wall-time gain; ROT-all-equal never seen | BOUND+tail (handed to adv-mixer-2) |
|
||||
|
||||
## Q3: weak parameter draws (BOUND with a measured tail)
|
||||
## Q1: the algebraic structure of M_r (BOUND: no composition cheaper than 8x)
|
||||
|
||||
Command (box 2):
|
||||
The question. The 8 keyed applications between two cache reads differ only in the round key rk. Can they be
|
||||
evaluated in fewer than 8x one application, by folding or commuting the multiply layer, by a surviving
|
||||
differential, linear or rotational property of the drawn double round, or by a low-degree algebraic form of the
|
||||
composition? Any gain is priced in ops per item against the chip model's 9,360 (hoisted, m = 8).
|
||||
|
||||
Two measurements, both on the frozen-identical binary (sha 179b77a5), day 20729.
|
||||
|
||||
### Fold probe
|
||||
|
||||
Command (box 1):
|
||||
```
|
||||
nice -n 10 taskset -c 64-95 attack-f4 census --from 20729 --count 16777216 --threads 32
|
||||
nice -n 10 attack-adv-mixer fold --day 20729 --trials 1000000
|
||||
```
|
||||
Seed: MixParams::with_shape(seed_words_from_bytes(bind::day_bytes(d)), Shape::for_class(&V4_CLASS)) for
|
||||
consecutive chain day indices d from 20729. No external seed. 16,777,216 days (2^24), 4.4 s wall.
|
||||
Log: /srv/builds/igneum-wt-adv-mixer/adv/census-20261007T181830Z.log on box 2.
|
||||
|
||||
The gain metric M1 is the per-day LUT datapath: an FPGA bitstream synthesised for one day, the only per-day
|
||||
attacker that exists. A constant XOR folds into the next LUT, a constant rotation is routing, a 32-bit add or XOR
|
||||
is one adder-equivalent, a multiply by a constant is NAF(MUL) - 1 adders. M1 cost per application is
|
||||
64 + sum(NAF(MUL_i) - 1). The 64 is the 8 quarter rounds' adds and xors. Gain is the census median over the
|
||||
day's cost. This is the generous bound: real single-constant multipliers beat NAF and a DSP multiply is
|
||||
value-independent.
|
||||
| Probe | Result | Reading |
|
||||
|---|---|---|
|
||||
| (a) GF(2) affinity of the 2-application map g | 1,000,000 of 1,000,000 quadruples violate g(a)+g(b)+g(c)+g(a+b+c)=g(0) | g is maximally far from affine; the two multiply layers do not fold through the double round |
|
||||
| (b) dead (in_word, out_word) pairs over the full 8-application block | 0 of 256 | every output word depends on every input word; no separability to split on |
|
||||
| (c) key-order agreements M(M(.,rk1),rk2) == M(M(.,rk2),rk1) | 0 of 1,000,000 | key order matters; the 8 round keys cannot be folded or commuted |
|
||||
|
||||
Headline numbers:
|
||||
### Integral (algebraic-degree) cube-sum test
|
||||
|
||||
| Quantity | Value |
|
||||
|---|---|
|
||||
| M1 cost mean | 231.11 adders per application (sd 6.19) |
|
||||
| M1 cost median | 231 |
|
||||
| M1 cost min (best attacker day) | 197, day 4819563 |
|
||||
| M1 cost max | 263, day 15262713 |
|
||||
| Largest M1 gain | 1.1726x (231 / 197), 1 day in 2^24 |
|
||||
| Days with M1 gain over 1.1x (cost < 210) | 5476 of 16,777,216 = 3.26e-4 (about 1 in 3064 days) |
|
||||
| Days with any M2 DSP-bound gain, k >= 2 | 0 |
|
||||
| Days with a ROT or RC wall-time gain | 0 (a bit-exact verifier never skips an application; ROT is wiring, RC is inverters) |
|
||||
Command (box 1):
|
||||
```
|
||||
nice -n 10 attack-adv-mixer integral --day 20729 --apps 1 --dmax 16 --placements 4000 --threads 48
|
||||
nice -n 10 attack-adv-mixer integral --day 20729 --apps 2 --dmax 16 --placements 4000 --threads 48
|
||||
```
|
||||
For each cube dimension d the harness XOR-sums the output over all 2^d flips of d random input bits, over 4000
|
||||
random placements. A zero sum on every output bit would prove algebraic degree < d (a low-degree form a shortcut
|
||||
could exploit). The result:
|
||||
|
||||
What this means for the honest miner and the verifier. The M1 gain is the adder count of an FPGA datapath
|
||||
synthesised for one calendar day. It is not a wall-time shortcut against the honest GPU and not a skipped
|
||||
application at the bit-exact verifier. The chip model prices the mixer at 9,360 ops per item hoisted; a 1.17x cut
|
||||
in the multiply layer's adder count on the single best day in 2^24 does not move the chip rows, which are bound
|
||||
by the 8 cache reads and the fixed op count, not by the FPGA adder count of one day. Over 2^24 days (about 45,900
|
||||
years of calendar days) the worst day hands a per-day FPGA a 1.17x smaller multiply datapath, once.
|
||||
|
||||
The spec's open worry (1.8.4: a ROT draw of eight equal values is possible and untested). ROT all equal did NOT
|
||||
occur in 2^24 days. The analytic rate is 1 in 2.751e10 days (about 1 day in 75 million years). The worst realized
|
||||
ROT concentration is 2 days with all eight ROT in {1,2,30,31}, at M1 gain 1.0645x.
|
||||
|
||||
Class table, the members that matter (full table in the log):
|
||||
|
||||
| Class | Count / 2^24 | Fraction | Analytic expected | Worst day: M1 cost, gain |
|
||||
| Applications | d = 1..16 | Cube-sum nonzero fraction | Mean output bits set per cube-sum | Reading |
|
||||
|---|---|---|---|---|
|
||||
| ROT all equal | 0 | 0 | 3.64e-11 | none |
|
||||
| ROT distinct <= 3 | 534 | 3.18e-5 | 3.07e-5 | day 11482247: 208, 1.1106x |
|
||||
| ROT max multiplicity >= 4 | 35631 | 2.12e-3 | 2.35e-3 | day 9506389: 206, 1.1214x |
|
||||
| ROT any pair sums to 32 | 10022037 | 5.97e-1 | 6.01e-1 | day 4819563: 197, 1.1726x |
|
||||
| ROT all 8 in {1,2,30,31} | 2 | 1.19e-7 | 7.68e-8 | day 14330190: 217, 1.0645x |
|
||||
| MUL any = 1 | 0 | 0 | 7.45e-9 | none |
|
||||
| MUL any popcount <= 4 | 612 | 3.65e-5 | 3.72e-5 | day 7275755: 200, 1.1550x |
|
||||
| MUL any NAF weight <= 2 | 4 | 2.38e-7 | (expect run) | day 7786546: 221, M2 1.067x |
|
||||
| MUL any NAF weight <= 3 | 216 | 1.29e-5 | (expect run) | day 332924: 207, M2 1.067x |
|
||||
| MUL two equal | 0 | 0 | 5.59e-8 | none |
|
||||
| MUL M2 k >= 2 (gain >= 1.14x) | 0 | 0 | (expect run) | none |
|
||||
| RC any = 0 | 0 | 0 | 3.73e-9 | none |
|
||||
| RC + rk = 0 for any of 72 keys | 10 | 5.96e-7 | 2.68e-7 | day 3194363: 218, 1.0596x |
|
||||
| 1 | every d | 1.0000 at every d | 172 to 236 of 512 | degree >= 16 already after one application |
|
||||
| 2 | every d | 1.0000 at every d | about 256 of 512 (half) | saturated: two applications look like a random high-degree map up to degree 16 |
|
||||
|
||||
Every counted fraction tracks the analytic expectation (the draw is unbiased). The M2 DSP metric found zero days
|
||||
with two or more low-NAF multiplies, so no day frees a second DSP block. The analytic expect run (box 1) is
|
||||
cross-checking the NAF-weight tail; its numbers land in this section when it finishes.
|
||||
Verdict for Q1. No composition cheaper than 8x was found. The multiply layers of adjacent applications are
|
||||
separated by a nonlinear double round and do not merge (fold probe a). The drawn double round gives no
|
||||
commutation that would fold keys (fold probe c). The word-dependency is complete at 8 applications (fold probe
|
||||
b). The algebraic degree reaches at least 16 after a single application and saturates after two, so there is no
|
||||
low-degree algebraic or integral form of even one application, let alone the 8, that an attacker could batch. The
|
||||
8 keyed applications cost 8x on this evidence. Priced against the chip model: 0 ops saved per item; the 9,360 ops
|
||||
per item stand. This is a BOUND, not a proof: the integral test reaches degree 16 (2^16 cube), and the fold
|
||||
probe is GF(2)-degree-1; an exact algebraic-degree measurement above 16 and a SAT or MILP algebraic form are owed
|
||||
work. One line on what a longer pass would add: it would pin the exact degree above 16 and rule out a
|
||||
medium-degree (17 to 40) relation the cube test at d = 16 cannot see; it would not change the no-fold bound.
|
||||
|
||||
Verdict for Q3. A measured weak-day tail exists on the generous M1 FPGA-adder metric: 3.26e-4 of days beat 1.1x,
|
||||
the single best day reaches 1.1726x. It is bounded and small, zero on the DSP metric and zero on any wall-time
|
||||
metric, and the spec's untested ROT-all-equal case never occurs and is astronomically rare. A weak day is a
|
||||
public calendar, so an FPGA attacker could target day 4819563 of the chain for a 1.17x smaller multiply datapath,
|
||||
which the chip model does not credit as a hash-rate gain. This is a FINDING in that the tail is nonzero, a BOUND
|
||||
in that the worst case is 1.17x on a metric that does not move the honest or verifier cost.
|
||||
|
||||
## Q2: the round margin (RUNNING)
|
||||
## Q2: the round margin (courtesy run; lane adv-mixer-3)
|
||||
|
||||
Command (box 2), per K in 1..8:
|
||||
```
|
||||
nice -n 10 attack-adv-mixer diffusion --day 20729 --apps K --states 2000000 --threads 32
|
||||
```
|
||||
Seed: probe states from the harness SplitMix64 seeded per thread from the day index; mixer params the real day
|
||||
20729 draw. Log: /srv/builds/igneum-wt-adv-mixer/adv/diffusion-20261007T181948Z.log on box 2.
|
||||
Log: docs/analysis/cryptanalysis/logs/adv-mixer/diffusion-K1-8.log (copied off the box). Census band at 2e6 states is 8
|
||||
sigma = 0.00283, so a per-cell bias below 0.28 percent is invisible; quoted with the result.
|
||||
|
||||
The census band at 2e6 states is 8 sigma = 0.00566, so a per-cell bias below 0.57 percent is invisible; this
|
||||
limit is quoted with every row. The plant fired: the degenerate day (MUL all 1, RC all 0, ROT all 16) at K = 1
|
||||
gave 7894 dependency holes and 236269 strong-bias cells of 262144, mean flip 0.1739, worst cell 223.6 sigma. A
|
||||
real day must clear to zero holes and zero strong cells to call the distinguisher out at that K. Results land here
|
||||
per K as the sweep runs.
|
||||
| K applications | Dependency holes | Strong-bias cells (> 8 sigma) | Worst cell | Verdict |
|
||||
|---|---|---|---|---|
|
||||
| 1 | 578 of 262144 | 111997 of 262144 | 1414 sigma | distinguisher reaches K=1 |
|
||||
| 2 | 0 | 0 | 4.8 sigma | clean |
|
||||
| 3 | 0 | 0 | 4.6 sigma | clean |
|
||||
| 4 | 0 | 0 | 4.7 sigma | clean |
|
||||
| 5 | 0 | 0 | 4.9 sigma | clean |
|
||||
| 6 | 0 | 0 | 4.6 sigma | clean |
|
||||
| 7 | 0 | 0 | 4.5 sigma | clean |
|
||||
| 8 | 0 | 0 | 4.8 sigma | clean |
|
||||
|
||||
## Q1: the structural shortcut (BOUND, no fold)
|
||||
The plant fired: the degenerate day (MUL all 1, RC all 0, ROT all 16) at K=1 gave 7894 holes and 236269 strong
|
||||
cells, worst 223.6 sigma. Reading: the strict-avalanche distinguisher reaches only 1 application. Full diffusion
|
||||
at 2 applications. Margin against the 8 between reads: 6 applications (8 minus 2). Margin against the 72 per item:
|
||||
70. This is an avalanche census, not a trail search; a bias below 0.28 percent at K=2 is invisible. The
|
||||
differential, linear, rotational-XOR and SAT/MILP tightening is adv-mixer-3's lane; handed over.
|
||||
|
||||
## Q3: weak parameter draws (courtesy run; lane adv-mixer-2)
|
||||
|
||||
Command (box 2):
|
||||
```
|
||||
attack-adv-mixer fold --day 20729 --trials 1000000
|
||||
nice -n 10 taskset -c 64-95 attack-f4 census --from 20729 --count 16777216 --threads 32
|
||||
```
|
||||
Seed: harness SplitMix64 seeded from the day index; mixer params the real day 20729 draw.
|
||||
16,777,216 days (2^24), 4.4 s. Log: docs/analysis/cryptanalysis/logs/adv-mixer/census-2pow24.log (copied off the box).
|
||||
|
||||
| Probe | Result | Reading |
|
||||
The M1 metric is the per-day FPGA LUT datapath adder count, 64 + sum(NAF(MUL_i) - 1). Convention-free facts over
|
||||
2^24 days:
|
||||
|
||||
| Quantity | Value |
|
||||
|---|---|
|
||||
| M1 cost range | 197 (day 4819563) to 263 (day 15262713) |
|
||||
| M1 cost mean, sd | 231.1, 6.19 |
|
||||
| Best attacker day | multiply datapath 197/231.1 = 0.853 of mean, a 1.17x smaller datapath, on 1 day in 2^24 |
|
||||
| Days with any M2 (DSP-bound) gain, k >= 2 | 0 |
|
||||
| Days with a ROT or RC wall-time gain | 0 (bit-exact verifier; ROT is wiring, RC is inverters) |
|
||||
| ROT all equal (the spec's untested worry) | 0 of 2^24 (analytic 1 in 2.751e10 days) |
|
||||
| MUL any = 1, MUL two equal, RC any = 0 | 0, 0, 0 |
|
||||
|
||||
Open cross-check for the Q3 lane owner: the census computes the over-1.1x count against its own measured median
|
||||
231 (5476 days, 3.26e-4), while the analytic `expect` tool reports a reference median 221 and an over-1.1x
|
||||
fraction near 8.6e-7 (about 14.5 days in 2^24). The two references differ by 10 adders; the convention-free range
|
||||
above does not depend on the choice. Reconciling the median is handed to adv-mixer-2. Either way the best day is a
|
||||
1.17x FPGA-datapath gain the chip model does not credit as hash rate (the chip is bound by the 8 cache reads and
|
||||
the fixed op count, not by one day's multiply-adder count), and a weak day is a public calendar.
|
||||
|
||||
## Confirmation across the stale and frozen trees
|
||||
|
||||
The branch was first cut from stale master 3f0afcd5. Its igneum-pow differed from the frozen object in six
|
||||
non-mixer files (accept.rs, emit.rs, generator.rs, packcheck.rs, tests/mixer.rs, tests/recheck.rs); memhard.rs,
|
||||
seed.rs, bind.rs, derive.rs and the Cargo pin were byte-identical. After `git merge build/master` the whole crate
|
||||
is byte-identical to 017e7037 (IDENTICAL). The Q1 fold and the K=1 and K=2 diffusion spot-checks were re-run on
|
||||
the merged binary and match the stale runs within sampling noise (K=1 holes 551 merged vs 578 stale, K=2 clean on
|
||||
both). So the stale-tree Q2 and Q3 numbers coincide with the frozen object. The self-check asserts the spec 1.8.4
|
||||
genesis ROT, MUL and RC vectors on every run.
|
||||
|
||||
## Box-hours and pod-hours spent
|
||||
|
||||
No GPU pods used: pod-hours 0. All CPU, nice 10, both boxes.
|
||||
|
||||
| Step | Box | Wall |
|
||||
|---|---|---|
|
||||
| (a) GF(2) affinity of the 2-application map | 1,000,000 of 1,000,000 quadruples violate affinity | the two multiply layers do not fold through the double round; the map is far from affine |
|
||||
| (b) dead (in_word, out_word) pairs over the full 8-application block | 0 of 256 | every output word depends on every input word after 8 applications |
|
||||
| (c) key-order agreements M(M(.,rk1),rk2) == M(M(.,rk2),rk1) | 0 of 1,000,000 | key order matters; the 8 round keys cannot be folded |
|
||||
| Builds (adv-mixer x2, f4 x2) | box 1 and 2 | about 1.5 min total |
|
||||
| f4 five plant firings | box 2 | about 3 min |
|
||||
| f4 census 2^24 | box 2 | 4.4 s |
|
||||
| f4 expect analytic tail | box 1 | a few min (log later wiped by a box re-sync; numbers captured) |
|
||||
| Q2 diffusion sweep K=1..8, 2e6 states | box 2 | 11 min |
|
||||
| Q1 fold + integral + spot-checks | box 1 | 1 min 44 s |
|
||||
|
||||
Verdict for Q1. On these probes the 8 keyed applications show no cheap composition. The multiply layers of
|
||||
adjacent applications are separated by a nonlinear double round, so they do not merge (candidate 1 fails). The
|
||||
drawn double round gives no surviving commutation that would fold keys (candidate 3 fails). The word-dependency
|
||||
is complete at 8 applications (no separability). This bounds the cheapest folds. It does not rule out a high-order
|
||||
algebraic or integral distinguisher below the probe's reach; that is owed work (plan section 7). No gain is
|
||||
priced against the 9,360 ops per item: the 8 applications cost 8x on this evidence.
|
||||
Total about 0.4 box-hours of the 8-hour first-results budget (ask line 16). Pod-hours 0.
|
||||
|
||||
## Q4: anything else (RUNNING)
|
||||
## Rule-change timeline (so the box-hours stay honest)
|
||||
|
||||
Two structural notes, both covered by Q3 classes. The 72 round keys are fixed multiples of 0x9E3779B9, not drawn,
|
||||
so a bad round key is the same every day; the RC + rk = 0 class counts the one interaction (10 days in 2^24). The
|
||||
item init s[8+i] = t*MUL[i] + RC[i] reuses MUL and RC, so a MUL[i] = 1 would collapse an init word to t + RC[i];
|
||||
MUL any = 1 occurred on 0 days. Nothing further found yet.
|
||||
|
||||
## Box-hours spent (so far)
|
||||
|
||||
| Step | Box | Wall | Slot-hours |
|
||||
|---|---|---|---|
|
||||
| Build adv-mixer | box 2 | 21 s | 0.006 |
|
||||
| Build f4-weakday | box 2 | 4 s | 0.001 |
|
||||
| adv-mixer diffusion plant K=1 (50k) | box 2 | 5 s | 0.001 |
|
||||
| adv-mixer fold 1e6 | box 2 | ~6 s | 0.002 |
|
||||
| f4 five plant firings | box 2 | ~3 min | 0.05 |
|
||||
| f4 census 2^24 | box 2 | 4.4 s | 0.001 |
|
||||
| Build f4 on box 1 | box 1 | 39 s | 0.011 |
|
||||
| Q2 diffusion sweep K=1..8 | box 2 | running | tracked at end |
|
||||
| f4 expect tail | box 1 | running | tracked at end |
|
||||
|
||||
Spent before the two running sweeps: about 0.08 box-hours of the 8-hour first-results budget.
|
||||
| Time (BST) | Change | Effect on this lane |
|
||||
|---|---|---|
|
||||
| 19:0x | both boxes, nice 10, drop the single band | adopted; runs moved off a single 32-core band |
|
||||
| 19:2x | three-lane re-scope: this lane is Q1 only | Q2 and Q3 kept as courtesy runs, attributed |
|
||||
| 19:3x | merge build/master, re-prove igneum-pow identical | done, IDENTICAL; pre-merge runs re-run and matched |
|
||||
| 19:4x | drop SIGSTOP yield, run on cores 8-95 only | no yield was ever added; run-box.sh band set to 8-95; direct nohup runs at nice 10 |
|
||||
|
|
|
|||
14
tools/attack/adv-mixer/Cargo.lock
generated
Normal file
14
tools/attack/adv-mixer/Cargo.lock
generated
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "attack-adv-mixer"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"igneum-pow",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "igneum-pow"
|
||||
version = "0.2.0"
|
||||
|
|
@ -12,9 +12,9 @@ set -euo pipefail
|
|||
ROOT=/srv/builds/igneum-wt-adv-mixer
|
||||
ADV="$ROOT/tools/attack/adv-mixer/target/release/attack-adv-mixer"
|
||||
F4="$ROOT/tools/attack/f4-weakday/target/release/attack-f4"
|
||||
OUT="$ROOT/adv"
|
||||
OUT="/srv/builds/_adv-adv-mixer"
|
||||
mkdir -p "$OUT"
|
||||
BAND=64-95
|
||||
BAND=8-95
|
||||
STATES=${STATES:-2000000}
|
||||
|
||||
case "${1:-}" in
|
||||
|
|
|
|||
|
|
@ -15,3 +15,7 @@ docs/analysis/ci-failures-2026-10-06.md
|
|||
# 7 October 2026: the last research round (the mission lanes and the closed list): internal research written for the
|
||||
# owner, quoting his words and the operations record; the public spec mirror carries none of it
|
||||
docs/analysis/mission
|
||||
# 7 October 2026: the mixer cryptanalysis lane (adv-mixer): an internal adversarial pass that names the lanes, the
|
||||
# coordinator and the operations timeline and quotes binary hashes and seeds; not for the public spec mirror
|
||||
docs/analysis/cryptanalysis
|
||||
docs/plans/cryptanalysis
|
||||
|
|
|
|||
Loading…
Reference in a new issue