@@ -42,7 +42,7 @@ The Product Key itself (not to confuse with the RPK) is of form `FFFFF-GGGGG-HHH
42
42
the alphabet ` BCDFGHJKMPQRTVWXY2346789 ` to exclude any characters that can be easily confused, like ` I ` and ` 1 ` or ` O ` and ` 0 ` .
43
43
44
44
As per the alphabet capacity formula, the key can at most contain 114 bits of information.
45
- $$ N = log2 (24^25) ~ 114 $$
45
+ $$ N = \log_2 (24^{25}) \approx 114 $$
46
46
47
47
Based on that calculation, we unpack the 114-bit Product Key into 4 ordered segments:
48
48
@@ -71,11 +71,13 @@ They differ only slightly. Both curves are defined over the finite field, F<sub>
71
71
F<sub >2m</sub > assumes $p = 2m$. Microsoft used the latter in their algorithm.
72
72
73
73
An elliptic curve over the finite field F<sub >p</sub > consists of:
74
- * a set of integer coordinates ${x, y}$, such that $0 <= x, y < p$;
74
+ * a set of integer coordinates ${x, y}$, such that $0 \le x, y < p$;
75
75
* a set of points $y^2 = x^3 + ax + b \mod p$.
76
76
77
77
** An elliptic curve over F<sub >17</sub > would look like this:**
78
78
79
+ ![ F17 Elliptic Curve] ( https://user-images.githubusercontent.com/44542704/230788993-d340f63c-7201-4307-a52c-9bf159b99d02.png )
80
+
79
81
The curve consists of the blue points in above image. In practice the "elliptic curves"
80
82
used in cryptography are "sets of points in square matrix".
81
83
@@ -95,9 +97,9 @@ To create the CD-key generation algorithm we must compute the corresponding priv
95
97
which means we have to reverse-solve the one-way ECC task.
96
98
97
99
Judging by the key exposed in BINK, p is a prime number with a length of ** 384 bits** .
98
- The computation difficulty using the most efficient Pollard's Rho algorithm ($O(\sqrtn )$) would be at least $O(2^168)$, but lucky for us,
100
+ The computation difficulty using the most efficient Pollard's Rho algorithm ($O(\sqrt{n} )$) would be at least $O(2^{ 168} )$, but lucky for us,
99
101
Microsoft limited the value of the signature to 55 bits in order to reduce the amount of matching product keys, reducing the difficulty
100
- to a far more manageable $O(2^28 )$.
102
+ to a far more manageable $O(2^{28} )$.
101
103
102
104
The private key was, of course, conveniently computed before us in just 6 hours on a Celeron 800 machine.
103
105
0 commit comments