250 likes | 463 Views
HYDRA: A Flexible PQC Processor. Chen-Mou Cheng National Taiwan University November 16, 2012. Acknowledgment. Joint work with Bo-Yin Yang (Academia Sinica ) and Andy Wu. Post-quantum cryptography. Hash-based cryptography Code-based cryptography Lattice-based cryptography
E N D
HYDRA: A Flexible PQC Processor Chen-Mou Cheng National Taiwan University November 16, 2012
Acknowledgment • Joint work with Bo-Yin Yang (Academia Sinica) and Andy Wu
Post-quantum cryptography • Hash-based cryptography • Code-based cryptography • Lattice-based cryptography • Multivariate cryptography
Multivariate cryptography • Composition of maps • Public quadratic polynomials • F1 and Fkare affine(y = Ax + b) Step 2. Encryptionp ――――→ E ――――→ c easy↑ ↓hard Step 1. Generationp → F1 → F2 … → Fk → c ↓easy ↓easy easy↓ Step 3. Decryptionp ← D1 ← D2 … ← Dk← c
Classification of multivariates • Big-field multivariates • Matsumoto-Imai derivatives • SFLASH, HFE • Small-field (or true) multivariates • Unbalanced Oil-and-Vinegar derivatives • Rainbow, TTS
Security of UOV • MQ: Multivariate quadratics direct attacks • Gröbner bases: XL, F4/F5families • EIP: Extended Isomorphism of Polynomials,a.k.a. rank or linear algebra attacks • Low rank attack • High rank attack • Reconciliation attack • …
The HYDRA processor • A scalable, programmable crypto coprocessor • Accompanying toolchains and software libraries • API to raise abstraction level for developing security applications • Allowing aggressive experimentation with PKC, especially PQC
Slogans • Cheap PKC • Hardware acceleration of core computation • Customizable for multiple vertical markets, allowing cost sharing • Future-proof PKC • Algorithm agility, allowing “BIOS upgrades” • PQC to resist emerging quantum-computers’ attacks • Management-free PKC • Lower total cost of ownership via PKC • Identity-based crypto ⇒ No more PKI! • “If we build them [cheaply], they will come”
The Hydra microarchitecture D$ Axpy engine Decoder I$ μC DMA Memory bus
Design ingredients • Axpy-style ISA for regular data movement between cache & datapath, i.e., Ya•X + Y, where |a| = w, |X| = lw, |Y| = lw or (l + 1)w • Wide & flexible vector datapath • DMA engine to (pre-)fetch and store data to fill up vector datapath as much as possible • General-purpose mC for complex I/O
Review: NTRU cryptosystem • Core operation: Multiplication in Z[x]/(xn-1) • Key generation • Encryption • Decryption • Randomly choose f and g with small coefficients • Find fp, fqsuch that fpf= 1 mod p and fqf= 1 mod q • Public key: h = pfqg • Private key: f , fp • Randomly generate r with coefficients in [-1,1] • c = rh+m • a = fc, with coefficients in [-q/2,q/2] • m = afp, with coefficient in [-p/2,p/2]
NTRU ees397ep1 • p=2, q=307, n=397 • Message m: 397 bits • Signature c: (Z307)397, ~397x9 bits • Public key h: (Z307[x])/(x397-1), ~397x9 bits • Private key • f : (Z307[x])/(x397-1), ~397x9 bits • - Contains 74 nonzero elements • fp: (Z2[x])/(x397-1), = 397x1 bits
Review: TTS cryptosystem • Message z: (GF31)40, ~200 bits • Signature w: (GF31)64, ~320 bits • Public key P: (GF31)40x2080, ~416 Kbits • Bottleneck: Quadratic polynomial evaluation • Private key: ~44244 bits • Bottleneck: Linear maps and system solving
Review: Elliptic curve pairing • Core operations are finite-field arithmetic • Bottleneck for prime fields: Modular multiplication • Euclid’s division: y=qn+r, 0<=r<n • Hensel’s division: y+qn=pkr, 0<=r<2n, p prime • Montgomery method • xpkx mod n: ring homomorphism if (p,n)=1 • Precomputep’,n’ such that pkp’-nn’=1 • q (y mod pk)n’ • q’ (q mod pk)n • r (y+q’)/pk
Montgomery method: More details • Problem: Given A, B, M, compute AB mod M • Idea: Works in an isomorphic ring • AAR mod M and BBR mod M • Need a way to compute ABR mod M • Solution: (x,y) M (xy)/R mod M • T(AR mod M)(BR mod M) • Can add multiple of M since mod M • T + xM = 0 mod R, therefore x = –M–1T mod R • (AR,BR) M(T + (–M–1T mod R)M)/R = ABR mod M
Multi-precision Montgomery • X = (xn – 1xn – 2 … x0), xi in {0,…,2w – 1} • S0 • for i in 0 .. n – 1 • qis0 + aib0(–M–1) mod 2w • S(S + aiB + qiM)/2w • [loop invariant: S in {0,…,M + B – 1}] • [post condition: 2nwS = AB + QM]
The main Hydra ISA • Recall: Ya•X + Y • |a| = w, |X| = lw, |Y| = lw or (l + 1)w • Type i (for pairing) • a in {0,…,2w – 1}, X in {0,…,2lw – 1},Y in {0,…,2(l + 1)w – 1} • •,+: the usual integer multiplication and addition • Type q (for TTS) • a in Fq, X in Fql, Y in Fql, and q ≤ 2w • •,+: scalar multiplication and vector addition in l-dimensional vector spaces over Fq
Type r Axpy instructions • X in Zql, Y in Zql such that q ≤ 2w • a in Zph such that h[lgp] ≤ 2w
Next steps • Prototype implementation • Bulk of the work goes here • SystemC-based ISA simulator • Compiler construction • Maybe to base on LLVM
Thank you! • Questions or comments?