メインコンテンツまでスキップ

スキャナーアーキテクチャ

適用対象:
PQC Scanner CLIWindowsLinuxmacOS

PQC スキャナーアーキテクチャ

ポスト量子暗号の検出とリスク評価のための高性能な Rust CLI

Ffilesystem
Ddomain
Aagent
Nnetwork
Ssourcecode
Ccompliance
Wserve
Ici
Nservicenow
Bcbom
Clap 4.5Tokio Async10 個のサブコマンド
コマンドディスパッチ
▼

インフラストラクチャスキャナー

非同期 I/O
ファイルシステム
PEM, DER, JKS, PKCS#12
ドメイン / TLS
Rustls ハンドシェイクのキャプチャ
エージェント
システム全体のインベントリ
ネットワーク
パッシブなパケットキャプチャ
+
SCAN

高度なスキャナー

拡張可能
ソースコード
150 以上のルール、8 言語対応
クラウド KMS
AWS, Azure, GCP
SSH 鍵
ホスト鍵アルゴリズム
コンプライアンス
8 以上のフレームワーク
生の暗号データ
▼
パーサーレイヤー
PEM
x509-parser
DER
x509-parser
PKCS#12
x509-parser
Win Store
schannel
CBOM
serde
▼
暗号ディテクター
OID ルックアップによるアルゴリズム識別
RSAECDSADSAEd25519PQC
リスクスコアラー
7 要素の重み付け量子脆弱性スコア
P0
P1
P2
P3
P4
スコアリング済みの検出結果
▼
出力フォーマッター
{}
JSON
機械可読
Ym
YAML
人間可読
<>
HTML
ステークホルダー向けレポート
>>_
ターミナル
ANSI カラー出力
Cd
CycloneDX
CBOM 1.7 エクスポート
Sr
SARIF
CI/CD 統合
レポート生成
▼

PQC 対応状況評価

量子脆弱性スコアリングと移行ロードマップを含む完全な暗号インベントリ

検出+リスクスコア= 量子対応
単一バイナリ
プラットフォームごとのネイティブ実行ファイル、ランタイム依存なし
非同期ファースト
I/O には Tokio、CPU バウンドな処理には Rayon
OpenSSL ゼロ
Rustls によるピュア Rust の TLS、C 依存なし
モジュラースキャナー
各コマンドは独立しており拡張可能

高レベルのデータフロー​

すべてのスキャンは、CLI の呼び出しからレポートの出力まで、同じ 5 段階のパイプラインに従います。

1

CLI 解析 (clap 4.5)

ユーザーは 10 個のサブコマンド(filesystem、domain、agent、network、serve、ci、sourcecode、compliance、servicenow、cbom)のいずれかを呼び出します。Clap は引数を解析し、入力を検証し、対応するスキャナーにディスパッチします。

2

スキャナーの実行

選択されたスキャナーは、生の暗号データ(TLS ハンドシェイク、証明書ファイル、ソースコードパターン、クラウド KMS メタデータ、または SSH ホスト鍵)を収集します。スキャナーは非同期 I/O に Tokio を、CPU 並列のファイル走査に Rayon を使用します。

3

パーサー層 (PEM / DER / PKCS#12)

生データは、PEM、DER、PKCS#12、Windows 証明書ストア、および CBOM 向けの形式固有のパーサーに渡され、x509-parser および schannel クレートを使用して証明書メタデータ、鍵アルゴリズム、署名スキームを抽出します。

4

リスクスコアリング (0〜10)

解析された各検出結果はリスクスコアリングエンジンを通過し、0 から 10 までの量子リスクスコアが割り当てられ、重大度レベル(Critical から Info まで)にマッピングされ、優先度(P0 から P4 まで)が割り当てられ、人間が読める理由と推奨事項が生成されます。

5

出力のフォーマット

スコア付けされた ScanResult は、選択された出力フォーマッター(JSON、YAML、HTML、ANSI ターミナル、または CycloneDX 1.7 CBOM)によってシリアライズされ、ファイルまたは stdout に書き込まれます。

ランタイム

バイナリのエントリポイントは、構造化ロギングのための tracing サブスクライバーとともに Tokio 非同期ランタイムを初期化します。すべてのスキャナー操作は非同期優先であり、CPU バウンドの解析は Rayon スレッドプールにオフロードされます。

モジュール階層​

スキャナーは、それぞれが単一の責任を持つ、焦点を絞った一連の機能領域に編成されています。

領域責任
CLI10 個の Clap サブコマンド -- filesystem、domain、agent、network、serve、ci、sourcecode、compliance、servicenow、cbom
Core中心的なデータ構造(Finding、ScanResult、RiskAssessment)と量子リスクスコアリングエンジン
Scannersfilesystem、domain/TLS、agent、network、ソースコード、クラウド KMS、SSH、Fortinet、パケットキャプチャ、サブドメインのデータコレクター
ParsersPEM、DER、PKCS#12、Windows 証明書ストア(schannel)、CycloneDX CBOM の形式パーサー
Outputレポートジェネレーター -- JSON、YAML、ANSI ターミナル、HTML、CycloneDX 1.7 CBOM エクスポート
ServerREST API、WebSocket サポート、認証(OIDC / API キー)を備えた Axum 0.7 ウェブサーバー
Compliance8 以上のコンプライアンスフレームワーク、ギャップ分析、レポート生成(HTML/PDF/JSON)
Integrations自動インシデントと CMDB 同期を備えた ServiceNow REST API、JFrog Artifactory 統合
Configuration認証モード、CORS、レート制限、入力検証
EntrypointTokio 非同期エントリポイント、tracing の初期化、CLI ディスパッチ

CLI コマンド​

CLI は Clap 4.5 の derive マクロで構築されています。各サブコマンドは専用のスキャナーまたはサービスにマッピングされます。

コマンド説明
filesystemローカルパスで証明書とキーストアをスキャンする(PEM、DER、PKCS#12、JKS)
domainRustls を介して TLS エンドポイントに接続し、ハンドシェイク、暗号スイート、証明書を検査する
agentシステム全体の暗号インベントリ -- 証明書、キーストア、SSH 鍵、クラウド KMS
network暗号トラフィックの受動的ネットワークキャプチャ(未実装)
serveREST API と WebSocket エンドポイントを公開する Axum ウェブサーバーを起動する
ciGitHub Actions、GitLab CI、Azure DevOps 向けの SARIF 出力を備えた CI/CD パイプラインモード
sourcecode8 つのプログラミング言語にわたる 150 以上の検出ルールによる静的解析
compliance8 以上の規制フレームワークに対してコンプライアンスチェックを実行し、ギャップ分析を生成する
servicenow検出結果を ServiceNow にプッシュする -- インシデントを自動作成し、CMDB と同期する
cbomCycloneDX 1.7 暗号部品表を解析または生成する

中心的なデータ構造​

すべてのスキャン結果は同じデータモデルを共有します。これにより、どのスキャナーがデータを生成したかに関係なく、一貫した出力が保証されます。

Finding は、スキャン中に発見された単一の暗号資産を表します。

フィールド型説明
idString検出結果の一意の識別子
finding_typeEnumCertificate、Keystore、Key、ConfigFile、または SshKey
sourceStringこの検出結果を生成したスキャナー
locationString資産が見つかったファイルパス、URL、またはホスト名
certificateOption<CertificateInfo>解析された証明書メタデータ(サブジェクト、発行者、アルゴリズム、鍵サイズ、有効性)
keystoreOption<KeystoreInfo>キーストア形式と含まれるエントリ
risk_assessmentRiskAssessment量子脆弱性のスコアリングと推奨事項
tls_infoOption<TlsInfo>TLS プロトコルバージョン、暗号スイート、ハンドシェイクの詳細

すべての検出結果は、リスクスコアリングエンジンによって量子脆弱性についてスコア付けされます。

フィールド型説明
quantum_vulnerablebool資産が量子コンピュータで破られるアルゴリズムを使用しているかどうか
quantum_risk_scoref64 (0〜10)0 = リスクなし(純粋な PQC)、10 = 最大リスク(RSA-1024、DSA-1024)
severityEnumCritical、High、Medium、Low、または Info
priorityEnumP0(直ちに)、P1(緊急)、P2(計画的)、P3(監視)、P4(情報提供)
reasonsVec<String>割り当てられたスコアに対する人間が読める説明
recommendationsVec<String>脆弱性を修復するための実行可能な手順
ヒント

リスクスコアは優先度にマッピングされます: P0(スコア 9〜10、例: RSA-1024、MD5 署名)、P1(7〜8、例: RSA-2048、SHA-1)、P2(5〜6、例: RSA-3072)、P3(2〜4、例: RSA-4096、ECDSA P-384)、P4(0〜1、例: ハイブリッドまたは純粋な PQC アルゴリズム)。

すべてのスキャン操作によって返される最上位の出力構造です。

フィールド型説明
scan_metadataScanMetadataスキャナーのバージョン、スキャンモード、日付、ホスト名、期間(秒)
findingsVec<Finding>スキャン中に発見されたすべての暗号資産
summaryScanSummary重大度、検出結果の種類、アルゴリズムごとに集計されたカウント
recommendationsVec<String>すべての検出結果に基づく最上位の修復ガイダンス

スキャナーモジュール​

各スキャナーは、特定のソースから生の暗号データを収集する自己完結型のコンポーネントです。スキャナーは非同期(tokio)であり、該当する場合は並列ファイル走査に rayon を使用します。

walkdir クレートを使用してディレクトリを再帰的に走査し、拡張子とマジックバイトによって証明書とキーストアのファイルを検出します。PEM、DER、PKCS#12、JKS 形式をサポートします。ファイルは対応する形式パーサーによって処理されます。

検出戦略:

  • ファイル拡張子の照合(.pem、.crt、.cer、.der、.p12、.pfx、.jks、.key)
  • バイナリ形式のマジックバイト署名検出
  • 構成可能なディレクトリの深さと除外パターン
  • Rayon スレッドプールによる並列ファイル I/O

rustls 0.23 ベースのクライアントを使用して TLS エンドポイントに接続します。プロトコルバージョン、暗号スイートのネゴシエーション、サーバー証明書チェーン、鍵交換パラメータを含む完全な TLS ハンドシェイクをキャプチャします。WhoisXML API 統合によるサブドメイン列挙をサポートします。

複数のサブスキャナーの結果を組み合わせて、システム全体の暗号インベントリを実行します。ファイルシステム証明書、Windows 証明書ストア(schannel クレート経由)、SSH ホスト鍵、クラウド KMS メタデータ(AWS KMS、Azure Key Vault、GCP Cloud KMS 向け)が含まれます。

8 つのプログラミング言語をカバーする 150 以上の検出ルールを備えた静的解析エンジンです。ソースツリーを走査し、正規表現ベースのパターン照合を適用して、脆弱な暗号関数呼び出し(例: RSA_generate_key、ECDSA_sign、ハードコードされた鍵)を検出します。

機能:

  • 検出パターンの定義(アルゴリズム、関数名、重大度)
  • ファイル走査とルール照合エンジン
  • CI/CD 統合のための SARIF 出力形式
  • GitHub、GitLab、Azure DevOps リポジトリのコネクター

パーサー層​

パーサーは、生のバイナリまたはテキストデータを構造化された CertificateInfo および KeystoreInfo オブジェクトに変換します。これらはスキャナーによって呼び出され、形式固有です。

パーサークレート処理される形式
PEMx509-parserBase64 エンコードされた証明書、秘密鍵、CSR
DERx509-parserバイナリエンコードされた X.509 証明書(.der、.cer)
PKCS#12x509-parserパスワード保護された証明書/鍵バンドル(.p12、.pfx)
Windows 証明書ストアschannelWindows の LocalMachine および CurrentUser 証明書ストア
CBOMserdeCycloneDX 暗号部品表(JSON 入力)

リスクスコアリングエンジン​

リスクスコアリングエンジンは、各検出結果を 0 から 10 の量子脆弱性スケールで評価します。スコアリングでは、アルゴリズムファミリー、鍵サイズ、署名スキーム、およびコンテキスト要因が考慮されます。

スコア範囲優先度重大度アルゴリズムの例
9 - 10P0(直ちに)CriticalRSA-1024、DSA-1024、MD5 署名、DES、3DES
7 - 8P1(緊急)HighRSA-2048、ECDSA P-256、SHA-1 署名
5 - 6P2(計画的)MediumRSA-3072、Diffie-Hellman 2048 ビット
2 - 4P3(監視)LowRSA-4096、ECDSA P-384、ECDSA P-521
0 - 1P4(情報提供)InfoML-KEM、ML-DSA、SLH-DSA、ハイブリッド PQC アルゴリズム

出力フォーマッター​

スキャナーは 5 つの出力バックエンドを提供します。CLI の --format フラグにより、どのフォーマッターが ScanResult をレンダリングするかを選択します。

形式ユースケース
JSONパイプライン、API、統合向けの機械可読出力
YAML構成管理向けの人間が読める構造化出力
ターミナル (ANSI)インタラクティブな使用向けの重大度ハイライト付きの色分けされたコンソール出力
HTML関係者と共有するための自己完結型 HTML レポート
CycloneDX CBOMCycloneDX 1.7 暗号部品表のエクスポート
ヒント

CI モード(ci コマンド)は SARIF 出力を生成します。これは標準の出力フォーマッターとは異なります。SARIF は GitHub Code Scanning、GitLab SAST、Azure DevOps と直接統合されます。

Axum ウェブサーバー​

serve コマンドは Axum 0.7 ウェブサーバーを起動します。

  • REST API -- スキャンのトリガー、結果の取得、構成の管理のためのエンドポイント
  • WebSocket -- 接続されたクライアントへのリアルタイムのスキャン進捗ストリーミング
  • 認証 -- OIDC および API キーモード
  • CORS -- ブラウザベースのダッシュボード向けの構成可能なクロスオリジンポリシー
  • レート制限 -- 悪用を防ぐためのリクエストスロットリング

コンプライアンスエンジン​

コンプライアンスエンジンは、8 以上の規制および業界フレームワークに対してスキャン検出結果を評価します。

コンポーネント目的
Checkerフレームワーク固有のルールに対して検出結果を評価する
Frameworksフレームワークの定義 -- NIST、BSI TR-02102、CNSA 2.0、PCI DSS、FIPS 140-3、ETSI、ISO 27001、SOC 2
Gap Analyzer現在のポスチャと目標のコンプライアンス状態との間のギャップを特定する
Report GeneratorHTML、PDF、JSON 形式でコンプライアンスレポートを生成する
PDF Parserカスタムの組織ポリシー PDF から要件を抽出する

統合​

REST API を介してスキャン検出結果を ServiceNow にプッシュします。P0/P1 の検出結果に対する自動インシデント作成、発見された暗号資産の CMDB 同期、スケジュールされた同期ワークフローをサポートします。servicenow CLI コマンドは、スキャンとプッシュの完全なサイクルをトリガーします。

機能:

  • 脆弱性データをプッシュするための REST API 統合
  • 重大度のしきい値に基づく自動インシデント作成
  • 暗号資産インベントリの CMDB 同期
  • 構成可能な同期頻度(継続的、スケジュール、オンデマンド)

ServiceNow Vulnerability Dashboard

ServiceNow ダッシュボードは、重大度別の量子脆弱資産、コンプライアンスステータス、修復の進捗状況を表示します。

主要な依存関係​

クレートバージョン目的
tokio1.x並行 I/O 操作のための非同期ランタイム
clap4.5derive マクロによる CLI 引数解析
serde / serde_json / serde_yaml1.xJSON、YAML、構成ファイルのシリアライズとデシリアライズ
rustls0.23ドメインスキャン用の TLS クライアント実装(OpenSSL 依存なし)
x509-parser0.16+X.509 証明書と CRL の解析
walkdir2.xファイルシステムスキャン用の再帰的ディレクトリ走査
rayon1.xデータ並列の CPU バウンド処理(ファイル解析、ルール照合)
reqwest0.12+クラウド KMS API、ServiceNow、git プロバイダー統合用の HTTP クライアント
axum0.7serve コマンド用の非同期ウェブフレームワーク(REST + WebSocket)
tracing0.1構造化ロギングと診断
schannel0.1SChannel API を介した Windows 証明書ストアアクセス
重要

スキャナーは OpenSSL への依存が一切ありません。TLS 操作は rustls を使用し、証明書解析は x509-parser を使用します。これにより、サプライチェーン脆弱性のクラス全体が排除され、クロスプラットフォームビルドが簡素化されます。

アーキテクチャの原則​

単一バイナリ

プラットフォームごとに 1 つのネイティブ実行可能ファイルとして提供されます。ランタイム依存関係なし、JVM なし、Python インタプリタなし。コピーして実行するだけです。

非同期優先

すべてのネットワーク I/O は Tokio 非同期を使用します。CPU バウンドの作業(ファイル解析、ルール照合)は、最大のスループットのために Rayon スレッドプールにオフロードされます。

OpenSSL ゼロ

Rustls と x509-parser による純粋な Rust の TLS。暗号操作のための C ライブラリ依存関係はありません。

モジュール式スキャナー

各スキャンコマンドは独立したモジュールです。既存のコードを変更することなく、新しいスキャナーを追加できます。

次のステップ​