Agent Skills by ALSEL
Anthropic Claudeセキュリティ⭐ リポ 0品質スコア 50/100

ctf-crypto

RSA、AES、ECC、格子暗号、LWE、CVP、数論、Coppersmith、Pollard、Wiener攻撃、パディングオラクル、GCM、鍵導出、ストリーム/ブロック暗号の脆弱性など、暗号に関するCTF問題への攻撃手法を提供します。暗号化・ハッシュ・署名・ZKP・PRNGといった暗号系問題に取り組む際に使用してください。

description の原文を見る

Provides cryptography attack techniques for CTF challenges. Use when attacking encryption, hashing, signatures, ZKP, PRNG, or mathematical crypto problems involving RSA, AES, ECC, lattices, LWE, CVP, number theory, Coppersmith, Pollard, Wiener, padding oracle, GCM, key derivation, or stream/block cipher weaknesses.

SKILL.md 本文

CTF 暗号化

暗号 CTF チャレンジのクイックリファレンスです。各技法はここに 1 行の説明があり、詳細なコードはサポート ファイルを参照してください。

前提条件

Python パッケージ (全プラットフォーム):

pip install pycryptodome z3-solver sympy gmpy2 hashpumpy fpylll py_ecc

Linux (apt):

apt install hashcat sagemath

macOS (Homebrew):

brew install hashcat

手動インストール:

  • SageMath — Linux: apt install sagemath, macOS: brew install --cask sage
  • RsaCtfTool — git clone https://github.com/RsaCtfTool/RsaCtfTool (自動化 RSA 攻撃)

注: gmpy2 には libgmp が必要です — Linux: apt install libgmp-dev, macOS: brew install gmp

その他のリソース

  • classic-ciphers.md - 古典暗号: Vigenere (+ Kasiski 検査)、Atbash、置換ホイール、XOR 変種 (+ マルチバイト度数分析)、決定論的 OTP、カスケード XOR、ブック暗号、OTP 鍵の再利用 / many-time pad、可変長ホモフォニック置換、グリッド置換暗号の鍵空間削減、画像ベースの Caesar シフト暗号、ファイル形式ヘッダ経由の XOR 鍵復元
  • modern-ciphers.md - 現代暗号攻撃: AES (CFB-8、ECB 漏洩)、CBC-MAC/OFB-MAC、パディングオラクル、S-box 衝突、GF(2) 消去、LCG 部分出力復元、合成法 mod 上の Affine 暗号、AES-GCM 導出鍵付き、AES-GCM ノンス再利用 (禁止攻撃)、Ascon 様の削減ラウンド差分暗号解析、カスタム線形 MAC 偽造、CBC パディングオラクル (ブロック全体復号化)、Bleichenbacher RSA PKCS#1 v1.5 パディングオラクル (ROBOT)、誕生日攻撃 / meet-in-the-middle、CRC32 衝突署名偽造、バイト単位ゼロ化オラクル経由の AES 鍵復元、エラーメッセージ復号化オラクル経由の AES-CBC 暗号文偽造
  • modern-ciphers-2.md - 現代暗号攻撃 (パート 2): Blum-Goldwasser ビット拡張オラクル、ハッシュ長拡張、圧縮オラクル (CRIME 様)、周期検出経由のハッシュ関数時間逆転、OFB モード反転可能 RNG 後方復号化、公開鍵ハッシュ XOR 経由の弱い鍵導出、HMAC-CRC 線形性攻撃、OFB モード の DES 弱鍵、SRP プロトコルバイパス、修正 AES S-Box ブルートフォース、削減ラウンド AES への Square 攻撃、AES-ECB バイト単位の選択平文、AES-ECB カットアンドペースト ブロック操作、AES-CBC IV ビットフリップ認証バイパス、Rabin LSB パリティオラクル、PBKDF2 プリハッシュ バイパス、MD5 マルチ衝突 (fastcol 経由)
  • modern-ciphers-3.md - 現代暗号攻撃 (パート 3): カスタム ハッシュ状態逆転、小ペイロード用 CRC32 ブルートフォース、ノイズ付き RSA LSB オラクル誤り訂正、スポンジハッシュ MITM 衝突、CBC IV 偽造 + ブロック切り詰め、パディングオラクル から CBC ビットフリップ RCE、SPN S-box 交差攻撃、タイムスタンプ シード PRNG からの AES-CFB IV 復元、3 ラウンド XOR プロトコル鍵キャンセル、AES-CBC UnicodeDecodeError サイドチャネル オラクル、SHA-256 基底攻撃で XOR 集約ハッシュ バイパス、XOR ブロック キャンセル経由のカスタム MAC 偽造、XOR+加算算術経由の HMAC 鍵復元
  • stream-ciphers.md - ストリーム暗号攻撃: LFSR (Berlekamp-Massey、相関攻撃、既知平文、Galois vs Fibonacci、自己相関経由の Galois タップ復元)、RC4 2 バイト目バイアス、XOR 連続バイト相関
  • rsa-attacks.md - RSA 攻撃: 小さい e (立方根)、共通法、Wiener の攻撃、Pollard の p-1、Hastad のブロードキャスト、線形パディング付き Hastad (Coppersmith)、Franklin-Reiter 関連メッセージ (e=3)、Coppersmith 線形関連素因数、Fermat/連続素数、マルチ素数、制限桁、Coppersmith 構造化素数、Manger オラクル、多項式ハッシュ
  • rsa-attacks-2.md - RSA 攻撃 (専門的): RSA p=q 検証バイパス、立方根 CRT gcd(e,phi)>1、phi(n) 倍数からの因数分解、乗法同型署名偽造、基数表現経由の弱い鍵生成、gcd(e,phi)>1 のある RSA 指数削減、バッチ GCD 共有素因数分解、dp/dq/qinv からの部分鍵復元、RSA-CRT 障害攻撃、同型復号化オラクル バイパス、小素数 CRT 分解、Montgomery 削減タイミング攻撃、Bleichenbacher 低指数署名偽造、e=1 と細工された法による RSA 署名バイパス
  • ecc-attacks.md - ECC 攻撃: 小さい部分群、無効曲線、Smart の攻撃 (異常、Sage コード付き)、障害注入、クロック群 DLP、Pohlig-Hellman、ECDSA ノンス再利用、Ed25519 トーション サイドチャネル、DSA ノンス再利用、k 生成での MD5 衝突経由の DSA 鍵復元
  • zkp-and-advanced.md - ZKP/グラフ 3-彩色、Z3 ソルバー ガイド、garbled circuits、Shamir SSS、bigram 制約解法、競合状態、壊れた Groth16 セットアップ、DV-SNARG 偽造、置換復元用の KZG ペアリング オラクル、Shamir SSS 再利用多項式係数
  • prng.md - PRNG 攻撃 (基本): MT19937、GF(2) マジック行列経由のトークン予測用 MT float 復元、LCG、GF(2) 行列 PRNG、Z3 経由の V8 XorShift128+ Math.random 状態復元、中央二乗法、決定論的 RNG ヒルクライミング、ランダムモード オラクル、時間ベースのシード、ctypes 経由の C srand/rand 同期、パスワード クラッキング、ロジスティック マップ カオス PRNG
  • prng-attacks.md - PRNG 攻撃 (CTF era, 2017+): MT サブセット合計シード復元、MT19937 制約伝播、Rule 86 セルオートマトン Z3 経由の逆転、Java LCG meet-in-the-middle 部分 modulo、モジュラー逆数経由の LCG 後方ステップ、LFSR ビット折り ASCII パリティ、Z3 ソルブ時間タイミング オラクル、randcrack DSA k 予測、フォーマット文字列 PRNG シード オフセット、NTP ポイズンド PRNG UUID XOR
  • historical.md - 歴史的暗号 (Lorenz SZ40/42、ブック暗号実装)
  • advanced-math.md - 高度な数学攻撃 (同型、Pohlig-Hellman、baby-step giant-step (BSGS) 一般 DLP 用、LLL、Merkle-Hellman ナップサック LLL 経由、Coppersmith、四元数 RSA、GF(2)[x] CRT、S-box 衝突コード、LWE 格子 CVP 攻撃、非素数法 mod 上の Affine 暗号、自己参照 CRC via GF(2) 線形代数)
  • lattice-and-lwe.md - 格子攻撃トリアージとワークフロー: LLL/BKZ/Babai、部分または偏ったノンスからの HNP、切り詰められた LCG 状態復元、LWE 埋め込みと CVP、Ring-LWE / Module-LWE 認識、直交格子、部分和 / ナップサック、および一般的な障害モード
  • exotic-crypto.md - 異国情緒のある代数構造 (組紐群 DH / Alexander 多項式、単調関数反転、熱帯半環残基化、Paillier 暗号システム、Hamming コード螺旋インターリーブ、ElGamal ユニバーサル再暗号化、FPE Feistel ブルートフォース、正二十面体対称群暗号、Goldwasser-Micali 複製オラクル)
  • exotic-crypto-2.md - 異国情緒のある代数構造 (パート 2, 2017+): BB-84 QKD MITM、ElGamal 自明 DLP (B=p-1)、同型倍加経由の Paillier LSB オラクル、差分プライバシー ノイズキャンセル、同型暗号ビット抽出、Jordan 正規形経由の行列上の ElGamal、Pollard 経由の OSS 署名偽造、プライベートキーなしの Cayley-Purser 復号化、BIP39 部分ニーモニック チェックサム ブルートフォース、Asmuth-Bloom CRT 閾値復元、多項式素数付き Rabin、LCG 周期検出、Vandermonde 多項式係数復元

ピボットするとき

  • 実際のボトルネックがバイナリの理解、難読化クライアント、または奇妙な VM の場合は、/ctf-reverse に切り替えてください。
  • チャレンジが主にパケット抽出、ディスク復元、または暗号化の前のステゴ抽出の場合は、/ctf-forensics に切り替えてください。
  • タスクが暗号部分が解決された後、脆弱なネットワーク サービスに対する悪用の実装である場合は、/ctf-pwn または /ctf-web に切り替えてください。
  • 暗号チャレンジが敵対的 ML、モデル抽出、またはニューラル ネットワーク ベースの暗号を含む場合は、/ctf-ai-ml に切り替えてください。
  • チャレンジが真の暗号解析ではなく、エンコード パズル、難解な暗号、またはポリグロット トリックである場合は、/ctf-misc に切り替えてください。

クイック スタート コマンド

# 暗号の種類を識別
python3 -c "from Crypto.Util.number import *; n=<N>; print(f'bits={n.bit_length()}')"

# RSA クイック チェック
python3 -c "from sympy import factorint; print(factorint(<n>))"  # 小さい因数?
openssl rsa -pubin -in key.pub -text -noout  # PEM から n、e を抽出

# クイック因数分解ツール
python3 RsaCtfTool.py -n <n> -e <e> --uncipher <c>

# XOR 分析
python3 -c "from pwn import xor; print(xor(bytes.fromhex('<hex>'), b'flag{'))"

# ハッシュ識別
hashid '<hash>'
hashcat --identify '<hash>'

# SageMath (格子/ECC 用)
sage -c "print(factor(<n>))"

古典暗号

  • Caesar: 度数分析または 26 の鍵のブルートフォース
  • Vigenere: フラグ形式プレフィックス付きの既知平文攻撃; キーを (ct - pt) mod 26 から導出。Kasiski 検査を使用して未知の鍵長を決定 (繰り返しシーケンス距離の GCD)
  • Atbash: A<->Z 置換; チャレンジ名の "Abashed" ヒントを探してください
  • 置換ホイール: 内側/外側アルファベット マッピングのすべての回転をブルートフォース
  • マルチバイト XOR: 暗号文を鍵位置で分割し、各列を個別に度数分析; 英語の文字度数でスコア (スペース = 0x20)
  • カスケード XOR: 最初のバイトをブルートフォース (256 回の試行)、残りは決定論的に続く
  • XOR 回転 (2 の累乗): 偶数/奇数ビットが混在しない; 候補状態は 4 つのみ
  • 弱い XOR 検証: 単一バイト XOR チェックのパス率は 1/256; 十分な予算でブルートフォース
  • 決定論的 OTP: 既知平文 XOR を実行してキーストリームを復元; ロードバランスされたバックエンドをマッチさせる
  • OTP 鍵再利用 (many-time pad): C1 XOR C2 XOR known_P = unknown_P; 平文が不明な場合は crib dragging を実行
  • ホモフォニック (可変長): マルチキャラクター暗号テキスト グループが単一平文文字にマップされます。同一の サブ n-gram 度数を持つ n-gram を見つけ、シンボルで置き換え、単調字句解読として解く。classic-ciphers.md を参照。
  • グリッド置換暗号: 独立した行/列置換を持つ 5x5 グリッドは 5! x 5! = 14,400 まで鍵空間を圧縮; ミリ秒単位でブルートフォース実行。classic-ciphers.md を参照。
  • 画像ベース Caesar シフト: ピクセル行/列がストリップごとのオフセットでシフト; 元の画像とシフト画像を比較して、シフト量から ASCII エンコードされたフラグを抽出します。classic-ciphers.md を参照。
  • Polybius スクエア暗号: 5x5 グリッドが文字ペアを平文にマップ; 桁/座標は位置をエンコード。classic-ciphers.md を参照。
  • ファイル形式ヘッダ経由の XOR 鍵復元: ファイルが PDF/PNG/ZIP であると主張していますが、file は "data" を報告します。予想されるマジック バイトに対して最初のバイトをXORして繰り返し鍵を導出; トレーラー構造 (%%EOF、IEND マーカー) を使用して拡張。classic-ciphers.md を参照。

詳細なコード例は classic-ciphers.md を参照してください。

現代暗号攻撃

  • AES-ECB: ブロック シャッフル、バイト単位の選択平文サフィックス復元 (バイトごとに 256 クエリ、ツール: FeatherDuster ecb_cpa_decrypt); イメージ ECB は視覚パターンを保持します。ECB カット アンド ペースト: 暗号文ブロックを接合して JSON フィールドを偽造 (例: is_admin: true)。modern-ciphers-2.md を参照。
  • AES-CBC: キーなしで平文を変更するビット フリップ; パディングオラクル。IV ビット フリップ: IV の特定ビットを反転して最初の平文ブロックを変更 (MAC は不要)。modern-ciphers-2.md を参照。
  • CBC IV 偽造 + ブロック切り詰め: XOR IV バイトで復号化ブロック 0 を変更; 末尾の暗号文ブロックを削除 (CBC では長さの整合性なし)。MAC が暗号文に埋め込まれている場合、認証トークンを偽造。modern-ciphers-2.md を参照。
  • パディングオラクル から CBC ビットフリップ RCE: パディングオラクル (平文復元) を CBC ビットフリッピング (シェルメタキャラクタ注入) とチェーンして、暗号化されたパラメータ経由のコマンド インジェクション用。modern-ciphers-2.md を参照。
  • AES-CFB-8: 静的 IV と 8 ビット フィードバックで 16 バイトの既知後に状態を再構成できます
  • CBC-MAC/OFB-MAC: 署名偽造のための XOR キーストリーム: new_sig = old_sig XOR block_diff
  • S-box 衝突: 非置換 S-box (len(set(sbox)) < 256) では 4,097 クエリの鍵復元が可能
  • GF(2) 消去: 線形ハッシュ関数 (XOR + 回転) は GF(2) 上の Gaussian 消去で解く
  • パディングオラクル: 前のブロックを変更してパディング有効性をテストし、バイト単位で復号化
  • LFSR ストリーム暗号: Berlekamp-Massey は 2L キーストリーム ビットからフィードバック多項式を復元; 相関攻撃は偏ったマージング関数で結合ジェネレータを破ります
  • Galois LFSR タップ復元: 既知のファイル ヘッダ (PNG/PDF/ZIP) を暗号文で XOR してキーストリームを取得; N ビット ウィンドウに分割し、LSB=1 遷移時に (state >> 1) XOR next_state を計算してタップ マスクを直接復元。自己相関スライディングで正しい長さを検出。stream-ciphers.md を参照。
  • 反転可能 RNG を使用した OFB: 任意のブロック内の既知平文が RNG 状態をリーク; 状態遷移が全単射の場合、RNG を逆方向に実行してすべてのブロックを復号化します。modern-ciphers-2.md を参照。
  • 弱い鍵導出 (公開鍵ハッシュ XOR): SHA256(public_key) XOR seed から導出される AES 鍵はプライベート キーなしで完全に復元可能; "ハイブリッド" RSA+AES はセキュリティを提供しません。modern-ciphers-2.md を参照。
  • HMAC-CRC 線形性: CRC は GF(2) 上で線形なため、HMAC-CRC キーは単一のメッセージ-MAC ペアから多項式算術経由で復元可能。modern-ciphers-2.md を参照。
  • OFB モードの DES 弱鍵: 4 つの DES 弱鍵により暗号化が自己逆になります; OFB キーストリームは周期 2 で循環し、16 バイトの繰り返し XOR に削減されます。modern-ciphers-2.md を参照。
  • Square 攻撃 (削減ラウンド AES): 4 ラウンド AES は積分暗号解析で破られます: 256 平文ラムダ セット、最後のラウンド キー バイトを XOR 合計 = 0 区別器経由で推測。modern-ciphers-2.md を参照。
  • AES-GCM ノンス再利用 (禁止攻撃): 同じノンス = CTR キーストリーム再利用 + GF(2^128) 上での多項式因数分解経由の GHASH 認証鍵復元。ツール: nonce-disrespectmodern-ciphers.md を参照。
  • SRP プロトコル バイパス: A = 0 または A = n を送信して、共有シークレットを 0 に強制し、パスワード検証を完全にバイパスします。modern-ciphers-2.md を参照。
  • 修正 AES S-Box ブルートフォース: わずか 16 個の一意の出力を持つカスタム S-Box は鍵エントロピーを削減; ラウンドごとに実行可能なキー バイトをブルートフォース実行します。modern-ciphers-2.md を参照。
  • Rabin LSB パリティ オラクル: Rabin 暗号文 c = m^2 mod n と LSB オラクルで、乗法同型 (c * 4 mod n は平文を倍にする) 経由の log2(n) クエリで二分探索平文復元が可能。modern-ciphers-2.md を参照。
  • ノイズ付き RSA LSB オラクル誤り訂正: LSB オラクルに散発的エラーがある場合、標準攻撃を実行してから出力文字セットを検査。エラー位置でオラクル結果を反転して残りの復号化を修正。modern-ciphers-2.md を参照。
  • PBKDF2 プリハッシュ バイパス: HMAC は > 64 バイト (SHA-1/SHA-256 ブロック サイズ) のキーをプリハッシュします。元が 64 バイトを超える場合、SHA1(password) の代わりに password でログイン。modern-ciphers-2.md を参照。
  • MD5 マルチ衝突 (fastcol): fastcol の実行をチェーンして、同じ MD5 を持つ 2^k ファイルを生成します。Merkle-Damgard コンポジション: 衝突は追加されたサフィックスを通じて伝播します。modern-ciphers-2.md を参照。
  • カスタム ハッシュ状態逆転: 反復ハッシュが中間状態をリークする場合、状態更新方程式を反転することで、ブロック単位のハッシュ値を分離し、各 4 バイト ブロックを個別にブルートフォース実行。modern-ciphers-2.md を参照。
  • CRC32 ブルートフォース (小ペイロード): ZIP CRC32 ヘッダーは暗号化されていません; 小ファイル (≤ 6 バイト) の内容をブルートフォース実行して、すべての印字可能文字列を格納 CRC32 に対してチェック。modern-ciphers-2.md を参照。
  • XOR ブロック キャンセル経由のカスタム MAC 偽造: MAC キーストリームが周期的に繰り返される場合、フィラー ブロックが XOR 経由でキャンセルされる 3 つのクエリを作成して、ターゲット コマンドの MAC を偽造。modern-ciphers-2.md を参照。
  • XOR + 加算算術経由の HMAC 鍵復元: sha256((key XOR msg) + msg) を使用した欠陥のある HMAC は鍵ビットをリーク: msg=0sha256(key) を与え、msg=2^i は鍵ビット i が設定されている場合にマッチします。modern-ciphers-2.md を参照。
  • エラーメッセージ復号化オラクル経由の AES-CBC 暗号文偽造: サーバーはエラー メッセージで復号化されたバイトをリーク; ゼロ ブロックを送信して中間状態を学習し、目的の平文で XOR してブロック単位で暗号文を偽造。modern-ciphers.md を参照。

詳細なコード例は modern-ciphers.md および modern-ciphers-2.md を参照してください。

RSA 攻撃

  • 小さい e と小さいメッセージ: e 乗根を取る
  • 共通法: Extended GCD 攻撃
  • Wiener の攻撃: 小さい d
  • Fermat 因数分解: p と q が接近
  • Pollard の p-1: スムーズな p-1
  • Hastad のブロードキャスト: 同じメッセージ、複数の e=3 暗号化
  • 連続素数: q = next_prime(p); sqrt(N) より下の最初の素数を見つける
  • マルチ素数: sympy でN を因数分解; すべての因数から phi を計算
  • 制限桁素数: LSB からの桁単位因数分解とモジュラー剪定
  • Coppersmith 構造化素数: 部分的に既知の素数; SageMath で f.small_roots()
  • Manger オラクル (簡略版): フェーズ 1 倍加 + フェーズ 2 二分探索; 64 ビット キーで ~128 クエリ
  • Manger on RSA-OAEP (タイミング): Python or 短回路は Y != 0 で高コスト PBKDF2 をスキップし、高速/低速タイミング オラクルを作成します。完全な 3 ステップ攻撃 (~1024 イテレーション (1024 ビット RSA))。既知の高速/既知の低速サンプルでタイミング境界を調整。
  • 多項式ハッシュ (自明な根): g(0) = 0 を多項式ハッシュの場合; msg = 0 (mod P) のサフィックスを作成し、署名 = 0
  • GF(2)[x] での多項式 CRT: 約 20 個の残渣 r = flag mod f を収集、互いに素フィルタ、CRT 結合
  • 合成法 mod 上の Affine: 各素因数体で CRT; 素数ごとに Gauss-Jordan
  • RSA p=q 検証バイパス: p=q を設定して、サーバーが phi=(p-1)^2 ではなく p*(p-1) を誤って計算; テスト復号化が失敗し、暗号文をリーク
  • RSA 立方根 CRT (gcd(e,phi)>1): すべての素数が ≡ 1 mod e の場合、e 乗根を素数ごとに nthroot_mod で計算し、CRT 組み合わせを列挙 (小さい k では 3^k が実行可能)
  • phi(n) 倍数からの因数分解: phi(n) の任意の倍数 (例: e*d-1) により Miller-Rabin 平方根技法経由の因数分解が可能; 試行ごとに確率 ≥ 1/2 で成功
  • 基数表現経由の弱い鍵生成: p = kp*B + tp 小さい kp でプライム が混合基数構造を n に作成; kp*kq (2^24) をブルートフォース実行して因数分解
  • gcd(e,phi)>1 のある RSA (指数削減): e' = e/g に削減、d' = e'^(-1) mod phi を計算、部分復号化 to m^g、次に g 乗根を整数上で取得
  • RSA 部分鍵復元 (dp/dq/qinv): PEM からのリークした CRT 指数は O(e) 素数復元を可能にします: k を反復し、(dp*e-1)/k+1 が素数かどうかをチェック。rsa-attacks-2.md を参照。
  • RSA-CRT 障害攻撃: 単一の欠陥 CRT 署名は gcd(s^e - m, n) 経由の因数をリーク (Bellcore 攻撃)。rsa-attacks-2.md を参照。
  • RSA 同型復号化オラクル バイパス: 乗法同型により、c * r^e mod n でオラクルをクエリしてから結果を r で除算することで c を復号化できます。rsa-attacks-2.md を参照。
  • RSA 小素数 CRT 分解: n が多くの小素数因数を持つ場合、試行除算で因数分解し、素数ごとに m mod p_i を解き、CRT 結合。rsa-attacks-2.md を参照。
  • 線形パディング付き Hastad ブロードキャスト (Coppersmith): e 受取人がそれぞれ既知の Affine 変換 a_i*m+b_i を適用してから暗号化する場合、CRT + Coppersmith small_roots で m を復元。rsa-attacks.md を参照。
  • RSA Montgomery 削減タイミング攻撃: Montgomery 乗算でリークされた追加減算カウントは、統計相関経由の MSB-to-LSB で秘密キー ビットを明かします。rsa-attacks-2.md を参照。
  • Bleichenbacher 低指数署名偽造: e=3 では、正しいパディング プレフィックスを持つ値の立方根を計算して PKCS#1 v1.5 署名を偽造; 末尾のゴミが残りを吸収します。rsa-attacks-2.md を参照。
  • Franklin-Reiter 関連メッセージ攻撃 (e=3): m+pad1m+pad2 の 2 つの暗号文と既知のパディング差; Zmod(n) での多項式 GCD で m を直接復元。rsa-attacks.md を参照。
  • RSA 署名バイパス (e=1、細工された法): 検証者が ユーザー提供 (n, e) を受け入れます; e=1 を設定し、n = sig - PKCS1_pad(msg) にして、pow(sig, 1, n) が期待されるパディング ハッシュと等しくなるようにします。rsa-attacks-2.md を参照。
  • 線形関連素数への Coppersmith: q ~ k*p (既知の k)、近似 q ~ sqrt(k*n)、Coppersmith small_roots をエラー項に使用。連続素数への Fermat 因数分解を一般化。rsa-attacks.md を参照。

詳細なコード例は rsa-attacks.md および advanced-math.md を参照してください。

楕円曲線攻撃

  • 小さい部分群: 曲線位数を小さい因数の有無で確認; Pohlig-Hellman + CRT
  • 無効曲線: 検証が不足している場合、より弱い曲線上のポイントを送信
  • 特異曲線: 判別式 = 0; DLP を加算/乗法群にマップ
  • Smart の攻撃: 異常曲線 (位数 = p); p-adic リフトは O(1) で DLP を解きます
  • Baby-step giant-step (BSGS): 一般 DLP を O(sqrt(n)) 時間/空間で実行。スムーズ位数グループ (位数のすべての因数または p-1 またはの曲線位数が小さい) で Pohlig-Hellman と組み合わせます。Sage: discrete_log(Mod(h,p), Mod(g,p))advanced-math.md を参照。
  • 障害注入: 正しい出力と欠陥出力を比較; ビット単位で鍵を復元
  • クロック群 (x^2+y^2=1): 位数 = p+1 (p-1 ではない!); p+1 がスムーズな場合 Pohlig-Hellman
  • 同型: グラフ走査 (モジュラー多項式経由); パス検索 (LCA 経由)
  • ECDSA ノンス再利用: 2 つの署名で同じ r はノンス k と秘密キー d をモジュラー算術経由でリーク。r 値の繰り返しをチェック
  • 組紐群 DH: Alexander 多項式は組紐連結の下で乗法 — Eve は公開キーから共有シークレットを計算します。exotic-crypto.md を参照。
  • Ed25519 トーション サイドチャネル: コファクター h=8 は、鍵導出が key = master * uid mod l を使用する場合、秘密スカラー ビットをリーク; 2 の累乗をクエリし、y 座標の一貫性をチェック
  • 熱帯半環残基化: 熱帯 (最小プラス) DH は破られます — 残基 b* = max(Mb[i] - M[i][j]) は公開行列から共有シークレットを直接復元
  • FPE Feistel ブルートフォース: 16 ビット ラウンド キーでの Format-preserving encryption はブルートフォース可能; 残りの affine GF(2) 混合レイヤーは Gaussian 消去で解きます。exotic-crypto.md を参照。
  • 正二十面体対称群暗号: 正十二面体面置換はオーダー 120 グループを形成; すべての置換のルックアップ テーブルをAPI プロービング経由で構築し、目に見える面パターンをマッチさせます。exotic-crypto.md を参照。
  • Goldwasser-Micali 複製オラクル: GM は暗号文ごとに 1 ビットを暗号化; 単一の暗号文値を N ビット キーとして N 回リプレイすると、全ゼロまたは全 1 キーを強制し、ハッシュ オラクル経由で区別可能。128 クエリで完全な AES キーを復元。exotic-crypto.md を参照。
  • DSA ノンス再利用: 2 つの DSA 署名で同じ r は、ECDSA ノンス再利用と同じ式経由で秘密キーをリーク。ecc-attacks.md を参照。
  • DSA 限定 k ブルートフォース: ノンス k が小さい場合 (例: 20 ビット)、すべての k 値をブルートフォース実行して、既知の r をもたらすものを確認。ecc-attacks.md を参照。
  • ECC 共有素数 GCD: 法のシェアードプライム因数を含む複数の ECC曲線; gcd(n1, n2) でシェアードプライムを明かします。ecc-attacks.md を参照。
  • DSA k 生成での MD5 衝突経由の鍵復元: ノンス kMD5(prefix+counter) から導出される場合、fastcoll を使用して MD5 プレフィックス衝突を生成、ノンス再利用を強制し、標準秘密キー復元。ecc-attacks.md を参照。
  • BB-84 QKD MITM: 認証された古典チャネルなし の シミュレートされた BB-84 では完全な MITM が可能 - 両当事者と独立して鍵をネゴシエートし、定数値を一方の側に強制。exotic-crypto-2.md を参照。

詳細なコード例は ecc-attacks.mdadvanced-math.md、および exotic-crypto.md を参照してください。

格子 / LWE 攻撃

  • クイック トリアージ: チャレンジが モジュラー線形方程式と隠れた量が小さい、スパース、偏った、または部分的にリークされたことの約束を与える場合、最初に格子候補として扱います。lattice-and-lwe.md を参照。
  • LLL / BKZ / Babai: LLL で開始し、LLL がほぼ機能する場合は BKZ に移動し、削減後は Babai を近似 CVP に使用。lattice-and-lwe.md を参照。
  • 部分ノンス漏洩からの HNP: 部分または偏った ECDSA/Schnorr ノンスは多くの場合、隠された数値問題格子に削減; 方程式を正規化、有界エラーを分離、削減し、必要に応じて最後のいくつかのビットをブルートフォース実行。lattice-and-lwe.md を参照。
  • 切り詰められた LCG 状態復元: 高ビットまたは低ビット漏洩 (Affine 再発) は多くの場合、偽装された HNP; 各状態を observed * 2^t + hidden として記述し、小さい隠れた修正を解く。lattice-and-lwe.md を参照。
  • LWE via CVP (Babai): [q*I | 0; A^T | I] から格子を構築、fpylll CVP.babai を使用して最も近いベクトルを見つけ、3 進数 {-1,0,1} に投影。サーバー説明と実際のエンコード間のエンディアン不一致に注意。
  • Ring-LWE / Module-LWE 認識: 多項式または否定環構造は多くの場合、怖く見えますが、多くの CTF ではわずかな係数、バグのある表現、または平易な LWE に戻すのに十分な漏洩でそれを弱体化させます。lattice-and-lwe.md を参照。
  • 直交格子: 隠れた部分集合または隠れた部分空間の問題は、最初に直交格子を復元し、補集合から実際のバイナリまたは短い基底を再構築することが必要な場合があります。lattice-and-lwe.md を参照。
  • 近似 GCD の LLL: 短ベクトルは隠れた因数を明かします
  • 部分和 / ナップサック: バイナリ ナップサックと低密度部分合計インスタンスはまだ古典的な格子領域です; 標準基底を構築し、最終座標がゼロで削減された行を探します。lattice-and-lwe.md を参照。
  • マルチレイヤー チャレンジ: ジオメトリ → 部分空間復元 → LWE → AES-GCM 復号化チェーン

詳細な LWE ソルビング コードは advanced-math.md を、攻撃選択、埋め込み、および障害モード トリアージは lattice-and-lwe.md を参照してください。

ZKP と制約解法

  • ZKP 不正: 不可能な問題 (K4 の 3-彩色) では、ハッシュ衝突を見つけるか PRNG ソルトを予測します
  • グラフ 3-彩色: nx.coloring.greedy_color(G, strategy='saturation_largest_first')
  • Z3 ソルバー: BitVec (ビット レベル)、Int (任意精度); BPF/SECCOMP フィルター解法
  • Garbled circuits (フリー XOR): 3 つの真理値テーブル エントリをXOR して グローバル デルタを復元
  • Bigram 置換: 既知の平文構造で自動化制約の OR-Tools CP-SAT
  • 3 グラム分解: 位置 mod n は独立した単字暗号を形成
  • Shamir SSS (決定論的係数): 1 シェア + シード PRNG = 秘密の 1 変数方程式
  • 競合状態 (TOCTOU): 同期されたコンカレント リクエストは counter < N チェックをバイパス
  • Groth16 壊れたセットアップ (delta==gamma): 自明に偽造: A=alpha、B=beta、C=-vk_x。常に最初に検証者定数をチェック
  • Groth16 証明リプレイ: 制約のないヌリファイア + 追跡なし = セットアップ tx からの無限リプレイ
  • DV-SNARG 偽造: 検証オラクル アクセスで、制約のないペアから秘密 v 値を学習し、CRS エントリ キャンセル経由で偽造
  • Shamir SSS 再利用多項式係数: 秘密バイトごとに同じランダム係数を使用する場合、シェアを減算すればすべてのランダム性がキャンセルされ、平文差のみが残ります。zkp-and-advanced.md を参照。

詳細なコード例とソルバー パターンは zkp-and-advanced.md を参照してください。

現代暗号攻撃 (追加)

  • 合成法 mod 上の Affine: c = A*x+b (mod M)、M 合成 (例: 65=5*13)。既知平文復元 (1 つのホット ベクトル経由)、素因数ごとの CRT 反転。modern-ciphers.md を参照。
  • カスタム線形 MAC 偽造: 秘密ブロックで線形な XOR ベース署名。既知ペア ~5 から秘密を復元、ターゲット偽造。modern-ciphers.md を参照。
  • Manger オラクル (RSA 閾値): RSA 乗法 + m*s < 2^128 での二分探索。~128 クエリで AES キーを復元。
  • バイト単位ゼロ化オラクル経由の AES 鍵復元: キー スロット インデックスでの整数オーバーフロー により、選択的バイト ゼロ化が可能; バイト単位でブルートフォース (バイトごとに 256、合計 4096)。modern-ciphers.md を参照。

GF(2) 線形代数経由の自己参照 CRC

自己参照 CRC: ASCII 文字列を検索して CRC が自分に等しい。CRC は GF(2) 上で線形なので、制約は解法可能な線形システムになります。自由変数を印字可能 ASCII 範囲用に選択。advanced-math.md を参照。

CBC パディングオラクル攻撃

サーバーはパディングの有効性/無効性を明かす → キーなしで CBC 暗号文を復号化。ブロックごとに ~4096 クエリ。PadBuster または padding-oracle Python ライブラリを使用。modern-ciphers.md を参照。

Bleichenbacher RSA パディングオラクル (ROBOT)

RSA PKCS#1 v1.5 パディング検証オラクル → 適応的選択暗号文 平文復元。RSA-2048 で ~10K クエリ。タイミング経由の TLS 実装に影響。modern-ciphers.md を参照。

誕生日攻撃 / Meet-in-the-Middle

n ビット ハッシュ衝突は ~2^(n/2) 試行で。Meet-in-the-middle は二重暗号化を O(2^(2k)) ではなく O(2^k) で破ります。modern-ciphers.md を参照

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
ljagiello
リポジトリ
ljagiello/ctf-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/ljagiello/ctf-skills / ライセンス: MIT

関連スキル

Anthropic Claudeセキュリティ⭐ リポ 8,981

secure-code-guardian

認証・認可の実装、ユーザー入力の保護、OWASP Top 10の脆弱性対策が必要な場合に使用します。bcrypt/argon2によるパスワードハッシング、パラメータ化ステートメントによるSQLインジェクション対策、CORS/CSPヘッダーの設定、Zodによる入力検証、JWTトークンの構築などのカスタムセキュリティ実装に対応します。認証、認可、入力検証、暗号化、OWASP Top 10対策、セッション管理、セキュリティ強化全般で活用できます。ただし、構築済みのOAuth/SSO統合や単独のセキュリティ監査が必要な場合は、より特化したスキルの検討をお勧めします。

by Jeffallan
汎用セキュリティ⭐ リポ 1,982

claude-authenticity

APIエンドポイントが本物のClaudeによって支えられているか(ラッパーやプロキシ、偽装ではないか)を、claude-verifyプロジェクトを模した9つの重み付きルールベースチェックで検証できます。また、Claudeの正体を上書きしているプロバイダーから注入されたシステムプロンプトも抽出します。完全に自己完結しており、httpx以外の追加パッケージは不要です。Claude APIキーまたはエンドポイントを検証したい場合、サードパーティのClaudeサービスが本物か確認したい場合、APIプロバイダーのClaude正当性を監査したい場合、複数モデルを並行してテストしたい場合、またはプロバイダーが注入したシステムプロンプトを特定したい場合に使用できます。

by LeoYeAI
Anthropic Claudeセキュリティ⭐ リポ 2,159

anth-security-basics

Anthropic Claude APIのセキュリティベストプラクティスを適用し、キー管理、入力値の検証、プロンプトインジェクション対策を実施します。APIキーの保護、Claudeに送信する前のユーザー入力検証、コンテンツセーフティガードレールの実装が必要な場合に活用できます。「anthropic security」「claude api key security」「secure anthropic」「prompt injection defense」といったフレーズでトリガーされます。

by jeremylongshore
汎用セキュリティ⭐ リポ 699

x-ray

x-ray.mdプレ監査レポートを生成します。概要、強化された脅威モデル(プロトコルタイプのプロファイリング、Gitの重み付け攻撃面分析、時間軸リスク分析、コンポーザビリティ依存関係マッピング)、不変条件、統合、ドキュメント品質、テスト分析、開発者・Gitの履歴をカバーしています。「x-ray」「audit readiness」「readiness report」「pre-audit report」「prep this protocol」「protocol prep」「summarize this protocol」のキーワードで実行されます。

by pashov
汎用セキュリティ⭐ リポ 677

semgrep

Semgrepスタティック分析スキャンを実行し、カスタム検出ルールを作成します。Semgrepでのコードスキャン、セキュリティ脆弱性の検出、カスタムYAMLルールの作成、または特定のバグパターンの検出が必要な場合に使用します。重要:ユーザーが「バグをスキャンしたい」「コード品質を確認したい」「脆弱性を見つけたい」「スタティック分析」「セキュリティlint」「コード監査」または「コーディング標準を適用したい」と尋ねた場合も、Semgrepという名称を明記していなくても、このスキルを使用してください。Semgrepは30以上の言語に対応したパターンベースのコードスキャンに最適なツールです。

by wimpysworld
汎用セキュリティ⭐ リポ 591

ghost-bits-cast-attack

Java「ゴーストビッツ」/キャストアタック プレイブック(Black Hat Asia 2026)。16ビット文字が8ビットバイトに暗黙的に縮小されるJavaサービスへの攻撃時に使用します。WAF/IDSを回避して、SQLインジェクション、デシリアライゼーション型RCE、ファイルアップロード(Webシェル)、パストトラバーサル、CRLF インジェクション、リクエストスマグリング、SMTPインジェクションを実行できます。Tomcat、Spring、Jetty、Undertow、Vert.x、Jackson、Fastjson、Apache Commons BCEL、Apache HttpClient、Angus Mail、JDK HttpServer、Lettuce、Jodd、XMLWriterに影響し、WAFバイパスにより多くの「パッチ済み」CVEを再度有効化します。

by yaklang
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: ljagiello · ljagiello/ctf-skills · ライセンス: MIT