暗号化ハッシュ関数は、機密データの一方向の変換を提供するコンピュータセキュリティにおいて重要な役割を果たします。多くの情報セキュリティ アプリケーションは、ハッシュ関数、特にデジタル署名、メッセージ認証コード、その他の形式の認証を使用することで恩恵を受けます。SHA512、SHA256、MD5などのハッシュ関数の計算は、カスタム・コンピュートの潜在的な遊び場です。ここで、RISC-Vによって実現され、Zk拡張機能によって強化されたISAの柔軟性と、本質的に逐次的なビット操作をカスタム命令にマージする機能がパフォーマンスの向上に役立ちます。
SHA512ハッシュ関数
SHA512は、米国国家安全保障局によって設計された「SHA-2」ファミリに属します。FIPS標準への準拠は、米国国立標準技術研究所(National Institute of Standards and Technology, NIST)とカナダ通信保安局(Communications Security Establishment Canada, CSEC) が共同で運営するCMVP(Cryptographic Module Validation Program)プログラムにて検証済みです。
SHA512アルゴリズムの概要図を以下に示します。1024ビットのデータブロックで動作するため、入力メッセージはフォーマットされ、ダミービットで埋められます。次に、各1024ビットブロックが80回の「ラウンド」のチェーンによって順次処理されます。各「ラウンド」は、入力データブロック、初期化ベクトル、および一連の「ラウンド定数」に対する加算と巡回ビットシフトに大きく依存します。
![](https://codasip.com/wp-content/uploads/2024/01/SHA512-Hash-Function.png)
80回の「ラウンド」の各シーケンスの出力は、次の入力データブロックの初期化ベクトルとなり、最後のデータブロックが処理された場合は最終結果となる512ビットハッシュです。
現在まで、SHA-512は、TLSおよびSSL、PGP、SSH、S/MIME、およびIPsecを含む多くのセキュリティプロトコルの主力製品であり続けています。ただし、アルゴリズム的には本質的に逐次的です。各ステージでは、前のステージの結果が準備されている必要があるため、並列計算が妨げられます。
スカラ暗号化のためのRISC-VおよびZk拡張
RISC-Vの命令セットアーキテクチャ(ISA)はモジュール式に設計されており、さまざまなアプリケーション固有の拡張機能を追加できます。「Zk」スカラ暗号化拡張機能(2022年2月)には、AES、SM3(4)、SHA256、およびSHA512アルゴリズムを対象とした命令のサブセットが含まれています。
さらに、RISC-V標準では、コアパフォーマンス、メモリフットプリント、または消費電力に関する特定の要件を対象として、ベースラインISAおよびあらゆる種類の承認されたオプションの拡張機能に加えてアプリケーション固有のカスタム命令を追加することが許可されています。この調査では、SHA512実行時の組み込みコアパフォーマンスの最適化について、Codasip Studioツールによって可能になるプロセッサ合成および再ターゲット可能なLLVMコンパイラの利点を示します。
Codasip Studio、CodAL、Zkとそれがどのように役立つか
特にSHA512ハッシュアルゴリズムの場合、RISC-V Zk拡張には、以下にリストする6つの命令のサブセットが含まれています。Codasip L31コアのISAにサブセット全体が実装され、組み込まれています。それに加えて、2つのカスタム命令「sha512_ch」と「sha512_maj」を追加してみます。これらは3つの入力オペランド間の特定のビット操作を担当し、SHA512の「ラウンド」で高頻度で使用されます。
![](https://codasip.com/wp-content/uploads/2024/01/RISC-V-ZK-Subset-with-custom-instructions.png)
Codasip L31コア、Zkサブセット、およびカスタム命令は、プロセッサ記述用の高級言語であるCodALで記述しています。他のHDLとは異なり、CodALの命令はコンパクトかつ独自の方法で記述でき、この命令セマンティクスはLLVMコンパイラ生成とCodasipプロセッサ合成ツールの両方で使用されます。カスタム命令のCodAL記述を完了した後、Codasip Studioを使用して、新しい命令を認識できる新しいコンパイラ、デバッガ、命令精度およびサイクル精度のシミュレータおよびプロファイラなどSDK、および論理合成可能なRTLが生成できます。以下は、CodAL要素の形式でのカスタム「sha512_ch」命令の実装例です。
![](https://codasip.com/wp-content/uploads/2024/01/Round-b-c-d-etc.png)
承認されたZk拡張機能の命令はより複雑なセマンティクスを持っているため、生成された組み込み関数によってソフトウェアから直接呼び出されます。
2つのカスタム命令とSHA512のZkサブセットのセット全体に必要なCodALコードはわずか150行です。このようなコンパクトな記述と自動生成されたSDKにより、設計所要時間が大幅に短縮され、最終製品の市場投入までの時間が大幅に短縮される可能性があります。
PPA効果:SHA512パフォーマンスの向上
RISC-V Zkサブセットとカスタム命令によってもたらされるSHA512パフォーマンスの向上は、RISC-V Crypto Githubリポジトリに含まれているSHA512ベンチマークで評価しました。ベンチマークは3つの異なるSDKを使用してコンパイルされています。
- 標準(RV32IMCB)ISAを備えた「リファレンス」SDK
- 前項+承認済みのSHA512 Zkサブセット
- 前項+カスタム命令
次に、生成したそれぞれの実行可能ファイルを、Studioが生成したサイクル精度のプロファイラを使用してプロファイリングし、プロセッサが各ソフトウェアルーチンに費やすクロックサイクルに関する詳細情報とPPAデータを取得しました。
![](https://codasip.com/wp-content/uploads/2024/01/SHA512-PPA-Effect.png)
上の図は、Zk命令サブセットが追加されたシリコン領域のわずか0.8%のペナリティと引き換えに、クロックサイクル数は最大1.89倍、コードサイズは最大9.7%削減でき、SHA512のパフォーマンスを大幅に向上させていることを示しています。Zkに加えたカスタム命令はさらなる高速化をもたらし、パフォーマンスを最大2倍強に押し上げ、コードサイズをさらに-10.2%削減しています。面積の増加は、ベースのL31面積の約1.6%であり、これは2倍のパフォーマンス向上に対する妥当なペナルティであると考えられます。
結論
特定のアプリケーションに関しては、汎用CPUが理想的なソリューションになることはありません。場合によっては、一見単純な命令でも状況を大きく変えることができるため、チップ設計者はこれらのメリットを活用して高品質の製品を完成させる必要があります。Codasip Studioによって促進されるカスタム・コンピュートは、RISC-V命令セットの柔軟性を活用するのに役立ち、コンパクトなCodALベースのプロセッサ記述によって設計時間を短縮し、自動生成されたソフトウェアキットの豊富なセットをエンドチップユーザーに提供します。
承認済みのRISC-V拡張機能は豊富にあり、既製のCPUには含まれていない可能性もありますが、設計者はそれらを統合し、Codasipの製品のおかげでさらに進化することができます。この研究では、8つのカスタム命令の実装を実証します。6つは承認されたZkサブセットから、2つは特定のアルゴリズムのニーズに基づいています。これにより、SHA512ハッシュ計算のパフォーマンスが2倍向上し、コードサイズが10%以上削減されます。特に、SHA512と暗号化だけがハードウェアとソフトウェアの共同設計の恩恵を受けるわけではありません。