forked from miracl/MIRACL
-
Notifications
You must be signed in to change notification settings - Fork 0
/
update.txt
453 lines (278 loc) · 13.7 KB
/
update.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
Version 4.0
The main changes from the earlier version 3.xx is the introduction of the
MIP, Miracl Instance Pointer. This is to facilitate the development of
multi-threaded applications. The manual has been updated, and a few small
bugs dealt with.
From a programmers point of view, the main change is that previously Global
variables like IOBASE, must now be accessed via the MIP, so
IOBASE=16;
gets replaced by
mip->IOBASE=16;
The MIP itself is returned by mirsys(), so
mirsys(200,256);
now becomes
miracl *mip=mirsys(200,256);
Version 4.01
New example programs pk-demo.c and pk-demo.cpp demonstrate popular public key
methods, viz. The Diffie-Hellman key exchange, and the RSA public key system
Version 4.1
Support for Elliptic Curve PK Crypto systems. New fast Elliptic Curve module
mrcurve.c. This will be very fast on an 32-bit Pentium+ if for example MR_COMBA
is defined as 5 in mirdef.h for 160-bit curve (5*32 = 160)
Implementation of Elliptic Curve variant of the Digital Signature Standard.
Montgomery arithmetic now used more extensively internally.
pk-demo.c/cpp now also implements Elliptic Curve key exchange, and the El
Gamal PK method.
Version 4.1.1
In mrprime.c -
New trial_divison() function - dual purpose routine to quickly test primality
status of a big integer.
New nxsafeprime() function - speeds up search for so-called safe primes,
for example a prime p for which (p-1)/2 is also prime.
New Lucus exponentiation module mrlucas.c
Version 4.1.2
Implementation of Complex Multiplication method for the generation of Elliptic
curves (the previously used method has been shown to generate weak curves).
This was implemented from description in Annex to IEEE P1363
Note the free executable CM.EXE
Version V4.1.3
Inline assembly support for DJGPP C/C++ Compiler.
Version V4.1.4
New module for implementing Brickell et al's method for exponentiation with
precomputation.
New facility for user-specified function called periodically by time-
consuming MIRACL functions. Useful for doing a Windows message-pump, or
responding to real-time events. See set_user_function().
Version V4.1.5
New multiple-exponentiation program powmodn(), calculates
a^b.c^d.e^f....x^y mod n. Also ecurve_multn() which does the same for
elliptic curves.
Brickel et al method extended to Elliptic curves.
Version V4.2.0
C version of KCM method implemented. Might be advantageous for extreme RISC
processors with no integer multiply instruction. Ask for C only build in
config program (you will need to specify a double length type), and follow
instructions.
Elliptic curve point multiplication speeded up a bit.
C only code improved. Interesting to note that the 32-bit Microsoft C compiler
- using __int64 as a double length type - now generates code that is nearly as
fast as optimized assembly language (with /O2 flag).
New low level routine muldvd2() introduced - speeds up time critical loops.
See mrmuldv.any
Version V4.2.1
New bmark.c benchmarking program. Shows timings for typical public key crypto
methods. Useful for comparing MIRACL with other Libraries, and for determining
the optimal MIRACL build for a particular application.
MIRACL routine entry and exit tidied up, and skipped if MR_STRIPPED_DOWN
is defined.
Version 4.2.2
Implementation of AES encryption algorithm (in fact RIJNDAEL). This is a
"place-holder" for now until actual AES winner is decided.
Implementation of Cramer-Shoup PK algorithm - see files
crencode.cpp/crdecode.cpp/crsetup.cpp/crgen.cpp
.. and Schoof's algorithm! Counts number of rational points
on an elliptic curve defined over the field GF(p).
Note the free Windows Command Prompt executable SCHOOF.EXE, available from
download site
Version 4.2.3
Implementation of Schoof-Elkies-Atkin algorithm , for more efficient
elliptic curve point-counting. Again free Windows Command Prompt executables
(MUELLER.EXE, PROCESS.EXE and SEA.EXE) are available for download.
Version 4.2.4
Schoof and Schoof-Elkies-Atkin algorithm implementations greatly optimized.
Version 4.3.0
Support for Elliptic Curve Cryptography over GF(2^m). ECDSA implemented for
same - see ecsgen2.c ecsign2.c ecsver2.c.
The C++ class is implemented in ec2.h and ec2.cpp
Also Schoof's algorithm for point-counting over GF(2^m) curves
Version 4.4.0
By popular demand! Multi-threaded support. Read the new section in the manual
Version 4.4.1
new routines bytes_to_big(), big_to_bytes() for easy conversion between pure
binary and bigs. Also strong_bigrand() for ease of access to cryptographically
strong big numbers
Version 4.4.2
New P1363 wrapper/DLL introduced. Lim-Lee prime generation. General tidy-up,
and more installation help.
Version 4.4.3
Fuller support for new AES (we were right - it was Rijndael). Also
implemenations of the Lim-Lee algorithm for generating primes, and
implementations of the new SHA-256, SHA-384 and SHA512 hashing algorithms.
Version 4.4.3a
Maintainance release. A few bug fixes. Domain data in
common.dss/common.ecs/common2.ecs is now in Hex, as Hex is used in the
standards documents. Schoof fixed for anomalous curves.
New section on error messages in the manual. I/O buffer size is now set
dynamically via set_io_buffer_size() routine - no longer fixed in mirdef.h
Version 4.5
New mechanisms for implementing fastest embedded code. The Comba and KCM
methods have been extended and supported for more compiler/processor
combinations. Through the use of the Macro EXpansion program MEX.C macros
can be inserted into supplied templates. If your compiler supports in-line
assembly, this is probably the mechanism to use for best performance on
embedded processors. See kcmcomba.txt for more details.
Version 4.6
Internal structure of big numbers changed, from an array to a simple
struct. Memory alignment problems solved. Support for use of floating-point
"double" type - see double.txt. More IEEE 1363 and P1363a support.
Version 4.6.1
Implementation of Boneh & Franklin's IBE Identity Based Encryption
Version 4.6.2
Extended GCD algorithm speeded by 70%. Some minor bugs dealt with.
Version 4.6.3
Jacobi symbol algorithm substantially speeded up. New program imratio.c
calculates S/M, I/M and J/M ratios
Version 4.6.4
New fast method for assigning C++ Big objects from the stack
Version 4.6.5
New alternative Comba/Kcm macros that "interleave" multiplication steps. This
should be faster on modern load/store architectures. See makemcs.txt
Complex Multiplication utility for counting points on elliptic curves greatly
improved. Comba/Kcm macros for 32-bit SPARC implemented - see sparc.txt and
sparc.mcs. Double base-type code debugged/optimized. Optimizer problem with
Gnu GCC solved.
Version 4.7
New improved and updated IEEE 1363 support.
Version 4.7.1
New P1363a primitives and methods - DLPSP-NR2/PV, DLSP-NR2, DLVP-NR2,
DLSP-PV, DLVP-PV, ECPSP-NR2/PV, ECSP-NR2, ECVP-NR2, ECSP-PV, ECVP-PV,
EMSA4, EMSR1, EMSR2, EMSR3, DLSSR, DLSSR-PV, IFSSR
New functions memalloc,memkill and mirvar_mem. When many big variables need to
be created in a C program multiple calls to mirvar can be slow. Better to
allocate space for all in one heap access. See brent.c and p1363.c for an
example of use.
Version 4.7.2
Cryptographically Strong Pseudo Random Number Generator interface improved.
See test1363.c and p1363.c for example of use. It is now possible to allocate
bigs in C programs from the stack - see brute.c for an example
Version 4.7.3
New style C++ I/O headers supported. C function "round" renamed to "mround",
"negate" to "negify", to avoid GCC 3.2 name clashes
Version 4.7.4
Base64 I/O supported. Just set IOBASE=64 before input/output
Version 4.7.5
config.c fixed for chars > 8 bits. Elliptic curve point comparison speeded up.
Minor bug fixes. GCC 3.3 support
Version 4.8
Miracl header files now accessed via "*.h" rather than <*.h> (following
numerous complaints!) Very minor changes... Example implementation of Cock's
ID based PK scheme
Version 4.8.1
New Floating Point class - see float.h and float.cpp, and read float.txt. Uses
asymptotically fast FFT methods, so efficient for very high precision
calculation. New CM program - see cm.cpp and cm.txt. Up to 50 times faster.
Version 4.8.2
Full support for Itanium processor.
Version 4.8.3
Support for AMD64 processor. Problem with GCC -O2 optimizer fixed. Some new
experimental code for pairings - see ake.txt
Version 4.8.4
Support for SSE2 Pentium 4 extensions. Up to 60% faster on a PC! See sse2.txt
For example use sse2.mcs to create much faster CM.EXE utility - see cm.txt
New support for ARM using GCC compiler.
Version 4.8.5
Faster C++ wrapper code. Compiler flags /DGF2MS=n and /DZZNS=n speed up
programs substantially by allocating from the stack. Some files renamed.
Version 5.0.0
New support for very constrained environments. It is now possible to build
a miracl library which does not require a heap. Space for big variables can
now be claimed from the stack. Internal functions have been reorganised to
facilitate these changes. More #define options now allow for a smaller
library to be built. These changes apply to both C and C++ programs. See
section 2.4 of the manual for more details.
Version 5.0.1
Minor bug fixes
Version 5.0.2
Precomputation methods updated and improved. Now uses the standard Comb
method, as described in Handbook of Applied Cryptography. Much faster.
When using precomputation the user now specifies the window size -
which allows control over the time-space trade-off.
Version 5.1.0
Support for Koblitz curves. This is completely transparent - the user does
nothing. See the output of bmark program to see speed-up acheived. Change
from IEEE to Lopez-Dahab coordinates for EC(F_2^m}. Significantly faster.
Version 5.2.0
ZZn2 arithmetic now absorbed into MIRACL C library, resulting in faster
pairings. New Lazy reduction algorithm for ZZn2 multiplications, fully
supported by COMBA mechanisms.
Version 5.2.1
Full support for PowerPC G5 64-bit processor
Version 5.2.2
OpenMP supported for multi-core programming - see threadmp.cpp. New small,
fast ECDH example programs ecdh2m.c ecdhp.c (for 32-bit processors) and
ecdh2m16.c (for 16-bit processors). This last is ideal for low powered
wireless sensor networks.
Version 5.3
New program irp.cpp to automatically generate optimal code for insertion
in the reduce2(.) function in mrecgf2m.c
The program findbase.cpp to find the "best" irreducible polynomial, has
been updated.
New program newbasis.cpp converts a value from one irreducible polynomial
representation to another.
New support for 8-bit MIRACL, and for tiny architectures like Atmel AVR
ATmega128. This Atmel device is commonly used in Wireless Sensor Networks.
See ecdh2m8.c and ecdhp8.c and avr.mcs
New mirdef.h option #define MR_SMALL_EWINDOW which if defined uses a
smaller sliding window for elliptic curve point multiplication, which is a
space-time trade off. Useful when RAM is under pressure..
Also MR_SIMPLE_IO for simple input/output (no base changes, no file I/O,
only input from ROM, and I/O as binary bytes)
And MR_NO_RAND to disable and remove the built in random number generator.
MR_STATIC is now interpreted as a request for the minimum possible code
size, and if it is defined, many rarely used routines are removed.
Version 5.3.1
Module mrecgf2m.c split into mrgf2m.c and mrec2m.c
New amd64.mcs file for very fast 64-bit performance on AMD and newer Intel
processors. See amd64.txt. New Hybrid method for multiplication - experimental.
See amd64.mcs, avr2.mcs and avr4.mcs for some example code.
Version 5.3.2
Support for Pseudo Mersenne Prime moduli of the form 2^n-c, where n is a
multiple of the word length, and c is a small constant. See ecdhp32.c
for an example of use. Improved support for ARM processor.
Version 5.3.3
Solinas's Joint Sparse Form now used for elliptic curve double addition.
New C support for E(Fp^2) elliptic curves. Implementation of the R-ate pairing.
New smaller/faster jacobi symbol code. New utilities romaker.c and romaker2.c
to automatically generate ROMs and precomputed values for elliptic curves.
Version 5.4
Edwards Curves now supported - see edwards.txt
Full support for Win64 applications (64-bit windows)
Some minor improvements to pairings. Some new pairings supported.
Version 5.4.1
New faster pairing implementations - using better extension field towerings.
Some bug fixes
Version 5.4.2
New pairing implementation at high security levels (AES-192 -ake18kssx.cpp).
Some bug fixes. Support for .NET managed code - see managed.txt
Version 5.4.3
Support for AES-GCM mode of operation. See aesgcm.txt and new module mrgcm.c
Precompiled libraries are no longer included in the distribution.
Version 5.4.4
New pairing implementation at high security levels (AES-256 - ake24blsa.cpp).
Some bug fixes in pairing code.
Version 5.5
New high level interface for implementing pairing-based protocols.
See pairings.txt
Protocols can be implemented very succinctly, at various security levels,
and with realistic timings. All known optimizations used.
Many example schemes from P1363.3 implemented.
Version 5.5.1
Improved high-level pairing interface. More options
Version 5.5.2
Support for Analog Devices Blackfin processor
Version 5.5.3
Improved high level interface for pairing-based protocols, with new features.
Version 5.5.4
More example pairings protocols - Attribute-Based, Predicate Based, HIBE
See pairings.txt. Support for Microchip PIC32, see pic32.txt
Version 5.6
Some minor bug fixes. New licensing terms.
Version 5.6.1
New MIRACL module mrzzn4.c
Version 7.0.0
New support for Format Preserving Encryption. See fpe.pdf and new module mrfpe.c
New support for SHA3 hash function (Keccak). See mrsha3.c
New Macros for MIPS - see mips.mcs
Version 7.0.1
New advice om Texas DSP C6713 processor - see texasdsp.txt
New Typical Thread-Safe No-Heap API example code for ECC - see testecc.c