IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ピーキューシールド・リミテッドの特許一覧

特表2024-525754ポスト量子暗号化動作のための暗号システム
<>
  • 特表-ポスト量子暗号化動作のための暗号システム 図1
  • 特表-ポスト量子暗号化動作のための暗号システム 図2
  • 特表-ポスト量子暗号化動作のための暗号システム 図3
  • 特表-ポスト量子暗号化動作のための暗号システム 図4
  • 特表-ポスト量子暗号化動作のための暗号システム 図5
  • 特表-ポスト量子暗号化動作のための暗号システム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-12
(54)【発明の名称】ポスト量子暗号化動作のための暗号システム
(51)【国際特許分類】
   H04L 9/10 20060101AFI20240705BHJP
   G06F 21/60 20130101ALI20240705BHJP
【FI】
H04L9/10 A
G06F21/60 320
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024501893
(86)(22)【出願日】2022-07-14
(85)【翻訳文提出日】2024-03-12
(86)【国際出願番号】 GB2022051829
(87)【国際公開番号】W WO2023285830
(87)【国際公開日】2023-01-19
(31)【優先権主張番号】2110207.4
(32)【優先日】2021-07-15
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】522023897
【氏名又は名称】ピーキューシールド・リミテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】マルック-ユハニ・オラヴィ・サーリネン
(57)【要約】
本明細書に記載される特定の例は、少なくとも暗号システム及び暗号システムを動作させる方法に関する。暗号システムは、ポスト量子暗号関数を実行するためのコプロセッサとして実装されてもよい。暗号システムは、外部コンピューティングシステム、暗号数値演算装置、及び制御装置に結合するためのバスインターフェースセットを備える。特定の例における暗号数値演算装置は、サイドチャネル攻撃及び非侵襲的攻撃に対して暗号化動作を保護する、1つ以上のマスクされた動作モードを提供するように適合されている。暗号システムを動作させる方法には、秘匿データに注釈を付け、1つ以上の算術演算動作を通じてそれらの注釈を追跡することが含まれる。
【特許請求の範囲】
【請求項1】
通信可能に結合されたコンピューティングシステムのポスト量子暗号化動作を実行する暗号システムであって、前記暗号システムが、前記通信可能に結合されたコンピューティングシステムから分離されており、
前記暗号システムを前記コンピューティングシステムの1つ以上のシステムバスに通信可能に結合するためのバスインターフェースセットと、
暗号数値演算装置と、
前記暗号数値演算装置を制御する少なくとも1つのプロセッサ及びメモリを備える制御装置であって、前記制御装置が、第1の内部バスを介して前記バスインターフェースセットに通信可能に結合され、第2の内部バスを介して前記暗号数値演算装置に通信可能に結合されており、前記第1の内部バス及び前記第2の内部バスが、前記暗号化動作中に、前記暗号数値演算装置の内部暗号データへのアクセスを可能にしない、前記制御装置と、
を備えており、
前記暗号数値演算装置が、
データの多次元配列を格納するマトリックスメモリと、
前記制御装置から制御信号を受信し、前記マトリックスメモリ内のデータへのアクセスを制御するように構成されたアドレスジェネレータと、
前記アドレスジェネレータを使用してアクセスされた前記マトリックスメモリ内のデータに対して、定義された算術演算動作のセットを実行する算術演算装置と、
ランダムなビットシーケンスを生成するように構成された並べ換え装置であって、前記並べ換え装置が、前記制御装置によって制御され、前記算術演算装置に通信可能に結合される、前記並べ換え装置と、
を備え、
前記暗号システムが、秘匿データ値を複数のデータシェアに分解することによってマスクされた算術計算を実行するように構成されており、前記制御装置が、前記算術演算装置及び前記アドレスジェネレータを制御して、前記定義された算術演算動作のセットの少なくとも1つを複数のデータシェアのそれぞれに対する複数の独立した線形動作として適用するように構成されている、前記暗号システム。
【請求項2】
前記暗号システムは、マスクされた動作モードを備え、前記マスクされた動作モードでは、
前記バスインターフェースセットを介して、前記通信可能に結合されたコンピューティングシステムからマスクされた算術計算を単一のアトミック動作として実行する命令を受信することと、
前記制御装置で、前記マトリックスメモリ内のデータへのアクセスを制御する第1の制御信号のセットと、前記マスクされた算術計算を実行するために前記算術演算装置の少なくとも1つの動作を制御する第2の制御信号のセットとを決定することと、
前記並べ換え装置からの1つ以上のランダムなビットシーケンスを秘匿データ値に適用することによって、前記マトリックスメモリ内に格納された前記秘匿データ値を複数のマスクされたデータシェアに分解することと、
前記マスクされた算術計算を実行するために前記算術演算装置を使用して、前記複数のデータシェアのそれぞれに前記少なくとも1つの動作を繰り返し適用することであって、前記少なくとも1つの動作が、複数の独立した線形動作として適用される、前記繰り返し適用することと、
を行うように構成されている、請求項1に記載の暗号システム。
【請求項3】
前記暗号システムは、前記マスクされた動作モードでは、
前記バスインターフェースセットを介して、暗号化された秘匿データ値を取得することと、
前記暗号化された秘匿データ値を解読し、前記マスクされたデータシェアに分解するために前記解読したデータ値を前記マトリックスメモリに格納することと、
を行うように構成されており、
前記少なくとも1つの動作の結果が、暗号化された形式で、前記通信可能に結合されたコンピューティングシステムにのみエクスポートされる、請求項2に記載の暗号システム。
【請求項4】
前記並べ換え装置はASCON並べ換えを実行する、請求項1~3のいずれか1項に記載の暗号システム。
【請求項5】
前記制御装置は、前記メモリに格納され前記プロセッサによって実行される条件なし命令のセットを備える、請求項1~4のいずれか1項に記載の暗号システム。
【請求項6】
前記並べ換え装置は、
暗号化動作を適用して無限長の出力ストリームを生成する拡張可能出力関数(XOF)装置を備え、
前記XOF装置が、前記制御装置によって制御され、前記算術演算装置に通信可能に結合される、請求項1~5のいずれか1項に記載の暗号システム。
【請求項7】
前記XOR装置は、暗号吸収動作、暗号スクイーズ動作、暗号サンプリング動作、及び暗号ランダムマスキング動作のうちの1つ以上を実行するように構成される、請求項6に記載の暗号システム。
【請求項8】
前記XOF装置は、マスクされた算術計算のための複数のデータシェアに分割されるnビットの暗号状態を備える、請求項6または請求項7に記載の暗号システム。
【請求項9】
前記暗号システムは、前記マトリックスメモリに格納されたデータを繰り返しハッシュすることによって、ハッシュベースの署名を計算するように構成されている、請求項1~8のいずれか1項に記載の暗号システム。
【請求項10】
前記暗号システムは、Winternitzハッシュチェーン及びマークルツリーデータの1つ以上を計算するように構成されている、請求項6~9のいずれか1項に記載の暗号システム。
【請求項11】
前記暗号システムは、
暗号化及び解読の1つ以上を含む鍵確立関数と、
デジタル署名生成及びデジタル署名検証のうちの1つ以上を含むデジタル署名関数と、
ステートフルなハッシュベースの署名と、の1つ以上を実行するように構成されている、請求項1~10のいずれか1項に記載の暗号システム。
【請求項12】
前記暗号システムは、
格子ポスト量子鍵確立関数及びコードベースポスト量子鍵確立関数のうちの1つ以上を実装することと、
格子ポスト量子デジタル署名関数、コードベースポスト量子デジタル署名関数、ハッシュベースポスト量子デジタル署名関数、及び多変量ポスト量子デジタル署名関数のうちの1つ以上を実装することと、
階層型署名システム関数を実装することと、
を行うように構成されている、請求項11に記載の暗号システム。
【請求項13】
前記算術演算装置は、実行するために選択された動作をインディケートする制御データを前記制御装置から受信し、前記選択された動作を経時的に複数のステージとして実行する算術演算パイプライン装置を備える、請求項1~12のいずれか1項に記載の暗号システム。
【請求項14】
前記複数のステージは、複数の並列処理ストリームを備え、前記複数の並列処理ストリームが、前記マトリックスメモリからアクセスされたデータを受信する、請求項13に記載の暗号システム。
【請求項15】
前記制御装置の前記プロセッサは、前記バスインターフェースセットを介して、ベクトル命令を受信し、前記ベクトル命令を前記暗号数値演算装置のベクトル動作のための制御命令に変換するように構成されている、請求項1~14のいずれか1項に記載の暗号システム。
【請求項16】
前記バスインターフェースセットは、
前記通信可能に結合されたコンピューティングシステムの少なくとも1つのプロセッサによって書き込み可能な制御レジスタセットと、
秘匿暗号データ用の暗号レジスタセットと、
を備える、請求項1~15のいずれか1項に記載の暗号システム。
【請求項17】
前記制御装置は、第1のマスキングフォーマットから第2のマスキングフォーマットに変換するように構成される、請求項1~16のいずれか1項に記載の暗号システム。
【請求項18】
前記制御装置は、ブールマスキング及び算術演算マスキングのうちの1つ以上を実装するように構成される、請求項1~17のいずれか1項に記載の暗号システム。
【請求項19】
暗号システムを動作させる方法であって、前記暗号システムが、通信可能に結合されたコンピューティングシステムから分離されており、前記方法が、
前記暗号システムのバスインターフェースセットを介して、マスクされた算術計算を単一のアトミック動作として実行する命令を、前記通信可能に結合されたコンピューティングシステムから受信することと、
少なくとも1つのプロセッサ及びメモリを備える前記暗号システムの制御装置によって、前記バスインターフェースセットに書き込まれた前記命令にアクセスすることと、
前記制御装置で、前記暗号システムのマトリックスメモリ内のデータへのアクセスを制御する第1の制御信号のセットと、前記マスクされた算術計算を実行するために前記暗号システムの算術演算装置の少なくとも1つの動作を制御する第2の制御信号のセットとを決定することと、
前記暗号システムの並べ換え装置からの1つ以上のランダムなビットシーケンスを秘匿データ値に適用することによって、前記マトリックスメモリ内に格納されている前記秘匿データ値を、複数のマスクされたデータシェアに分解することと、
前記第1の制御信号のセットと前記第2の制御信号のセットとを使用して、前記マスクされた算術計算を実行するために前記算術演算装置を使用して、前記複数のデータシェアのそれぞれに前記少なくとも1つの動作を繰り返し適用することであって、前記少なくとも1つの動作が、複数の独立した線形動作として適用される、前記繰り返し適用することと、
を含み、
少なくとも前記分解中及び前記繰り返し適用中に、前記制御装置が前記マトリックスメモリまたは前記算術演算装置の内容にアクセスすることが防止される、
前記方法。
【請求項20】
前記マスクされた算術計算の非秘匿結果を、前記暗号システムの前記バスインターフェースセットを介して、前記通信可能に結合されたコンピューティングシステムにエクスポートすることと、
前記マスクされた算術計算が秘匿結果を提供する場合、エクスポートする前に前記秘匿結果を暗号化することを含むことと、
を含む、請求項19に記載の方法。
【請求項21】
前記バスインターフェースセットを介して、暗号化された秘匿データ値を取得することと、
前記暗号システム内で前記暗号化された秘匿データ値を解読することと、
前記マスクされたデータシェアに分解するために、前記解読したデータ値を前記マトリックスメモリに格納することと、
を含む、請求項19または請求項20に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号ハードウェア、特に、暗号化動作を行うための暗号システムに関する。本暗号システムは、チップ上のポスト量子暗号システムの一部として用いられ得る。本暗号システムは、通信可能に結合されたコンピューティングシステムの暗号計算を行うのに用いることができ、例えばコンピューティングボード用の暗号モジュールとして動作し得る。暗号システムの動作方法についても記載する。特に、マスキング及びサイドチャネルセキュリティに関する方法及びシステムが提供される。
【背景技術】
【0002】
最近、コンピュータネットワークに接続されるデバイスの数が爆発的に増え続けている。例えば、インターネットの接続性は、デスクトップコンピュータ及びラップトップコンピュータなどのコンピューティングデバイスを超えて、自動車、電球、冷蔵庫、医療機器、サーモスタット、及び監視システムなどの日常的なものの中の組み込みシステムに広がりつつある。電気通信リンクは、多くの低コストコンピューティングデバイスが、世界中で、センサデータを報告できるようにし、及び/または制御されるようにする。このような接続デバイスに関する問題の1つは、それらが攻撃や悪意のある制御に対して脆弱になりがちなことである。例えば、数百または数千の組み込みデバイスが悪意のある者によって不正アクセスされ、分散型サービス拒否攻撃の実行に使用される可能性がある。多くの場合、このようなデバイスの制御は、暗号プロトコルの実装不良または実装制限のため、容易に獲得することができる。このような接続デバイスの数が増加し、普及するなかで、それらを保護する方法に関して未解決の問題がある。
【0003】
接続されたコンピューティングデバイスを保護する際にもう1つ考慮すべきことは、量子コンピューティングを用いた将来の攻撃の可能性である。何年にもわたって、量子コンピュータは、主に理論上でしか存在しない関心事にすぎないものであった。しかしながら、量子コンピュータの研究実装は急速に発展している。現在、50量子ビット及び72量子ビットの量子コンピュータが利用可能であり、多くの研究グループが、より高量子ビットのマシン開発に積極的に取り組んでいる。量子コンピューティングが将来現実になる可能性を考えると、最近の研究では、広く知られた多くの公開鍵暗号システムが、十分に強力な量子コンピュータによって破られうることが示されている。
【0004】
暗号関数、特に「ポスト量子」セキュアな暗号関数を実装するとき、それらの関数の多くがリソース集約的であるという課題がある。例えば、多くの暗号関数は、長いビット長の値を用いる複素数学関数を含む。これらは、通常、多数のプロセッササイクルを消費し、低リソースの組み込みデバイス内での実装に支障を及ぼす。そのうえ、データ及び通信両方のエンドツーエンドの暗号化が一般的になるに伴い、これらの暗号関数もまた高速で繰り返し実行する必要がある。セキュアであるということは、遅いということである。
【0005】
参照により本明細書に組み込まれるWO2021/032946A1は、処理装置が暗号化動作を効率的に行うことを可能にするコプロセッサについて記載する。コプロセッサは、メモリからロードされたビットシーケンスを使用して離散2進演算を行うように構成された算術演算装置を有する。コプロセッサは、暗号化動作のための低レベルビルディングブロックを含む特定の関数を、高速に低電力で計算するように構成され得る。このような関数には、ブール論理及び整数演算が含まれ得る。コプロセッサは、コプロセッサを制御するために処理装置によって書き込み可能な制御レジスタのセットを有する。柔軟な動作を可能にするために、1つ以上のソース及びデスティネーションのアドレスが、コプロセッサによって計算され得る。コプロセッサにより、「ポスト量子」セキュアな暗号化動作を含む、多くの高度な暗号化動作を高速に計算することが可能になり得る。
【0006】
WO2021/032946A1に記載されている暗号コプロセッサは、セキュリティヒューズ及び/またはサイドチャネル攻撃対策を使用して保護され得る。しかし、WO2021/032946A1は、これらが柔軟な暗号処理回路内で、どのように実装及び/または統合され得るかを詳細に記載していない。
【0007】
参照により本明細書に組み込まれるUS2010/115237A1は、所望のパーソナリティに対して動的に構成され得る1つ以上のアプリケーションエンジンを備えたコプロセッサについて記載する。例えば、アプリケーションエンジンは、単精度ベクトル処理命令セット及び倍精度ベクトル処理命令セットなどの複数の異なるベクトル処理命令セットのいずれかに対して動的に構成され得る。コプロセッサは、さらに、命令デコードインフラストラクチャ、メモリ管理インフラストラクチャ、システムインターフェースインフラストラクチャ、及び/または(命令のベースセットを有する)スカラー処理装置など、異なるパーソナリティにわたって共通の共通インフラストラクチャを備える。したがって、コプロセッサの共通インフラストラクチャは、さまざまなパーソナリティにわたって一貫したままでありながら、コプロセッサのパーソナリティを(コプロセッサの1つ以上のアプリケーションエンジンを再構成することによって)動的に変更することができる。US2010/115237A1は、暗号関連の動作を処理するために、事前定義された命令セットが設計され得る方法を記載しているが、セキュアなポスト量子暗号向けの具体的な適応については記載していない。
【0008】
参照により本明細書に組み込まれるWO2014/136594A1は、KECCAKアルゴリズムに基づいてハッシュ値を生成するためのハッシュ値生成デバイスについて記載する。このデバイスは、KECCAKアルゴリズムのラウンド処理に含まれる5つのステップθ、ρ、π、χ、及びιの処理を実行するためのθ処理装置、ρ処理装置、π処理装置、χ処理装置、及びι処理装置を含む。π処理装置は、データの入力をプレーン単位で受け取り、データをシート単位で出力する。WO2014/136594A1は、KECCAKアルゴリズムの処理に特化したデバイスについて記載しているため、より広範なポスト量子暗号化動作への関連性は限定されている。
【0009】
Melissa Rossiは、2020年9月23日にHALアーカイブに提出された博士論文「Extended Security of Lattice-Based Cryptography」の中で、格子に基づくポスト量子非対称スキームの実世界セキュリティを分析している。パートIでは、署名スキームに重点を置いて、タイミング攻撃及びサイドチャネル攻撃に対するアルゴリズム保護を分析している。これらの攻撃に対処するアルゴリズムツールの導入に焦点が当てられている。この論文は、格子に基づくポスト量子非対称スキームにおけるタイミング保護と高次マスキングとを証明する際のギャップの一部を埋めることを試みている(セクション1.3参照)。論文のパートIIでは、暗号解析に重点が置かれている。第3章では、格子に基づく署名のマスキングについてさらに詳しく説明している。Rossiは、格子に基づく署名スキームのマスキングは、単純なスキームであることを考慮に入れても、非常に困難であると述べている(62ページ参照)。セクション3.1で、Rossiは、格子に基づくプリミティブの実装は、サイドチャネル攻撃などの物理的攻撃に関する限りは、新たな一連の課題を引き起こすと述べている。マスキングは量子以前の暗号で使用されてきたが、ポスト量子暗号への適用は簡単ではない。Rossiは、いくつかの理論モデルを検討したうえで、より大規模なアルゴリズムのサブパートに相当する高レベル疑似コード「ガジェット」を紹介している(67ページ参照)。マスキングされた署名スキームのいくつかの概念実証実装が、Intel(登録商標)Core(登録商標)i7CPUベースのデスクトップマシンでテストされている(89ページのセクション3.3.5及び101ページの3.5.4参照)。次数1のマスキングを使用するqTESLAスキームの単純な実装もまた、Cortex(登録商標)M4マイクロコントローラでテストされている。
【0010】
US2010/0235417A1は、ブールマスク及び算術演算マスクを変換するための回路を記載する。
【0011】
暗号化動作の効率的な実装を提供することが望ましい。例えば、ポスト量子環境における攻撃に対する耐性を提供しながらも、低リソースの組み込みシステム内及び/または高速データ処理動作で使用可能な実装を提供することが望まれている。例えば、異なるコンピューティングシステムに、それらのコンピューティングシステムの大規模な再設計を必要とせずに、セキュアなポスト量子暗号サービスを容易に提供することが望まれている。
【0012】
格子に基づく暗号化法を用いてマスキングを実装する場合、効率的であるにもかかわらずセキュアな低レベル実装を提供するというさらなる課題がある。例えば、Rossiによって提供される疑似コードガジェットは、(例えば、疑似コードを実装したコンピュータプログラムコードの実行による)従来のCPU実装を有する。そのような実装は、秘密鍵の一部などの機密データが、マスキング動作前及びマスキング動作中に、依然としてメモリからCPUにロードされる必要があるので、攻撃に対して脆弱である。したがって、最新CPUの複雑さ、例えば、複数のキャッシュ及び不透明な処理パイプラインを考えると、マスキングが施されているにもかかわらず、悪意のある者に傍受及び/または計測のポイントを多数提供する可能性がある。
【発明の概要】
【0013】
本発明の態様は、添付の独立請求項に記載されている。本発明の特定の変形形態は、添付の従属請求項に記載されている。
【0014】
これより、添付の図面を参照しながら、ほんの一例として、本発明の実施例について説明する。
【図面の簡単な説明】
【0015】
図1】実施例による暗号システムを示す概略図である。
図2】実施例による算術演算パイプライン装置によって実行されるパイプライン動作を示す概略図である。
図3】秘匿データに適用されるマスキングの実施例を示す概略図である。
図4】高速反復ハッシュ値を計算するために使用される拡張可能出力関数(XOF)装置の例を示す概略図である。
図5】実施例によるパイプライン暗号関数の実行を示す概略図である。
図6】実施例による暗号化動作を行う方法を示すフロー図である。
【発明を実施するための形態】
【0016】
序文
本明細書に記載される特定の実施例は、通信可能に結合されたコンピューティングシステムが暗号化動作を効率的に実行できるようにする暗号システムに関する。例えば、本暗号システムは、より大きな計算回路基板及び/または集積回路に入れるためのシステムオンチップデバイスとして提供され得る。本暗号システムは、シリコン、すなわち、(例えば、特定用途向け集積回路(ASIC)として)単体で製造される、またはより大規模なコンピューティングシステム回路と共に製造される、集積回路設計として、及び/またはフィールドプログラマブルゲートアレイ(FPGA)として、例えば、適切なハードウェア記述言語でプログラムされるFPGAの特定の構成の形態で、実装され得る。本暗号システムは、「ポスト量子」暗号モジュールまたはコプロセッサとして使用することができ、例えば、通信可能に結合されたコンピューティングシステムの1つ以上のプロセッサが、複雑な「ポスト量子」暗号化動作をオフロードして、迅速でセキュアな計算を行うことを可能にする。例えば、本暗号システムは、コンピューティングシステムの代わりに、鍵確立関数及びデジタル署名関数を実装するように構成され得る。本暗号システムは、コンピューティングシステムの他のデバイス及び集積回路が、場合によってはコンピューティングシステム自体さえも、暗号システム内で操作される秘匿データにアクセスできないように、セキュリティ境界付きで構成され得る。本暗号システムは、より大きなASICまたはFPGA設計などの、より大きなハードウェアシステムの一部として、ポスト量子暗号化動作を自律的に実行するように構成され得る。
【0017】
説明される特定の実施例では、本暗号システムは、本暗号システムをコンピューティングシステムの1つ以上のシステムバスに通信可能に結合するためのバスインターフェースセット、暗号数値演算装置、及び本暗号システムを制御する少なくとも1つのプロセッサ及びメモリを含む制御装置を備える。これらの構成要素は、暗号化システムが、より広範な電子ハードウェア内で自律システムとして動作することを可能にする。暗号数値演算装置は、多次元配列として構成されたデータを格納するマトリックスメモリ、制御装置から制御信号を受信し、マトリックスメモリ内のデータへのアクセスを制御するように構成されたアドレスジェネレータ、及びアドレスジェネレータを使用してアクセスされるマトリックスメモリ内のデータに対して、定義された算術演算動作のセットを実行する算術演算装置を備え得る。算術演算装置は、マトリックスメモリからロードされたビットシーケンスを使用して離散2進演算を実行するように構成され得る。これらのビットシーケンスは、ビットのブロックであり得るため、暗号数値演算装置は、「ブリッタ」機能、すなわちメモリ内のビットのブロックの移動及び操作を行うためのハードウェア支援システムを実装し得る(ここで用語「ブリッタ」は、ゼロックスアルトコンピュータの「BitBLT」(ビットブロック転送)マイクロコード命令に由来する)。本暗号システムは、暗号化動作のための低レベルビルディングブロックを含む特定の関数を、高速に低電力で計算するように構成され得る。これらの関数には、ブール論理、整数演算及びベクトル処理、ならびに並べ換え暗号化が含まれ得る。したがって、結合されたコンピューティングシステムの処理装置は、専用かつセキュアなハードウェアデバイスとして動作する本暗号システムに、暗号化動作のためのリソース集約的な計算を効果的にオフロードし得る。本暗号システムは、結合されたコンピューティングシステムの観点からすればアトミックである低レベルのビット演算を提供し得る。したがって、本暗号システムは、「ポスト量子」セキュアな暗号化動作を含む、多くの高度な暗号化動作が迅速に計算されるようにし得る。
【0018】
本明細書では、用語「ポスト量子」は、量子コンピュータによる攻撃に対する保護を提供する暗号化動作及び暗号化関数を説明するために使用される。この用語は、暗号化法の分野で周知の用語である。例えば、多くの一般的な公開鍵アルゴリズムは、ポスト量子セキュアではなく、十分に強力な量子コンピュータを使用して効率良く破られ得る。これらの「量子セキュアでない」暗号アルゴリズムには、素因数分解問題、離散対数問題、または楕円曲線離散対数問題に基づくアルゴリズムが含まれる。これらは、全て、十分に強力な量子コンピュータ上で、ショアのアルゴリズムを使用して、簡単に解くことができる。ポスト量子セキュアであることが実証されている動作及び機能には、格子に基づく暗号化法、多変量暗号化法、ハッシュに基づく暗号化法、コードに基づく暗号化法、及び超特異楕円曲線同種写像暗号化法のうちの1つ以上に基づくものが含まれる。以下、本明細書で説明される暗号システムによって実装され得る具体的なポスト量子動作及び関数の実施例について、より詳細に説明する。
【0019】
実施例の暗号システムは、インターネットサーバから組み込みデバイスまで、幅広い種類のコンピューティングシステム用に適している。一実施態様では、本暗号システムは、多くの低コストの組み込みデバイスが「ポスト量子」暗号化法を実装し、「ポスト量子」セキュアなシステムを提供することを可能にし得る暗号システムオンチップ(SoC)の一部として提供され得る。例えば、暗号数値演算装置によって実装される関数は、例えば、整数の加算、減算及び/または乗算などの多くの一般的な低レベルの2値論理関数をオフロードすることにより、コードまたは格子に基づく暗号化動作が迅速に実行されるようにし得る。本暗号システムは、時間の経過とともに更新可能であり得る利用可能な関数のセットを用いて構成され得、または、事前にプログラムされ得る。本暗号システムは、結合されたコンピューティングシステムのプロセッサによって必要とされる別個の命令をロードして解釈する必要性を回避することにより、特定の関数を迅速に計算することができる。本暗号システムは、より大型の汎用コンピューティングデバイスと統合するために(例えば、コンピュータ内のコンピュータとして使用するために)設計された特殊化したコンピューティングデバイス(すなわち、コンピュータ)と考えられ得る。
【0020】
暗号システムの実施例
図1は、暗号システム110の実施例100を示す。暗号システム110は、バスインターフェースセット120、暗号数値演算装置130、及び制御装置150を備える。バスインターフェースセット120は、暗号システム110をコンピューティングシステムの1つ以上のシステムバスに通信可能に接続するように配置される。上記のように、コンピューティングシステムは、コンピューティングデバイス(サーバ基板など)または集積回路(より大型のFPGA及び/またはASIC組み込みシステムなど)を備え得る。ある場合には、暗号システム110は、コンピューティングデバイスのマザーボード(または他の電子回路基板セット)に結合されたシステムオンチップ(SoC)として実装され得る。バスインターフェースセット120は、制御命令及び/または秘匿データがコンピューティングシステムから(例えば、コンピューティングシステムのプロセッサ及び/またはメモリから、または1つ以上の周辺機器から)受信されるようにする。ある場合には、コンピューティングシステムのプロセッサは、暗号システムに、バスインターフェースセットを介したデータの読み出し及び/または書き込みを伴う暗号化動作を行うよう指示し得る。暗号数値演算装置130は、ポスト量子暗号化動作及び関数のための数学演算を実行するいくつかの構成要素を備える。暗号数値演算装置130は、バスインターフェースセット120からデータを受信し得、及び/またはバスインターフェースセット120に処理データを返し得る。暗号数値演算装置130は、制御装置150の制御の下で動作する。制御装置150は、暗号システムを制御するために少なくとも1つのプロセッサ及びメモリを備える。暗号システム110は、スマートカードからサーバ基板まで、さまざまなデバイスに組み込まれ得、あるいはサーバ、ラップトップ、タブレット、またはスマートフォンなどのコンピューティングデバイスのマザーボードまたは回路基板の一部を形成し得る。
【0021】
さらに詳細に、図1の実施例におけるバスインターフェースセット120は、暗号レジスタセット122及び制御レジスタセット124を含み、ここで「セット」は1つ以上のレジスタを指すために使用される。暗号レジスタセット122は、暗号システム110との間で機密セキュリティパラメータ(SSP)を転送するように構成されている。機密セキュリティパラメータは、秘密鍵マテリアル及び/または乱数ジェネレータからのデータ(例えば、真の乱数ジェネレータ(TRNG)フィードなど)を含み得る。機密セキュリティパラメータは、転送のために暗号化され得る。暗号レジスタセット122は、データを転送するための専用の暗号鍵管理インターフェースとして使用できるため、図1では鍵インターフェースとして示される。暗号レジスタセット122は、暗号システム110と、コンピューティングシステムのセキュアな不揮発性ストレージ及び/またはコンピューティングシステムの他の暗号装置(コンピューティングシステムのトラステッドプラットフォームモジュール(TPM)など)との間でデータを転送するために使用され得る。暗号レジスタセット122は、セキュアデータ転送のためSSPバス126に通信可能に結合されて示される。SSPバス126は、暗号データ転送のためのコンピューティングシステムの1つ以上の専用セキュアバス、及び/または適切に安全性が保証された汎用システムバス(例えば、汎用システムバス用の予約アクセスチャネル)を備え得る。制御レジスタセット124は、暗号システム110との高レベル制御相互作用を可能にする。使用中、図1に示す暗号システム110の点線の境界は、セキュリティ境界を形成しており、コンピューティングシステムがセキュリティ境界内の構成要素及びデータにアクセスすることを制限できるようにする。例えば、秘匿データは、SSPバス126と通信する暗号レジスタセット122を介してのみ交換され得、コンピューティングシステムは、通信可能に結合されたコンピューティングシステムの少なくとも1つのプロセッサによって制御レジスタセット124に書き込み可能な事前定義された制御命令セットを介してのみ暗号システムと通信し得る。例えば、制御レジスタセット124と1つ以上のコンピューティングシステムバス128とは、(外部の)コンピューティングシステムと暗号システム110との間のチップ間通信を可能にするために、アドバンストエクステンシブルインターフェース(AXI)及び/またはアドバンストハイパフォーマンスバス(AHB)インターフェースを形成し得る。例えば、コンピューティングシステムの少なくとも1つのプロセッサ(または認可された周辺機器)は、AXIコマンド及び/またはAHBコマンドを使用して暗号化動作を指示し得る。一般に、任意の高度なマイクロコントローラバスアーキテクチャを含む任意のバスアーキテクチャが使用され得る。場合によっては、暗号レジスタセット122と制御レジスタセット124とは、例えば、読み出し及び/または書き込みのための第1のメモリインターフェースと、制御パラメータのための第2の制御インターフェースとの形で、別々のAXI及び/またはAHBインターフェースを形成し得る。
【0022】
使用中、制御装置150は、暗号数値演算装置130の動作を制御して、コンピューティングシステムから(例えば、制御レジスタセット124を介してプロセッサまたは認可された周辺機器から)受信した高レベル命令に従って、暗号化動作(例えば、暗号レジスタセット122を介して受信したデータの処理)を実行する。暗号システム110は、少なくともポスト量子暗号化動作を実装するように構成されている。特定の実施態様では、暗号システム110は、非量子(例えば、古典的)暗号化動作を実行することもできる。制御装置150及び暗号数値演算装置130は、(他のポスト量子アプローチの中でも特に)格子に基づく暗号及びコードに基づく暗号、ならびに「大整数」算術演算(例えば、nビットによって定義される大整数値を用いた算術演算(ここで、nは32または64であり得る))に対して最適化され得る。制御レジスタセット124は、ステータス(例えば、ビジーまたは命令待ち)、実行する関数、ソースデータ及び/またはデスティネーションデータのサイズ、ソースデータ及び/またはデスティネーションデータの記憶場所、シフトパラメータ、アドレスアレイ及びデータアレイのうちの1つ以上についてのインクリメントパラメータ、及び/または現在の関数が完了したかどうかを示すインジケータのうちの1つ以上を格納するために使用され得る。(外部の)コンピューティングシステムは、制御レジスタセット124内に格納された値を読み出して、関数の出力が利用可能かどうかを判定するように構成され得、暗号システム110から割り込みを受信し得、及び/または関数に関連する所定のクロックサイクル数を待機し得る。実装要件に応じて、さまざまなアプローチが用いられ得る。
【0023】
ある場合には、暗号システム110は、暗号化及び解読の1つ以上を含む鍵確立関数、デジタル署名生成及びデジタル署名検証の1つ以上を含むデジタル署名関数、ならびにステートフルなハッシュベースの署名のうちの1つ以上を実行するように構成される。暗号システム110は、これらの関数を自律的に実行するように構成され得る。例えば、コンピューティングシステムのプロセッサは、制御レジスタセット124に書き込まれたデータを介して(例えば、上記のレジスタに命令を書き込むことによって)、コンピューティングデバイスのセキュアメモリ内のデータに対して暗号関数を実行するよう指示し得る。暗号システム110は、暗号レジスタセット122にコピーされたデータにアクセスし、制御装置150及び暗号数値演算装置130を使用して、指示された暗号関数を実行してから、関数の結果を暗号レジスタセット122を介してセキュアメモリにコピーし戻すよう構成され得る。このように、暗号システム110のドライバ構成要素は比較的単純であり得る。それは主に、コンピューティングシステムが入力データを利用可能にするように手配し、暗号システム110によって実行された動作の結果へのアクセスを待機することができるように、動作をスケジューリングすることに関係し得る。暗号化動作を実行していない間に、暗号システム110は、最小限の動的電力消費で「スリープ」モードに入るように構成され得る。
【0024】
制御装置150によって実行される動作は、ハードワイヤード(例えば、集積回路設計の一部として)ハードウェアにより実現されていてもよく、または(例えば、更新可能なファームウェア命令を介して)更新可能であってもよい。動作は、利用可能な動作のセットから選択され得、利用可能な動作のセットは事前に構成され得る(例えば、ASICまたはFPGA内に事前にプログラムされるか、またはその内部で構成され、及び/または場合によっては、例えばメモリに格納されたコンピュータプログラムコードを介して、拡張可能または変更可能である)。動作のためのパラメータは、適切なハードウェア抽象化層(HAL)関数を使用して、例えば、前述のドライバ構成要素を介してオペレーティングシステムまたは他のプロセスにアクセス可能なように、構成及び/または選択され得る。
【0025】
図1の実施例100では、制御装置150は、プロセッサ152、ランダムアクセスメモリ(RAM)154、及び読み出し専用メモリ(ROM)156を備える。プロセッサ152は、RISC-V中央処理装置(CPU)などの縮小命令セットコンピュータ(RISC)プロセッサを備え得る。プロセッサ152は、32ビットまたは64ビットのマイクロプロセッサ(例えば、RV32-I/E-/M/C Plutoコアなど)を備え得る。プロセッサ152は、1つ以上の処理コアを備え得る。RAM154は、制御装置150用のスタックRAM、すなわち、暗号数値演算装置130に送信される制御命令を管理するためにスタックを実装するためのメモリを備え得る。RAM154及び/またはROM156は、プロセッサ152によって実行されるファームウェア命令を格納するために使用され得る。RAM154は、揮発性メモリを備え得、ROM156は、制御命令用の不揮発性メモリを備え得る。ROM156は、ファームウェア命令を格納し、(例えば、バスインターフェースセット120を介して)ファームウェアの更新を可能にするプログラマブルROMを備え得る。
【0026】
使用中、制御装置150は、暗号レジスタセット122を介して受信した暗号データにアクセスできず、暗号数値演算装置130によって処理される暗号データにもアクセスできない。図1に示すように、バスインターフェースセット120は、第1の内部バス162によって暗号数値演算装置130に通信可能に結合され得、第2の内部バス164によって制御装置150に通信可能に結合され得る。第1の内部バス162は、安全性が保証され得、暗号レジスタセット122との間で暗号データを転送するために使用される。第2の内部バス164は、制御レジスタセット124に書き込まれた制御命令にアクセスするために、制御装置150によって使用される。そして、制御装置150は、第3の内部バス166を介して暗号数値演算装置130の動作を制御する。第3の内部バス166は、暗号数値演算装置130の内部暗号データへのアクセスを許可しない、いわゆる「ノータッチ」制御バスを備え得る。例えば、それは、暗号数値演算装置130の制御にのみ使用され得、データアクセスを無効にし得る。同様に、制御装置150は、暗号レジスタ122内のデータにアクセスできない場合がある。制御装置150は、バスインターフェースセット120及び第1の内部バス164を介して受信したポスト量子コンピューティングコマンドを解釈し、暗号データに触れることなく、第3の内部バス166を介して暗号数値演算装置130の動作を指示する。
【0027】
図1の実施例100では、暗号数値演算装置130は、マトリックスメモリ132、アドレスジェネレータ134、及び算術演算装置136を備える。マトリックスメモリ132は、データの多次元配列、すなわち、多次元配列として配列されるデータを格納するように構成されている。メモリ132は、ハードウェア的には「マトリックスメモリ」と呼ばれるが、これは、多次元配列の記憶を可能にするようにしてアドレスジェネレータ134を介してアクセスされるように構成されたランダムアクセスメモリ(RAM)を使用して実装され得る。アドレスジェネレータ134は、制御装置150から制御信号(図1では「CTRL」として示される)を受信し、マトリックスメモリ132内のデータへのアクセスを制御するように構成されている。算術演算装置136は、アドレスジェネレータ134を使用してアクセスされるマトリックスメモリ132内のデータに対して、定義された算術演算動作のセットを実行するように構成されている。暗号数値演算装置130は、上記のように、「ブリッタ」と呼ばれ得る。使用中、暗号数値演算装置130は、マトリックスメモリ132に格納されている数千の整数要素を変更するように制御され得る。これらの整数要素は、nビット値として定義され得る(例えば、nは一般に16または32である)。マトリックスメモリ132は、データの多次元表現に対する効率的な暗号化動作を可能にし、動作の結果を同様の多次元表現として保存するように構成され得る。例えば、マトリックスメモリ132は、定義された高さと幅を有する2次元アレイまたはマトリックスとしてデータを記憶及び/またはアクセスできるようにし得る。マトリックスメモリの一例が、WO2021/032946A1に記載されている。ある場合には、マトリックスメモリ132は、データが平坦化された一連のワードとして格納されるメモリ(RAMなど)を備えてもよく、さらに、データを多次元データ構造として表現する、暗号数値演算装置130内の演算のための外部インターフェースが提供される。マトリックスメモリ132は、一連のネスト化したループ内で反復することによって、データの配列に基づく表現から平坦化されたシーケンスに(内部的に)変換され得る。場合によっては、マトリックスとしてのデータへのアクセスが、アドレスジェネレータ134を介して実行され得る。
【0028】
例えば、マトリックスメモリ132は、nビットの内部的にアドレス指定可能なメモリを有したRAMを備え得る。ここで、nは、設定で変えることができ、(とりわけ)16、32、64、96、128、及び256ビットを含み得る。特定のテスト用の実装では、32ビットまたは64ビットのメモリが使用された。マトリックスメモリ132は、幅と高さ(例えば、第1の次元またはX次元のワード数と第2の次元またはY次元のワード数によって測定される)を有するワードの2次元ブロック(各ワードはnビットである)としてデータを表し得る。多次元配列の各次元のサイズは、制御装置150によって設定される値によって設定され得、例えば、制御装置150は、マトリックス「幅」を第1の次元のワードの整数サイズとして構成し、マトリックス「高さ」を第2の次元のワードの第2の整数サイズとして構成し得る。各次元のサイズは、1以上の整数値として設定されてもよい。
【0029】
データは、ネスト化したループのセットを使用して、メモリ(例えば、RAM)に格納されたワードのシーケンスを反復することによって、マトリックスメモリ132から取り出され得る。ネスト化したループの数は、多次元配列の次元の数に等しい。例えば、2つのネスト化したループが、2次元マトリックスとして処理されるメモリ内のワードのシーケンスを反復処理するために使用され得る。
【0030】
例として、シーケンス「ABCDEFGHIJKLMNOP」を考えてみる。ここで、各文字はメモリに格納されているワードを表す。これは、長さ4の4つの行を有する、設定で変えられるマトリックスとして、マトリックスメモリ132に格納され得る。このマトリックスは、アクセス用に定義されたネスト化したループ内でインクリメントを構成することにより、さまざまな方法でアクセスされ得る。例えば、インクリメントがX方向に1、Y方向に0である場合、反復の間、行は一度に1ワードずつ、例えばA、B、C、Dと読み込まれ得る。行の最後で、Yのインクリメントが適用される。これが0に設定されている場合、行の終わりでは何も起こらず、それ以降の反復は、前の行の反復が終わったところから直線的に次の行、例えば、D、E、F、Gを読み始める。したがって、データが「ABCDDEFGGHIJJKLM」として読み取られ、4ワードごとに繰り返され、最後の3ワードが無視されるように継続され得る。X及びYの両方向に1のインクリメントがある場合、これは、次の行に移る前に、(例えば、A、B、C、Dというように、幅方向に沿ってワードを順番に取得して)ワードの行に沿って反復することを可能にし得る(例えば、最初の4ワードが読み込まれ、行が完了した後、Yのインクリメントが再び1進むので、次の行はEから始まり、E、F、G、Hとなる)。この場合、「ABCDEFGHIJKLMNOP」が読み出される。サイズ及びインクリメントを構成することによって、データを通るプログラム可能な経路が決定され得、これは、アドレスジェネレータ134及び制御装置150のうちの1つ以上によって制御され得る。例えば、Xインクリメントを4、Yインクリメントを-11に設定すると、シーケンス「AEIMBFJNCGKODHLP」が読み取られる。つまり、列に沿って読み取られ、幅と高さが4ワードの元のデータマトリックスの転置が効果的に決定される。
【0031】
使用中、マトリックスメモリ132は、秘密鍵と公開鍵の両方、ならびに作業変数を格納するために使用され得る。これらの変数は、以下でさらに詳しく説明するように、マスクされたシェアとして表され得る。バスコントローラに対するマトリックスメモリ132の可視性は制限される場合がある。FPGA実装内では、マトリックスメモリ132は、ブロックRAM(BRAM)リソースを使用して実装され得る。バイトパリティエラーチェックなどは、ASIC実装のメモリコンパイラを使用して作成され得る。特定の変形形態では、マトリックスメモリ132は外部から利用可能であり得、例えば、外部コンピューティングシステムまたは上記のシステムの認可された構成要素によってアクセス可能であり得る。一般に、マトリックスメモリ132はセキュリティ境界内に定義されるが、この境界は、特定の実装(例えば、図1の暗号システム110を形成する破線と同様のセキュリティ境界)では物理的ではなく論理的に維持され得る。特定の変形形態では、マトリックスメモリ132は、コンピューティングシステムの他のプロセッサと共有される外部コンピューティングシステムのメモリ(例えば、上記のシステムのRAM)を使用して実装され得る。これらの変形形態では、マトリックスメモリ132を実装するために使用される基礎となるメモリは、安全性が保証され得る(例えば、予約されたアドレスに関連する、及び/または認可されたプロセスからのアクセスが有効にされないように制御されたアクセスを有する)。暗号システム110は、マトリックスメモリ132内のメモリアドレス及びアクセスパターンが秘密情報を漏洩しないように構成され得る。以下、マスキングを使用して個々のビットの直接抽出に対する機密性を保証する1つのアプローチについて、さらに詳しく説明する。マスキング及び/または暗号化制御により、マトリックスメモリ132は、任意の既知のメモリ技術(例えば、利用可能なRAM技術など)を使用して実装され得る。ある場合には、マトリックスメモリ132は、セキュリティを強化するために、誤り訂正メモリ、スクランブルメモリ、暗号化メモリ、及び難読化メモリのうちの1つ以上を使用して実装される。
【0032】
特定の実装では、暗号数値演算装置130は、算術演算動作の実行で用いるソースレジスタのセットとデスティネーションレジスタのセットとを有する。これらのレジスタは、算術演算装置136の一部を形成し得、データは、これらのレジスタとマトリックスメモリ132との間で転送される。この場合、アドレスジェネレータ134は、(例えば、算術演算装置136の所与の反復の間に)ソースレジスタ及び/またはデスティネーションレジスタに書き込まれるデータ、またはそこから読み出されるデータに対してマトリックスメモリ132内のアドレスを決定するように構成される。ある場合には、算術演算装置136は、(例えば、制御装置150によって構成される)動作に応じてソースレジスタまたはデスティネーションレジスタとして使用され得る複数のレジスタを含み得る。ソースレジスタ及びデスティネーションレジスタを参照するが、特定の実装では、データは代わりにマトリックスメモリ132内の場所から直接読み出されてもよいことに留意されたい。
【0033】
メモリアクセスの動作モードは、マトリックスメモリ132を実装するために使用されるメモリの形式及び/または利用可能なポートの数に依存し得る。特定のメモリ技術は、メモリアクセスの固定ルールに関連付けられた動作モードを有し得る。特定のメモリ実装では、(例えば、マトリックスメモリ132を実装するRAM内の)複数のアドレスに対して同時に効率的に読み出し及び/または書き込みを行うことが可能であり得る。例えば、ポートの数に応じて、任意の1回の反復中に複数の場所(例えば、A、B及びCの1つ、またはC及びDの1つを表す)からの読み出し及び/またはこれらの場所への書き込みが可能になり得る。また、A、B、Cは入力データのソース、C、Dは出力データのソースと呼ばれるが、実際の実装では、任意のメモリアドレスをデータソース(例えば、動作の入力として使用するためにデータが読み出される場合)及び/またはデータデスティネーション(例えば、動作の出力として使用するためにデータが書き込まれる場合)として使用することができる。並列読み出し動作及び/または並列書き込み動作は、(例えば、後述するように)サイドチャネルセキュリティ用のマスキングの「マスク書き込み」、及び数論変換(NTT)動作用のバタフライ動作のために実行され得る。アドレスジェネレータ134によって実行されるアドレス生成により、動作の柔軟な順序付けもまた可能になる。例えば、これは、マトリックスメモリ132の1つ以上の次元のアドレスインクリメントを構成することによって達成され得る。例として、ソースデータAに対してアドレスジェネレータがX次元(幅)のインクリメント0を使用する場合、これは列マトリックスを実装しており、マトリックス行の終わりでアドレスがインクリメントされる前に値を再読み出しする必要がない場合がある。
【0034】
図1に戻って、使用中、算術演算装置136によって実行される動作は、制御装置150からの動作制御信号(OPERとして示す)に基づいて動作制御装置138によって選択される。動作制御装置138は、動作制御信号を受信し、動作制御信号がインディケートする動作を算術演算装置136が実行するように構成する。これは、ソースレジスタに格納されたデータに対して実行される関数「oper」の設定を含み得る。算術演算装置150によって実行される利用可能な動作のセットは、格子またはコードに基づく暗号法などのポスト量子暗号法によって頻繁に使用される特定の整数演算関数を含み得る。整数演算関数には、整数値(例えば8、16、または32ビット整数など)を表すとみなされる1つ以上のビットシーケンスに対して実行される乗算、加算、及び減算の演算が含まれ得る。ブール演算も実行され得、例えば、オペランドとしてメモリから読み出されたビットシーケンスは、(例えば、ビット/ビット単位の論理の)独立したビットのシーケンスとして処理され得る。異なるビット長値がサポートされ得る。インディケートされた動作は、1つ以上のソースレジスタ及びデスティネーションレジスタ内に格納されたバイナリデータに対して実行され得る。実際には、レジスタは、マトリックスメモリ132から読み出されるか、またはマトリックスメモリ132に書き込まれるデータを一時的に格納するために多くの実装で使用され得るが、特定の実装では、1つ以上のソースレジスタまたはデスティネーションレジスタに中間記憶装置を持たずに、マトリックスメモリ132に直接読み出しまたは書き込みを行い得ることに留意されたい。
【0035】
アドレスジェネレータ134は、どのマトリックスメモリ位置が動作入力(「ソース」)として読み出されるか、及び/または動作出力(「デスティネーション」)として書き込まれるかを制御する。ソース及びデスティネーション(すなわち、算術演算)レジスタが使用される場合(例えば、4つのレジスタA、B、C及びD)、各レジスタは、非順次アクセスパターンを指定できるアドレスジェネレータ134内に独自のアドレスジェネレータを有し得る。アドレスジェネレータ134は、マトリックスメモリ132内の2次元「ブリット」ウィンドウを決定するように構成され得る。アドレスジェネレータ134は、上記のように、ネスト化したループ計算のために1つ以上のカウンタを格納するように構成され得る。例えば、2次元「ブリット」ウィンドウを実装するために、アドレスジェネレータ134は、ソースレジスタまたはデスティネーションレジスタごとに2つのネスト化したカウンタ層を使用することができ、カウンタはウィンドウの「幅」及び「高さ」(つまり、値の2次元配列)を表すために使用される。アドレスジェネレータ134は、マトリックスメモリ132を実装するネスト化したループを制御し得、例えば、値の2次元ウィンドウにアクセスするためにメモリ内の位置がどのように反復されるかを決定する。例えば、各算術演算レジスタのアドレス指定を制御することによって、アドレスジェネレータ134は、行演算及び行列転置、FFTバタフライステップのシーケンス、及び/または拒絶サンプリングのためのデータワードのゲート収集を制御し得る。この形式のアドレス指定により、ベクトル-マトリックス、多項式-多項式、及び/または大きな整数の乗算演算を、単一の暗号化システムの「アトミック」操作(つまり、単一の「ブリット」)で実行することが可能になる。暗号数値演算装置130によって実行され得る動作のさらなる詳細が、WO2021/032946A1に記載されている。
【0036】
「収集」モードでは、算術演算装置136は、1つ以上のアドレスジェネレータ(すなわち、アドレスジェネレータ134の一部として提供される)のステッピングに影響を与えて、拒絶サンプリングを実行する(すなわち、定義された基準を満たす値を選択する)ように制御され得る。この「収集」モードは、アクセスパターンが(例えば、算術演算装置136によって実行される他の動作と比較して)完全には事前に決定されないような、トリガされたステッピングを提供し得る。ただし、このトリガされたステッピングは、ランダム入力からの拒絶サンプリングのみに使用され得るので、秘密情報が漏洩することはない。
【0037】
図1の実施例100では、暗号システム110は、並べ換え装置140をさらに備える。これは、暗号化動作を適用して無限長の出力ストリームを生成するように構成された拡張可能出力関数(XOF)装置を含み得る。並べ換え装置140は、好ましい実装において提供される任意選択の装置を含み得る。図1の実施例100では、並べ換え装置140は、制御装置150によって制御され、算術演算装置136に通信可能に結合される。並べ換え装置140は、(暗号の)並べ換え計算を実装するように構成される。ある場合には、並べ換え装置140は、参照により本明細書に組み込まれる、連邦情報処理規格(FIPS)202(またはセキュアハッシュアルゴリズム3-「SHA-3」-規格)-「SHA-3規格:並べ換えに基づくハッシュ及び拡張可能出力関数」、FIPS PUB 202、米国標準技術局(NIST)、2015年8月に記載されているKECCAK-p並べ換えを実装するように構成される。FIPS202規格のセクション3に記載されているように、暗号並べ換えの各ラウンドは、5つの個別の(並べ換え)ステップ、シータθ(A)、ローρ(A)、パイπ(A)、カイχ(A)、及びイオタι(A,i)の構成要素を含み得る。最後のステップでは、ラウンド定数パラメータiを受け取る。したがって、この規格の複合ラウンド関数は次のように定義され得る。
Rnd(A,i)=ι(χ(π(ρ(θ(A)))),i
【0038】
この例では、並べ換え装置140は、この複合ラウンド関数Rndを、例えば、1つのラウンドまたは複数のラウンドのいずれかについて実行するように構成され得る。並べ換え入力Aのサイズが1600ビットの場合、これらのラウンド関数(特定のラウンド定数iを有する)の24個の合成が、KECCAK-p[1600,24]を構成する。これにより、FIPS202規格で説明されているSHA-3/SHAKEハッシュ関数の基本的なビルディングブロックが提供される。また、他の多くの派生プリミティブの基本的なビルディングブロックも提供される。KECCAK-p以外の暗号並べ換えの例には、参照により本明細書に組み込まれる、2019年3月のNIST LWC標準化活動への「Ascon v1.2」提案で、Christoph Dobraunig、Maria Aichlseder、Florian Mendel、及びMartin Schlafferによって説明されたASCONのBビット並べ換えが含まれる。例えば、並べ換え装置140は、ASCON並べ換えを実行して、以下で説明するようにマスキングに使用できるランダムビットシーケンスを生成し得る。一般に、並べ換え装置140は、(例えば、以下でより詳細に説明するように)サイドチャネル攻撃から保護するため内部データをノイズでマスカレードするように使用される1つ以上の内部マスク生成動作に用いられ得る。
【0039】
本実施例では、並べ換え装置140は、暗号数値演算装置130と統合され、暗号数値演算装置130の制御レジスタを使用して(例えば、図1の制御レジスタセット124を介して)制御される。並べ換え装置140によって実行される並べ換えは、制御装置150及び/または暗号数値演算装置130の他の構成要素によって構成され、開始され得る。この構成は、並べ換え装置140によって実行される並べ換えのレート及びデータブロックサイズを設定することを含み得る。アドレスジェネレータ134は、並べ換え状態の読み出しアドレス及び/または書き込みアドレスを生成するために使用され得、並べ換え状態は、マトリックスメモリ132内(及び例えば、並べ換え装置140の内部データレジスタ内)に格納され得る。並べ換え装置140の態様は、参照により本明細書に組み込まれるWO2021/014125A1に記載されている暗号並べ換え装置に基づき得る。
【0040】
並べ換え装置140は、いくつかの定義された並べ換え動作のうちの1つを実行するように用いられ得る。これらは、暗号吸収動作、暗号スクイーズ動作、暗号サンプリング動作、及び暗号ランダムマスキング動作のうちの1つ以上を含み得る。暗号吸収動作は、入力データワードを受信すること、及び特定の並べ換え状態ワード(例えば、暗号並べ換えの状態を表す複数のデータワードのうちの1つ)を入力データワードで上書きするか、または入力データワードと特定の並べ換え状態ワードとの組み合わせに対して2項演算(例えば、XOR演算)を実行するかのいずれかを含み得る。これは、入力データワードの並べ換え状態への「吸収」を表し得る。暗号スクイーズ動作は、特定の並べ換え状態ワードを、(例えば、算術演算動作で使用するため、及び/またはマトリックスメモリ132に出力するため)並べ換え装置140から算術演算装置136に渡すことを含み得る。これは、並べ換え状態からの並べ換え状態ワードの「絞り込み」を表し得る。暗号サンプリング動作は、2項関数及び/または累積分布関数(CDF)の使用などの統計的サンプリング動作を含み得る。CDF関数は、ソフトウェアまたはハードウェアルックアップテーブル内でCDF値をルックアップすることを含み得る(例えば、ハードウェアルックアップテーブルは、正規化されたガウス分布に対して定義され得る)。暗号サンプリング動作は、出力をマトリックスメモリ132に書き込む前に、算術演算装置136によって適用され得る。暗号ランダムマスキング動作では、並べ換え装置140の出力は、以下に説明するマスキング動作に使用される2進シーケンスのマスキング疑似乱数ジェネレータとして使用され得る。これは、例えば、異なるマスキング表現間の変換に使用され得る。場合によっては、暗号システム110は、並べ換え装置140を使用しても使用しなくてもよい「マスクランダム」関数を有し得、非決定的関数に従ってランダムビットシーケンスを出力し得、例えば、この関数は、マスキング動作に使用されるステップまたは反復ごとにランダムなワードを返し得る。並べ換え装置140はアドレス指定可能であり得るが、マスクランダム関数の出力はアドレス指定可能ではない場合がある。
【0041】
並べ換え装置140が、1600ビットのKeccak状態を使用してKeccak-p並べ換えを実行するように構成されている場合、この状態(つまり、並べ換え状態)は、暗号数値演算装置130内の結合の帯域幅と同じサイズを有するデータワードに分解され得る。マスクされた並べ換えモードでは、以下で説明するマスキング動作と同様に、並べ換え状態が個別のシェアに分割され得る。各並べ換えラウンドは、各シェアに適用される個別のステップにさらに分解され得る。ある場合には、XOF演算自体がマスクされ、その結果、並べ換え装置140に2つの「層」が使用されることになる。1つはマスキングのためのマスクの生成であり、もう1つはマスクされた並べ換えの実行である。例えば、秘匿データがKeccak並べ換え内で使用される場合、その並べ換えはマスクされたデータに適用され得る。Keccak並べ換えのマスクされた実装は、参照により本明細書に組み込まれる、「Changing of the Guards: a simple and efficient method for achieving uniformity in threshold sharing」, IACR-CHES-2017でJ.Daemenによって説明されている再ランダム化を使用する閾値実装に基づき得る。この場合、暗号システム110の特定のハードウェアに適応してマトリックスメモリ132に格納されるm個(例えば、3個)の1600ビットシェアが存在し得る。
【0042】
特定の実施例では、アドレスジェネレータ134が並べ換え装置140によって制御される並べ換え状態に関連する個々のデータワードにインデックスを付けることができるように、アドレスジェネレータ134は、並べ換え装置140の1つ以上の状態レジスタにさらに配線され得る。場合によっては、暗号数値演算装置130のウィンドウ幅(例えば、マトリックスメモリ132に関連して設定されるマトリックス幅)を使用して並べ換えレート(例えば、Keccakレート)を指定し得、一方、ウィンドウの高さ(例えば、マトリックスメモリ132に関連して設定されたマトリックスの高さ)は並べ換えのブロック数を指定し得る。行の端にウィンドウまたは行列があると、並べ換えがトリガされ得る。この構成により、制御装置との相互作用なしで、吸収及び/またはスクイーズ動作(SHA-3 SHAKE並べ換えを実装する動作など)を実行できるようになり得る。ウィンドウまたはマトリックス形式に関するさらなる詳細が、WO2021/032946A1に記載されており、並べ換え実装に関するさらなる詳細が、WO2021/014125A1に記載されており、これら両方とも参照により本明細書に組み込まれる。
【0043】
パイプライン動作の実施例
暗号数値演算装置130は、複雑なアドレス指定による算術演算動作を効率的に実行するように構成されている。以下の図2及び図5を参照して説明するような特定の場合には、処理の効率と速度とを向上させるためにパイプライン処理が用いられ得る。例えば、算術演算装置136は、並列処理を実装し、そのようにして単一命令複数データ(SIMD)機能を提供するように構成され得る。したがって、各ポートを介して異なるメモリ位置にアクセス(例えば、読み出しまたは書き込み)できるように、マトリックスメモリ132のマルチポートメモリと組み合わせることもあり得る。正確なパイプライン構成は実装要件によって異なり得る。暗号システム110による一連の反復は、外部コンピューティングシステムの観点からはアトミック操作の一部を形成し得る。例えば、それらはコンピューティングシステムの単一命令で指示され得る。反復のセットは、複数のソースに対して単一の暗号化動作を実行するために使用することができ、それらのソースは、マトリックスメモリ132に格納されているデータの関連する多次元配列を有する。この単一の暗号化動作は、(例えば、暗号数値演算装置が「ブリッタ」であることに関連して)「ブリット」と呼ばれ得る。ある場合には、デュアルポートメモリが使用され得、並列処理を使用して、2サイクルの「ブリッタ」ステップごとに、2、4または8の整数演算が実行され得る(各「ブリッタ」ステップまたは「ブリット」は単一の数学演算を実行する)。反復のセットは、コンピューティングシステムのクロックサイクルに同期され得、例えば、完全なセットは、コンピューティングシステムの1クロックサイクルで実行され得る。これにより、同じ暗号化動作がコンピューティングシステムのみで実行されるとき、それにはコンピューティングシステムのデータ及びアドレスメモリの両方に対して複数のフェッチ、デコード、及び実行サイクルが必要となり得るが、暗号システム110は、結果をはるかに短い時間でアクセス可能なメモリ内で利用可能にすることができるので、速度が大幅に向上する可能性があり得る。特定の実施例では、暗号システム110のクロックレートは、コンピューティングシステムのクロックレートと異なり得る。これらの場合、暗号システム110またはコンピューティングシステムのいずれかが、単一サイクルまたは複数サイクルで個々のステップを実行し得る。実行されるステップの数は、メモリ帯域幅、及びコンピューティングシステムの場合には、命令の複雑さに依存し得る。
【0044】
図2は、算術演算装置136をパイプラインモードで使用して複数の入力ストリームを並列処理する方法の実施例200を示す。パイプラインモードは、以下で説明するように、セキュリティマスキングを実装するのに使用することもあり得る。図2は、複数の計算ストリーム212が並行して実行されるパイプライン動作210を示す。図2は、パイプライン構成の一実施例の概略図であり、異なる実装は、異なるパイプライン構成を有し得、実際の基礎となるハードウェア構成は、実装に応じて(例えば、シリコン製造のための回路パターン及び/またはFPGAプログラムされたゲート構成の形態で)異なる場合があることに留意されたい。図2では、4つの計算ストリーム212が示されているが、計算ストリームの数は、制御装置150によって設定される構成に応じて変化し得、例えば、計算ストリームの数は、並列処理される独立したデータ要素のセットの長さに依存する場合がある。データ要素は、長さ8ビット、16ビット、または32ビットのバイナリデータ要素であり得、場合によっては、変数qのガロア体要素(GF(q))、または特定の漸化多項式を持つブールGF(2)要素など、さらに小さな単位であり得る。パイプライン動作210は、バスインターフェースセット120を介して外部コンピューティングシステムによって指示される単一の動作(「ブリット」)を表し得る。単一の動作は、前の例の「oper」と同様に、図2にも「oper」として示される。「oper」命令220は、暗号数値演算装置動作全体のパイプラインを指定し、動作制御装置138によって受信されるOPER制御信号を介して提供され得る(例えば、図2の「oper」命令220は、動作制御装置138によって算術演算装置136に対して達成される動作制御を表す)。
【0045】
図2では、4つの計算ストリーム212のそれぞれは、各ストリームについて時間の経過とともに順次に計算される複数のステージを含む。図2では、4つの計算ストリーム212のそれぞれが、ステージ1からステージn-1を備え、最後のn番目のステージ214で計算の最終出力が決定される。したがって、図2では、パイプライン動作210は、n内部サイクルにわたって実行される。パイプライン動作210中、マトリックスメモリ132及び並べ換え装置140のうちの1つ以上からの、及び/またはそれらへの、データアクセスは、図1のアドレスジェネレータ134を含み得るアドレスジェネレータ230によって制御される。パイプライン動作210を開始するために、マトリックスメモリ132及び/または並べ換え装置140から取得されるデータを含み得るデータが、入力変数ストリーム240から受信される。場合によっては、全てのデータアクセス動作がマトリックスメモリ132に関して実行されるように、並べ換え装置140からのデータをマトリックスメモリ132にルーティングする場合がある。本実施例では、3つの入力変数A、B、及びCがパイプライン動作210の入力として取り出される。図2の実施例では、アドレスジェネレータ230は、これらの入力変数のそれぞれの(例えば、マトリックスメモリ132内、または並べ換え装置140の指定レジスタ内の)アドレスを決定し、ブロック232で、データ(すなわち、ビットのシーケンス)が、パイプライン動作210の準備ができたアドレスから読み出される。これは、マトリックスメモリ132内の特定のアドレスから算術演算装置136の入力レジスタにデータをコピーすることを含み得る。図2では、3つの入力変数A、B、及びCが、242、244、及び246として示されている。パイプライン動作210を開始するために、入力変数A、B、及びCのそれぞれからのデータが、計算ストリーム212のそれぞれの第1のステージ(すなわち、ステージ1)への入力として提供される。(ビット単位の)AND、OR、及びXORなどの単純なブール演算の場合では、データは、元の入力変数と同じ長さのビットシーケンスを含み得る。例えば、算術演算装置の帯域幅またはデータ幅が32ビットまたは64ビットである場合、32ビットまたは64ビットの長さを有する入力変数が(例えば、図2に示すように、第1のステージのそれぞれにコピーされ得、そこで算術演算が実行され得る(例えば、XORは、32xまたは64xの並列1ビットXOR演算と見なされ得るビット単位の演算であり得る)。特定の暗号アルゴリズムでは、各ステージで受信されるデータのサイズが入力変数とは異なり得る。例えば、ダイリチウムポスト量子デジタル署名アルゴリズムは、23ビット値(q=8380417)の算術演算動作を使用する。この場合、(例えば)32ビットの入力で、各入力変数から32ビットの値を受け取り、上位9ビットを無視し得、(モジュラスqを含む)算術演算を行い得、上位ビットをゼロに設定した32ビットの値として出力を書き込み得る。64ビットシステム内では、2つの23ビットパスを各64ビット変数内に収容し得、例えば、Aの64ビット値は2つの32ビット「半分」に分割され、各「半分」の最初の上位9ビットを無視して23ビット値で動作させる。算術演算の結果は、32ビットの場合と同様に、上位9ビットがゼロに設定された64ビット値として書き込まれる。したがって、64ビットバージョンの暗号システムでは、ダイリチウムアルゴリズムのスループットが32ビットバージョンの2倍になり得る。
【0046】
図3を参照して以下に説明するように、ステージによって受信されるデータは、入力変数のシェアを含み得る(または、最初の1つ以上のステージがシェアを計算し得る)。各入力変数の部分が各計算ストリームにどのように提供されるかは、動作の一部として構成され得(つまり、「oper」構成)、図2は、考えられる1つの例のみを示している。図2では、各計算ストリームは、入力変数242~246のそれぞれからデータを受信し、n-1個の計算ステージを順次に適用する。並行して実行されるステージの各セット(例えば、図2の計算ストリーム212にわたる各行)は、アドレスストリーム234によってインディケートされるマトリックスメモリ132のアクセスを含み得る。ある場合には、アドレスジェネレータ230は、計算ステージと同時にステージ内に伝播されるアドレスストリーム234を出力する。この場合、計算ステージの最終結果は、アドレスストリーム内の一致するアドレス(例えば、対応する「アドレス」ステージに対して生成された1つ以上のアドレス)に書き込まれ得る。これにより、パイプラインの危険が回避され得る。各計算ステージは、同じ「oper」命令220を繰り返し適用する。パイプライン動作210には数千の内部サイクルが存在する場合がある(例えば、nが大きい場合がある)。「oper」命令220の繰り返し及び専用の暗号マトリックスメモリ132により、暗号数値演算装置130の容量(例えば、内部バス帯域幅及びレジスタデータワード長によって設定される容量)に応じて、パイプライン動作210を簡易制御することが可能になる。各計算ストリーム212のn-1ステージが適用された後、n番目のステージ214で最終結果が決定される。これは、各計算ストリーム212からの個々の結果を再結合することを含み得る。その後、最終結果は、アドレスジェネレータ230によって決定されたデスティネーションアドレス(例えば、マトリックスメモリ132内)にコピーされる。
【0047】
図1の暗号システム110は、多くの異なるポスト量子暗号化動作を実装するように構成され得る。算術演算装置136によって実行可能な(例えば、「oper」命令220によって指定される)動作の多くは、結果として得られるデータワードが対応する入力値のみに依存するという意味でステートレスであり得る。この場合、暗号数値演算装置130によって使われる実行順序は柔軟であり得る(例えば、図2の計算ストリーム212内のシリアル演算を可能にする)。場合によっては、情報が、パイプラインステージの最初の呼び出しからパイプラインステージの後続の呼び出しに渡され得る(例えば、特定の算術演算モードの場合)。これにより、入力データが、前の入力からのデータと組み合わされることが可能になり得る。デフォルトの動作では、ステージnは、パイプラインのステージn+1に情報を渡すが、ステージは異種混合である場合もあるので、そのようにして特定の情報が複数のステージにわたって転送され得(例えば、1つ以上の後続のステージをスキップする)、及び/または動作中に情報がフィードバックされ得る。例えば、大きな整数演算におけるキャリーやボローのようなオーバーフローは、内部算術演算レジスタ、または各ステージの終わりに書き込まれ、次のステージの始めに読み出されるマトリックスメモリ132内のアドレスを使用して、パイプラインステージ間で渡され得る。ある場合には、フィードバックソース(例えば、Cデータ変数)が、メモリ比較動作の「キャリー」として機能し得る。これは、例えば、バタフライモードの使用中、またはデスティネーションレジスタDの一部が使用され得る場合に発生する可能性があり、例えば、単一ワードの結果が、動作(つまり、「oper」)のDとして返され得る。あるいは、例えば、単一の整数「3」と「長い」整数「57」とを乗算する仮定の例を考えてみる(実際には、動作は2進値で実行されるが、ここでは説明し易くするために、10進数の例を示す)。桁長の整数乗算の実装には、「桁の乗算」と「キャリー加算」という2つのステージがあり得る。これらのステージは同時に動作し得る。キャリーの形式のフィードバック変数が使用される場合があるが、最初は0に設定される。長整数の右側から開始して、最初の「桁の乗算」演算が3*9=27として実行され、右側の7が書き出され、左側の2はキャリーフォワードとして設定される。「桁の乗算」ステージでは、次のペア3*5=15の乗算を開始するためにキャリーを知る必要はないが、「キャリー加算」の次の呼び出しが15+2=17として計算され得、ここで7が書き出され、1がキャリービットとして扱われる。次いで最後のラウンドでは、ゼロタイプの乗算演算3*0=0を使用して、さらに「複数の桁」演算を実行し得、最後の「キャリー加算」は単に1を書き出すだけであり、最終結果が、3つの書き出された値1、7、7(つまり、3*59=177)として提供されて終わる。比較動作では、パイプライン内で永続データがフィードバックされることが含まれる場合もある。例えば、以前に処理されたワードの比較のステータスをインディケートする状態が維持され得る(例えば、最初の不等ワードが、比較全体のステージフィードバックを「不等」と変更する)。
【0048】
したがって、図2は、算術演算装置136が、実行すべき選択された動作をインディケートする制御データ(例えば、「oper」命令220)を制御装置150から受信し、選択された動作を経時的に複数のステージとして実行する算術演算パイプライン装置を、どのように備え得るかの実施例を提供する。複数のステージは、複数の並列処理ストリーム(例えば、計算ストリーム212)備え得、複数の並列処理ストリームは、マトリックスメモリ132から(例えば、アドレスジェネレータ230の活動を介して)アクセスされたデータ(例えば、242~246)を受信する。したがって、算術演算装置136は、パイプライン動作210を実行して、複数のパイプラインが並行して機能するSIMDのような機能を実装する。
【0049】
(例えば、図1のOPER制御信号または図2の「oper」命令220によって指示される)算術演算装置136によって実行可能な暗号化動作は、ポスト量子暗号アルゴリズムまたは加速された計算のための他のターゲットをサポートする特定の数学演算及び表現を含み得る。一般に、動作は、1つ以上のデータソース(本明細書では、A、B、Cなどの「ソース」とも呼ばれる)から読み出された1つ以上のビットシーケンスを操作し、操作の結果をデスティネーションデータ(本明細書では、C及びDなどの「デスティネーション」とも呼ばれる)として格納するように構成された利用可能な関数のセットを含み得る。暗号化動作の非限定的な例のセットとしては、複数入力ビット単位のブール演算、大整数算術演算、多項式算術演算、サンプリング、正規化及び比較、データ要素の並べ替え、シリアライゼーション及びデシリアライゼーションの変換、ならびにランダム化演算などがある。複数入力のビット単位のブール演算には、AND、OR、ANDN、XOR3、及びCMOV(条件付き移動)などの2入力または3入力の演算が含まれる。これらの一連の動作は、ビットスライスされたブール回路の計算に使用され得る。大整数演算は、1つ以上のキャリービットをもたらすデータワードビットシーケンスによって表される整数を使用した算術演算を含み得る。大整数の算術演算には、乗算、加算、減算、換算、及び組み合わせ演算(例えば、乗算-積和/減算はD=C+ABまたはD=C-AB)が含まれ得る。サンプリングには、2項サンプリングまたはCDFテーブルを使用したサンプリングなどの統計分布から値を取得することが含まれ得る。サンプリング動作には、(例えば、均一または不均一な分布に基づく)拒絶サンプリングのための比較及び収集動作も含まれ得る。この比較には、以下で説明するマスキングを使用したマスクされた比較が含まれる。正規化及び比較演算には、要素の合計、内積計算、ハミング重み計算、及びフルスキャン(例えば早期終了無し)比較など、単一ワードの結果のみを生成する演算が含まれる。データ要素の並べ替えは、データ要素(データ要素242~246など)をパイプライン動作用に配置することを含み得る。例えば、A、B、Cソースレジスタにロードされたデータを、データ要素のマトリックス転置、回転、シャッフル、または反転などのタスクを実行するように(再)配置することもできる。シリアライゼーション及びデシリアライゼーション変換には、エンディアンネス変換またはアライメントに必要なものなど、ベクトル結果の非線形関数及び変換が含まれ得る。ランダム化演算は、マスクされた算術演算及びマスク変換演算(例えば、ブールマスキングと加法マスキングの間)などの確率変数を使用する演算を含み得る。ランダム化演算のための乱数値は、並べ換え装置140、及び内部または外部の真の乱数ジェネレータによって提供されるシードを使用してシードされる内部疑似乱数ジェネレータなどの(暗号システム110に対して)内部の乱数ジェネレータのうちの1つ以上から供給され得る。
【0050】
算術演算装置136は、ビットシーケンスに対して動作する。これらのビットシーケンスは、データワードとして提供され得、データワードの長さは、マトリックスメモリ132及び/または内部通信バス(例えば、暗号数値演算装置130内)のワード長に基づいて設定される。ビットシーケンスは、数値、点、ベクトル、マトリックス、多項式、環、体、及びその他の代数構造のうちの1つ以上を表し得る。異なるビットシーケンスは、これらの表現の異なる部分を表し得、例えば、マトリックスメモリ132から読み出される、及び/またはマトリックスメモリ132に書き込まれるデータワードは、マトリックスまたは多項式の一部を表し得る。特定の実施例では、算術演算装置136は、モジュラ整数(例えば、mod2)、小さな素体(例えば、GF(q))、正準形式ではなく、モンゴメリ形式での表現(パイプライン内でモジュラ換算を迅速に行うことを可能にし得る)、射影座標と楕円曲線点に使用可能なその他の表現、特定の暗号アルゴリズムで定義されたq=c2+1形式の素体q、2進数フィールド内の要素のベクトル(例えば、GF(2))(固定多項式の底による換算が、パイプライン動作で実行され得る)、サイドチャネル保護のために、以下のようにマスクされた表現、及びサイドチャネル保護のための冗長ビット表現、のうちの1つ以上のビット表現を演算する。格子暗号化法はモジュラス2算術演算または小さな素数qの算術演算のいずれかを使用して動作するため、本明細書で説明するパイプライン動作及びビット分解は特に有用である。同様に、コードに基づく多変量暗号化法は、小さな2進数フィールドから恩恵を受け、これはまた、説明した暗号システムの構成によってもサポートされる。
【0051】
パイプライン化の構成は、要件と実装される暗号化動作とに応じて実装間で異なる場合があることに留意されたい。FPGA実装では、ハードウェア記述言語(HDL)定義を介してパイプライン構成が設定され得る。オンシリコン実装の場合、実装サイズ、面積コスト、及び電力使用量などの設計要件に応じて、パイプライン構成が設定され得る。ステージ及び計算ストリームの数は、説明された実施例の各インスタンス化のパラメータであり得る。
【0052】
補足的に、パイプライン化ステージの数はプログラミングインターフェースに大きな影響を及ぼさない可能性があり、例えば、動作は、可変のレイテンシ及び/またはスループットのトレードオフを伴って、1サイクルまたは64サイクルで構成され得るが、依然として共通の固定プログラミングインターフェース(例えば、制御レジスタ124に書き込まれたデータを介して外部コンピューティングシステムから呼び出し可能であり得る)を有し得る。異なるアプリケーションは、同じプログラミングインターフェースを使用してもよいが、それらの特定の要件に合わせて暗号システム110を構成してもよい。例えば、組み込みシステムでは、動作速度を犠牲にして、より小さいフットプリントを指定してもよく、一方サーバまたはスーパーコンピュータの実装では、並列処理及びスループットの増加を指定し得る。本明細書で説明するパイプライン化は、(シリコン)面積を犠牲にしてスループットを向上させる実装メカニズムとみなすことができる。例えば、ステップS1~S6を有する6ステップのアルゴリズムを考える。この場合、非常に長い回路経路が必要となり、設計が動作周波数に対する「タイミングクロージャ」を満たさない可能性があるため、全てのステップを単一サイクルで実行することは不可能な場合がある。この場合、ステップS1~S6を6サイクルで繰り返すのではなく、各ステップを物理的に別個のパイプラインステージとして実装してもよい。このようにして、第1のステージにはサイクルごとに入力値が供給され得、次に第2のステージに供給されるというように、最終的な結果が各サイクルで提供され得る。この場合、入力と出力との間のレイテンシは6サイクルのままだが、スループットは反復実装と比較して6倍になる。本明細書で説明する暗号化動作では、動作のビルディングブロックが、暗号タスクに関連し、長いビットシーケンスで実行される乗算またはマスキング変換などの高速暗号プリミティブであるため、多くの場合、スループットがレイテンシよりも重要である。
【0053】
マスクされた計算の実施例
本明細書で説明する特定の例では、暗号システム110のセキュリティは、マスクされた計算を使用して向上させることができる。マスクされた計算により、サイドチャネル攻撃に対する保護が可能になる。サイドチャネル攻撃は、例えば、電磁放射、電力使用の変動、動作タイミング、または他の意図しないサイドチャネルを介した秘密情報の漏洩に基づいて、暗号システム110によって操作されている秘密のビットパターンを決定しようとする攻撃である。物理的な遮蔽を設けることである程度の保護が可能になり得るが、暗号数値演算装置130を用いて操作される(秘密の)ビットシーケンスをマスキングすることによって、暗号システム110の外部からの電磁気パターンの高度な測定であっても、暗号レジスタセット122を介してロードされた暗号鍵などの元の秘密に関する情報を提供しないように、セキュリティを向上させることができる。
【0054】
本実施例では、暗号システムは、バスインターフェースセッ120を介してアクセスされる秘匿データ値を複数のデータシェアに分解することによって、マスクされた算術計算を実行するように構成される。次に、制御装置150は、算術演算装置136及びアドレスジェネレータ134を制御して、定義された算術演算動作のセットの少なくとも1つを複数のデータシェアのそれぞれに対する複数の独立した線形動作として適用するように構成される。マスクされた計算は、内部バス166及び図2に示されるパイプライン動作構成を介して、暗号数値演算装置130の「ノータッチ」制御と相乗的に動作し得る。暗号システム110によって適用されるマスクされた計算のアプローチは、電源変動または電磁放射などの測定可能なサイドチャネルの信号対雑音比を増加させることによって情報の漏洩を最小限に抑えることを目的とする。本実施例では、制御装置150、暗号数値演算装置130(算術演算装置136を含む)、及び並べ換え装置140のうちの1つ以上は、マスクされた計算とマスクされていない計算との両方をサポートするように適合される。好ましい例では、前述の構成要素の全ては、両方の計算モードをサポートするように(例えば、外部コンピューティングシステムによって選択可能として、及び/または暗号システム110の定義された構成の一部として)適合され得る。
【0055】
特定の例では、秘密の入力及び/または出力は、マスクされた計算モードでデータシェアに分割される。データシェアの数は、暗号システム110のパラメータによって構成可能であり設定される(例えば、d個のデータシェアがあり得る)。ある場合には、図1の暗号レジスタセット122(例えば、SSP)を介して受信されたデータは、データシェアに分割され得る。3つのデータシェアセット(例えば、d=3)に適用される動作の簡単な例を図3に示す。ただし、異なる数のデータシェアを設定することもできる。図3では、例を分かりやすくするために、データシェアに対する1セットの動作を示しているが、動作は、図2に示すように、計算ストリームとして適用できることに留意されたい(例えば、図2の第1のステージのそれぞれへの入力は、3つの入力A、B、及びCのデータシェアで構成され得る)。場合によっては、セキュリティを向上させるために、算術演算装置136によって一度に1つのデータシェアのみが処理され得るような制限が設けられる場合がある。
【0056】
マスクされたポスト量子暗号計算では、算術演算が、対応するマスクされた演算に変換され得る。例えば、変数XとYとの間でマスクされていない(プレーンな)算術演算動作を行うと、次の結果Zが得られる。すなわち、Z=X op Yは、シェア{X}及び{Y}からの一連の算術演算動作に変換されて、シェア{Z}を提供し得る。この実施例は、図3に示される。
【0057】
図3は、2つの入力データ変数310及び320(X及びYとして示す)に対して実行される演算300を示す。2つの入力データ変数310及び320は、バスインターフェースセット120を介して受信されるSSPを含み得る。場合によっては、それらは、暗号化された形式で受信され、マトリックスメモリ132内でのみ解読される秘匿データ変数を含み得る。2つの入力変数310及び320は、それぞれ、データシェアセット330及び340に分割される。この実施例では、3つのデータシェアがあり、第1の入力変数310がデータシェア332、334、及び336に分割され、第2の入力変数320がデータシェア342、344、及び346に分割される。データシェアのそれぞれは、入力変数を表すビットのシーケンスと同じ長さのビットのシーケンスを含み得る。図3の実施例では、入力変数はブールマスキングを使用してデータシェアに分割される。ただし、構成可能または選択可能な制御パラメータとして、さまざまな形式のマスキングを利用できる場合がある。例えば、(とりわけ)ブールマスキングまたは算術演算マスキングのいずれかを使用してデータシェアを生成する選択肢があり得る。暗号システムは、さらに、特定の動作に対して、異なる形式のマスキング間で変換するように構成され得る。図3の実施例では、データシェアは、バイナリ排他的論理和(XOR)合計演算(例えば、
【0058】
【数1】
【0059】
で表される)を使用して生成され、その合計は、構成可能なデータシェアdの数を超え得る。これは、
【0060】
【数2】
【0061】
と略記できる。この場合、入力変数310及び320のそれぞれは、それぞれのデータシェア330及び340のXOR合計に等しくなる。
【0062】
データシェアの生成は、初期暗号数値演算装置動作セットとして実行され得る。例えば、ブールマスキング分解は、初期入力変数(例えば、310または320)を、並べ換え装置140によって生成されたランダムマスクと組み合わせることによって実行され得る。この場合、d-1個のデータシェアは、d-1個のランダムビットシーケンスを作成し、これらを元の秘密(例えば、310または320)と組み合わせ、その後、前の組み合わせの組み合わせとしてd番目のシェアを生成することによって生成され得る。例えば、図3の場合、シェア330(または340についても同様)は、次のように生成され得る。すなわち、
【0063】
【数3】
【0064】
である。式中、Rは、並べ換え装置140からの一様にランダムなマスクである。ここで、元の秘密Xの再構成には、全ての個別シェアXが必要である。
【0065】
図3に戻って、データシェアが生成されると、それらは動作350を実行するために使用される。動作350は、それぞれが2組のデータシェア330及び340から対応するデータシェアを受け取る1組の独立した動作352、354及び356として実行され、例えば、動作352はデータシェア332及び342を入力として実行され、動作354はデータシェア334及び344を入力として実行され、動作356はデータシェア336及び346を入力として実行される。それぞれの独立した動作352~356は、図2の計算ストリーム212と同様の方法で同じ算術演算装置動作の繰り返しである(すなわち、図3の実施例は、シェア「oper」命令220を有する3つの計算ストリームを備えた第1のステージを示していると見ることができる)。算術演算装置136内で秘匿データ値の異なるデータシェアのデータが同時に演算されないようにすることにより、例えば、それらが空間的及び時間的に別々に保たれることを保証することにより、動作は独立して実行され得る。マスクされた算術演算動作352~356のそれぞれ(マスクされた形式への変換を含む)は、全ての中間変数(例えば、ハードウェア回路内の「ワイヤ」)が(秘密の)シェアの合計から統計的に独立するように設計される。動作352~356は、秘密のデータシェアに対して実行されるが、データシェアは秘密を再構築するために「コラプス」されない。したがって、元の秘密が、サイドチャネル攻撃によって「漏れる」ことはない。
【0066】
図3では、動作350がデータ共有のそれぞれのペアに対して実行された後、個々の動作352、354、及び356のそれぞれからの結果が、それぞれの出力362、364、及び366として提供される。データシェアの出力セット360は、入力変数310及び320に適用される動作350の結果を提供するように再構成され得る(すなわち、Z=oper(X,Y))。図3の実施例では、再構成は、個々のデータシェアを合計するXOR、つまり
【0067】
【数4】
【0068】
によって実行され得る。これは、例えば、バスインターフェースセット120を介して出力としてデータを提供するとき、または動作350の完了後に、最終ステージとして実行されてもよく、外部的に(例えば、外部コンピューティングシステムによって)実行されてもよく、あるいは、以下に説明するようにデータシェアが暗号化されているときにのみ実行されてもよい。ある場合には、秘匿データは、暗号化された形式でない限り、暗号システム110からエクスポートされない場合がある。
【0069】
特定の実装(及び/または定義された構成)では、秘密情報はキーのライフサイクル全体にわたってデータシェアとして維持され得る。例えば、秘密鍵は、シェアとして生成され、シェアとしてメモリ(例えば、内部メモリと外部メモリの両方、後者は暗号レジスタ122を介して)に格納及びロードされ、シェアとして(例えば、暗号化動作において)使用され得る。キーの寿命が終わると、シェアはゼロにされ得る。場合によっては、秘密情報のみがデータシェアとして運用される。このような場合、秘密情報を表す一連のデータシェアが暗号化されている(例えば、暗号化及び/または暗号システムによって実装されたカプセル化アルゴリズムを使用している)場合、データはもはや「秘密」ではない(つまり、暗号化によって保護されている)ため、暗号化後にそれらのデータシェアはまとめてコラプスされ得る。例えば、ストリーム暗号では、平文PとキーストリームZ=暗号(鍵)とから、C=P XOR Zを介して、暗号文Cが生成され得、解読はP=C XOR Zとして実行され得る。暗号がマスクされた方法で実装されている場合、鍵ストリームシェアZ、Z、Zはマスクされた鍵、鍵、鍵、鍵から生成され得る。この場合、異なる暗号文部分は、それぞれの鍵ストリームシェアC=P XOR Z、C=P XOR Z、及びC=P XOR Zを使用して暗号化され得る。暗号化に続いて、秘密情報を漏らすことなくマスクをコラプスすることができるようになった(つまり、C=C XOR C XOR C)。Cは、Pに関する情報を明らかにしない暗号化された形式で安全にエクスポートされ得る。
【0070】
図3に示すように、特定の例では、マスクされた計算は、少なくとも暗号数値演算装置130によって実行される演算を(例えば、一連の「ブリット」として)使用して達成され得る。多数の異なる動作をサブ動作として組み合わせて、外部コンピューティングシステムによって指示される単一のアトミックな「動作」としてマスクされた計算を実行し得る。例えば、マスクされた計算は、演算への入力がデータシェア、一時データシェア、またはランダム変数(例えば、並べ換え装置140を使用して生成されたもの)である場合に、少なくとも暗号数値演算装置130を用いて演算を実行することを含んでもよい。演算のセットを効率的にパイプライン化して計算を高速化することもできる。
【0071】
図3の実施例は、ブールマスキングの場合を示しているが、他の実施例では、代わりに算術演算マスキングが使用され得る。ある場合には、加算マスキングの形で、算術演算マスキングを使用してデータ共有を生成し得る。加算マスキングはXORマスキングに似ているが、整数加算またはモジュラ加算を使用する。ある場合には、シェアは次のように計算される。すなわち、X=(Σ)mod(q)であり、式中、qはアルゴリズムに依存する小さな素数またはq=2モジュラスである。一例として、加算マスキングは、ラップアラウンド加算モジュラス216によって実装され得る。固定定数qは、暗号アルゴリズムによって異なる場合がある。多くの暗号アルゴリズムでは、qのサイズは16ビットまたは32ビット未満、または正確に2のべき乗である。例として、KYBERアルゴリズムはq値3329を使用し、SABERアルゴリズムは値213を使用する。異なる暗号アルゴリズムのqの値は、暗号数値演算装置130の実装にハードコード化することができる。例として、数値X=1238は、X+X+X==4567 modq=1238(モジュール式ラップアラウンド加算を使用)であるため、q値3329のシェアX=1111、X=2222、及びX=1234を使用して表すことができる。
【0072】
特定の例では、暗号システム110は、2つの異なるマスキング形式間で変換する動作実行するように構成され得る。例えば、XORまたは加算などの線形演算は、データシェアが対応するマスキング形式である場合にのみ、データシェアに個別に適用され得る。ある場合には、ブールマスキングは算術演算マスキングに変換され、算術マスキングから変換されることがある。ブールマスキングが算術マスキングに変換される場合、これは、データシェアの第1のセット{X}のXOR和に等しい合計を有するデータシェアの第2のセット{Y}を決定することによって実行され得る。例えば、
【0073】
【数5】
【0074】
である。算術マスキングがブールマスキングに変換される場合、逆の演算が実行され得、例えばデータシェアの第2のセット{Y}は、データシェアの第1のセット{X}の算術合計に等しい合計を有すると決定され得る。例えば
【0075】
【数6】
【0076】
である。場合によっては、制御装置150は、算術演算装置136及びマトリックスメモリ132を使用して、参照により本明細書に組み込まれる、Gao et alによる論文「An Instruction Set Extension toSupport Software-Based Masking」、Cryptology ePrint Archive、Report2020/77に記載された変換操作と同様の変換操作を暗号システム110のハードウェアで実行するようにプログラムされ得る。例えば、前述の論文では、基礎となるブール加算(BOOLADD)及びブール置換(BOOLSUB)演算を利用するBOOL2ARITH及びARITH2BOOL変換関数を定義している。これらのブール加算及びブール置換演算は、「マスクランダム」入力を伴う比較的複雑なビット操作シーケンスを含む。本暗号システム110は、暗号数値演算装置130が(例えば、図2のパイプラインによって実証されるように)ブール演算の長いシーケンスの高速実行のために設計(及び最適化)されているため、(例えば、外部コンピューティングシステムの中央処理装置によって一般的に実行される)論文のソフトウェア実装に対して大きな利点を提供する。したがって、暗号システム110は、より高速な動作を可能にする。
【0077】
算術演算装置136によって演算として適用される特定の算術プリミティブは、マスクされた動作モード内の変換関数の助けを借りて達成され得る(または、変換関数は直接演算で実装され得る)。例えば、ブールマスクされた加算及び減算の場合、出力データシェアのセット{Z}は、XOR合計がX+Y=ZまたはX-Y=Z(mod q)を満たすように、入力シェア{X}及び{Y}から計算され得る。他のマスクされた関数も同じパターンに従い得る。マスクモードのビット単位のロジックは、算術マスクまたはブールマスクのデータ共有にAND、OR、及びXOR演算を適用することによって実行され得る。同様に、シフト、回転、及びビット操作は、算術マスクまたはブールマスクされたデータシェアに適用され得る。比較は、マスクされた変数の等価性または順序付け(例えば、より小さい、またはより大きい、を使用する)を分析することによって実行され得る。比較の結果はマスクされることもある(例えば、真または偽の値はマスクされたビットであり得る)。ポスト量子暗号用のフィールド算術演算関数及び特殊関数もまた、マスクされた変数に適用され得る。
【0078】
特定のポスト量子暗号化動作は、環多項式で動作する。例えば、格子に基づく暗号化法では、環多項式とマトリックスとの乗算が利用される。これらの乗算の多くは、秘密多項式と公開多項式との間で行われる。このような場合、秘密多項式はマスクされてもよく、公開多項式はマスクされる必要はない。秘密多項式Xと公開多項式Cを乗算する場合、秘密多項式は、マスクされた動作モード用にd個のデータ共有に分割され得る。その結果、例えばCX=CX+CX+CX(mod q)となる。この場合、定数(公開多項式C)を乗算しても、複雑さはO(d)増加するだけである。これは、格子基づくポスト量子暗号がマスクされた動作モードに特に適していることを意味する。比較として、2つのマスクされた表現を乗算し、例えば、(X+X+X)*(Y+Y+Y)は、シェア数に関して少なくともO(d)(つまり2次)のオーバーヘッドを引き起こす。同様に、既知の格子暗号方式に使用される環及びモジュール代数オブジェクトの実装に使用される多くの数論変換(NTT)では、マスクする必要があるのはNTT乗算の1つの入力のみである。これにより、マスキングモードを適用する際のオーバーヘッドが制限される。格子暗号化法では、さらに、右シフト、「丸め」、及びマスクされた比較などの混合ビット指向動作が使用される。これらのタスクは、各動作に合わせて調整されたより効率的な部分マスキング変換によって達成され得る。
【0079】
特定の実施例では、マスキングは、ソースロケーションまたはレジスタ(例えば、A)からマスキングされるデータ(例えば、X)を読み出し、内蔵の内部演算によりランダムビットシーケンスRを取得し、マスキングを実行した結果をシェアデスティネーションロケーションまたはレジスタに書き込む「ブリット」(すなわち、暗号数値演算装置130の動作)を含み得る。例えば、データ項目Xの算術演算マスキングの単純なケースには、X+X=Xとなるようにデータ項目を2つのシェアXとXとに分割することが含まれ得る。この場合、第1のシェアX=X-RがデスティネーションDに書き込まれ得、第2のシェアX=RがデスティネーションCに書き込まれ得る。再マスクも同様の方法で実行できるが、この場合は以前のデータシェアが入力として使用される。例えば、暗号数値演算装置130の動作は、再マスクされたデータシェア-X’をX’=X-RとしてDに書き込むことができる。式中、Rは新しいランダム値であり、新しいマスクRをCに書き込み、一時記憶域を提供する。次に、再マスキングのために、メモリからRを読み取り、第2の再マスクされたデータ共有をX’=X+Rとして計算する第2の算術ステップがある。再マスキング後も、算術演算マスキングは引き続き適用され、つまり、X’+X’=Xである。再マスキング動作では、XとXとを直接結合することが回避されることに留意されたい。同様の動作は、ブールマスキング及び/または異なるシェア数に対して実行され得る。マスキングのランダム性を内部的に使用するマスクされた算術演算動作には、算術演算からブールマスキングへの変換(A2B)、またはその逆(B2A)が含まれ得る。上述のように、暗号システム110は、上記のGao et alによる論文で説明されたものと同様のマスキング演算の専用ハードウェア(例えば、ベクトルまたはマトリックスコプロセッサ)実装を提供し得る。また一方、暗号システム110を使用することにより、セキュリティは向上する。例えば、算術演算はプロセッサ152によって(例えば「ノータッチ」動作を介して)「遠隔制御」されるのに対して、Gao et alによる実装では、一般的なCPUが秘匿データにアクセスできる可能性があり、セキュリティ上のリスクが生じる。また、本実施例におけるデータフローは、暗号数値演算装置130を介して発生し、これにより、サイドチャネル漏洩をより適切に制御できるようになる。暗号数値演算装置130は、汎用プロセッサ(CPUなど)よりも高速なデータ処理を提供するだけでなく、保護が容易な単純かつ明確なデータパスを有する。
【0080】
本明細書の例では、サイドチャネル攻撃対策としてマスキングが適用される。暗号システム110は、統合されたハードウェアマスキングサポートを備えたハードウェアで加速された暗号化動作を提供する。マスキングは、両方とも参照により本明細書に組み込まれる、FIPS140-3及びISO19790セキュリティ規格に記載されている「non-invasive attack countermeasures」の要件(例えば、ISO/IEC19790:2012(E)のセクション7.8で定義されるもの)を満たすように構成され得る。本明細書で説明するマスキングなどの対策の有効性テストは、参照により本明細書に組み込まれ、より一般的にはテストベクトルリークアセスメント(TVLA)と呼ばれる、ISO/IEC17825:2016(E)「Testing methods for the mitigation of non-invasive attack classes against cryptographic modules」に記載されているような実験室手順を使用して実行できる。
【0081】
高速反復ハッシュの例
図4は、高速反復ハッシュモードで使用される、図1の暗号システム110などの暗号システムの例400を示す。このモードは、参照により本明細書に組み込まれる、米国標準技術研究所(NIST)の特別出版物800-208-「Recommendation for Stateful Hash-Based Signature Schemes」に記載されている署名などのハッシュベースの署名(HBS)をサポートするために提供され得る。現在の反復ハッシュモードを使用して実装できるハッシュベースの署名スキームの例には、次の1つ以上が含まれる。すなわち、Leighton-Micali署名(LMS)、階層署名システム(HSS)、拡張マークル署名スキーム(XMSS)、及びマルチツリーXMSSスキーム(XMMSMT)である。このモードは、任意選択の実装の一部であり得る。
【0082】
図4は、図1の暗号システム110を構備え得る暗号システム420に通信可能に結合されたコンピューティングシステム410(「ホスト」)を示す。現在の高速反復ハッシュモードでは、暗号システム420は、ホスト410から入力を受け取り、暗号出力を提供するハッシュジェネレータ430として機能する。出力は、Winternitzハッシュチェーン及びさまざまな種類のマークルツリーの計算に使用され得る。ハッシュジェネレータ430の制御プロセッサ及びアドレスジェネレータ(例えば、図1の制御装置150のプロセッサ152及びアドレスジェネレータ134)は、個々のハッシュ結果をホスト410にロードし、格納することなく、ハッシュチェーンの評価を可能にする。少なくとも上記のLMS、HSS、及びXMSSに基づく署名では、署名を提供する時間の大部分は、Winternitzワンタイム署名とハッシュ関数の反復であるマークルツリーとの計算に費やされる。したがって、高速反復ハッシュモードを提供することによって、暗号システム420は、これらの署名の計算を高速化することができる。
【0083】
図4では、ホスト410は、少なくとも初期ハッシュQ412及びメッセージ署名Y414をハッシュジェネレータ430に提供する。初期ハッシュQ412は、ホスト410によって、公開鍵pkとメッセージMとから、例えば、H(f(pk)|M)を介して計算され得る。式中、H(・・・)はハッシュ関数であり、f(・・・)は公開鍵関数である。このハッシュ化されたメッセージの形式は、使用されるHBSアルゴリズムによって指定され得る。例えば、多くのHBSスキームは、公開鍵から導出されたプレフィックスとメッセージMとを連結したハッシュとしてメッセージハッシュ(Q)を生成する。ハッシュジェネレータ430はまた、メッセージ署名Y414を受け取る。特定の実施例では、公開鍵pkまたは公開鍵pk’の解析されたバージョンもハッシュジェネレータ430に渡され得る(例えば、図4の418によって示される)。他の実施例では、メッセージMは、公開鍵のバージョンとともに(例えば、初期ハッシュQ412の代わりに)渡されてもよく、ハッシュジェネレータ430は初期ハッシュQを計算し得る。次に、ハッシュジェネレータ430は、初期ハッシュQの反復ハッシュから得られるルート候補(R)または公開鍵候補(K)416を提供するように動作する。ホスト410は次に、候補RまたはKをRまたはKと比較し、例えば候補が公開鍵pkの構成要素であるかどうかを判定し得る。
【0084】
図4の実施例は、記載された例の暗号システムをポスト量子暗号の署名アルゴリズムをサポートするために使用し得る一方法を示す。例えば、そのような署名アルゴリズムの多くは、ランダム化されたハッシュを使用する。このような場合、コンピューティングシステムは、メッセージ本文をハッシュする前に(例えば、ランダム化されたハッシュ関数を使用して)公開鍵またはランダム化されたタグを処理する必要があり得る。したがって、ハッシュされたメッセージは、hm=H(pk|M)またはH(tag|M)として計算する必要があり得る。式中、Mは(生の)メッセージ、pkは公開鍵、tagはランダム化されたタグ、Hはハッシュ関数である。ハッシュ関数は、SHA3ハッシュ関数であってもよい。この場合、ハッシュは暗号システム110を使用して計算することができ、並べ換え装置140によって実装される並べ換えを使用して、SHA3ハッシュ関数を計算することができる。
【0085】
HBS検証の場合、暗号システムは、例えば特定の鍵生成及び署名プロセスに支援を提供することで、ホストシステムと連携して動作することができる。このような場合、暗号システムによってより効率的に計算される中間変数を使用して、ホストシステムによって出力が最終化され得る。
【0086】
場合によっては、算術演算装置136はWinternitz演算に直接関与しないことがあるが、暗号数値演算装置130により、算術演算をしなくても、メモリ領域をある場所から別の場所へ(例えば、マトリックスメモリ132との間で)効率的にコピーできるようになる。マトリックスメモリ132は、アクセス制御された方法で機密データを格納するために使用することができ、暗号数値演算装置130は、Winternitzハッシュシーケンスのハッシュのフォーマット化及び準備、ならびにハッシュベースの署名(及びその検証)の計算を支援するために使用することができる。
【0087】
異なる暗号アルゴリズムは、共有または同様の一連の動作を利用しながら、異なる用語を使用する可能性があることに留意されたい。一般に、アルゴリズムは、「一致」が見つかるまでハッシュを何度も反復することを含み、この場合、それは、ハッシュジェネレータ430によって供給される鍵候補(例えば、RまたはK416)とホストによって保持されるデータ(例えば、RまたはK)との間の一致であり得る。特定の実装では、バッファ434にテンプレートを供給することができ、テンプレートは、パディングバイト及びフォーマットバイトを含む、反復のためのハッシュ入力の不変部分を含むバイトシーケンスである。プロセッサ152は、これらのテンプレートを準備し得る。インデックスIDX432は、ハッシュ出力を入力の正しい位置にロードし戻すために使用される、入力内の異なる位置を表す、変化するインデックス番号であり得る。テンプレートを使用し、ハッシュの定義された部分のみを反復することで、プロセッサによる入力の準備時間がハッシュを計算するハッシュユニットよりも長くなり得るので、プロセスが高速化される。また、ハッシュ入力は、多くの場合、「ハッシュフィードバック」に加えて変動する構成要素がほとんどなく、互いに非常に似ている。このような場合、出力用のテンプレートを準備し、特定の部分のみを反復することで、ハッシュの反復を高速化することができる。
【0088】
暗号化動作の例
本明細書で説明する暗号システムは、特定の暗号化動作を実装するように構成できるいくつかの構成要素を有する。例えば、図1に示される構成要素は、制御装置150用の(ファームウェア)コンピュータプログラムコードによって適切に構成され得るハードウェア構成要素セットを提供する。暗号数値演算装置130と制御装置150とは、このように、異なる暗号化動作の制御可能かつ設定可能なハードウェア実装を可能にし、例えば外部コンピューティングシステムと比較して実装を高速化する。さまざまなハードウェア制御構成を含むファームウェアの更新を通じて、さまざまな暗号化動作がサポートされる(及び機能が拡張される)場合がある。
【0089】
利用可能な暗号化動作のセット内の各暗号化動作は、セットソースレジスタからデータ(例えば、アドレスジェネレータ134によって生成されたアドレスを使用してマトリックスメモリ132からロードされるもの)を読み出すこと、一連の計算を(例えば、算術演算装置136及び/または並べ換え装置140を介して)実行すること、及びその結果を少なくとも1つのデスティネーションレジスタに出力する(例えば、アドレスジェネレータ134によって生成されたアドレスを使用して、それをマトリックスメモリ132にロードし直すことができる)ことを行うように(例えばプログラムされた関数として)構成され得る。ポスト量子暗号の算術演算は、同じ関数を何百回も繰り返すことが多いため、パイプライン構成(例えば図2に示す)とマスキング(例えば図3に示す)とを使用することで、危険性または性能の問題を回避しながら、有利かつ安全に実装することができる。
【0090】
特定の実装では、低レベルのバスに依存しないドライバプログラミングインターフェースが暗号システムに提供され得る。このプログラミングインターフェースは、例えば、C言語のハードウェア抽象化層(HAL)を使用して提供され得る。HALは、暗号テスト機能へのアクセスを提供する場合もある。場合によっては、暗号システムによって提供される暗号化動作は、HAL関数クラスを使用して表現される。したがって、暗号システムは、制御レジスタ(図1の制御レジスタセット124など)に書き込まれる値とHAL関数クラスのセットとの間のマッピングを提供し得る。暗号関数は、平文データを暗号システムに直接渡すことなく、外部コンピューティングシステムによって開始され得る。
【0091】
特定の実施例では、暗号システムは、鍵確立関数及びデジタル署名関数のうちの1つ以上を実行するように構成される。デジタル署名関数は、ステートフルなハッシュベースの署名関数(例えば、上で説明した並べ換え装置140を使用して実装される署名関数)を含み得る。鍵確立関数は、鍵ベースの暗号化及び/または解読関数を提供し得る。デジタル署名関数には、デジタル署名生成及びデジタル署名検証のうちの1つ以上が含まれ得る。暗号システムは、格子ポスト量子鍵確立関数、コードベースポスト量子鍵確立関数、格子ポスト量子デジタル署名関数、コードベースポスト量子デジタル署名関数、ハッシュベースポスト量子デジタル署名関数、多変量ポスト量子デジタル署名関数、及び階層署名システム関数のうちの1つ以上に構成され得る。これらの関数は、平文データを暗号システムに渡すことなく実装することができる。すなわち、暗号システムは、暗号レジスタ122を介して暗号化されたデータにのみアクセスする。
【0092】
鍵確立関数は、上で説明したように、HALグループのセットとして(例えば、kem-鍵確立-関数のセットとして)定義され得る。例えば、HALグループ(例えば、_kem_kg)は、秘密鍵と公開鍵の鍵ペア生成を提供し得る。例えば、(pk,sk)=keygen(seed)である。ここで、skは秘密鍵またはプライベート鍵、pkは公開鍵、seedは、生成のための(任意選択の)明示的なシードパラメータである。別のHALグループ(例えば、_kem_enc)は、カプセル化及び/または暗号化関数を提供し得、例えば(ct,ss)=encaps(pk,seed)であり、ここで、ctは生成された暗号文、ssは生成された共有/共有可能な秘密、pkは公開鍵、seedは、生成のための(任意選択の)明示的なシードパラメータである。さらなるHALグループ(例えば、_kem_dec)は、カプセル化解除及び/または解読関数を提供し得、例えばss=decaps(ss,sk)であり、ここで、ssは生成された共有/共有可能な秘密、ssは入力された共有/共有可能な秘密、skは秘密鍵またはプライベート鍵である。シードパラメータは、暗号規格内で示されているように、ランダムビットジェネレータから供給され得る。シードのマスクされていない長さは、通常32~96バイトである(実装されている暗号アルゴリズムによって異なる)。シード決定論により、暗号関数の標準化されたテストが可能になり得る。マスクされた動作のマスキングランダム性は、(例えば、上記の方法及びシステムに従う場合)決定論的ではない可能性があり、そのため、このような場合、シードパラメータは(例えば、エントロピービットとして)単に寄与し得る。
【0093】
特定のポスト量子鍵確立関数は、従来使用されてきたDiffie-Hellman暗号アルゴリズムの「可換対称性」を持たない場合がある。これらの例では、カプセル化とカプセル化解除とに異なる計算が含まれ得る。ポスト量子鍵交換フローでは、最初のユーザ鍵ペアは一時的である可能性があり、共有秘密(上記のss変数)がセッション鍵を導出するために両当事者によって使用され得る。例えば、従来の(例えばDiffie-Hellman)アルゴリズムの可換対称性は、通常、2者が共有秘密に到達するために同様の動作(例えば、べき乗)を実行することを意味する。ただし、ポスト量子アルゴリズムでは、通常、2つの当事者はまったく異なる動作を実行して共有秘密に到達し、一方の当事者が最初にメッセージを送信する「イニシエータ」となる。場合によっては、秘密鍵skを出力しないが、直後の解読動作(例えば、kem_dec_eph)のためにそれを暗号システム内に保持する代替鍵ペア生成関数(例えば、kem_kg_eph)が提供されてもよい。ポスト量子公開鍵暗号化フローの場合、生成された鍵ペアは長期使用のために保存され得る。この場合、カプセル化を呼び出してメッセージごとに新しい共有秘密(つまり、ss)を作成することができ、これらの共有秘密を使用して(例えば、関連データ付き認証暗号化(AEAD)モードにおける高度暗号化標準(AES)のために)メッセージペイロードの暗号化と解読のための鍵を導出することができる。(適応的な)選択暗号文攻撃への対策により、ある種のポスト量子鍵確立関数には暗黙的な失敗モードが存在することがあり、そこでは、不正な暗号文や不正な暗号文のカプセル化は明示的には失敗しないが、特別に構築されたランダムなss値が返され得る。場合によっては、ポスト量子鍵確立関数は追加のフラグ変数を受信しまたはアクセスして、実装する一連のサイドチャネル対策を決定し得る。
【0094】
上述のポスト量子鍵確立関数と同様の方法で、デジタル署名関数のセットも、HALグループのセットとして(例えば、sig関数のセットとして)定義され得る。例えば、HALグループ(_sig_kgなど)は、秘密鍵と公開鍵のペアの生成を提供でき、例えば(pk,sk)=keygen(seed)であり、式中、skは秘密鍵またはプライベート鍵、pkは公開鍵、seedは生成の(任意選択の)明示的なシードパラメータである。別のHALグループ(例えば_sig_sig)は、例えばsig=sign(hm,sk,seed)で、sigは生成された署名、hmはハッシュされたメッセージ、skは秘密鍵またはプライベート鍵、seedは(任意選択の)明示的なシードパラメータである。さらなるHALグループ(例えば_sig_ver)は、分離された署名検証機能を提供し得、例えば{T,F}=検証(sig,hm,pk)であり、ここで、sigは取得されたデジタル署名、hmはハッシュされたメッセージ、pkは公開鍵であり、検証関数はTrueまたはFalse(つまり、検証済みまたは未検証)を返す。
【0095】
ハッシュベースの記述された署名の場合、HBS関数のセットは、HALグループのセットとして(例えば、hbs関数のセットとして)定義できる。例えば、HALグループ(例えば_hbs_kg)は、少なくとも秘密鍵と公開鍵のペアの生成を支援することができ、例えば、(pk,sk)=keygen(seed)であり、ここで、skは秘密鍵またはプライベート鍵、pkは公開鍵、seedは生成の(任意選択の)明示的なシードパラメータである。別のHALグループ(例えば_hbs_sig)は、分離された署名の生成を少なくとも支援することができ、例えば、sig=sign(hm,sk,seed)であり、ここで、sigは生成された署名、hmはハッシュされたメッセージ、skは秘密鍵またはプライベート鍵、seedは(任意選択の)明示的なシードパラメータである。さらなるHALグループ(例えば_hbs_ver)は、分離された署名検証機能を提供でき、例えば、pk=検証(sig,hm,pk)であり、ここで、sigは取得されたデジタル署名、hmはハッシュされたメッセージ、pkは公開鍵であり、検証関数は出力として公開鍵pkの候補構成要素を返す(例えば上の図4を参照して説明したとおり)。
【0096】
図5は、格子に基づくポスト量子暗号を実行するために使用され得る、構成された暗号化動作510の実施例500を示す。図2と同様に、1つ以上の「oper」命令220(例えば、動作制御装置138から供給される)は、構成された暗号化動作510を構成するサブ動作を制御し、動作510中に使用されるアドレスは、アドレスジェネレータ134から1つ以上のアドレスストリーム530として供給される。「oper」命令(複数可)は、「ブリッタ」動作全体のパイプライン動作を指定する。この例では、図2の例のように、A、B、C、542、544、及び546の3つのソースレジスタが使用される。この暗号化動作510は、SABER及びNTRU暗号アルゴリズムを実装するために使用できる乗算-加算演算である。この場合、暗号化動作510は、2つの並列モジュラス2乗算加算演算を計算するパイプライン算術演算結合器として実装される。まず、Aソースレジスタ542の内容は、552及び554として示される2つの部分a及びaに分解される。同様の手順が実行されて、Bソースレジスタ544の内容が、556及び558として示される2つの部分b及びbに分解される。A及びBソースレジスタからの第1の部分、a及びb-552及び556-は、第1の乗算演算562への入力として提供され、A及びBソースレジスタからの第2の部分、a及びb-554及び558-は、第2の乗算演算564への入力として提供される。この例の部分には、特定の構成のデータ共有が含まれ得る。次いで、各乗算の結果は、ブロック572及び574(「ボックス加算」を示す)において、Cソースレジスタ546のそれぞれの分解された部分c及びc(566及び568として示される)に加算され、デスティネーション部分d及びd(576及び578として示される)を生成し、これらは、デスティネーションレジスタD580の出力を生成するために結合される。ブロック572及び574は、(例えば、他の例で説明したように)「ラップアラウンド」またはモジュロq演算を表す。qの値は、暗号アルゴリズムに応じて変化し得る(SABERの場合、q=213)。加算によるオーバーフローキャリーは無視できる。図5の例は、マスクされた実装にも適用できる。この場合、大きな「ブリット」が発生し、例えば、秘密鍵が関係する場合、格子暗号化アルゴリズムの算術演算動作がマスクされ得る。場合によっては、次のマスク共有に進む前に、1つのマスク共有でリング乗算操作(「ブリット」など)を実行できることがよくあり、この場合、共有はアルゴリズムフロー内の特定のポイントでのみ結合する必要がある。
【0097】
制御装置例の詳細
特定の例では、制御装置150は、暗号数値演算装置130の軽量コントローラとして機能する。例えば、暗号数値演算装置130の動作を介した情報の流れ及びポスト量子暗号の実行は、制御装置のプロセッサ152によって制御され得る。ある場合には、プロセッサ152はRISCコアを備え、対応するRISC命令セット(RV32I命令セットなど)を実装する。特定の例では、プロセッサ152は、ROM156内に格納された(例えば、ROMイメージとして格納された)命令を実行する。制御装置150(プロセッサ152を含む)は、バスインターフェースセット120で受信された信号に基づいて(例えば、上記インターフェースのバスマネージャからの信号に基づいて)、割り込みのようなメカニズムを使用してトリガされ得る。
【0098】
使用中、暗号システム110は、秘匿データ(例えば、SSP)がプロセッサ152を通過しないように構成され得る。その代わりに、制御装置150は、暗号数値演算装置130によって実行される一連の1つ以上の定義された動作(例えば、OPER制御信号を介して制御されるような動作)を(例えば、少なくとも図2、4、及び5に概略的に示されるように)手配する。特定の暗号化動作は、サブセットB(BitManip)及び/またはサブセットK(スカラー暗号化法)RISC命令セット拡張を使用して(またはそれとして)プログラムできる。以下の図6を参照して説明される内部変数の監視などの特定の関数は、プロセッサ152のための追加の独自のカスタム命令のセットとして実装され得る。
【0099】
秘匿データがプロセッサ152を通過するのを防ぐために、暗号システム110を使用して実装されるポスト量子暗号アルゴリズムは、プロセッサ152によって実行される条件なし命令のセットとして構成され得る。場合によっては、制御装置150はマトリックスメモリ132にアクセスできることがあるが、それは暗号数値演算装置130が能動的に演算を実行していないときに限られる(例えば、プロセッサ152は、「ブリット」または一連の「ブリット」中にマトリックスメモリ132にアクセスすることを防止され得る)。暗号数値演算装置130の動作外のマトリックスメモリ132へのアクセスは、例えば、初期化中の自己テストの実行中、公開鍵の解析時、及び/またはKeccak演算の実装のためのデータブロックのXORパディング中に提供され得る。
【0100】
本明細書の例は、システムオンチップ実装を参照して説明されているが、機能は完全なシステムエミュレータによってエミュレートできることに留意されたい。この場合、フルシステムエミュレータは、制御装置150、暗号数値演算装置130及び他の周辺機器を含む、図1に示される構成要素(すなわち、フル暗号システム110)をエミュレートすることができる。エミュレーションでは、回路シミュレーションと比較して便利な開発フローに加えて、詳細な実装プロファイリングとセキュリティ分析とが可能になり得る。
【0101】
本明細書で説明される暗号システムは、様々なユースケース及び制約をサポートするように容易にプログラムすることができる(例えば、製造後にROM156に格納されたイメージのファームウェア更新を介して追加の機能を提供することができる)。サポートされる暗号アルゴリズムには、DILITHIUM、KYBER、SABER、及びNTRUを含むNIST構造格子アルゴリズムが含まれ得るが、これらに限定されない。ドイツ連邦情報セキュリティ局(BSI)は、FrodoKEMやClassic McElieceなどのアルゴリズムを開発した。LMS、HSS、XMSS、XMSSMTなどのNIST SP800-208ハッシュベースの署名アルゴリズムである。
【0102】
場合によっては、Rivest-Shamir-Adleman(RSA)アルゴリズム及び/または楕円曲線暗号などの非ポスト量子(「古典」)暗号のサポートが提供される場合もある。暗号システムによって実装される特定の暗号化動作は、ポスト量子アルゴリズムと古典アルゴリズムとの両方を含む、複数の異なる暗号アルゴリズムのプリミティブを形成する可能性があることに留意されたい。古典的な暗号アルゴリズムのセキュリティパラメータは、暗号システムによって有効になるフローチャートの特性評価プロセスを使用して選択され得る。楕円曲線及び/またはRSA機能が外部コンピューティングシステムの他のハードウェアによって提供される場合、大きな整数演算などの特定の関数は必要ない場合がある(場合によっては、例えばバス126、128、または170のうちの1つ以上を介して、暗号システムと通信し得る)。
【0103】
暗号システムの設計では、実装上のセキュリティのために文字通りの定数時間動作を保証することがある。本明細書で説明されるマスクされた動作モードは、非侵襲的な物理的攻撃に対する堅牢な保護をさらに提供し得る。したがって、マスクされた動作モードは、ISO/IEC17825レベル3及び4の要件を満たす、及び/または超える可能性がある。秘匿データ(秘密鍵を含むSSPなど)のインポートとエクスポートとは、マスクされたデータシェアを使用して構成できるため、安全な鍵の保管と、AES暗号化エンジンなどの外部対称構成要素の鍵作成とが可能になる。特定の実装では、暗号システムは、ゼロ化、セルフテスト、及び完全性テストなどのFIPS140-3設計機能を提供し得る。
【0104】
変数汚染方法の例
上記の例を参照して説明した暗号システムと同様に、暗号システムを動作させる方法もまた提供され得る。この方法は、図1の暗号システム110及び他の例に特に適しているが、それでもなお、暗号化動作を実行するように構成された任意の暗号システムなど、本明細書で説明する例とは異なる暗号システムにも適用することができる。
【0105】
本例では、暗号化動作を実行しながら暗号システムを動作させる方法が提供される。暗号化動作はポスト量子暗号化動作であってもよく、暗号システムは通信可能に結合されたコンピューティングシステムに対して上記動作を実行し得る。例えば、暗号システムは、ポスト量子暗号を実行するためのシステムオンチップを含んでもよい。
【0106】
一般に、この方法は、暗号システムの少なくとも内部変数のセットに注釈を付けるための属性のセットを定義することと、内部変数のセットに対して1つ以上の暗号化動作を実行することと、条件付き命令及び暗号システムの外部からのデータアクセス動作のうちの少なくとも1つが特定の値を有する内部変数に対して実行されるとき、インディケーションを提供することと、を含む。例えば、属性のセットのそれぞれは、少なくとも2つの値のうちの1つを有することができ、少なくとも2つの値は、秘匿データをインディケートする第1の値と非秘匿データをインディケートする第2の値とを含む。これらは、暗号化規則に詳しい人にとっては「赤」変数及び「黒」変数と呼ばれる場合がある。内部変数のセットに対して1つ以上の暗号化動作を実行することは、暗号システムによって生成または受信されたデータに少なくとも2つの値のうちの1つを適用することと、暗号システムの算術演算装置によって実行される(例えば、ポスト量子暗号の動作を実装する)算術演算動作に基づいて属性値を更新することとを含むことができる。このインディケーションは、第1の値を持つ内部変数に対して、例えば「赤」の秘密変数について、特定の命令が実行されるときに提供され得る。この方法を実行することにより、暗号システムが秘密情報を漏洩していないことを保証できる。さらに、この方法は、新しい暗号化動作(例えばファームウェアの更新)をテストするときに使用して、秘密情報が(誤って)漏洩しないようにすることもできる。
【0107】
図6は、上述の方法の具体例600を示す。方法600はブロック610で始まる。ブロック620で、定義された「マーカ」の形式の属性が、1つ以上のデータレジスタ(バスインターフェースセット120及びマトリックスメモリ132内のレジスタを含む)に関連付けられる。ある場合には、フラグビットの形式の属性が、アーキテクチャレジスタ(例えば、制御装置150によって使用される全てのRISC-Vレジスタ)及び内部メモリ(例えば、少なくともマトリックスメモリ132)データワードに割り当てられる。バイナリフラグが使用されるとき、バイナリ値の1つは「黒」または非秘匿データを表し、もう1つのバイナリ値は「赤」または秘匿データを表す。特定の例では、ゼロ化にされた(またはゼロ化された)値、非秘匿値(公開鍵など)及び/または暗号化された変数は「黒」とみなされる場合がある。注釈を変数に適用することは、「汚染」または「色付け」の一形態とみなされる場合がある。
【0108】
ブロック630で、暗号数値演算装置130によって実行される計算などの暗号化動作中に、汚染論理ルールのセットが適用される。例えば、ブロック620で割り当てられたフラグ値は転送可能であり、暗号システム内で操作されるデータ値に従うことができる(例えば、あるアドレスから別のアドレスへのデータコピーでは、フラグ値もまた新しい場所またはレジスタにコピーされる)。場合によっては、汚染ロジックルールのセットは、少なくとも算術演算装置136によって適用される全ての算術演算動作の結果を監視することを含んでもよい。秘匿データをインディケートする注釈(例えば、「赤色」汚染)は、秘匿データを含む動作の全ての結果も秘匿として注釈が付けられるように(例えば、動作への入力の注釈に「または」動作を適用することによって)追跡することができる。例えば、「赤」の注釈付き入力と「黒」の注釈付き入力とに対して動作すると、「赤」の注釈付き出力が生成される。汚染ロジックルールのセットは、制御装置150によって自動的に適用されてもよく、一般のユーザプロセスには見えなくてもよい。場合によっては、非秘匿データを示す注釈(例えば、「黒」注釈)は、秘匿データに対して実行される事前定義された一連の動作に応答してのみ設定され得る(例えば、「赤」注釈)。例えば、フラグは、「赤」データに対してゼロ化動作が実行された場合、または特別に認可されたカスタム命令が実行された場合にのみ、「赤」から「黒」に変更される(例えば、1から0)。
【0109】
図6に戻ると、汚染が適用される暗号システムの使用中に、注釈付き変数に関して特定の条件が違反されているかどうかを確認するためのチェックが行われる場合がある。ブロック640で、秘密として注釈が付けられたデータ(例えば、「赤色」データ)に対して何らかの条件付き動作が実行されるかどうかを決定するためのチェックが実行される。例えば、「赤」変数に対して実行される条件付きジャンプ、ロード、及び/またはストアは、タイミングチャネルを介した機密データの意図的または意図的でない漏洩を排除するために禁止される場合がある。ブロック650では、秘密として注釈が付けられたデータ(例えば、「赤」データ)が暗号システムからエクスポートされたかどうかを判定するために別のチェックが実行される。例えば、秘密情報の漏洩を防ぐために、非秘密として注釈が付けられたデータ(例えば、「黒」データ)のみが暗号システムからエクスポートされる場合がある。場合によっては、「赤」のデータは、「黒」に「保護」または変換された時点で、例えば、データに対して暗号化動作が実行された時点で、エクスポートされ得る。図6では、ブロック640またはブロック650のいずれかのチェックで、秘匿データに対して条件付き動作が実行されたこと、または秘匿データがエクスポートされたことが示された場合、ブロック660でアラートが少なくとも記録される。ブロック640及びブロック650のチェックが満たされる場合(すなわち、「赤」データに例外がない場合)、暗号化動作の結果がブロック670で提供される。場合によっては、チェックが満たされた場合にのみ、結果がブロック670で提供され得る。他の場合には、結果は依然として提供され得るが、ブロック660で記録されたアラートには任意の出力が提供され得る。ブロック680で、方法600は終了する。使用中、データに対して計算が実行されるとき、及びデータがロード及びエクスポートされるときに、少なくともブロック620、630、640及び650を継続的に繰り返すことができる。
【0110】
ここで説明する汚染方法は、シリコン領域または電力実装コストが中程度しか発生しない可能性がある。例えば、注釈に使用される前述のフラグビットを格納するために追加のレジスタビットが提供されてもよい。汚染ロジックルールのセットは、比較的単純であるため(例えば、「赤」データに対する単純なOR演算を使用する)、計算オーバーヘッドが限られている。マトリックスメモリ132及び制御装置RAM154のうちの1つ以上などのローカルRAMも、(例えば、格納されたデータワードのそれぞれのセットに関連付けられた予約された1ビットメモリ位置のセットを介して)注釈を格納するように変更することができる。この方法は、ハードウェア実装と完全なシステムエミュレータの両方に適用でき、例えば、追跡と監視とが実際とテスト中との両方で実行されるように、両方が同じ方法で動作し得る。
【0111】
一例として、鍵生成プロセスには、公開鍵とプライベート鍵のペアの生成が含まれる場合がある。このプロセス中、生成された公開鍵データは非秘密であるため、即座に「黒」のフラグ値が割り当てられることがあるが、プライベート鍵データは最初に「赤」のフラグ値が割り当てられ、暗号鍵を使って「ラッピング」されて(すなわち、KEKラッピングされて)暗号文キーブロブが形成された後にのみ、初めて「黒」のフラグ値が割り当てられる場合がある。「黒」フラグ値の割り当てに続いて、暗号文鍵データが暗号システムからエクスポートされ得る。
【0112】
本明細書の例で説明するように、暗号システムは、通信可能に結合された合コンピューティングシステムのシステムバスを介して秘匿データをロードするための秘匿データバスインターフェースを備え得る。この場合、秘匿データバスインターフェース(例えば、図1の122)から暗号システムにロードされたデータには、最初に第1の(「赤」)値が割り当てられる。場合によっては、第1の値を持つ内部変数(例えば、「赤」変数)を含む全ての算術演算動作の出力には、第1の値が割り当てられる(例えば、「赤」として注釈が付けられる)。場合によっては、第1の値(例えば「赤」変数)から第2の値(例えば「黒」変数)への変換は、内部変数に対して事前定義された算術演算動作のサブセット(ゼロ化または暗号化など)を実行するときにのみ実行される。属性のセットの値は、暗号システム内の1つ以上のレジスタまたは暗号システムのマトリックスメモリに格納されたデータの追加ビットを使用して格納することができる。
【0113】
図6の方法は、図1の暗号システム110を参照して説明されているが、セキュリティプロセッサを含む暗号システムを含む任意の暗号システムとともに使用することができる。場合によっては、この方法は、コンピューティングシステムの従来の中央処理装置で実行される暗号化動作に適用されてもよい。この方法は、ポスト量子暗号化動作と非ポスト量子(つまり、古典的)暗号化動作との両方に適用できる。
【0114】
一般に、図6の実施例は、暗号化動作を実行しながら暗号システムを動作させる方法を提供する。この方法は、暗号システムの少なくとも内部変数のセットに注釈を付けるための属性のセットを定義することであって、属性のセットのそれぞれが、少なくとも2つの値のうちの1つを有し、少なくとも2つの値が、秘匿データをインディケートする第1の値と、非秘匿データをインディケートする第2の値とを含む、定義することと、暗号システムによって生成または受信されたデータに少なくとも2つの値のうちの1つを適用することと、暗号システムによって実行される算術演算動作に基づいて属性値を更新することとを含む、内部変数のセットに対して1つ以上の暗号化動作を実行することと、暗号システムの外部からの条件付き命令及びデータアクセス動作のうちの少なくとも1つが、第1の値を持つ内部変数に対して実行されたときにインディケーションを提供することと、を含む。
【0115】
特定の変形形態では、暗号システムは、通信可能に結合されたコンピューティングシステムのシステムバスを介して秘匿データをロードするための秘匿データバスインターフェースであって、秘匿データバスインターフェースから暗号システムにロードされたデータには、最初に第1の値が割り当てられる、秘匿データバスインターフェースを備え得る。全ての算術演算動作の出力には、第1の値を持つ内部変数が第1の値に割り当てられることが含まれ得る。この方法は、内部変数に対して算術演算動作の事前定義されたサブセットを実行するときに、第1の値から第2の値に変換することを含み得る。属性のセットの値は、暗号システム内の1つ以上のレジスタまたは暗号システムのマトリックスメモリに格納されたデータの追加ビットを使用して格納することができる。
【0116】
機能例の簡単な概要
本明細書に記載される特定の例は、マスクされた算術演算、すなわち、サイドチャネル保護のためのマスクされたデータシェアとして提供されるデータを使用してポスト量子暗号を実行することができるデバイス(例えば、暗号システムまたはコプロセッサ)を提供する。マスクされた動作モードは、ブール及び算術演算マスキングのうちの1つ以上を利用することができ、デバイスは、(少なくともこれらの)異なる形式のマスキング間の変換を提供することができる。説明された例は、柔軟かつ効率的な方法でマスキング動作を実行して、加速されたポスト量子暗号の共同処理とサイドチャネル攻撃に対する高いセキュリティとの両方を可能にする、新しい暗号システムの構造または構成を提供する。
【0117】
本明細書に記載される特定の例は、暗号計算を支援及び/または加速することができるとともに、特定の完全なポスト量子暗号化動作を自律的に実行することができるデバイス(例えば、暗号システムまたはコプロセッサ)を提供する。例えば、デバイスは、公開鍵とプライベート鍵のペアの生成、カプセル化及び/または暗号化、ならびにカプセル化解除及び/または解読などの公開鍵の鍵確立及び暗号化を可能にする。本デバイスはさらに、公開-プライベート完全性鍵ペアの生成、署名生成、及び署名検証などのデジタル署名関数、ならびに鍵生成、署名生成、署名検証関数の支援及び/または高速化などのステートフルハッシュベースの署名を可能にする。このようなデバイスは、システムオンチップとして提供され得る(例えば、シリコン設計内に統合され、及び/または取り付けられる別個のFPGA/ASICチップとして提供され得る)。
【0118】
本明細書に記載される特定の例は、安全な暗号計算を提供できる暗号システムを提供する。例えば、次の1つ以上のポスト量子公開鍵暗号化アルゴリズム、すなわち、Classic McEliece、(CRYSTALS-)KYBER、NTRU、SABRE、BIKE、FrodoKEM、HQC、NTRUPrime、SIKE、及びSupersingularIsogenyDiffie-Hellman(SIDH)、ならびに次のポスト量子デジタル署名アルゴリズム、(CRYSTALS-)DILITHIUM、FALCON、Rainbow、GeMSS、及びPicnicの1つ以上が実装され得る。これらのアルゴリズムの詳細は、利用可能なNISTの「Post-Quantum Cryptography Project」の出版物、及びCRYSTALSプロジェクトの出版物「Cryptographic Suite for Algebraic Lattices - Kyber and Dilithium」で見つけることができ、これらは参照により本明細書に組み込まれる。
【0119】
本明細書で説明される特定の例は、「ブリッタ」アクセラレータ構造を実装する暗号数値演算装置を備えたデバイスを提供する。この構造には、アドレスジェネレータ、マルチポートメモリ、並べ換え装置、及び選択可能な関数を備えたパイプライン算術演算結合器が含まれ得る。また、ある実施例では、ストリーミング出力(例えば、SHAKE実装の場合)、及び/または、ハッシュベースの署名を高速化するために(例えば、Winternitzモード及び/またはマークルモードを介して)ハッシュを反復することができる、XOFまたはハッシュユニットを説明した。本明細書で説明される特定の例は、機密データを扱わずに暗号化動作(いわゆる「ノータッチ」動作)を制御する制御装置を有する。例えば、制御装置は、動作中に暗号数値演算装置内の機密データにアクセスできない場合がある。特定の例は、制御装置またはプロセッサが暗号化動作全体を通じて秘匿データのセキュリティ追跡を提供できる方法をさらに提供する。したがって、制御装置またはプロセッサは、暗号システム内の秘匿情報の流れを追跡できるが、そのデータにはアクセスできない。特定の例では、暗号化動作用に特別に構成された暗号数値演算装置について説明しているが、場合によっては、追加のベクトル処理機能を提供する場合もある。例えば、暗号システムはベクトルコプロセッサとしても使用できる。この場合、暗号システムの制御装置はベクトル命令(図1の制御レジスタ124を介したRISC-Vベクトル命令など)を受信し、暗号数値演算装置を使用して、これらの命令を実装することができる。これにより、特定の数学演算を高速化するための追加の「ボーナス」機能が提供される場合がある。
【0120】
上記の例は、例示として理解されるべきである。さらなる例が想定される。各例の特定の構成要素を個別に説明したが、一例を参照して説明した機能は別の例で適切に実装することができ、実装に応じて特定の構成要素を省略できることを理解されたい。任意の1つの例に関連して説明された任意の特徴は、単独でまたは説明した他の特徴と組み合わせて使用し得、また、他の任意の例の1つ以上の特徴、または任意の他の例の任意の組み合わせと組み合わせて使用し得ることを理解されたい。例えば、システム構成要素に関して説明された特徴は、説明された方法の一部として実行されるように適合されてもよい。さらに、添付の特許請求の範囲で定義される本発明の範囲から逸脱することなく、上述されていない均等物及び修正が採用されてもよい。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2024-03-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
通信可能に結合されたコンピューティングシステムのポスト量子暗号化動作を実行する暗号システムであって、前記暗号システムが、前記通信可能に結合されたコンピューティングシステムから分離されており、
前記暗号システムを前記コンピューティングシステムの1つ以上のシステムバスに通信可能に結合するためのバスインターフェースセットと、
暗号数値演算装置と、
前記暗号数値演算装置を制御する少なくとも1つのプロセッサ及びメモリを備える制御装置であって、前記制御装置が、第1の内部バスを介して前記バスインターフェースセットに通信可能に結合され、第2の内部バスを介して前記暗号数値演算装置に通信可能に結合されており、前記第1の内部バス及び前記第2の内部バスが、前記暗号化動作中に、前記暗号数値演算装置の内部暗号データへのアクセスを可能にしない、前記制御装置と、
を備えており、
前記暗号数値演算装置が、
データの多次元配列を格納するマトリックスメモリと、
前記制御装置から制御信号を受信し、前記マトリックスメモリ内のデータへのアクセスを制御するように構成されたアドレスジェネレータと、
前記アドレスジェネレータを使用してアクセスされた前記マトリックスメモリ内のデータに対して、定義された算術演算動作のセットを実行する算術演算装置と、
ランダムなビットシーケンスを生成するように構成された並べ換え装置であって、前記並べ換え装置が、前記制御装置によって制御され、前記算術演算装置に通信可能に結合される、前記並べ換え装置と、
を備え、
前記暗号システムが、秘匿データ値を複数のデータシェアに分解することによってマスクされた算術計算を実行するように構成されており、前記制御装置が、前記算術演算装置及び前記アドレスジェネレータを制御して、前記定義された算術演算動作のセットの少なくとも1つを複数のデータシェアのそれぞれに対する複数の独立した線形動作として適用するように構成されている、前記暗号システム。
【請求項2】
前記暗号システムは、マスクされた動作モードを備え、前記マスクされた動作モードでは、
前記バスインターフェースセットを介して、前記通信可能に結合されたコンピューティングシステムからマスクされた算術計算を単一のアトミック動作として実行する命令を受信することと、
前記制御装置で、前記マトリックスメモリ内のデータへのアクセスを制御する第1の制御信号のセットと、前記マスクされた算術計算を実行するために前記算術演算装置の少なくとも1つの動作を制御する第2の制御信号のセットとを決定することと、
前記並べ換え装置からの1つ以上のランダムなビットシーケンスを秘匿データ値に適用することによって、前記マトリックスメモリ内に格納された前記秘匿データ値を複数のマスクされたデータシェアに分解することと、
前記マスクされた算術計算を実行するために前記算術演算装置を使用して、前記複数のデータシェアのそれぞれに前記少なくとも1つの動作を繰り返し適用することであって、前記少なくとも1つの動作が、複数の独立した線形動作として適用される、前記繰り返し適用することと、
を行うように構成されている、請求項1に記載の暗号システム。
【請求項3】
前記暗号システムは、前記マスクされた動作モードでは、
前記バスインターフェースセットを介して、暗号化された秘匿データ値を取得することと、
前記暗号化された秘匿データ値を解読し、前記マスクされたデータシェアに分解するために前記解読したデータ値を前記マトリックスメモリに格納することと、
を行うように構成されており、
前記少なくとも1つの動作の結果が、暗号化された形式で、前記通信可能に結合されたコンピューティングシステムにのみエクスポートされる、請求項2に記載の暗号システム。
【請求項4】
前記並べ換え装置はASCON並べ換えを実行する、請求項1に記載の暗号システム。
【請求項5】
前記制御装置は、前記メモリに格納され前記プロセッサによって実行される条件なし命令のセットを備える、請求項1に記載の暗号システム。
【請求項6】
前記並べ換え装置は、
暗号化動作を適用して無限長の出力ストリームを生成する拡張可能出力関数(XOF)装置を備え、
前記XOF装置が、前記制御装置によって制御され、前記算術演算装置に通信可能に結合される、請求項1~5のいずれか1項に記載の暗号システム。
【請求項7】
前記XOR装置は、暗号吸収動作、暗号スクイーズ動作、暗号サンプリング動作、及び暗号ランダムマスキング動作のうちの1つ以上を実行するように構成される、請求項6に記載の暗号システム。
【請求項8】
前記XOF装置は、マスクされた算術計算のための複数のデータシェアに分割されるnビットの暗号状態を備える、請求項6に記載の暗号システム。
【請求項9】
前記暗号システムは、前記マトリックスメモリに格納されたデータを繰り返しハッシュすることによって、ハッシュベースの署名を計算するように構成されている、請求項1に記載の暗号システム。
【請求項10】
前記暗号システムは、Winternitzハッシュチェーン及びマークルツリーデータの1つ以上を計算するように構成されている、請求項6に記載の暗号システム。
【請求項11】
前記暗号システムは、
暗号化及び解読の1つ以上を含む鍵確立関数と、
デジタル署名生成及びデジタル署名検証のうちの1つ以上を含むデジタル署名関数と、
ステートフルなハッシュベースの署名と、の1つ以上を実行するように構成されている、請求項1に記載の暗号システム。
【請求項12】
前記暗号システムは、
格子ポスト量子鍵確立関数及びコードベースポスト量子鍵確立関数のうちの1つ以上を実装することと、
格子ポスト量子デジタル署名関数、コードベースポスト量子デジタル署名関数、ハッシュベースポスト量子デジタル署名関数、及び多変量ポスト量子デジタル署名関数のうちの1つ以上を実装することと、
階層型署名システム関数を実装することと、
を行うように構成されている、請求項11に記載の暗号システム。
【請求項13】
前記算術演算装置は、実行するために選択された動作をインディケートする制御データを前記制御装置から受信し、前記選択された動作を経時的に複数のステージとして実行する算術演算パイプライン装置を備える、請求項1に記載の暗号システム。
【請求項14】
前記複数のステージは、複数の並列処理ストリームを備え、前記複数の並列処理ストリームが、前記マトリックスメモリからアクセスされたデータを受信する、請求項13に記載の暗号システム。
【請求項15】
前記制御装置の前記プロセッサは、前記バスインターフェースセットを介して、ベクトル命令を受信し、前記ベクトル命令を前記暗号数値演算装置のベクトル動作のための制御命令に変換するように構成されている、請求項1に記載の暗号システム。
【請求項16】
前記バスインターフェースセットは、
前記通信可能に結合されたコンピューティングシステムの少なくとも1つのプロセッサによって書き込み可能な制御レジスタセットと、
秘匿暗号データ用の暗号レジスタセットと、
を備える、請求項1に記載の暗号システム。
【請求項17】
前記制御装置は、第1のマスキングフォーマットから第2のマスキングフォーマットに変換するように構成される、請求項1に記載の暗号システム。
【請求項18】
前記制御装置は、ブールマスキング及び算術演算マスキングのうちの1つ以上を実装するように構成される、請求項1に記載の暗号システム。
【請求項19】
暗号システムを動作させる方法であって、前記暗号システムが、通信可能に結合されたコンピューティングシステムから分離されており、前記方法が、
前記暗号システムのバスインターフェースセットを介して、マスクされた算術計算を単一のアトミック動作として実行する命令を、前記通信可能に結合されたコンピューティングシステムから受信することと、
少なくとも1つのプロセッサ及びメモリを備える前記暗号システムの制御装置によって、前記バスインターフェースセットに書き込まれた前記命令にアクセスすることと、
前記制御装置で、前記暗号システムのマトリックスメモリ内のデータへのアクセスを制御する第1の制御信号のセットと、前記マスクされた算術計算を実行するために前記暗号システムの算術演算装置の少なくとも1つの動作を制御する第2の制御信号のセットとを決定することと、
前記暗号システムの並べ換え装置からの1つ以上のランダムなビットシーケンスを秘匿データ値に適用することによって、前記マトリックスメモリ内に格納されている前記秘匿データ値を、複数のマスクされたデータシェアに分解することと、
前記第1の制御信号のセットと前記第2の制御信号のセットとを使用して、前記マスクされた算術計算を実行するために前記算術演算装置を使用して、前記複数のデータシェアのそれぞれに前記少なくとも1つの動作を繰り返し適用することであって、前記少なくとも1つの動作が、複数の独立した線形動作として適用される、前記繰り返し適用することと、
を含み、
少なくとも前記分解中及び前記繰り返し適用中に、前記制御装置が前記マトリックスメモリまたは前記算術演算装置の内容にアクセスすることが防止される、前記方法。
【請求項20】
前記マスクされた算術計算の非秘匿結果を、前記暗号システムの前記バスインターフェースセットを介して、前記通信可能に結合されたコンピューティングシステムにエクスポートすることと、
前記マスクされた算術計算が秘匿結果を提供する場合、エクスポートする前に前記秘匿結果を暗号化することを含むことと、
を含む、請求項19に記載の方法。
【請求項21】
前記バスインターフェースセットを介して、暗号化された秘匿データ値を取得することと、
前記暗号システム内で前記暗号化された秘匿データ値を解読することと、
前記マスクされたデータシェアに分解するために、前記解読したデータ値を前記マトリックスメモリに格納することと、
を含む、請求項19または請求項20に記載の方法。
【手続補正書】
【提出日】2024-04-18
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
通信可能に結合されたコンピューティングシステムのポスト量子暗号化動作を実行する暗号システムであって、前記暗号システムが、前記通信可能に結合されたコンピューティングシステムから分離されており、
前記暗号システムを前記コンピューティングシステムの1つ以上のシステムバスに通信可能に結合するためのバスインターフェースセットと、
暗号数値演算装置と、
前記暗号数値演算装置を制御する少なくとも1つのプロセッサ及びメモリを備える制御装置であって、前記制御装置が、第1の内部バスを介して前記バスインターフェースセットに通信可能に結合され、第2の内部バスを介して前記暗号数値演算装置に通信可能に結合されており、前記第1の内部バス及び前記第2の内部バスが、前記暗号化動作中に、前記暗号数値演算装置の内部暗号データへのアクセスを可能にしない、前記制御装置と、
を備えており、
前記暗号数値演算装置が、
データの多次元配列を格納するマトリックスメモリと、
前記制御装置から制御信号を受信し、前記マトリックスメモリ内のデータへのアクセスを制御するように構成されたアドレスジェネレータと、
前記アドレスジェネレータを使用してアクセスされた前記マトリックスメモリ内のデータに対して、定義された算術演算動作のセットを実行する算術演算装置と、
ランダムなビットシーケンスを生成するように構成された並べ換え装置であって、前記並べ換え装置が、前記制御装置によって制御され、前記算術演算装置に通信可能に結合される、前記並べ換え装置と、
を備え、
前記暗号システムが、秘匿データ値を複数のデータシェアに分解することによってマスクされた算術計算を実行するように構成されており、前記制御装置が、前記算術演算装置及び前記アドレスジェネレータを制御して、前記定義された算術演算動作のセットの少なくとも1つを複数のデータシェアのそれぞれに対する複数の独立した線形動作として適用するように構成されている、前記暗号システム。
【請求項2】
前記暗号システムは、マスクされた動作モードを備え、前記マスクされた動作モードでは、
前記バスインターフェースセットを介して、前記通信可能に結合されたコンピューティングシステムからマスクされた算術計算を単一のアトミック動作として実行する命令を受信することと、
前記制御装置で、前記マトリックスメモリ内のデータへのアクセスを制御する第1の制御信号のセットと、前記マスクされた算術計算を実行するために前記算術演算装置の少なくとも1つの動作を制御する第2の制御信号のセットとを決定することと、
前記並べ換え装置からの1つ以上のランダムなビットシーケンスを秘匿データ値に適用することによって、前記マトリックスメモリ内に格納された前記秘匿データ値を複数のマスクされたデータシェアに分解することと、
前記マスクされた算術計算を実行するために前記算術演算装置を使用して、前記複数のデータシェアのそれぞれに前記少なくとも1つの動作を繰り返し適用することであって、前記少なくとも1つの動作が、複数の独立した線形動作として適用される、前記繰り返し適用することと、
を行うように構成されている、請求項1に記載の暗号システム。
【請求項3】
前記暗号システムは、前記マスクされた動作モードでは、
前記バスインターフェースセットを介して、暗号化された秘匿データ値を取得することと、
前記暗号化された秘匿データ値を解読し、前記マスクされたデータシェアに分解するために前記解読したデータ値を前記マトリックスメモリに格納することと、
を行うように構成されており、
前記少なくとも1つの動作の結果が、暗号化された形式で、前記通信可能に結合されたコンピューティングシステムにのみエクスポートされる、請求項2に記載の暗号システム。
【請求項4】
前記並べ換え装置はASCON並べ換えを実行する、請求項1に記載の暗号システム。
【請求項5】
前記制御装置は、前記メモリに格納され前記プロセッサによって実行される条件なし命令のセットを備える、請求項1に記載の暗号システム。
【請求項6】
前記並べ換え装置は、
暗号化動作を適用して無限長の出力ストリームを生成する拡張可能出力関数(XOF)装置を備え、
前記XOF装置が、前記制御装置によって制御され、前記算術演算装置に通信可能に結合される、請求項1~5のいずれか1項に記載の暗号システム。
【請求項7】
記XOF装置は、暗号吸収動作、暗号スクイーズ動作、暗号サンプリング動作、及び暗号ランダムマスキング動作のうちの1つ以上を実行するように構成される、請求項6に記載の暗号システム。
【請求項8】
前記XOF装置は、マスクされた算術計算のための複数のデータシェアに分割されるnビットの暗号状態を備える、請求項6に記載の暗号システム。
【請求項9】
前記暗号システムは、前記マトリックスメモリに格納されたデータを繰り返しハッシュすることによって、ハッシュベースの署名を計算するように構成されている、請求項1に記載の暗号システム。
【請求項10】
前記暗号システムは、Winternitzハッシュチェーン及びマークルツリーデータの1つ以上を計算するように構成されている、請求項6に記載の暗号システム。
【請求項11】
前記暗号システムは、
暗号化及び解読の1つ以上を含む鍵確立関数と、
デジタル署名生成及びデジタル署名検証のうちの1つ以上を含むデジタル署名関数と、
ステートフルなハッシュベースの署名と、の1つ以上を実行するように構成されている、請求項1に記載の暗号システム。
【請求項12】
前記暗号システムは、
格子ポスト量子鍵確立関数及びコードベースポスト量子鍵確立関数のうちの1つ以上を実装することと、
格子ポスト量子デジタル署名関数、コードベースポスト量子デジタル署名関数、ハッシュベースポスト量子デジタル署名関数、及び多変量ポスト量子デジタル署名関数のうちの1つ以上を実装することと、
階層型署名システム関数を実装することと、
を行うように構成されている、請求項11に記載の暗号システム。
【請求項13】
前記算術演算装置は、実行するために選択された動作をインディケートする制御データを前記制御装置から受信し、前記選択された動作を経時的に複数のステージとして実行する算術演算パイプライン装置を備える、請求項1に記載の暗号システム。
【請求項14】
前記複数のステージは、複数の並列処理ストリームを備え、前記複数の並列処理ストリームが、前記マトリックスメモリからアクセスされたデータを受信する、請求項13に記載の暗号システム。
【請求項15】
前記制御装置の前記プロセッサは、前記バスインターフェースセットを介して、ベクトル命令を受信し、前記ベクトル命令を前記暗号数値演算装置のベクトル動作のための制御命令に変換するように構成されている、請求項1に記載の暗号システム。
【請求項16】
前記バスインターフェースセットは、
前記通信可能に結合されたコンピューティングシステムの少なくとも1つのプロセッサによって書き込み可能な制御レジスタセットと、
秘匿暗号データ用の暗号レジスタセットと、
を備える、請求項1に記載の暗号システム。
【請求項17】
前記制御装置は、第1のマスキングフォーマットから第2のマスキングフォーマットに変換するように構成される、請求項1に記載の暗号システム。
【請求項18】
前記制御装置は、ブールマスキング及び算術演算マスキングのうちの1つ以上を実装するように構成される、請求項1に記載の暗号システム。
【請求項19】
暗号システムを動作させる方法であって、前記暗号システムが、通信可能に結合されたコンピューティングシステムから分離されており、前記方法が、
前記暗号システムのバスインターフェースセットを介して、マスクされた算術計算を単一のアトミック動作として実行する命令を、前記通信可能に結合されたコンピューティングシステムから受信することと、
少なくとも1つのプロセッサ及びメモリを備える前記暗号システムの制御装置によって、前記バスインターフェースセットに書き込まれた前記命令にアクセスすることと、
前記制御装置で、前記暗号システムのマトリックスメモリ内のデータへのアクセスを制御する第1の制御信号のセットと、前記マスクされた算術計算を実行するために前記暗号システムの算術演算装置の少なくとも1つの動作を制御する第2の制御信号のセットとを決定することと、
前記暗号システムの並べ換え装置からの1つ以上のランダムなビットシーケンスを秘匿データ値に適用することによって、前記マトリックスメモリ内に格納されている前記秘匿データ値を、複数のマスクされたデータシェアに分解することと、
前記第1の制御信号のセットと前記第2の制御信号のセットとを使用して、前記マスクされた算術計算を実行するために前記算術演算装置を使用して、前記複数のデータシェアのそれぞれに前記少なくとも1つの動作を繰り返し適用することであって、前記少なくとも1つの動作が、複数の独立した線形動作として適用される、前記繰り返し適用することと、
を含み、
少なくとも前記分解中及び前記繰り返し適用中に、前記制御装置が前記マトリックスメモリまたは前記算術演算装置の内容にアクセスすることが防止される、前記方法。
【請求項20】
前記マスクされた算術計算の非秘匿結果を、前記暗号システムの前記バスインターフェースセットを介して、前記通信可能に結合されたコンピューティングシステムにエクスポートすることと、
前記マスクされた算術計算が秘匿結果を提供する場合、エクスポートする前に前記秘匿結果を暗号化することを含むことと、
を含む、請求項19に記載の方法。
【請求項21】
前記バスインターフェースセットを介して、暗号化された秘匿データ値を取得することと、
前記暗号システム内で前記暗号化された秘匿データ値を解読することと、
前記マスクされたデータシェアに分解するために、前記解読したデータ値を前記マトリックスメモリに格納することと、
を含む、請求項19または請求項20に記載の方法。
【国際調査報告】