Day044 - 生成AIで作るセキュリティツール100
Classical Cipher Identification & Visualization
暗号文から用いられた古典暗号を推定・特定する教育用Webツールです。
ES6モジュール化されたモダンなアーキテクチャと豊富な可視化機能により、初心者から専門家まで幅広く古典暗号の学習・解析を支援します。
なお、"clairvoyance"は「クレアボヤンス」と読み、「千里眼」「透視能力」を意味します。
- 暗号学の授業: 大学・専門学校での古典暗号教材として
- 情報セキュリティ学習者: 暗号の基礎概念を視覚的に理解
- 独学者: プログラミングなしで暗号解析の仕組みを体験
- 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 をご覧ください
- 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 で解説
- 暗号文を入力: テキストエリアに解析したい暗号文を入力(リアルタイム検証機能付き)
- サンプル利用: 「📄 サンプル読み込み」から8種類の練習用暗号文を選択(鍵情報はマスク済み、クリックで表示)
- 解析実行: 「🔍 解析開始」ボタンで全自動解析を開始
- 結果確認: もっとも可能性の高い暗号方式と信頼度バーを確認、判定根拠も表示
- 詳細分析: 「📊 詳細な分析を見る」で統計情報とインタラクティブなグラフを展開
- 専門分析: 「🔬 専門家向け分析を見る」でヴィジュネル暗号の列別分析等を確認
- ツール連携: 判定結果に応じて専用解読ツール(Caesar Cipher Breaker等)にアクセス
状況: CTFのCrypto問題で未知の暗号文を受け取った
タスク: 限られた時間内で暗号方式を特定し、適切な解法を選択
1. 【暗号文投入】(30秒)
暗号文をCipher Clairvoyanceに貼り付け、瞬時に解析開始
2. 【方式特定】(1分)
- 信頼度バーで最有力候補を確認
- 判定根拠で統計的証拠を検証
- 「その他の可能性」で代替案もチェック
3. 【解法選択】(30秒)
- ヴィジュネル→推定鍵長を確認、RepeatSeq Analyzerで詳細解析
- シーザー→Caesar Cipher Breakerで即座に解読
- 転置式→手動解析に切り替え、列数の手がかりを取得
4. 【検証・修正】(1分)
専門家向け分析で仮説を検証、必要に応じて解法を調整
効果: 従来30分かかる特定作業を3分に短縮、残り時間を解読に集中
状況: 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ライセンス
| ファイル | 責務 | 主要機能 | 依存関係 |
|---|---|---|---|
| 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文字列 | - |
- セマンティックHTML: 適切な見出し構造、ARIA属性
- CSP対応: インライン スクリプト/スタイル完全排除
- レスポンシブ: モバイル・タブレット・デスクトップ対応
- アクセシビリティ: キーボード操作、スクリーンリーダー対応
- CSS Variables: テーマカラー、レスポンシブ対応
- モジュラー設計: コンポーネント別セクション分割
- アニメーション: 自然なトランジション、ホバー効果
- グリッドレイアウト: Flexbox/Grid による柔軟な配置
- 完全ES6モジュール化: import/export による疎結合設計
- 型安全性: JSDoc による型情報とIDE支援
- セキュリティ重視: CSP, noopener, 入力検証
- パフォーマンス最適化: 遅延読み込み、効率的DOM操作
- 教育配慮: 段階的情報開示、豊富な説明テキスト
判定結果に応じて、以下の専用解読ツールとシームレスに連携:
-
- シーザー暗号の全自動解読ツール
- 総当り攻撃と頻出語検索による高精度解読
- Cipher Clairvoyanceからワンクリックでアクセス
-
- ヴィジュネル暗号の鍵長推定・解読専門ツール
- 反復文字列の詳細分析と可視化
- Cipher Clairvoyanceで特定した鍵長候補を詳細検証
-
- ヒルクライミング法で解読するツール
- 換字式暗号に有効
- Cipher Clairvoyanceで換字式暗号と特定したときに検証
MIT License - 詳細は LICENSE をご覧ください。
本ツールは、「生成AIで作るセキュリティツール100」プロジェクトの一環として開発されました。
このプロジェクトでは、AIの支援を活用しながら、セキュリティに関連するさまざまなツールを100日間にわたり制作・公開していく取り組みを行っています。
プロジェクトの詳細や他のツールについては、以下のページをご覧ください。
