
CDP(Cyclic Digit-sum Projection)構造解析に基づくGPUアクセラレーションSHA-256レインボーテーブル実装。AMD RX 9070 XT、OpenCL + Vulkan。
GPU アクセラレーションによる SHA-256 の CDP 構造解析フレームワークのレインボーテーブル実装。
CDP 論文 (DOI: 10.5281/zenodo.20627240) の発見に基づき、このリポジトリは CDP ベースのレインボーチェーンテーブルの完全な実装を提供します。OpenCL ビルドカーネルと、AMD RDNA4 ハードウェアをターゲットとした Vulkan 計算クエリ/検証パイプラインを含みます。
CDP (Cyclic Digit-sum Projection) は、SHA-256 の出力分布に関する、これまで文書化されていない数学的特性を明らかにする構造解析フレームワークです。
核心となる観察結果:SHA-256 出力の 16 進数の桁和 W(H) を、f(w) = W(SHA256(str(w))) によって反復的に再ハッシュすると、決定論的にちょうど 2 つの閉じたサイクル に収束します。
C1: 476 ↔ 438 (2-サイクル)
C2: 471 → 472 → 525 → 537 → 414 → 417 → 546 → 518 → 471 (8-サイクル)
この周期的構造と、マルチコンポーネントのフィンガープリント F(H) = (W, Wvec₁₆, cycle_entry, W₂–W₅, max_nibble, min_nibble) を組み合わせることで、制約された入力空間上で 全単射マッピング が得られます。これにより、還元関数の衝突がゼロのレインボーテーブルを用いた O(1) の原像検索が可能になります。
証明された主要な特性:
Σnibble(W₀) = 38π_B = 17.00%、K[i]、H₀、入力クラスに依存しないW(H₀) = 502 — NIST 初期化定数の検出可能な構造的シグネチャ(平衡値より +22.2 高い)CDP は SHA-256 を 破壊しません。原像耐性と衝突耐性は影響を受けません。論文のセクション 12 を参照してください。
SHA256-CDP/
├── cdp_chain_builder.py # メインエントリポイント — ビルド、クラック、クエリ CLI
├── cdp_query.comp # Vulkan GLSL 計算シェーダー(クエリカーネル)
├── cdp_verify.comp # Vulkan GLSL 計算シェーダー(検証カーネル)
├── vulkan_query.py # Vulkan Python エンジン(ACO バックエンド)
└── paper/
└── cdp_v3.pdf # CDP 論文 v3
pip install pyopenclpip install numpypip install vulkan + Vulkan SDK注記: 正しいクエリ性能を得るには Vulkan が必要です。これがないと、システムは CPU マルチプロセッシングにフォールバックします(大幅に低速)。OpenCL クエリカーネルには、gfx1201 上で
-cl-fast-relaxed-mathを使用すると誤った結果を生成する既知の AMD PAL-LLVM オプティマイザのバグがあります。Vulkan ACO バックエンドにはこの問題はありません。
Windows ユーザー向け: テーブル操作中に GPU メモリアクセスがブロックされるのを防ぐため、
python.exe、clinfo.exe、explorer.exeを Windows Defender の制御フォルダーアクセスの許可リストに追加してください。
git clone https://github.com/JM00NJ/SHA256-CDP
cd SHA256-CDP
pip install pyopencl numpy vulkan
GPU 検出の確認:
python cdp_chain_builder.py --validate
# 単一テーブル(小文字 8 文字、chain_len=300,000)
python cdp_chain_builder.py --build --charset lower --length 8 --chain-len 300000 --output cdp_8.bin
# 複数テーブル(より高いカバレッジ)
# n=1: 66.7% n=2: 88.9% n=3: 96.3% n=5: 99.3%
python cdp_chain_builder.py --build-multi 3 --prefix cdp_8_bin --length 8 --chain-len 300000
# 単一ハッシュ
python cdp_chain_builder.py --crack <sha256_hash> \
--tables cdp_8_bin_1.bin,cdp_8_bin_2.bin,cdp_8_bin_3.bin \
--length 8 --chain-len 300000
# ハッシュリスト(バッチモード — テーブルは一度だけ読み込まれます)
python cdp_chain_builder.py --crack-list hashes.txt \
--tables cdp_8_bin_1.bin,cdp_8_bin_2.bin,cdp_8_bin_3.bin \
--length 8 --chain-len 300000
python cdp_chain_builder.py --self-test --length 7
python cdp_chain_builder.py --validate
python cdp_chain_builder.py --validate-query <sha256_hash>
AMD Radeon RX 9070 XT (gfx1201, 32 CUs)、Windows 11、ドライバ 3679.0 (PAL,LC) でテスト:
| 操作 | スループット |
|---|---|
| テーブルビルド (ILP2 カーネル) | ~2.5 GH/s |
| クエリ — 最初のバッチ(浅い) | ~14 GH/s |
| クエリ — バッチ全体の平均 | ~5 GH/s |
| GPU 検証 (Vulkan ACO) | 88k 候補あたり ~2s |
7 文字小文字、3 テーブル (96.3% カバレッジ):
カーネルモード:
--mode ilp2 — スレッドあたり 2 チェーン、ILP のためにインターリーブされた SHA256(デフォルト、AMD RDNA で最速)--mode vec4 — uint4 算術を使用したスレッドあたり 4 チェーン--mode scalar — スレッドあたり 1 チェーン(ベースライン)Windows (gfx1201) の OpenCL で使用される AMD PAL-LLVM コンパイラバックエンドには、文書化されたオプティマイザのバグがあります。可変開始ループ (for step=pos; step<N) は -cl-fast-relaxed-math を使用すると誤った結果を生成します。回避策 (-O0) は正しさを回復しますが、スループットが約 3~4 倍低下します。Vulkan ACO バックエンドは完全に別のコンパイラパイプラインであり、この問題はありません。クエリと検証カーネルは Vulkan を使用し、ビルドカーネルは OpenCL を使用します(このバグの影響を受けません)。
標準の PCG シード付き還元関数は digest[0:2] からの 64 ビットのエントロピーを使用します。CDP インジェクティブ還元は、完全なフィンガープリント (W, Wvec₁₆, max_nibble, min_nibble) からシードを構築します。これらは CDP 全単射定理によって SHA256(X) 上で単射であることが証明されている同じコンポーネントです。これにより、還元関数自体からのチェーンマージがゼロであることが保証されます。残りのマージはバースデーパラドックスによるエンドポイント衝突です(テーブルあたり約 33%、期待される 66.7% のカバレッジに一致)。
テーブルはコンパクトなバイナリ形式を使用します(CDP1 マジック、エントリあたり 39 バイト)。JSON よりも約 3.4 倍小さくなります。既存の JSON テーブルを変換するには --convert を使用します:
python cdp_chain_builder.py --convert table.json --output table.bin
| 名前 | 文字 | 空間 (8 文字) |
|---|---|---|
lower | a–z (26) | 2.1 × 10¹¹ |
alnum |
© 2026 Erenay Özkan (JM00NJ / Vesqer)
このプロジェクトは、Commons Clause 付きの GNU Affero General Public License v3.0 (AGPL-v3) の下でライセンスされています。
Commons Clause に基づき、著者からの明示的な書面による許可なしに、本ソフトウェアを販売したり、商業製品やサービスの一部として使用することはできません。
オープンソースでの使用、研究、非営利目的のアプリケーションは AGPL-v3 の条件の下で許可されています — 変更は同じライセンスで公開する必要があります。
商用ライセンスに関するお問い合わせ: netacoding.com
完全な条件については LICENSE を参照してください。
Built by JM00NJ — netacoding.com
| a–z, 0–9 (36) |
| 2.8 × 10¹² |
full | a–z, A–Z, 0–9, 記号 (70) | 5.8 × 10¹⁴ |