Skip to content

ipusiron/cipher-clairvoyance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cipher Clairvoyance - 暗号化方式推定ツール

GitHub Repo stars GitHub forks GitHub last commit GitHub license GitHub Pages

Day044 - 生成AIで作るセキュリティツール100

Classical Cipher Identification & Visualization
暗号文から用いられた古典暗号を推定・特定する教育用Webツールです。

ES6モジュール化されたモダンなアーキテクチャと豊富な可視化機能により、初心者から専門家まで幅広く古典暗号の学習・解析を支援します。

なお、"clairvoyance"は「クレアボヤンス」と読み、「千里眼」「透視能力」を意味します。


🎯 ターゲット層

🎓 教育関係者・学習者

  • 暗号学の授業: 大学・専門学校での古典暗号教材として
  • 情報セキュリティ学習者: 暗号の基礎概念を視覚的に理解
  • 独学者: プログラミングなしで暗号解析の仕組みを体験

🏆 CTF・セキュリティ競技参加者

  • Crypto問題の事前調査: 暗号方式の特定と解法戦略の立案
  • チーム学習: 古典暗号の特徴と検出手法の共有・習得
  • 練習環境: 実戦前の暗号識別スキル向上

🔬 研究者・専門家

  • 暗号解析研究: 統計的手法と検出アルゴリズムの検証
  • 教材開発: 暗号教育用のデモツールとして活用
  • アルゴリズム評価: 新しい検出手法の比較基準として

🧩 パズル・謎解き愛好者

  • 歴史的暗号: 古典暗号に興味を持つホビイスト
  • エスケープゲーム: 暗号要素を含むゲームの解法支援
  • 謎解きイベント: 暗号問題の種類特定と解法のヒント

🌐 デモページ

👉 https://ipusiron.github.io/cipher-clairvoyance/

ブラウザーで直接お試しいただけます。


📸 スクリーンショット

サンプルのヴィジュネル暗号文を解析

サンプルのヴィジュネル暗号文を解析


🔐 サポートしている暗号方式

📋 検出・解析可能な暗号

暗号方式 説明 検出精度
シーザー暗号 各文字を固定数シフトするもっとも基本的な暗号 高精度
アフィン暗号 文字を数式(ax+b)で変換するシーザー暗号の拡張 高精度
ヴィジュネル暗号 キーワードを使った多表式暗号(自己相関+カシスキー法) 非常に高精度
プレイフェア暗号 2文字ずつ5×5の表で換字する暗号 高精度
転置式暗号 文字の位置を入れ替える暗号(レールフェンス、縦列転置) 中程度
回転グリル暗号 正方形の格子を回転させながら配置する暗号 中程度
ADFGX(VX)暗号 文字をADFGX(V)のみで表現するドイツ軍暗号 完全(文字セット判定)

🎯 高精度検出機能

  • 統計的分析: IC(一致指数)、χ²統計量、バイグラム・トライグラム分析
  • 周期性検出: 高度な自己相関分析(最大40シフト)、改良カシスキー法(3-7gram検出)
  • パターン認識: 文字集合判定、偶数長判定、J文字欠落検出、X埋め込み検出
  • 確率的判定: 長さバイアス補正付きSoftmax正規化による信頼度表示
  • 根拠生成: 判定理由を詳細に説明するエビデンスシステム

📊 技術詳細: スコアリングアルゴリズムと統計手法の詳細は ALGORITHM.md をご覧ください


✨ 主な機能

🎯 モダンで直感的なUI

  • 3段階表示: 基本結果 → 詳細分析 → 専門家向け分析
  • 信頼度バー: 判定結果の確信度を動的に視覚化
  • 段階的詳細: プログレッシブディスクロージャーによる情報展開
  • 豊富なサンプル: アメリカ独立宣言を使った8種類の実践的サンプル(鍵情報マスク機能付き)
  • リアルタイム検証: 入力時の自動検証とエラーメッセージ表示
  • レスポンシブ対応: モバイルデバイスでも快適に利用可能

📊 高度な分析機能

  • 統計分析: IC(一致指数)、χ²統計量、英語らしさ判定、バイグラム・トライグラム分析
  • 周期性分析: 自己相関分析(最大40シフト)、改良カシスキー法による鍵長推定
  • インタラクティブ可視化: ホバーツールチップ付き文字頻度グラフ、自己相関チャート、GCDヒストグラム
  • パターン検出: 各暗号方式特有のパターンを自動識別(偶数長、特殊文字、文字集合など)
  • ツール連携: 判定結果に応じた専用解読ツールへの誘導

🔬 専門家向け機能

  • 詳細統計: ヴィジュネル暗号の列別IC分析と列別シーザー分析
  • エビデンスシステム: 判定根拠の詳細説明と信頼度表示
  • アルゴリズム選択: 個別の解析手法を有効/無効化
  • 教育サポート: 統計量の意味とグラフの読み方を詳説するヘルプシステム

⚙️ 技術仕様

アーキテクチャ

  • ES6モジュール設計: 10個のモジュールに機能分離(app.js, analyzer.js, analyzers.js, ui.js, visualization.js等)
  • イベント駆動型UI: リアルタイム入力検証とレスポンシブな状態管理
  • SVGベースの可視化: インタラクティブなチャートとツールチップ
  • プログレッシブWeb: モーダル、キーボードショートカット、アクセシビリティ対応

分析精度

  • 英語テキスト特化: 英語の文字頻度・バイグラム統計に最適化
  • 長さバイアス補正: 短文での過検出を防ぐ自動補正機能
  • 確率表示: Softmax正規化されたエビデンススコア(教育目的の擬似確率)
  • 検出下限: 50文字以上で最適精度、30文字未満では精度低下

🔬 アルゴリズム詳細: 各暗号の検出ロジック、統計計算式、バイアス補正の仕組みは ALGORITHM.md で解説


🚀 使い方

  1. 暗号文を入力: テキストエリアに解析したい暗号文を入力(リアルタイム検証機能付き)
  2. サンプル利用: 「📄 サンプル読み込み」から8種類の練習用暗号文を選択(鍵情報はマスク済み、クリックで表示)
  3. 解析実行: 「🔍 解析開始」ボタンで全自動解析を開始
  4. 結果確認: もっとも可能性の高い暗号方式と信頼度バーを確認、判定根拠も表示
  5. 詳細分析: 「📊 詳細な分析を見る」で統計情報とインタラクティブなグラフを展開
  6. 専門分析: 「🔬 専門家向け分析を見る」でヴィジュネル暗号の列別分析等を確認
  7. ツール連携: 判定結果に応じて専用解読ツール(Caesar Cipher Breaker等)にアクセス

🏁 CTF活用シナリオ

シナリオ1: 競技中の迅速な暗号特定

状況: CTFのCrypto問題で未知の暗号文を受け取った
タスク: 限られた時間内で暗号方式を特定し、適切な解法を選択

1. 【暗号文投入】(30秒)
   暗号文をCipher Clairvoyanceに貼り付け、瞬時に解析開始

2. 【方式特定】(1分)
   - 信頼度バーで最有力候補を確認
   - 判定根拠で統計的証拠を検証
   - 「その他の可能性」で代替案もチェック

3. 【解法選択】(30秒)
   - ヴィジュネル→推定鍵長を確認、RepeatSeq Analyzerで詳細解析
   - シーザー→Caesar Cipher Breakerで即座に解読
   - 転置式→手動解析に切り替え、列数の手がかりを取得

4. 【検証・修正】(1分)
   専門家向け分析で仮説を検証、必要に応じて解法を調整

効果: 従来30分かかる特定作業を3分に短縮、残り時間を解読に集中

シナリオ2: チーム学習での知識共有

状況: CTFチームの勉強会で古典暗号の特徴を学習
タスク: メンバー全員が各暗号方式の見分け方を習得

1. 【サンプル演習】(15分/暗号)
   - 8種類のサンプル暗号を順番に解析
   - 鍵情報をマスクした状態で暗号方式を推測
   - ツールで解析後、推測と結果を比較

2. 【統計の理解】(各10分)
   - IC値でヴィジュネル暗号を見分ける手法を体験
   - χ²統計量でシーザー暗号の質を判定
   - 自己相関で周期性を視覚的に確認

3. 【実戦練習】(20分)
   - 過去のCTF問題をツールで分析
   - 「なぜこの判定になったか」を判定根拠で確認
   - 誤判定の原因と対策をディスカッション

4. 【知識定着】(10分)
   - ヘルプモーダルで各手法の理論を確認
   - 専門家向け分析で深い統計知識を習得

効果: チーム全体のCrypto問題対応力が向上、分析時間を大幅短縮

🗺️ 今後の拡張予定

統計解析の強化

  • 4-gram尤度分析: より高精度な言語判定とスコア可視化
  • 転置式暗号の詳細解析: 列幅・レール数の自動推定と復元試行
  • Hill暗号検出: 行列演算による2x2, 3x3 Hill暗号の識別

暗号方式の追加

  • ヴィジュネル派生系: Beaufort, Porta, Autokey暗号の高精度識別
  • 多表式暗号: Bifid/Trifid暗号の簡易検出機能
  • より複雑な転置: Two-stage transposition, Disrupted transpositionの対応

国際化対応

  • 多言語n-gram: 日本語・ドイツ語・フランス語等の言語別統計切替機能
  • Unicode対応: より広範囲の文字セットでの暗号解析

📁 プロジェクト構造

cipher-clairvoyance/
├── 📄 index.html                 # メインHTML(CSP対応、セマンティック構造)
├── 🎨 style.css                  # 全スタイル定義(レスポンシブ、モーダル、可視化)
├── 📂 js/                        # JavaScript モジュール群
│   ├── 🚀 app.js                 # メインアプリケーション・イベント処理
│   ├── 🧠 analyzer.js            # 解析パイプライン・エビデンス統合
│   ├── 🔍 analyzers.js           # 個別暗号の検出アルゴリズム群
│   ├── 🖼️ ui.js                  # DOM操作・UI更新・状態管理
│   ├── 📊 visualization.js       # SVGチャート・インタラクティブ可視化
│   ├── 📋 evidence.js            # 判定根拠生成システム
│   ├── 🔧 utils.js               # 数学関数・文字列処理ユーティリティ
│   ├── ⚙️ config.js              # 定数・設定・暗号解説テキスト
│   ├── 📝 samples.js             # サンプル暗号文データ(8種類)
│   └── ❓ help-content.js        # ヘルプモーダルコンテンツ
├── 📂 assets/                    # 静的リソース
│   └── 📷 screenshot.png         # デモ用スクリーンショット
├── 📊 ALGORITHM.md               # アルゴリズム・統計手法技術詳細
├── 📚 CLAUDE.md                  # AI開発ガイドライン・技術仕様書
├── 📖 README.md                  # プロジェクト説明書(このファイル)
└── 📜 LICENSE                    # MITライセンス

📂 ディレクトリ詳細

/js/ - コアロジック層

ファイル 責務 主要機能 依存関係
app.js アプリケーション制御 初期化、イベント処理、モーダル管理 analyzer.js, ui.js, samples.js
analyzer.js 解析エンジン メイン解析フロー、エビデンス統合 analyzers.js, evidence.js, utils.js
analyzers.js 暗号検出器 7種類の暗号検出アルゴリズム utils.js, config.js
ui.js ユーザーインターフェイス DOM操作、結果表示、状態更新 visualization.js, evidence.js
visualization.js データ可視化 SVG生成、インタラクティブチャート utils.js
evidence.js 根拠システム 判定理由の自動生成、信頼度計算 config.js
utils.js 共通ライブラリ 統計計算、文字列操作、検証関数 -
config.js 設定・定数 言語統計、暗号解説、UI設定 -
samples.js サンプルデータ 8種類の暗号文、鍵情報、メタデータ -
help-content.js ヘルプコンテンツ 動的読み込み用HTML文字列 -

index.html - メインインターフェイス

  • セマンティックHTML: 適切な見出し構造、ARIA属性
  • CSP対応: インライン スクリプト/スタイル完全排除
  • レスポンシブ: モバイル・タブレット・デスクトップ対応
  • アクセシビリティ: キーボード操作、スクリーンリーダー対応

style.css - 統合スタイルシート

  • CSS Variables: テーマカラー、レスポンシブ対応
  • モジュラー設計: コンポーネント別セクション分割
  • アニメーション: 自然なトランジション、ホバー効果
  • グリッドレイアウト: Flexbox/Grid による柔軟な配置

🔧 技術的特徴

  • 完全ES6モジュール化: import/export による疎結合設計
  • 型安全性: JSDoc による型情報とIDE支援
  • セキュリティ重視: CSP, noopener, 入力検証
  • パフォーマンス最適化: 遅延読み込み、効率的DOM操作
  • 教育配慮: 段階的情報開示、豊富な説明テキスト

🔗 関連ツール・連携プロジェクト

🤝 直接連携ツール

判定結果に応じて、以下の専用解読ツールとシームレスに連携:

  • Caesar Cipher Breaker

    • シーザー暗号の全自動解読ツール
    • 総当り攻撃と頻出語検索による高精度解読
    • Cipher Clairvoyanceからワンクリックでアクセス
  • RepeatSeq Analyzer

    • ヴィジュネル暗号の鍵長推定・解読専門ツール
    • 反復文字列の詳細分析と可視化
    • Cipher Clairvoyanceで特定した鍵長候補を詳細検証
  • Cipher Climb

    • ヒルクライミング法で解読するツール
    • 換字式暗号に有効
    • Cipher Clairvoyanceで換字式暗号と特定したときに検証

📄 ライセンス

MIT License - 詳細は LICENSE をご覧ください。


🛠 このツールについて

本ツールは、「生成AIで作るセキュリティツール100」プロジェクトの一環として開発されました。
このプロジェクトでは、AIの支援を活用しながら、セキュリティに関連するさまざまなツールを100日間にわたり制作・公開していく取り組みを行っています。

プロジェクトの詳細や他のツールについては、以下のページをご覧ください。

🔗 https://akademeia.info/?page_id=42163

About

Classical Cipher Identification & Visualization

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •