Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
roca — ROCA: Infineon RSA鍵の脆弱性 | Kitploit
ツール/GitHubGitHub/crocs-muni/roca
静的分析脆弱性分析暗号化
GitHubcrocs-muni/roca

roca

ROCA: Infineon RSA鍵の脆弱性

リポジトリを見るウェブサイト
495965年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ROCA 検出ツール

Build Status

このツールは、ACM CCS 2017 会議論文 #124 Return of the Coppersmith's Attack: Practical Factorization of Widely Used RSA Moduli に関連しています。

このツールを使用すると、公開RSA鍵に、説明されている脆弱性が存在するかテストできます。

2017年11月4日更新: Python 2.7、3.4以上に対応。

2017年10月30日更新: 攻撃に関する論文は既に公開されています。ACM版。

2017年10月30日更新: 離散対数検出器がPythonで実装され、デフォルトで使用されるようになりました。これは、因数分解アルゴリズムが利用する素数の構造を検出します。

現在、このツールは以下の鍵形式に対応しています:

  • X509証明書、DERエンコード、ファイルごとに1つ、*.der、*.crt
  • X509証明書、PEMエンコード、1ファイルに複数、*.pem
  • X509証明書署名要求、PEMエンコード、1ファイルに複数、*.pem
  • RSA PEMエンコード秘密鍵、公開鍵、1ファイルに複数、*.pem(正しいヘッダー -----BEGIN RSA... が必要)
  • SSH公開鍵、*.pub、"ssh-rsa" で始まり、1行に1つ
  • ASCエンコードPGP鍵、*.pgp、*.asc。1ファイルに複数、正しいヘッダー -----BEGIN PGP... が必要
  • APK Androidアプリケーション、*.apk
  • 1行に1つのモジュラスを持つテキストファイル *.txt。モジュラスは以下のいずれか a) base64エンコード数値、b) 16進エンコード数値、c) 10進エンコード数値
  • JSONファイル(モジュラスを含むレコードが1行に1つ)。モジュラスにはキー "mod"(int、base64、16進、10進エンコードに対応) "cert" キーを持つ証明書 / "certs" キーを持つ証明書の配列に対応(base64エンコードDER)。
  • LDIFFファイル - LDAPデータベースダンプ。;binary:: で終わるフィールドはX509証明書としてデコードを試みます。
  • Java Key Storeファイル(JKS)。空のパスワードと一般的なパスワードを試します。--jks-pass-file で追加指定可能。
  • ユーザー証明書を含むPKCS7署名

検出ツールは、簡単な統合・操作のために意図的に単一ファイル実装となっています。

偽陽性

偽陽性検出率:

  • モジュラス検出器: 2^-27
  • 離散対数検出器: 2^-154

離散対数検出器はPythonコードのみに実装されており、デフォルトの検出方法として使用されます。

JavaおよびC#のコード移植版は元の公開以降メンテナンスされておらず、これらの検出器をより高精度な方法にアップグレードする予定はありません。ただし、PRは歓迎します!

オンラインチェッカー

https://keychest.net/roca

オンラインチェッカーは離散対数検出器アルゴリズムを使用しています。

pip によるインストール

検出ライブラリ+ツールを pip でインストール(すべての依存関係をインストール):

root@kitploit:~
pip install roca-detect

ローカルインストール

パッケージのルートフォルダで以下を実行:

root@kitploit:~
pip install --upgrade --find-links=. .

依存関係

pip が例えば cryptography パッケージをインストールできるように、追加の依存関係のインストールが必要な場合があります。

CentOS / RHEL:

root@kitploit:~
sudo yum install python-devel python-pip gcc gcc-c++ make automake autoreconf libtool openssl-devel libffi-devel dialog

Ubuntu:

root@kitploit:~
sudo apt-get install python-pip python-dev build-essential libssl-dev libffi-dev swig

使用方法

基本的な使用方法を表示するには:

root@kitploit:~
# pip / 手動インストールの場合
roca-detect --help

# インストールなしの場合(依存関係が不足する可能性あり)
python roca/detect.py

テストツールは、入力引数として複数のファイル名/ディレクトリを受け付けます。フィンガープリントされたファイルの数(および該当ファイル)を示すレポートを返します。

例(脆弱性なし):

自分のSSH鍵とknown_hostsを再帰的にチェック:

root@kitploit:~
$> roca-detect ~/.ssh
2017-10-16 13:39:21 [51272] INFO ### SUMMARY ####################
2017-10-16 13:39:21 [51272] INFO Records tested: 92
2017-10-16 13:39:21 [51272] INFO .. PEM certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. DER certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. RSA key files: . 16
2017-10-16 13:39:21 [51272] INFO .. PGP master keys: 0
2017-10-16 13:39:21 [51272] INFO .. PGP total keys:  0
2017-10-16 13:39:21 [51272] INFO .. SSH keys:  . . . 76
2017-10-16 13:39:21 [51272] INFO .. APK keys:  . . . 0
2017-10-16 13:39:21 [51272] INFO .. JSON keys: . . . 0
2017-10-16 13:39:21 [51272] INFO .. LDIFF certs: . . 0
2017-10-16 13:39:21 [51272] INFO .. JKS certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. PKCS7: . . . . . 0
2017-10-16 13:39:21 [51272] INFO No fingerprinted keys found (OK)
2017-10-16 13:39:21 [51272] INFO ################################

例(脆弱性あり):

自分のSSH鍵とknown_hostsを再帰的にチェック:

root@kitploit:~
$> roca-detect ~/.ssh
<b>2017-10-16 13:39:21 [51272] WARNING Fingerprint found in the Certificate</b>
...
2017-10-16 13:39:21 [51272] INFO ### SUMMARY ####################
2017-10-16 13:39:21 [51272] INFO Records tested: 92
2017-10-16 13:39:21 [51272] INFO .. PEM certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. DER certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. RSA key files: . 16
2017-10-16 13:39:21 [51272] INFO .. PGP master keys: 0
2017-10-16 13:39:21 [51272] INFO .. PGP total keys:  0
2017-10-16 13:39:21 [51272] INFO .. SSH keys:  . . . 76
2017-10-16 13:39:21 [51272] INFO .. APK keys:  . . . 0
2017-10-16 13:39:21 [51272] INFO .. JSON keys: . . . 0
2017-10-16 13:39:21 [51272] INFO .. LDIFF certs: . . 0
2017-10-16 13:39:21 [51272] INFO .. JKS certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. PKCS7: . . . . . 0
2017-10-16 13:39:21 [51272] INFO Fingerprinted keys found: 1
2017-10-16 13:39:21 [51272] INFO WARNING: Potential vulnerability
2017-10-16 13:39:21 [51272] INFO ################################

PGP鍵

PGP鍵をテストするには、メールクライアントからエクスポートするか、https://pgp.mit.edu/ などのPGP鍵サーバーからダウンロードできます。

また、gpg コマンドラインユーティリティを使用して公開鍵をエクスポートすることもできます:

root@kitploit:~
gpg --armor --export [email protected] > mykey.asc

高度な使用例

検出ツールは鍵に関する情報を抽出し、表示できます:

root@kitploit:~
roca-detect.py --dump --flatten --indent  ~/.ssh/

TLS/SSL検出

roca-detect-tls はリモートのTLS/SSLポートから証明書を検出します。改行区切りの address:port エントリを含むファイルを用意し、そのファイルを入力として使用します。

ファイル例: tls_list.txt

root@kitploit:~
github.com:443
google.com:443
internal.example.com:8080

その後、以下を実行:

roca-detect-tls tls_list.txt

偽のモジュラス

モジュラスフィンガープリントテストは通過するが、実際には因数分解アルゴリズムが使用する構造を含まないモジュラスを生成することが可能です。Dlogモジュラス試験では、これらを陽性としてマークしません。

高度なインストール方法

仮想環境

プロジェクト用に新しいPython仮想環境を作成することを推奨します:

root@kitploit:~
virtualenv ~/pyenv
source ~/pyenv/bin/activate
pip install --upgrade pip
pip install --upgrade --find-links=. .

別途Python 2.7.13

ツールはPython 2.7.13でテスト済みで動作します(詳細はTravisを参照)。低いバージョン(<=2.6)では正しく動作しないという報告があるため、最新のPython 2.7を使用することを強く推奨します。

システムPythonを更新できない/したくない場合は、pyenv を使用してローカルに新しいPythonバージョンをインストールしてください。

内部的にPythonソースをダウンロードし、~/.pyenv にインストールします。

root@kitploit:~
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec $SHELL
pyenv install 2.7.13
pyenv local 2.7.13

Python 3

検出ツールはPython 3.4以上でも動作します。

Dockerコンテナ

環境の不整合を避けるためにDockerコンテナで実行します。Dockerfileのソースは https://hub.docker.com/r/unnawut/roca-detect/ で監査できます。

root@kitploit:~
docker run --rm -v /path/to/your/keys:/keys --network none unnawut/roca-detect

コンテナのネットワーク接続を無効にし、実行後にコンテナを削除するために --rm および --network none フラグを使用してください。

ライセンス

コードは寛容なMITライセンスの下でライセンスされています。

互換性に関する疑念からApache 2.0ライセンスでのデュアルライセンスのリクエストがあったため、コードはApache 2.0ライセンスの下でもライセンスしています。

自分に合ったライセンス(MITまたはApache 2.0)を選択してください。

言語移植版

このセクションには、言語移植版の異なるGITリポジトリへのリンクが含まれています。

  • Go
ツールをダウンロード