<p>Finding inverses of polynomials are required to generate key pair in NTRU (<InlineEquation ID="IEq1"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq1.gif" Format="GIF" Height="17" Rendition="HTML" Resolution="72" Type="Linedraw" Width="30" /> </InlineMediaObject> <EquationSource Format="TEX">\(N^{th}\)</EquationSource> <EquationSource Format="MATHML"><math> <msup> <mi>N</mi> <mrow> <mi mathvariant="italic">th</mi> </mrow> </msup> </math></EquationSource> </InlineEquation> degree Truncated polynomial Ring Units) accelerators for encryption and decryption, hashing and verification, key encapsulation and decapsulation. NTRU schemes which are towards Post Quantum Cryptography (PQC), typically need inverses of polynomials in quotient rings <InlineEquation ID="IEq2"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq2.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="19" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {S}_*\)</EquationSource> <EquationSource Format="MATHML"><math> <mmultiscripts> <mi mathvariant="double-struck">S</mi> <mrow> <mrow /> <mo>∗</mo> </mrow> <mrow /> </mmultiscripts> </math></EquationSource> </InlineEquation> =<InlineEquation ID="IEq3"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq3.gif" Format="GIF" Height="14" Rendition="HTML" Resolution="72" Type="Linedraw" Width="13" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {Z}\)</EquationSource> <EquationSource Format="MATHML"><math> <mi mathvariant="double-struck">Z</mi> </math></EquationSource> </InlineEquation>[x]/(*, <InlineEquation ID="IEq4"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq4.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="25" /> </InlineMediaObject> <EquationSource Format="TEX">\(\Phi _N\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="normal">Φ</mi> <mi>N</mi> </msub> </math></EquationSource> </InlineEquation>) <InlineEquation ID="IEq5"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq5.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="19" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {R}_*\)</EquationSource> <EquationSource Format="MATHML"><math> <mmultiscripts> <mi mathvariant="double-struck">R</mi> <mrow> <mrow /> <mo>∗</mo> </mrow> <mrow /> </mmultiscripts> </math></EquationSource> </InlineEquation>=<InlineEquation ID="IEq6"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq3.gif" Format="GIF" Height="14" Rendition="HTML" Resolution="72" Type="Linedraw" Width="13" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {Z}\)</EquationSource> <EquationSource Format="MATHML"><math> <mi mathvariant="double-struck">Z</mi> </math></EquationSource> </InlineEquation>[x]/(*, <InlineEquation ID="IEq7"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq7.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="19" /> </InlineMediaObject> <EquationSource Format="TEX">\(\Phi _1\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="normal">Φ</mi> <mn>1</mn> </msub> </math></EquationSource> </InlineEquation> <InlineEquation ID="IEq8"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq8.gif" Format="GIF" Height="17" Rendition="HTML" Resolution="72" Type="Linedraw" Width="33" /> </InlineMediaObject> <EquationSource Format="TEX">\(, \Phi _N\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mo>,</mo> <msub> <mi mathvariant="normal">Φ</mi> <mi>N</mi> </msub> </mrow> </math></EquationSource> </InlineEquation>) with either binary {0, 1} or ternary {-1, 0, 1}/{0, 1, 2} or {-<i>q</i>/2, -<i>q</i>/2+1 ...<i>q</i>/2+1} coefficients where, <i>q</i> could be 2048, 4096, 8192 or some prime etc., <InlineEquation ID="IEq9"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq4.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="25" /> </InlineMediaObject> <EquationSource Format="TEX">\(\Phi _N\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="normal">Φ</mi> <mi>N</mi> </msub> </math></EquationSource> </InlineEquation> is <InlineEquation ID="IEq10"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq10.gif" Format="GIF" Height="21" Rendition="HTML" Resolution="72" Type="Linedraw" Width="69" /> </InlineMediaObject> <EquationSource Format="TEX">\((X^N-1)\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mo stretchy="false">(</mo> <msup> <mi>X</mi> <mi>N</mi> </msup> <mo>-</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation> or <InlineEquation ID="IEq11"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq11.gif" Format="GIF" Height="21" Rendition="HTML" Resolution="72" Type="Linedraw" Width="106" /> </InlineMediaObject> <EquationSource Format="TEX">\((X^N-X-1)\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mo stretchy="false">(</mo> <msup> <mi>X</mi> <mi>N</mi> </msup> <mo>-</mo> <mi>X</mi> <mo>-</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq12"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq7.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="19" /> </InlineMediaObject> <EquationSource Format="TEX">\(\Phi _1\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="normal">Φ</mi> <mn>1</mn> </msub> </math></EquationSource> </InlineEquation> is <InlineEquation ID="IEq13"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq13.gif" Format="GIF" Height="19" Rendition="HTML" Resolution="72" Type="Linedraw" Width="58" /> </InlineMediaObject> <EquationSource Format="TEX">\((X-1)\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mo stretchy="false">(</mo> <mi>X</mi> <mo>-</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation>. More specifically for the NTRU-HRSS, N=701, <InlineEquation ID="IEq14"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq4.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="25" /> </InlineMediaObject> <EquationSource Format="TEX">\(\Phi _N\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="normal">Φ</mi> <mi>N</mi> </msub> </math></EquationSource> </InlineEquation>=<InlineEquation ID="IEq15"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq10.gif" Format="GIF" Height="21" Rendition="HTML" Resolution="72" Type="Linedraw" Width="69" /> </InlineMediaObject> <EquationSource Format="TEX">\((X^N-1)\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mo stretchy="false">(</mo> <msup> <mi>X</mi> <mi>N</mi> </msup> <mo>-</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </math></EquationSource> </InlineEquation>, ternary <i>p</i>=3, <i>q</i>=8192 based coefficients for polynomials in <InlineEquation ID="IEq16"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq16.gif" Format="GIF" Height="14" Rendition="HTML" Resolution="72" Type="Linedraw" Width="12" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {S}\)</EquationSource> <EquationSource Format="MATHML"><math> <mi mathvariant="double-struck">S</mi> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq17"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq17.gif" Format="GIF" Height="14" Rendition="HTML" Resolution="72" Type="Linedraw" Width="12" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {R}\)</EquationSource> <EquationSource Format="MATHML"><math> <mi mathvariant="double-struck">R</mi> </math></EquationSource> </InlineEquation>. Generally, inverses are computed in software, and hardware-based inversion units accelerate the key generation process and reduce latency during frequent key generation needs. This work presents the design and analysis of an efficient unified hardware unit for computing polynomial inverses in constant time for NTRU schemes in general and more focusing towards NTRU-HRSS701. The unit supports the finding of inverses in <InlineEquation ID="IEq18"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq18.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="17" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {S}_2\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">S</mi> <mn>2</mn> </msub> </math></EquationSource> </InlineEquation>, <InlineEquation ID="IEq19"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq19.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="17" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {S}_3\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">S</mi> <mn>3</mn> </msub> </math></EquationSource> </InlineEquation>, <InlineEquation ID="IEq20"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq20.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="18" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {R}_2\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">R</mi> <mn>2</mn> </msub> </math></EquationSource> </InlineEquation>, <InlineEquation ID="IEq21"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq21.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="18" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {R}_3\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">R</mi> <mn>3</mn> </msub> </math></EquationSource> </InlineEquation>, <InlineEquation ID="IEq22"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq22.gif" Format="GIF" Height="19" Rendition="HTML" Resolution="72" Type="Linedraw" Width="18" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {S}_q\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">S</mi> <mi>q</mi> </msub> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq23"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq23.gif" Format="GIF" Height="19" Rendition="HTML" Resolution="72" Type="Linedraw" Width="19" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {R}_q\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">R</mi> <mi>q</mi> </msub> </math></EquationSource> </InlineEquation>. Different design approaches viz., with and without Counting Trailing Zeros (CTZ), single Montgomery modular multiplier (MMM) reuse, etc., to optimize either latency or area have been adopted and evaluated. The designed inversion unit has been integrated with an NTRU-HRSS701 hardware accelerator which specifically needs inverses in <InlineEquation ID="IEq24"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq19.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="17" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {S}_3\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">S</mi> <mn>3</mn> </msub> </math></EquationSource> </InlineEquation> and <InlineEquation ID="IEq25"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq23.gif" Format="GIF" Height="19" Rendition="HTML" Resolution="72" Type="Linedraw" Width="19" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {R}_q\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">R</mi> <mi>q</mi> </msub> </math></EquationSource> </InlineEquation> which in-turn needs in <InlineEquation ID="IEq26"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="12046_2025_2806_Article_IEq20.gif" Format="GIF" Height="16" Rendition="HTML" Resolution="72" Type="Linedraw" Width="18" /> </InlineMediaObject> <EquationSource Format="TEX">\(\mathbb {R}_2\)</EquationSource> <EquationSource Format="MATHML"><math> <msub> <mi mathvariant="double-struck">R</mi> <mn>2</mn> </msub> </math></EquationSource> </InlineEquation>, validated and tested using NIST test vectors for NTRU-HRSS701. Further, the computational complexity of the proposed hardware inversion unit has been investigated experimentally and found to be within the indicated theoretical estimates for the adopted Constant Time Almost Inverse Algorithm (CT-AIA) and AIA. We analyze the proposed architectures through simulation and synthesizing for the FPGA platform and present the results.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Polynomial inversion hardware accelerator for post quantum algorithm

  • B Divya,
  • K Raja Sekar,
  • A David Selvakumar,
  • Soumya G Hosmani

摘要

Finding inverses of polynomials are required to generate key pair in NTRU ( \(N^{th}\) N th degree Truncated polynomial Ring Units) accelerators for encryption and decryption, hashing and verification, key encapsulation and decapsulation. NTRU schemes which are towards Post Quantum Cryptography (PQC), typically need inverses of polynomials in quotient rings \(\mathbb {S}_*\) S = \(\mathbb {Z}\) Z [x]/(*, \(\Phi _N\) Φ N ) \(\mathbb {R}_*\) R = \(\mathbb {Z}\) Z [x]/(*, \(\Phi _1\) Φ 1 \(, \Phi _N\) , Φ N ) with either binary {0, 1} or ternary {-1, 0, 1}/{0, 1, 2} or {-q/2, -q/2+1 ...q/2+1} coefficients where, q could be 2048, 4096, 8192 or some prime etc., \(\Phi _N\) Φ N is \((X^N-1)\) ( X N - 1 ) or \((X^N-X-1)\) ( X N - X - 1 ) and \(\Phi _1\) Φ 1 is \((X-1)\) ( X - 1 ) . More specifically for the NTRU-HRSS, N=701, \(\Phi _N\) Φ N = \((X^N-1)\) ( X N - 1 ) , ternary p=3, q=8192 based coefficients for polynomials in \(\mathbb {S}\) S and \(\mathbb {R}\) R . Generally, inverses are computed in software, and hardware-based inversion units accelerate the key generation process and reduce latency during frequent key generation needs. This work presents the design and analysis of an efficient unified hardware unit for computing polynomial inverses in constant time for NTRU schemes in general and more focusing towards NTRU-HRSS701. The unit supports the finding of inverses in \(\mathbb {S}_2\) S 2 , \(\mathbb {S}_3\) S 3 , \(\mathbb {R}_2\) R 2 , \(\mathbb {R}_3\) R 3 , \(\mathbb {S}_q\) S q and \(\mathbb {R}_q\) R q . Different design approaches viz., with and without Counting Trailing Zeros (CTZ), single Montgomery modular multiplier (MMM) reuse, etc., to optimize either latency or area have been adopted and evaluated. The designed inversion unit has been integrated with an NTRU-HRSS701 hardware accelerator which specifically needs inverses in \(\mathbb {S}_3\) S 3 and \(\mathbb {R}_q\) R q which in-turn needs in \(\mathbb {R}_2\) R 2 , validated and tested using NIST test vectors for NTRU-HRSS701. Further, the computational complexity of the proposed hardware inversion unit has been investigated experimentally and found to be within the indicated theoretical estimates for the adopted Constant Time Almost Inverse Algorithm (CT-AIA) and AIA. We analyze the proposed architectures through simulation and synthesizing for the FPGA platform and present the results.