Commit c9d6f8b505

Frank Denis <124872+jedisct1@users.noreply.github.com>
2024-12-04 23:45:07
Remove parallel variants of AEGIS-MAC (#22146)
The construction is likely to change before standardization
1 parent 6188cb8
Changed files (3)
lib/std/crypto/aegis.zig
@@ -562,28 +562,6 @@ pub const Aegis128X2Mac = AegisMac(Aegis128X2_256);
 /// - It has a large security margin against internal collisions.
 pub const Aegis128LMac = AegisMac(Aegis128L_256);
 
-/// The `Aegis256X4Mac` message authentication function has a 256-bit key size,
-/// and outputs 256 bit tags. Unless theoretical multi-target attacks are a
-/// concern, the AEGIS-128L variant should be preferred.
-/// AEGIS' large state, non-linearity and non-invertibility provides the
-/// following properties:
-/// - 256 bit security against forgery.
-/// - Recovering the secret key from the state would require ~2^256 attempts,
-///   which is infeasible for any practical adversary.
-/// - It has a large security margin against internal collisions.
-pub const Aegis256X4Mac = AegisMac(Aegis256X4_256);
-
-/// The `Aegis256X2Mac` message authentication function has a 256-bit key size,
-/// and outputs 256 bit tags. Unless theoretical multi-target attacks are a
-/// concern, the AEGIS-128L variant should be preferred.
-/// AEGIS' large state, non-linearity and non-invertibility provides the
-/// following properties:
-/// - 256 bit security against forgery.
-/// - Recovering the secret key from the state would require ~2^256 attempts,
-///   which is infeasible for any practical adversary.
-/// - It has a large security margin against internal collisions.
-pub const Aegis256X2Mac = AegisMac(Aegis256X2_256);
-
 /// The `Aegis256Mac` message authentication function has a 256-bit key size,
 /// and outputs 256 bit tags. Unless theoretical multi-target attacks are a
 /// concern, the AEGIS-128L variant should be preferred.
@@ -595,21 +573,9 @@ pub const Aegis256X2Mac = AegisMac(Aegis256X2_256);
 /// - It has a large security margin against internal collisions.
 pub const Aegis256Mac = AegisMac(Aegis256_256);
 
-/// AEGIS-128X4 MAC with 128-bit tags
-pub const Aegis128X4Mac_128 = AegisMac(Aegis128X4);
-
-/// AEGIS-128X2 MAC with 128-bit tags
-pub const Aegis128X2Mac_128 = AegisMac(Aegis128X2);
-
 /// AEGIS-128L MAC with 128-bit tags
 pub const Aegis128LMac_128 = AegisMac(Aegis128L);
 
-/// AEGIS-256X4 MAC with 128-bit tags
-pub const Aegis256X4Mac_128 = AegisMac(Aegis256X4);
-
-/// AEGIS-256X2 MAC with 128-bit tags
-pub const Aegis256X2Mac_128 = AegisMac(Aegis256X2);
-
 /// AEGIS-256 MAC with 128-bit tags
 pub const Aegis256Mac_128 = AegisMac(Aegis256);
 
lib/std/crypto/benchmark.zig
@@ -72,10 +72,6 @@ const macs = [_]Crypto{
     Crypto{ .ty = crypto.auth.siphash.SipHash64(1, 3), .name = "siphash-1-3" },
     Crypto{ .ty = crypto.auth.siphash.SipHash128(2, 4), .name = "siphash128-2-4" },
     Crypto{ .ty = crypto.auth.siphash.SipHash128(1, 3), .name = "siphash128-1-3" },
-    Crypto{ .ty = crypto.auth.aegis.Aegis128X4Mac, .name = "aegis-128x4 mac" },
-    Crypto{ .ty = crypto.auth.aegis.Aegis256X4Mac, .name = "aegis-256x4 mac" },
-    Crypto{ .ty = crypto.auth.aegis.Aegis128X2Mac, .name = "aegis-128x2 mac" },
-    Crypto{ .ty = crypto.auth.aegis.Aegis256X2Mac, .name = "aegis-256x2 mac" },
     Crypto{ .ty = crypto.auth.aegis.Aegis128LMac, .name = "aegis-128l mac" },
     Crypto{ .ty = crypto.auth.aegis.Aegis256Mac, .name = "aegis-256 mac" },
     Crypto{ .ty = crypto.auth.cmac.CmacAes128, .name = "aes-cmac" },
lib/std/crypto.zig
@@ -58,20 +58,9 @@ pub const auth = struct {
     pub const siphash = @import("crypto/siphash.zig");
     pub const aegis = struct {
         const variants = @import("crypto/aegis.zig");
-        pub const Aegis128X4Mac = variants.Aegis128X4Mac;
-        pub const Aegis128X2Mac = variants.Aegis128X2Mac;
         pub const Aegis128LMac = variants.Aegis128LMac;
-
-        pub const Aegis256X4Mac = variants.Aegis256X4Mac;
-        pub const Aegis256X2Mac = variants.Aegis256X2Mac;
         pub const Aegis256Mac = variants.Aegis256Mac;
-
-        pub const Aegis128X4Mac_128 = variants.Aegis128X4Mac_128;
-        pub const Aegis128X2Mac_128 = variants.Aegis128X2Mac_128;
         pub const Aegis128LMac_128 = variants.Aegis128LMac_128;
-
-        pub const Aegis256X4Mac_128 = variants.Aegis256X4Mac_128;
-        pub const Aegis256X2Mac_128 = variants.Aegis256X2Mac_128;
         pub const Aegis256Mac_128 = variants.Aegis256Mac_128;
     };
     pub const cmac = @import("crypto/cmac.zig");