モジュールアーキテクチャ
モジュールアーキテクチャ
スキャナーの機能モジュールと、各モジュールが担う責務のハイレベルな概観
モジュール概要
スキャナーは、コマンドラインからスキャンと分析を経て整形された出力に至るまで、明確なパイプラインを形成する少数の機能領域に整理されています。
| モジュール | 責務 |
|---|---|
| コマンドラインインターフェース | 引数の解析、入力の検証、設定の読み込み、ロギングの初期化、およびスキャンモードへのディスパッチ |
| コア分析 | 暗号アルゴリズムの検出とリスクスコアの算出 |
| スキャナー | スキャンモード(エージェント、ファイルシステム、ドメイン、ネットワーク)の実装 |
| パーサー | サポートされている証明書、キーストア、設定形式の読み取り |
| 出力 | 結果をJSON、YAML、SARIF、またはターミナルレポートとしてレンダリング |
| ユーティリティ | ロギング、エラー処理、およびプラットフォーム固有のヘルパー |
コア分析
証明書が使用する暗号アルゴリズムを特定し、その量子脆弱性を評価します。アルゴリズムファミリーと鍵サイズを判定し、量子リスク値を返します。認識されるカテゴリには、RSA、ECDSA、DSA、Ed25519、3DES、RC4、ポスト量子(PQC)アルゴリズム、および分類できないものに対する「不明」のフォールバックが含まれます。
各検出結果を、導出された優先度レベル(P0 Critical から P4 Info まで)と、スコアの算出方法を説明する簡潔な内訳を持つ単一のリスクスコアに変換します。詳細なモデルは QRSスコアリング に記載されています。
証明書が解析されると、以下のメタデータが抽出され、パイプラインの残りの部分全体で使用されます。
| フィールド | 説明 |
|---|---|
| Subject | 証明書のサブジェクト識別名 |
| Issuer | 発行者の識別名 |
| Serial | 証明書のシリアル番号 |
| Valid from / until | 有効期間 |
| Algorithm | 検出された暗号アルゴリズム |
| Key size | 公開鍵のサイズ |
| Quantum-vulnerable | 証明書が量子攻撃に対して脆弱かどうか |
既知のアルゴリズムのリファレンスリスト(オブジェクト識別子をキーとする)には、各アルゴリズムの名前、カテゴリ、量子脆弱性、および廃止ステータスが記録されています。
スキャナー
エージェント
ローカルホストの完全なシステムスキャンを実行します。オペレーティングシステムの証明書ストアを検査し、無効化されていない限り、実行中のプロセスとファイルシステムも調査します(Linux、Windows、macOS 向けに専用の証明書ストア処理を備えています)。検出されたすべての項目は単一の結果に集約されます。
ファイルシステム
ディレクトリツリーを再帰的にたどり(深さは設定可能、シンボリックリンクの追跡はオプション)、ファイルを並列で検査し、種類に応じて適切なパーサーにルーティングします。PEM/CRT/CER、DER、PKCS#12(.p12/.pfx)、および Java キーストア(.jks/.jceks)に対応します。認識されないファイルはスキップされます。
ドメイン
ターゲットのホストとポートに TLS で接続し、提示された証明書チェーンを取得し、各証明書を分析し、サーバーがサポートする暗号スイートを列挙できます。
ネットワーク
ネットワークトラフィックを受動的にキャプチャし、TCP ストリームを再構成して TLS ハンドシェイクを抽出します。キャプチャと解析は、設定された期間が経過するかスキャンが中断されるまで並行して実行されます。ハンドシェイクで確認された証明書は分析され、レポートされます。
パーサー
出力
ユーティリティ
データモデル
スキャンは、以下をまとめた単一の結果を生成します。
- スキャンメタデータ — スキャナーのバージョン、スキャンモード、日付、ホスト名、および所要時間。
- 検出結果 — 各検出結果は、発見された資産を記述します。識別子、その種類(証明書またはキーストア)、その場所、抽出された証明書情報、およびそのリスク評価が含まれます。
- 統計 — 検出結果全体にわたる集計カウント。