アップデート一覧に戻る
New releaseAug 21, 2026

badkeys v0.0.20

暗号公開鍵における一般的な脆弱性を見つけるツール

共有

badkeys

既知の脆弱性について暗号公開鍵を確認するためのツールとライブラリ

なに?

badkeysは、様々な形式の公開鍵を既知の脆弱性に対してチェックします。Web版はbadkeys.infoで利用できます。

インストール

badkeysはpip経由でインストールできます:

pip3 install badkeys

仮想環境を使用することをお勧めします。様々なインストールオプションの詳細については、公式Pythonドキュメントを確認してください。あるいは、gitリポジトリから直接 ./badkeys-cli を直接呼び出すこともできます。

Linuxディストリビューションやその他のオペレーティングシステム向けのbadkeysパッケージの概要はRepologyで確認できます

使い方

badkeysを使用する前に、ブロックリストデータをダウンロードする必要があります:

badkeys --update-bl

その後、badkeys を呼び出し、暗号公開鍵を含むファイルをパラメータとして渡すことができます:

badkeys test.crt my.key

自動的にファイル形式を検出しようとします。対応しているのは、PEM形式(PKCS#1とPKCS#8の両方)の公開鍵と秘密鍵、X.509証明書、証明書署名要求(CSR)、SSH公開鍵です。tests/data ディレクトリにいくつかのテスト鍵があります。

デフォルトでは、badkeysは脆弱な鍵に関する情報のみを出力するため、脆弱性が見つからなければ出力は生成されません。-a パラメータはすべての鍵に対して出力を作成します。

コマンドラインツールは、鍵がスキャンされ、エラーが発生せず、脆弱性が検出されなかった場合に0を返します。アプリケーションエラーの場合は1、入力がスキャンできなかった場合(パーサーエラー、サポートされていない鍵タイプ、鍵のないファイル)は2、脆弱な鍵が見つかった場合は4を返します。戻りコードはビットマスクとして組み合わせることができます(例:2|4=6 は、一部の鍵が脆弱で、一部はスキャンできなかったことを示します)。

スキャン

badkeysはSSHおよびTLSホストをスキャンし、その公開鍵を自動的にチェックできます。これはパラメータ -s(SSH)と -t(TLS)で有効にできます。デフォルトでは、SSHはポート22でスキャンされ、TLSは一般的なプロトコル用にいくつかのポート(https/443、smtps/465、ldaps/636、ftps/990、imaps/993、pop3s/995、および非標準のhttpsポートとしてよく使われる8443)でスキャンされます。

代替ポートは --tls-ports および --ssh-ports で設定できます。

TLSとSSHのスキャンは組み合わせることができます:

badkeys -ts example.org

スキャンモードには制限があることに注意してください。TLS/SSHキーを収集し、badkeysでローカルにスキャンするには、他のツールを使用する方が望ましいことがよくあります。

SSHスキャンには追加の依存関係としてparamikoが必要です。

TLSスキャンは1つのホスト上の複数の証明書(例:ECDSAとRSA)を検出できません。これはPythonのssl.get_server_certificate()関数の制限です。

PythonモジュールとAPI

badkeysはPythonモジュールとしても使用できます。ただし、現在このソフトウェアはベータ版であり、APIは定期的に変更される可能性があります。

概要

badkeysはHanno Böckによって作成されました。

この作業は、2022年にIndustriens FondからCIDIプロジェクト(デンマーク産業におけるサイバーセキュアIoT)およびデンマーク・コペンハーゲンIT大学のCenter for Information Security and Trust (CISAT)を通じて初期資金提供を受けました。2025/2026年には、badkeysはNLnetのNGI0 Core Fundから支援を受けました

カテゴリ