
badkeys v0.0.20
암호화 공개 키에서 일반적인 취약점을 찾는 도구
badkeys
알려진 취약점이 있는지 암호화 공개 키를 확인하는 도구 및 라이브러리
무엇인가요?
badkeys는 다양한 형식의 공개 키에서 알려진 취약점을 확인합니다. 웹 버전은 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 스캔은 한 호스트에서 여러 인증서(예: ECDSA 및 RSA)를 감지할 수 없습니다. 이는 Python의 ssl.get_server_certificate() 함수의 제한 사항입니다.
Python 모듈 및 API
badkeys는 Python 모듈로도 사용할 수 있습니다. 그러나 현재 소프트웨어는 베타 상태이며 API는 정기적으로 변경될 수 있습니다.
정보
badkeys는 Hanno Böck가 작성했습니다.
이 작업은 2022년에 Industriens Fond가 CIDI 프로젝트(덴마크 산업의 사이버 보안 IoT)와 덴마크 코펜하겐 IT 대학교의 정보 보안 및 신뢰 센터(CISAT)를 통해 초기에 자금을 지원했습니다. 2025/2026년에는 badkeys가 NLnet의 NGI0 Core Fund의 지원을 받았습니다.