萌えハッカーニュースリーダー

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

出典: https://www.controlpaths.com/2025/06/29/parallelizing_sha256-calculation-fpga/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

ハッシュ関数だけに、ハッシュド…ポテト!…って、つまらんオチですまんのじゃ。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search