SLIDE 23 Modular reduction (128-bit mode)
Algorithm 6 Proposed fast reduction by f (z) = z1223 + z255 + 1.
Input: t(z) = t[0..n − 1] (vector of 128-bit elements). Output: c(z) mod f (z) = c[0..n − 1]. Note: The accumulate function R(r3, r2, r1, r0, t) executes: s ← t ≫∤8 7, r3 ← t ≪∤8 57 r3 ← r3 ⊕ (s ≪8 64) r2 ← r2 ⊕ (s ≫8 64) r1 ← r1 ⊕ (t ≪8 56) r0 ← r0 ⊕ (t ≫8 72)
1: r0, r1, r2, r3 ← 0 2: for i ← 19 downto 15 by 4 do 3:
R(r3, r2, r1, r0, t[i]), t[i − 7] ← t[i − 7] ⊕ r0
4:
R(r0, r3, r2, r1, t[i − 1]), t[i − 8] ← t[i − 8] ⊕ r1
5:
R(r1, r0, r3, r2, t[i − 2]), t[i − 9] ← t[i − 9] ⊕ r2
6:
R(r2, r1, r0, r3, t[i − 3]), t[i − 10] ← t[i − 10] ⊕ r3
7: end for 8: R(r3, r2, r1, r0, t[11]),
t[4] ← t[4] ⊕ r0
9: R(r0, r3, r2, r1, t[10]),
t[3] ← t[3] ⊕ r1
10: t[2] ← t[2] ⊕ r2,
t[1] ← t[1] ⊕ r3, t[0] ← t[0] ⊕ r0
11: r0 ← m[9] ≫8 64,
r0 ← r0 ≫∤8 7, t[0] ← t[0] ⊕ r0
12: r1 ← r0 ≪8 64,
r1 ← r1 ≪∤8 63, t[1] ← t[1] ⊕ r1
13: r1 ← r0 ≫∤8 1,
t[2] ← t[2] ⊕ r1
14: for i ← 0 to 9 do c[2i] ← store(t[i]),
c[19] ← c[19] ∧ 0x7F
15: return c
Diego F. Aranha Efficient Binary Field Arithmetic
Modular reduction (128-bit mode)
Algorithm 7 Proposed fast reduction by f (z) = z283 +(z7 +1)(z5 +1).
Input: Double-precision polynomial stored into 128-bit registers c = (c4, c3, c2, c1, c0). Output: Field element c mod f (z) stored into 128-bit registers (c2, c1, c0).
1: t2 ← c2, t0 ← (c3, c2) ⊲ 64, t1 ← (c4, c3) ⊲ 64 2: c4 ← c4 ≫∤8 27, c3 ← c3 ≫∤8 27, c3 ← c3 ⊕ (t1 ≪∤8 37) 3: c2 ← c2 ≫∤8 27, c2 ← c2 ⊕ (t0 ≪∤8 37) 4: t0 ← (c4, c3) ⊲ 120, c4 ← c4 ⊕ (t0 ≫∤8 1) 5: t1 ← (c3, c2) ⊲ 64, c3 ← c3 ⊕ (c3 ≪∤8 7) ⊕ (t1 ≫∤8 57) 6: t0 ← c2 ≪8 64, c2 ← c2 ⊕ (c2 ≪∤8 7) ⊕ (t0 ≫∤8 57) 7: t0 ← (c4, c3) ⊲ 120, c4 ← c4 ⊕ (t0 ≫∤8 3) 8: t1 ← (c3, c2) ⊲ 64, c3 ← c3 ⊕ (c3 ≪∤8 5) ⊕ (t1 ≫∤8 59) 9: t0 ← c2 ≪8 64, c2 ← c2 ⊕ (c2 ≪∤8 5) ⊕ (t0 ≫∤8 59) 10: c0 ← c0 ⊕ c2, c1 ← c1 ⊕ c3, c2 ← t2 ⊕ c4 11: t0 ← c4 ≫∤8 27 12: t1 ← t0 ⊕ (t0 ≪∤8 5) 13: t0 ← t1 ⊕ (t1 ≪∤8 7) 14: c0 ← c0 ⊕ t0, c2 ← c2∧ (0x0000000000000000,0x0000000007FFFFFF) 15: return c = (c2, c1, c0)
Diego F. Aranha Efficient Binary Field Arithmetic