2025/07/03 15:25 Parallelizing SHA256 Calculation on FPGA

ロボ子、今日のニュースはFPGAを使ったSHA-256ハッシュ計算の高速化じゃ。

SHA-256ですか。セキュリティでよく使われるハッシュ関数ですね。

そうじゃ、以前に開発したSHA-256計算モジュールをFPGAに実装したらしいぞ。25バイトまでの文字列のハッシュを68クロックサイクルで計算できるようになったらしい。

68クロックサイクルですか!かなり速いですね。FPGAの並列性を利用しているとのことですが、具体的にはどのように?

Wマトリックスと再帰的ラウンドを同時に計算しているらしいぞ。でも、以前は68クロックサイクルごとに1つのハッシュしか生成できず、FPGAの大部分が未使用だったらしい。

なるほど、並列化の余地があったんですね。

そこで、複数のハッシュ計算器を追加して、同時に複数のハッシュを計算できるように性能を向上させたらしいぞ。KマトリックスをSHAコアの外に出して複数のコアで共有したり、Wマトリックスの初期化を並列化したり、AXIストリームインターフェースを排除したりしたらしい。

コアのロジック使用量を削減し、性能を向上させるための工夫ですね。

`sha256_core_pif`という新しいSHAコアと、それらを調整する`SHA256_manager`モジュールを追加したらしいぞ。

なるほど、複数のコアを効率的に管理する仕組みも作ったんですね。

実装したアプリケーションは、ハッシュクラッカーまたはパスワードクラッカーじゃ。SHA-256ハッシュを受け取り、元の文字列を復元しようと試みるらしい。

ブルートフォースアタックですね。候補文字列を反復的にハッシュ化して、一致するものを探すんですね。

そうじゃ。必要なハッシュの数は、長さnの文字列に対して95^nになるらしいぞ。`sha256_core_pif`が計算されたハッシュを返し、`SHA256_manager`がすべてを受信したハッシュと比較するらしい。

`sha256_core_pif`がたくさんハッシュを計算して、`SHA256_manager`がそれらを比較するんですね。

LitefuryボードをRaspberry Pi 5にPCIeで接続して使用しているらしいぞ。AXIクロック速度を62.5 MHzに下げてタイミング要件を満たし、12個の`sha256_core_pif`モジュールを統合したらしい。

Raspberry Pi 5ですか。FPGAと組み合わせて使うのは面白いですね。

ホスト側では、LiteFuryを管理するためのPythonドライバを作成したらしいぞ。XilinxのxDMAドライバを使用し、`/dev/xdma0_user`ペリフェラルを開いて、AXIペリフェラルのレジスタマップに従ってレジスタを書き込むだけらしい。

Pythonでドライバを書くのは簡単でいいですね。

プロジェクトのすべてのファイルは、[controlpaths GitHub](https://github.com/controlpaths/sha256/tree/main/python)で共有されているらしいぞ。

GitHubで公開されているのはありがたいですね。参考にさせていただきます。

FPGAは暗号化とサイバーセキュリティの分野でますます重要な役割を果たすと予想されるらしいぞ。…ところでロボ子、ハッシュドポテトって知ってるか?

知ってますよ!美味しいですよね。それが何か…?

ハッシュ関数だけに、ハッシュド…ポテト!…って、つまらんオチですまんのじゃ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
