code-based cryptography for fpgas€¦ · code-based cryptography for fpgas jdr. ruben niederhagen...

73
Code-Based Cryptography for FPGAs Dr. Ruben Niederhagen, February 8, 2018

Upload: others

Post on 17-Oct-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Code-Based Cryptography for FPGAs

Dr. Ruben Niederhagen, February 8, 2018

Page 2: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionGlobal Map

public-key cryptography

classic post-quantum

lattice code

McEliece Niederreiter

GRS codes Goppa codes . . .

. . .

multivariate hash isogenies

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)

Page 3: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionGlobal Map

public-key cryptography

classic post-quantum

lattice code

McEliece Niederreiter

GRS codes Goppa codes . . .

. . .

multivariate hash isogenies

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)

Page 4: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionGlobal Map

public-key cryptography

classic post-quantum

lattice code

McEliece Niederreiter

GRS codes Goppa codes . . .

. . .

multivariate hash isogenies

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)

Page 5: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionGlobal Map

public-key cryptography

classic post-quantum

lattice code

McEliece Niederreiter

GRS codes Goppa codes . . .

. . .

multivariate hash isogenies

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)

Page 6: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionGlobal Map

public-key cryptography

classic post-quantum

lattice code

McEliece Niederreiter

GRS codes Goppa codes . . .

. . .

multivariate hash isogenies

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)

Page 7: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionGlobal Map

public-key cryptography

classic post-quantum

lattice code

McEliece Niederreiter

GRS codes Goppa codes . . .

. . .

multivariate hash isogenies

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)

Page 8: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionMotivation

Why code-based schemes in hardware?

� Code-based schemes are well-understood:

� Long history of research.� Security parameters widely accepted.

� Code-based schemes are expensive:

� High-throughput scenario: web server...� Low-energy scenario: embedded devices, SmartCards, ...

=⇒ Hardware implementation as accelerator and for efficiency.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)

Page 9: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionMotivation

Why code-based schemes in hardware?� Code-based schemes are well-understood:

� Long history of research.

� Security parameters widely accepted.

� Code-based schemes are expensive:

� High-throughput scenario: web server...� Low-energy scenario: embedded devices, SmartCards, ...

=⇒ Hardware implementation as accelerator and for efficiency.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)

Page 10: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionMotivation

Why code-based schemes in hardware?� Code-based schemes are well-understood:

� Long history of research.� Security parameters widely accepted.

� Code-based schemes are expensive:

� High-throughput scenario: web server...� Low-energy scenario: embedded devices, SmartCards, ...

=⇒ Hardware implementation as accelerator and for efficiency.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)

Page 11: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionMotivation

Why code-based schemes in hardware?� Code-based schemes are well-understood:

� Long history of research.� Security parameters widely accepted.

� Code-based schemes are expensive:

� High-throughput scenario: web server...

� Low-energy scenario: embedded devices, SmartCards, ...

=⇒ Hardware implementation as accelerator and for efficiency.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)

Page 12: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionMotivation

Why code-based schemes in hardware?� Code-based schemes are well-understood:

� Long history of research.� Security parameters widely accepted.

� Code-based schemes are expensive:

� High-throughput scenario: web server...� Low-energy scenario: embedded devices, SmartCards, ...

=⇒ Hardware implementation as accelerator and for efficiency.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)

Page 13: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionMotivation

Why code-based schemes in hardware?� Code-based schemes are well-understood:

� Long history of research.� Security parameters widely accepted.

� Code-based schemes are expensive:

� High-throughput scenario: web server...� Low-energy scenario: embedded devices, SmartCards, ...

=⇒ Hardware implementation as accelerator and for efficiency.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)

Page 14: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryptionencryption

decryption

01101100

10011001001

encode

1001000101100001000010transmitt

10011001001error correction

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheckparitycheck

plaintext

ciphertext

00001000010decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 15: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryptionencryption

decryption

01101100

10011001001

encode

1001000101100001000010transmitt

10011001001error correction

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheckparitycheck

plaintext

ciphertext

00001000010decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 16: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryptionencryption

decryption

01101100

10011001001

encode

10010001011

00001000010

transmitt

10011001001error correction

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheckparitycheck

plaintext

ciphertext

00001000010decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 17: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryptionencryption

decryption

01101100

10011001001

encode

10010001011

00001000010

transmitt10011001001

error correction

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheckparitycheck

plaintext

ciphertext

00001000010decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 18: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryptionencryption

decryption

01101100

10011001001

encode

10010001011

00001000010

transmitt10011001001

error correction

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheckparitycheck

plaintext

ciphertext

00001000010decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 19: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryption

encryption

decryption

01101100

10011001001

encode

10010001011

00001000010

add errors10011001001

error correction

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheckparitycheck

plaintext

ciphertext

00001000010decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 20: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryptionencryption

decryption

01101100

10011001001

encode

10010001011

00001000010

transmitt10011001001

error correction

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheckparitycheck

plaintext

ciphertext

00001000010decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 21: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryptionencryption

decryption

01101100

10011001001

encode

10010001011

00001000010

transmitt10011001001

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheck

paritycheck

plaintext

ciphertext

00001000010decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 22: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

IntroductionError-Correcting Codes — McEliece and Niederreiter

encryption decryption

encryption

decryption

01101100

10011001001

encode

10010001011

00001000010transmitt

10011001001

01101100

decode

plaintext

ciphertext

plaintext

syndrome

paritycheck

paritycheck

plaintext

ciphertext

00001000010

decoding

syndrome

decoding

syndrome

plaintext

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)

Page 23: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.

2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)

Page 24: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.

3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)

Page 25: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)

Page 26: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.

5 Transform H ′ into its systematic form [Imt|K].

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)

Page 27: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)

Page 28: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Permute list of all 2m elements, pick the first n elements.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)

Page 29: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Permute list of all 2m elements, pick the first n elements.� Option 1: Use Fisher-Yates shuffle.

� Biased if not well implemented,� non-biased implementations need floating-point arithmetic

or are not constant time.

� Option 2: Use a constant-time sorting algorithm.Sample 2m random 32-bit values ri.Generate a list of tuples {(r0, 0), (ri, 1), . . . , (r2m−1, am−1 + am−2 · · ·+ a+ 1)}.Sort list by the first element.Obtain the permutation by reading the second elements.

� Expensive: more cycles, more logic.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 5 (25)

Page 30: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Permute list of all 2m elements, pick the first n elements.� Option 1: Use Fisher-Yates shuffle.

� Biased if not well implemented,� non-biased implementations need floating-point arithmetic

or are not constant time.

� Option 2: Use a constant-time sorting algorithm.Sample 2m random 32-bit values ri.Generate a list of tuples {(r0, 0), (ri, 1), . . . , (r2m−1, am−1 + am−2 · · ·+ a+ 1)}.Sort list by the first element.Obtain the permutation by reading the second elements.

� Expensive: more cycles, more logic.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 5 (25)

Page 31: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Permute list of all 2m elements, pick the first n elements.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 6 (25)

Page 32: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Generate an irreducible polynomial.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 6 (25)

Page 33: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Generate an irreducible polynomial of degree t.� Option 1: Randomly chose t+ 1 coefficients,

check if obtained polynomial is irreducible.

� Needs about t iterations⇒ not constant time,

� checking for irreducibility is expensive (extended Euclidean algorithm).

� Option 2: Construct an irreducible polynomial.

� Idea: Compute minimal polynomial of an element r ∈ F(2m)[x]/fwith deg(f) = t.

� Compute several powers in F(2m)[x]/f ,� solve a linear equation system over F(2m) of dimension t× t+ 1.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 7 (25)

Page 34: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Generate an irreducible polynomial of degree t.� Option 1: Randomly chose t+ 1 coefficients,

check if obtained polynomial is irreducible.

� Needs about t iterations⇒ not constant time,

� checking for irreducibility is expensive (extended Euclidean algorithm).

� Option 2: Construct an irreducible polynomial.

� Idea: Compute minimal polynomial of an element r ∈ F(2m)[x]/fwith deg(f) = t.

� Compute several powers in F(2m)[x]/f ,� solve a linear equation system over F(2m) of dimension t× t+ 1.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 7 (25)

Page 35: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Generate an irreducible polynomial.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 8 (25)

Page 36: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Evaluate g at all 2m elements using additive FFT.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 8 (25)

Page 37: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Gaussian elimination.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 8 (25)

Page 38: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Algorithm 2: Encryption algorithm for the Niederreiter cryptosystem.Input : Plaintext e, public key K.Output: Ciphertext c.

1 Compute c = [Imt|K]× e.

2 Return the ciphertext c.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 9 (25)

Page 39: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Algorithm 2: Encryption algorithm for the Niederreiter cryptosystem.Input : Plaintext e, public key K.Output: Ciphertext c.

1 Compute c = [Imt|K]× e.2 Return the ciphertext c.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 9 (25)

Page 40: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 3: Decryption algorithm for the Niederreiter cryptosystem.

Input : Ciphertext c, secret key (g(x), (α0, α1, . . . , αn−1)).Output: Plaintext e.

1 Compute the double-size 2t× n parity check matrix

H(2) =

1/g2(α0) 1/g2(α1) · · · 1/g2(αn−1)

α0/g2(α0) α1/g

2(α1) · · · αn−1/g2(αn−1)

......

. . ....

α2t−10 /g2(α0) α2t−1

1 /g2(α1) · · · α2t−1n−1 /g

2(αn−1)

.

2 Transform H(2) to a 2mt× n binary parity check matrix H ′(2).

3 Compute the double-size syndrome: S(2) = H ′(2) × (c|0).4 Compute the error-locator polynomial σ(x) from S(2).5 Evaluate the error-locator polynomial σ(x) at (α0, α1, . . . , αn−1).

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 10 (25)

Page 41: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 3: Decryption algorithm for the Niederreiter cryptosystem.

Input : Ciphertext c, secret key (g(x), (α0, α1, . . . , αn−1)).Output: Plaintext e.

1 Compute the double-size 2t× n parity check matrix

H(2) =

1/g2(α0) 1/g2(α1) · · · 1/g2(αn−1)

α0/g2(α0) α1/g

2(α1) · · · αn−1/g2(αn−1)

......

. . ....

α2t−10 /g2(α0) α2t−1

1 /g2(α1) · · · α2t−1n−1 /g

2(αn−1)

.2 Transform H(2) to a 2mt× n binary parity check matrix H ′(2).

3 Compute the double-size syndrome: S(2) = H ′(2) × (c|0).4 Compute the error-locator polynomial σ(x) from S(2).5 Evaluate the error-locator polynomial σ(x) at (α0, α1, . . . , αn−1).

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 10 (25)

Page 42: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 3: Decryption algorithm for the Niederreiter cryptosystem.

Input : Ciphertext c, secret key (g(x), (α0, α1, . . . , αn−1)).Output: Plaintext e.

1 Compute the double-size 2t× n parity check matrix

H(2) =

1/g2(α0) 1/g2(α1) · · · 1/g2(αn−1)

α0/g2(α0) α1/g

2(α1) · · · αn−1/g2(αn−1)

......

. . ....

α2t−10 /g2(α0) α2t−1

1 /g2(α1) · · · α2t−1n−1 /g

2(αn−1)

.2 Transform H(2) to a 2mt× n binary parity check matrix H ′(2).

3 Compute the double-size syndrome: S(2) = H ′(2) × (c|0).

4 Compute the error-locator polynomial σ(x) from S(2).5 Evaluate the error-locator polynomial σ(x) at (α0, α1, . . . , αn−1).

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 10 (25)

Page 43: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 3: Decryption algorithm for the Niederreiter cryptosystem.

Input : Ciphertext c, secret key (g(x), (α0, α1, . . . , αn−1)).Output: Plaintext e.

1 Compute the double-size 2t× n parity check matrix

H(2) =

1/g2(α0) 1/g2(α1) · · · 1/g2(αn−1)

α0/g2(α0) α1/g

2(α1) · · · αn−1/g2(αn−1)

......

. . ....

α2t−10 /g2(α0) α2t−1

1 /g2(α1) · · · α2t−1n−1 /g

2(αn−1)

.2 Transform H(2) to a 2mt× n binary parity check matrix H ′(2).

3 Compute the double-size syndrome: S(2) = H ′(2) × (c|0).4 Compute the error-locator polynomial σ(x) from S(2).

5 Evaluate the error-locator polynomial σ(x) at (α0, α1, . . . , αn−1).

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 10 (25)

Page 44: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 3: Decryption algorithm for the Niederreiter cryptosystem.

Input : Ciphertext c, secret key (g(x), (α0, α1, . . . , αn−1)).Output: Plaintext e.

1 Compute the double-size 2t× n parity check matrix

H(2) =

1/g2(α0) 1/g2(α1) · · · 1/g2(αn−1)

α0/g2(α0) α1/g

2(α1) · · · αn−1/g2(αn−1)

......

. . ....

α2t−10 /g2(α0) α2t−1

1 /g2(α1) · · · α2t−1n−1 /g

2(αn−1)

.2 Transform H(2) to a 2mt× n binary parity check matrix H ′(2).

3 Compute the double-size syndrome: S(2) = H ′(2) × (c|0).4 Compute the error-locator polynomial σ(x) from S(2).5 Evaluate the error-locator polynomial σ(x) at (α0, α1, . . . , αn−1).

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 10 (25)

Page 45: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 3: Decryption algorithm for the Niederreiter cryptosystem.

Input : Ciphertext c, secret key (g(x), (α0, α1, . . . , αn−1)).Output: Plaintext e.

1 Compute the double-size 2t× n parity check matrix

H(2) =

1/g2(α0) 1/g2(α1) · · · 1/g2(αn−1)

α0/g2(α0) α1/g

2(α1) · · · αn−1/g2(αn−1)

......

. . ....

α2t−10 /g2(α0) α2t−1

1 /g2(α1) · · · α2t−1n−1 /g

2(αn−1)

.2 Transform H(2) to a 2mt× n binary parity check matrix H ′(2).

3 Compute the double-size syndrome: S(2) = H ′(2) × (c|0).4 Compute the error-locator polynomial σ(x) from S(2).5 Evaluate the error-locator polynomial σ(x) at (α0, α1, . . . , αn−1).

Evaluate g and σ at all 2m elements using additive FFT.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 10 (25)

Page 46: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter CryptosystemAlgorithm 3: Decryption algorithm for the Niederreiter cryptosystem.

Input : Ciphertext c, secret key (g(x), (α0, α1, . . . , αn−1)).Output: Plaintext e.

1 Compute the double-size 2t× n parity check matrix

H(2) =

1/g2(α0) 1/g2(α1) · · · 1/g2(αn−1)

α0/g2(α0) α1/g

2(α1) · · · αn−1/g2(αn−1)

......

. . ....

α2t−10 /g2(α0) α2t−1

1 /g2(α1) · · · α2t−1n−1 /g

2(αn−1)

.2 Transform H(2) to a 2mt× n binary parity check matrix H ′(2).

3 Compute the double-size syndrome: S(2) = H ′(2) × (c|0).4 Compute the error-locator polynomial σ(x) from S(2).5 Evaluate the error-locator polynomial σ(x) at (α0, α1, . . . , αn−1).

Efficient decoding algorithm.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 10 (25)

Page 47: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Efficient decoding algorithm:� Option 1: Patterson algorithm.

� Not constant time,� side-channel attacks can be used to decode messages.

� Option 2: Berlekamp-Massey algorithm.

� Constant time.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 11 (25)

Page 48: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Efficient decoding algorithm:� Option 1: Patterson algorithm.

� Not constant time,� side-channel attacks can be used to decode messages.

� Option 2: Berlekamp-Massey algorithm.

� Constant time.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 11 (25)

Page 49: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Required Modules:� Finite field arithmetic in F(2m).

� Polynomial arithmetic in F(2m)[x]/f .

� Merge-sort for generating a permutation.

� Additive FFT for polynomial evaluation.

� Gaussian elimination.

� Berlekamp Massey.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 12 (25)

Page 50: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Required Modules:� Finite field arithmetic in F(2m).

� Polynomial arithmetic in F(2m)[x]/f .

� Merge-sort for generating a permutation.

� Additive FFT for polynomial evaluation.

� Gaussian elimination.

� Berlekamp Massey.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 12 (25)

Page 51: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Required Modules:� Finite field arithmetic in F(2m).

� Polynomial arithmetic in F(2m)[x]/f .

� Merge-sort for generating a permutation.

� Additive FFT for polynomial evaluation.

� Gaussian elimination.

� Berlekamp Massey.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 12 (25)

Page 52: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Required Modules:� Finite field arithmetic in F(2m).

� Polynomial arithmetic in F(2m)[x]/f .

� Merge-sort for generating a permutation.

� Additive FFT for polynomial evaluation.

� Gaussian elimination.

� Berlekamp Massey.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 12 (25)

Page 53: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Required Modules:� Finite field arithmetic in F(2m).

� Polynomial arithmetic in F(2m)[x]/f .

� Merge-sort for generating a permutation.

� Additive FFT for polynomial evaluation.

� Gaussian elimination.

� Berlekamp Massey.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 12 (25)

Page 54: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Niederreiter Cryptosystem

Required Modules:� Finite field arithmetic in F(2m).

� Polynomial arithmetic in F(2m)[x]/f .

� Merge-sort for generating a permutation.

� Additive FFT for polynomial evaluation.

� Gaussian elimination.

� Berlekamp Massey.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 12 (25)

Page 55: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignKey Generation

HR R

Generator

PRNG

GF(2m)Gaussian

Systemizer

g-portion

g(x)Evaluation(Additive FFT)

HGenerator

g_out

PGenerator

(Sort)

P

P_out

GF(2)Gaussian

Systemizer

K_out

PRNG

Permutation Gen.

Goppa Polynomial Gen.

Public Key K Gen.

K-portionC

D

P'

I

I

M

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 13 (25)

Page 56: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignKey Generation

HR R

Generator

PRNG

GF(2m)Gaussian

Systemizer

g-portion

g(x)Evaluation(Additive FFT)

HGenerator

g_out

PGenerator

(Sort)

P

P_out

GF(2)Gaussian

Systemizer

K_out

PRNG

Permutation Gen.

Goppa Polynomial Gen.

Public Key K Gen.

K-portionC

D

P'

I

I

M

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 13 (25)

Page 57: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignKey Generation

HR R

Generator

PRNG

GF(2m)Gaussian

Systemizer

g-portion

g(x)Evaluation(Additive FFT)

HGenerator

g_out

PGenerator

(Sort)

P

P_out

GF(2)Gaussian

Systemizer

K_out

PRNG

Permutation Gen.

Goppa Polynomial Gen.

Public Key K Gen.

K-portionC

D

P'

I

I

M

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 13 (25)

Page 58: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignAlgorithm 1: Key-generation algorithm for the Niederreiter cryptosystem.Input : System parameters: m, t, and n.Output: Private key (g(x), (α0, α1, . . . , αn−1)) and public key K.

1 Choose random sequence (α0, α1, . . . , αn−1) ∈ F(2m)n of distinct elements.2 Choose a random irreducible polynomial g(x) of degree t.3 Compute the t× n parity check matrix

H =

1/g(α0) 1/g(α1) · · · 1/g(αn−1)α0/g(α0) α1/g(α1) · · · αn−1/g(αn−1)

......

. . ....

αt−10 /g(α0) αt−1

1 /g(α1) · · · αt−1n−1/g(αn−1)

.

4 Transform H to a mt× n binary parity check matrix H ′.5 Transform H ′ into its systematic form [Imt|K].

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 14 (25)

Page 59: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignEncryption

Plaintext

PK_column

Ciphertext

Encryption(XOR)

PK_column_valid

Algorithm 4: Encryption algorithm for theNiederreiter cryptosystem.Input : Plaintext e, public key K.Output: Ciphertext c.

1 Compute c = [Imt|K]× e.2 Return the ciphertext c.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 15 (25)

Page 60: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignDecryption

g(x)Evaluation(Additive FFT)

C

DDoubled

Syndrome

SK_g(x)

SK_P

BerlekampMassey

ErrorLocator

Ciphertext Recovered Message

I IM

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 16 (25)

Page 61: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignAlgorithm 3: Decryption algorithm for the Niederreiter cryptosystem.

Input : Ciphertext c, secret key (g(x), (α0, α1, . . . , αn−1)).Output: Plaintext e.

1 Compute the double-size 2t× n parity check matrix

H(2) =

1/g2(α0) 1/g2(α1) · · · 1/g2(αn−1)

α0/g2(α0) α1/g

2(α1) · · · αn−1/g2(αn−1)

......

. . ....

α2t−10 /g2(α0) α2t−1

1 /g2(α1) · · · α2t−1n−1 /g

2(αn−1)

.2 Transform H(2) to a 2mt× n binary parity check matrix H ′(2).

3 Compute the double-size syndrome: S(2) = H ′(2) × (c|0).4 Compute the error-locator polynomial σ(x) from S(2).5 Evaluate the error-locator polynomial σ(x) at (α0, α1, . . . , αn−1).

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 17 (25)

Page 62: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignDecryption

g(x)Evaluation(Additive FFT)

C

DDoubled

Syndrome

SK_g(x)

SK_P

BerlekampMassey

ErrorLocator

Ciphertext Recovered Message

I IM

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 18 (25)

Page 63: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

DesignSetup

UART

StateMachine

KeyGeneration

Encryption

Decryption

verificationof results

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 19 (25)

Page 64: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Parameters

Code generation and module parameters:� All system parameters (m, t, n) can be freely chosen.

� Performance parameters for controlling parallelism:

� Compact, low-area design for SmartCards, embedded systems, ...� Large, high-performance design for server accelerator, ...

Recommended system parameters (for 266-bit security):� finite field 2m: m = 13

� number of errors: t = 119

� code length: n = 6960

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 20 (25)

Page 65: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Parameters

Code generation and module parameters:� All system parameters (m, t, n) can be freely chosen.

� Performance parameters for controlling parallelism:

� Compact, low-area design for SmartCards, embedded systems, ...� Large, high-performance design for server accelerator, ...

Recommended system parameters (for 266-bit security):� finite field 2m: m = 13

� number of errors: t = 119

� code length: n = 6960

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 20 (25)

Page 66: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Parameters

Code generation and module parameters:� All system parameters (m, t, n) can be freely chosen.

� Performance parameters for controlling parallelism:

� Compact, low-area design for SmartCards, embedded systems, ...

� Large, high-performance design for server accelerator, ...

Recommended system parameters (for 266-bit security):� finite field 2m: m = 13

� number of errors: t = 119

� code length: n = 6960

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 20 (25)

Page 67: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Parameters

Code generation and module parameters:� All system parameters (m, t, n) can be freely chosen.

� Performance parameters for controlling parallelism:

� Compact, low-area design for SmartCards, embedded systems, ...� Large, high-performance design for server accelerator, ...

Recommended system parameters (for 266-bit security):� finite field 2m: m = 13

� number of errors: t = 119

� code length: n = 6960

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 20 (25)

Page 68: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Parameters

Code generation and module parameters:� All system parameters (m, t, n) can be freely chosen.

� Performance parameters for controlling parallelism:

� Compact, low-area design for SmartCards, embedded systems, ...� Large, high-performance design for server accelerator, ...

Recommended system parameters (for 266-bit security):� finite field 2m: m = 13

� number of errors: t = 119

� code length: n = 6960

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 20 (25)

Page 69: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Performance

CyclesCase Key-Gen Dec. Logic Mem. Reg. Fmax

area 11,121,214 34,492 53,447 (23%) 907 (35%) 118,243 245 MHzbal. 3,062,936 22,768 70,478 (30%) 915 (36%) 146,648 251 MHztime 966,400 17,055 121,806 (52%) 961 (38%) 223,232 248 MHz

Table: Performance for the entire Niederreiter cryptosystem (i.e., key generation, encryption, and decryption)including the serial IO interface when synthesized for the Stratix V (5SGXEA7N) FPGA.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 21 (25)

Page 70: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

PerformanceComparison

Cycles Logic Freq. Mem. Time (ms)Gen. Dec. Enc. (MHz) Gen. Dec. Enc.

m = 11, t = 50, n = 2048, Virtex 5 LX110Shoufan et al. 14,670,000 210,300 81,500 14,537 (84%) 163 75 90.00 1.29 0.50This design 1,503,927 5,864 1,498 6,660 (38%) 180 68 8.35 0.03 0.01

m = 13, t = 128, n = 8192, Haswell vs. Stratix VChou 1,236,054,840 343,344 289,152 — 4,000 — 309.01 0.09 0.07This design 1,173,750 17,140 6,528 129,059 (54%) 231 1,126 5.08 0.07 0.07

Table: Comparison with related work. Logic is given in “Slices” for Xilinx Virtex FPGAs and in “ALMs” forAltera Stratix FPGAs.

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 22 (25)

Page 71: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Thank you for your attention!

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 23 (25)

Page 72: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Image Credits

Title page:CC0 Creative Commonshttps://pixabay.com/en/boy-device-headphones-63777/

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 24 (25)

Page 73: Code-Based Cryptography for FPGAs€¦ · Code-Based Cryptography for FPGAs jDr. Ruben Niederhagen February 8, 2018 j 4 (25) Niederreiter Cryptosystem Permute list of all 2m elements,

Contact Information

Dr. Ruben Niederhagen

Cyber-Physical System Security

Fraunhofer-Institute forSecure Information Technology

Address: Rheinstraße 7564295 DarmstadtGermany

Internet: http://www.sit.fraunhofer.de

Phone: +49 6151 869-135Fax: +49 6151 869-224E-Mail: [email protected]

Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 25 (25)