Code-Based Cryptography for FPGAs Dr. Ruben Niederhagen, February 8, 2018
Introduction Global Map public-key cryptography classic post-quantum lattice code multivariate hash isogenies . . . McEliece Niederreiter . . . GRS codes Goppa codes Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)
Introduction Global Map public-key cryptography classic post-quantum lattice code multivariate hash isogenies . . . McEliece Niederreiter . . . GRS codes Goppa codes Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)
Introduction Global Map public-key cryptography classic post-quantum lattice code multivariate hash isogenies . . . McEliece Niederreiter . . . GRS codes Goppa codes Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)
Introduction Global Map public-key cryptography classic post-quantum lattice code multivariate hash isogenies . . . McEliece Niederreiter . . . GRS codes Goppa codes Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)
Introduction Global Map public-key cryptography classic post-quantum lattice code multivariate hash isogenies . . . McEliece Niederreiter . . . GRS codes Goppa codes Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)
Introduction Global Map public-key cryptography classic post-quantum lattice code multivariate hash isogenies . . . McEliece Niederreiter . . . GRS codes Goppa codes Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 1 (25)
Introduction Motivation Why code-based schemes in hardware? Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)
Introduction Motivation Why code-based schemes in hardware? � Code-based schemes are well-understood: � Long history of research. Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)
Introduction Motivation Why code-based schemes in hardware? � Code-based schemes are well-understood: � Long history of research. � Security parameters widely accepted. Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)
Introduction Motivation 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... Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)
Introduction Motivation 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, ... Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 2 (25)
Introduction Motivation 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)
Introduction Error-Correcting Codes — McEliece and Niederreiter 01101100 Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Introduction Error-Correcting Codes — McEliece and Niederreiter 01101100 encode 10011001001 Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Introduction Error-Correcting Codes — McEliece and Niederreiter 01101100 encode 10011001001 10010001011 transmitt Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Introduction Error-Correcting Codes — McEliece and Niederreiter 01101100 encode 10011001001 10010001011 10011001001 transmitt error correction Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Introduction Error-Correcting Codes — McEliece and Niederreiter 01101100 01101100 encode decode 10011001001 10010001011 10011001001 transmitt error correction Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Introduction Error-Correcting Codes — McEliece and Niederreiter plaintext plaintext 01101100 01101100 encode decode ciphertext 10011001001 10010001011 10011001001 add errors error correction encryption decryption Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Introduction Error-Correcting Codes — McEliece and Niederreiter 01101100 01101100 encode decode 10011001001 10010001011 10011001001 transmitt error correction Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Introduction Error-Correcting Codes — McEliece and Niederreiter 01101100 01101100 encode decode 10011001001 10010001011 10011001001 transmitt parity check syndrome syndrome 00001000010 decoding Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Introduction Error-Correcting Codes — McEliece and Niederreiter 01101100 01101100 encode decode plaintext 10011001001 00001000010 10011001001 transmitt parity encryption check syndrome syndrome 00001000010 decoding plaintext ciphertext decryption Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 3 (25)
Niederreiter Cryptosystem Algorithm 1: Key-generation algorithm for the Niederreiter cryptosystem. : System parameters: m , t , and n . Input Output: Private key ( g ( x ) , ( α 0 , α 1 , . . . , α n − 1 )) and public key K . 1 Choose random sequence ( α 0 , α 1 , . . . , α n − 1 ) ∈ F (2 m ) n of distinct elements. Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)
Niederreiter Cryptosystem Algorithm 1: Key-generation algorithm for the Niederreiter cryptosystem. : System parameters: m , t , and n . Input Output: Private key ( g ( x ) , ( α 0 , α 1 , . . . , α n − 1 )) and public key K . 1 Choose random sequence ( α 0 , α 1 , . . . , α n − 1 ) ∈ F (2 m ) n of distinct elements. 2 Choose a random irreducible polynomial g ( x ) of degree t . Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)
Niederreiter Cryptosystem Algorithm 1: Key-generation algorithm for the Niederreiter cryptosystem. : System parameters: m , t , and n . Input Output: Private key ( g ( x ) , ( α 0 , α 1 , . . . , α n − 1 )) and public key K . 1 Choose random sequence ( α 0 , α 1 , . . . , α n − 1 ) ∈ F (2 m ) n of distinct elements. 2 Choose a random irreducible polynomial g ( x ) of degree t . 3 Compute the t × n parity check matrix 1 /g ( α 0 ) 1 /g ( α 1 ) · · · 1 /g ( α n − 1 ) α 0 /g ( α 0 ) α 1 /g ( α 1 ) · · · α n − 1 /g ( α n − 1 ) H = . . . . ... . . . . . . α t − 1 α t − 1 α t − 1 /g ( α 0 ) /g ( α 1 ) · · · n − 1 /g ( α n − 1 ) 0 1 Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)
Niederreiter Cryptosystem Algorithm 1: Key-generation algorithm for the Niederreiter cryptosystem. : System parameters: m , t , and n . Input Output: Private key ( g ( x ) , ( α 0 , α 1 , . . . , α n − 1 )) and public key K . 1 Choose random sequence ( α 0 , α 1 , . . . , α n − 1 ) ∈ F (2 m ) n of distinct elements. 2 Choose a random irreducible polynomial g ( x ) of degree t . 3 Compute the t × n parity check matrix 1 /g ( α 0 ) 1 /g ( α 1 ) · · · 1 /g ( α n − 1 ) α 0 /g ( α 0 ) α 1 /g ( α 1 ) · · · α n − 1 /g ( α n − 1 ) H = . . . . ... . . . . . . α t − 1 α t − 1 α t − 1 /g ( α 0 ) /g ( α 1 ) · · · n − 1 /g ( α n − 1 ) 0 1 4 Transform H to a mt × n binary parity check matrix H ′ . Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)
Niederreiter Cryptosystem Algorithm 1: Key-generation algorithm for the Niederreiter cryptosystem. : System parameters: m , t , and n . Input Output: Private key ( g ( x ) , ( α 0 , α 1 , . . . , α n − 1 )) and public key K . 1 Choose random sequence ( α 0 , α 1 , . . . , α n − 1 ) ∈ F (2 m ) n of distinct elements. 2 Choose a random irreducible polynomial g ( x ) of degree t . 3 Compute the t × n parity check matrix 1 /g ( α 0 ) 1 /g ( α 1 ) · · · 1 /g ( α n − 1 ) α 0 /g ( α 0 ) α 1 /g ( α 1 ) · · · α n − 1 /g ( α n − 1 ) H = . . . . ... . . . . . . α t − 1 α t − 1 α t − 1 /g ( α 0 ) /g ( α 1 ) · · · n − 1 /g ( α n − 1 ) 0 1 4 Transform H to a mt × n binary parity check matrix H ′ . 5 Transform H ′ into its systematic form [ I mt | K ] . Code-Based Cryptography for FPGAs | Dr. Ruben Niederhagen | February 8, 2018 | 4 (25)
Recommend
More recommend