メインコンテンツまでスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。

技術スタックの詳細

適用対象:
PQC ScannerRustCargoCross-Platform

コアテクノロジー​

バージョン: Stable(最新版を推奨)

なぜ Rust なのか?

メモリ安全性

ガベージコレクションなし、コンパイル時のメモリ安全性保証

パフォーマンス

ゼロコスト抽象化、C/C++ に匹敵

並行処理

所有権システムによる恐れのない並行処理

クロスプラットフォーム

Linux、macOS、Windows のファーストクラスサポート

  • モダンなツール: Cargo パッケージマネージャー、rustfmt、clippy
  • 強力な型システム: コンパイル時に多くの種類のバグを防止

依存関係​

rustls(v0.23+)

ピュア Rust の TLS 1.2/1.3 実装。PEM の読み込みには rustls-pemfile と併用されます。

特徴:

  • OpenSSL 依存なし
  • メモリ安全な TLS
  • モダンな暗号スイート
  • TLS 1.3 サポート

x509-parser(v0.16+)

X.509 証明書の解析

機能:

  • DER/PEM 証明書の解析
  • 公開鍵の抽出
  • 証明書チェーンの検証
  • OID の解析

der & pem(v0.7+ / v3.0+)

DER および PEM データの低レベルなエンコード/デコード。

tokio(v1.35+)

非同期ランタイム(フル機能セットを有効化)。

使用している機能:

  • fs: 非同期ファイルシステム操作
  • net: TCP/TLS ネットワーキング
  • sync: チャネル、ミューテックス
  • time: タイマー、タイムアウト
  • macros: #[tokio::main]
  • rt-multi-thread: マルチスレッドランタイム

clap(v4.5+)

コマンドライン引数の解析(derive、env、cargo の各機能を使用)。

特徴:

  • 簡単な CLI 定義のための derive マクロ
  • サブコマンド
  • 環境変数のサポート
  • シェル補完
  • ヘルプの生成

serde(v1.0+)

シリアライゼーションフレームワーク。JSON および YAML 出力形式のために serde_json および serde_yaml と組み合わせて使用されます。

サポートされる形式:

  • JSON(デフォルト出力)
  • YAML(人間が読みやすい)
  • カスタム SARIF 形式

tracing(v0.1+)

構造化ロギング。ログ出力とフィルタリングは tracing-subscriber(env-filter 機能)が処理します。

特徴:

  • 構造化された文脈付きロギング
  • 複数のログレベル
  • モジュールごとのフィルタリング
  • JSON 出力のサポート

anyhow & thiserror(v1.0+)

用途:

  • anyhow: アプリケーションレベルのエラー
  • thiserror: ライブラリレベルのカスタムエラー

walkdir(v2.4+)

再帰的ディレクトリ走査

特徴:

  • 効率的な再帰スキャン
  • シンボリックリンクの処理
  • フィルタリング
  • メタデータへのアクセス

rayon(v1.8+)

データ並列処理

ユースケース:

  • 並列ファイル処理
  • 並行証明書分析
  • マルチスレッドスキャン

pcap(v2.0+)

パケットキャプチャ(libpcap ラッパー)

プラットフォーム依存関係:

  • Linux: libpcap-dev
  • macOS: 組み込みの libpcap
  • Windows: WinPcap または Npcap

pnet(v0.35+)

パケット解析

特徴:

  • TCP/IP パケットの解析
  • レイヤー 2〜4 プロトコルのサポート
  • ストリーム再構成ヘルパー

indicatif(v0.17+)

プログレスバー

ratatui(v0.26+)

ターミナル UI フレームワーク。ターミナル制御のために crossterm と併用されます。

用途:

  • ネットワークモードのリアルタイム表示
  • インタラクティブな統計
  • ステータス監視

ビルドシステム​

プロジェクトは Cargo でビルドされます。パッケージは dke-scanner-agent という名前でバージョン 1.0.0 として公開され、2021 エディションを対象とし、MIT または Apache-2.0 のデュアルライセンスです。dke-scanner-agent という名前のバイナリと、pqc_scanner という名前の再利用可能なライブラリを生成します。

ランタイム依存関係は目的ごとにグループ化されています。

グループクレート
Coretokio, anyhow, thiserror
Cryptorustls, x509-parser, der, pem
CLIclap
Serializationserde, serde_json, serde_yaml
Loggingtracing, tracing-subscriber
File systemwalkdir
Parallelismrayon
Networkpcap, pnet
UIindicatif, ratatui, crossterm

開発依存関係には、ベンチマーク用の criterion とテスト用の tempfile が含まれます。リリースプロファイルはサイズと速度のためにチューニングされており、最大の最適化レベル、リンク時最適化、単一の codegen ユニット、およびストリップされたデバッグシンボルを備えています。

プラットフォーム固有の依存関係​

システムパッケージ:

# Ubuntu/Debian
sudo apt-get install libpcap-dev pkg-config build-essential

# RHEL/CentOS
sudo yum install libpcap-devel

# Arch
sudo pacman -S libpcap

システムパッケージ:

# libpcap is included with macOS
# Optional: Homebrew for development tools
brew install pkg-config

前提条件:

  • Visual Studio Build Tools または MSVC
  • Npcap(パケットキャプチャ用): https://npcap.com/
# Install Npcap
choco install npcap

コンパイル​

cargo build --release

出力: target/release/dke-scanner-agent

パフォーマンス特性​

バイナリサイズ

ビルドタイプサイズ説明
Debug~50 MBデバッグシンボル付きの未最適化
Release~8 MB最適化済み、ストリップ済み
Release + UPX~3 MBUPX で圧縮

メモリ使用量

モード通常ピーク
Agent30 MB50 MB
Filesystem50 MB100 MB
Domain40 MB80 MB
Network60 MB150 MB

CPU 使用率

  • シングルスレッド解析: 1 コア
  • 並列ファイルシステムスキャン: 全コア
  • ネットワークキャプチャ: 1〜2 コア

テスト依存関係​

テストは、開発専用の少数のクレートに依存します。

クレート目的
criterionベンチマーク
tempfileテスト用の一時ファイル
mockallモックフレームワーク
proptestプロパティベーステスト

CI/CD 統合​

name: CI
on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- run: cargo test --all-features
- run: cargo clippy -- -D warnings

バージョン要件​

依存関係最小バージョン推奨
Rust1.70最新の stable
Cargo1.70最新
libpcap1.9.01.10.0+