You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CryptoGroups is a Julia package that provides a flexible and type-safe implementation of cryptographic groups. It offers a unified interface for working with various types of groups, including modular prime groups and elliptic curves over prime and binary fields.
6
+
CryptoGroups is a Julia package that provides a versatile and type-safe implementation of cryptographic groups. It offers a unified interface for working with various types of groups, including modular prime groups and elliptic curves over prime and binary fields. Blending educational value with production-ready capabilities, CryptoGroups serves both beginners and seasoned practitioners, as evidenced by its successful integration in projects like [CryptoSignatures](https://github.com/PeaceFounder/CryptoSignatures.jl) and [ShuffleProofs](https://github.com/PeaceFounder/ShuffleProofs.jl).
7
7
8
8
## Key Features
9
9
@@ -77,14 +77,16 @@ CryptoGroups is a Julia package that provides a flexible and type-safe implement
77
77
g ==G(octet(g)) ==G(value(g))
78
78
```
79
79
80
-
## Safety Considerations
80
+
## Safety Guarantees
81
81
82
-
- Group element arithmetics is possible only with the same types of groups and throws `MethodError` when that is violated. For instance, `@ECGroup{P_192}() * @ECGroup{P_256}()` throws an error.
83
-
- Group elements are validated during construction, throwing `ArgumentError` for invalid inputs.
84
-
- Moduler prime group elements are checked to belong in prime group via $g^q = 1$.
85
-
- Elliptic curve points are checked for curve equation satisfaction and cofactor validation.
86
-
- The package implements checks to prevent issues with special cases in point addition formulas.
87
-
- Exponentiation with $k \mod q = 0$ shows warning or throws an error in a strict mode.
82
+
While no cryptographic system can guarantee absolute security, CryptoGroups implements the following safety features:
83
+
84
+
- Group element arithmetics is possible only with the same types of groups and throws `MethodError` when that is violated. For instance, `@ECGroup{P_192}() * @ECGroup{P_256}()` throws an error;
85
+
- Group elements are validated during construction, throwing `ArgumentError` for invalid inputs;
86
+
- Modular prime group elements are checked to belong in prime group via $g^q = 1$;
87
+
- Elliptic curve points are checked for curve equation satisfaction and cofactor validation;
88
+
- The package implements checks to prevent issues with special cases in point addition formulas;
89
+
- Exponentiation with $k~ {\rm mod} ~q = 0$ shows warning or throws an error in a strict mode.
88
90
89
91
## Limitations and Future Work
90
92
@@ -95,7 +97,7 @@ The current implementation of CryptoGroups has several areas where performance o
95
97
- The package doesn't use projective coordinates for elliptic curve arithmetics;
96
98
- Lacks special treatment for Koblitz curves;
97
99
- Doesn't implement Mersenne primes when available over generic prime fields;
98
-
- Binary field operations, the current implementation is suboptimal and doesn't take advantage of hardware-provided carryless operations;
100
+
- Binary field operations, the current implementation is suboptimal and doesn't take advantage of hardware-provided carryless operations.
99
101
100
102
These limitations result in significantly slower performance compared to state-of-the-art implementations. Preliminary estimates suggest that operations on prime curves in CryptoGroups are about 100 times slower than optimized libraries like OpenSSL, while binary curves may be up to 1000 times slower.
101
103
@@ -109,8 +111,11 @@ Despite these limitations, CryptoGroups provides a solid foundation for cryptogr
109
111
110
112
# References
111
113
114
+
-[elliptic-curve](https://github.com/sdiehl/elliptic-curve#readme) library in Haskell which share similar goals
112
115
-[RFC2409](https://tools.ietf.org/html/rfc2409#section-6.2) and [RFC5114](https://tools.ietf.org/html/rfc5114#section-2.1) for modular prime group constants
113
116
-[SafeCurves](https://safecurves.cr.yp.to/complete.html) on addition checks for Weierstrass curves
114
117
-[FIPS 186-4](https://csrc.nist.gov/pubs/fips/186-4/final) and [FIPS 186-5](https://csrc.nist.gov/pubs/fips/186-5/final)
-[ANSI X9.142](https://webstore.ansi.org/preview-pages/ASCX9/preview_ANSI+X9.142-2020.pdf) and in unpaywalled form [here](https://www.cs.miami.edu/home/burt/learning/Csc609.142/ecdsa-cert.pdf)
120
+
-[CryptoSignatures.jl](https://github.com/PeaceFounder/CryptoSignatures.jl) FIPS 186-4 digital signature algorithm implemetation
121
+
-[ShuffleProofs.jl](https://github.com/PeaceFounder/ShuffleProofs.jl) Verificatum compatable ElGamal proof of shuffle implementation
0 commit comments