
명령줄 도구를 사용하여 수동으로 데이터 추출/암호화/암호 해독을 수행하려고 합니다 openssl
.
나는 내가 해야 할 일을 알아보기 위해 RFC5246을 검토해 왔습니다. 해당 도구를 사용하여 이 단계를 수행할 수 있을지는 확실하지 않습니다. 설명에 나오는 개인 키는 자체 서명된 인증서를 만들 때 생성된 개인 키라고 가정합니다.
RSA가 서버 인증 및 키 교환에 사용되는 경우 48바이트 pre_master_secret이 클라이언트에 의해 생성되고 서버의 공개 키로 암호화되어 서버로 전송됩니다. 서버는 개인 키를 사용하여 pre_master_secret을 해독합니다. 그런 다음 양 당사자는 위에 지정된 대로 pre_master_secret을 master_secret으로 변환합니다.
누군가 내 가정이 맞는지 말해 줄 수 있습니까? openssl
명령줄 도구를 사용하고 내 서버 개인 키와 함께 제공하고 클라이언트에서 pre_master_secret을 암호화하여 마스터 키를 만드는 데 사용할 수 있도록 서버용 pre_master 키를 생성할 수 있습니까 ?
그렇다면 도구에 대해 잘 알지 못하기 때문에 어떻게 해야 할지 잘 모르겠습니다.
제가 지적해야 할 또 다른 점은 제가 작업 중인 암호화 제품군이 TLS_RSA_WITH_AES_256_CBC_SHA이고 Wireshark에서 클라이언트의 pre_master_secret 길이가 256바이트라는 것을 볼 수 있다는 것입니다.
답변1
완전히 확신할 수는 없지만 대답은 '아니요'라고 생각합니다. 명령 openssl
줄 클라이언트는 이기종 도구 모음입니다. X.509 명령은 인증서를 조작하는 데 유용할 수 있지만 암호화 명령은 OpenSSL 자체를 테스트하는 것 외에는 거의 유용하지 않습니다.
일반적인 알고리즘으로 암호화 계산을 수행해야 한다면 Python 대화형 명령줄을 사용하는 것이 좋습니다.크립토돔도서관.
그러나 SSL 연결을 해독하는 가장 쉬운 방법은 일반적으로 Wireshark를 사용하는 것입니다.Wireshark에 개인 키를 찾을 수 있는 위치를 알려줍니다.RSA 암호화를 사용하는 TLS 연결의 암호를 해독합니다. 임시 Diffie-Hellman을 사용하는 연결의 경우 키만으로는 트래픽을 해독할 수 없습니다.클라이언트 또는 서버의 추가 정보.
ciphersuite 를 사용하는 것은 TLS_RSA_WITH_AES_256_CBC_SHA
여러 가지 이유로 나쁜 생각입니다.
- 그것은 가지고 있지 않습니다순방향 비밀성이므로 서버의 개인 키가 손상되면 이 키를 사용한 모든 연결도 손상됩니다. Diffie-Hellman 키 교환(이름에 EDH 또는 ECDHE 포함)을 사용하는 암호 제품군에는 순방향 보안이 적용됩니다.
- 이는 구현 버그 및 사이드 채널을 통한 누출의 전형적인 소스인 패딩과 관련된 RSA 암호 해독을 사용합니다. 이름에 RSA 외에 EDH 또는 ECDHE가 있거나 DSA 또는 ECDSA가 있는 암호화 제품군은 암호 해독 대신 서명을 사용하며 구현 결함이 발생할 가능성이 적습니다.
- 이는 구현 버그 및 사이드 채널을 통한 누출의 전형적인 소스인 패딩과 관련된 CBC 암호 해독을 사용합니다. 이름에 CBC가 없는 암호 제품군은 구현 결함이 발생할 가능성이 적습니다.
답변2
SSL/TLS-through-1.2 일반 RSA 키 교환이 사용하는 RSAES-PKCS1v1_5는 OpenSSL 명령줄 작업으로 해독될 수 있습니다.rsautl
또는pkeyutl
(후자는 2010년 1.1.0 이후) Windows가 아닌 경우 시스템에서 사용할 수 있는 해당 매뉴얼 페이지를 참조하십시오.온라인.
이는 자체적으로 트래픽을 해독(또는 인증)할 수 없는 프리마스터 비밀을 제공합니다. 마스터 암호를 파생하려면 프리마스터와 nonce를 사용해야 하며, 작업 키(복수형)를 파생하려면 마스터 암호와 nonce를 사용해야 합니다. 파생 함수 'PRF'는 SSLv3(더 이상 사용되지 않음), TLS 1.0 및 1.1(RFC 2246 및 4346), TLS 1.2(RFC 5246) 간에 다릅니다. (PRF는 초안대로 TLS 1.3에서 다시 다르지만 일반 RSA 키 교환도 완전히 제거됩니다.)
명령줄은 SSL/TLS PRF에 직접 액세스할 수 없지만 PRF가 빌드된 HMAC를 수행할 수 있습니다(SSLv3 제외). dgst
위와 같은 위치에 있는 매뉴얼 페이지를 참조하세요 . note는 -hmac $key
쉘/등에서 전달될 수 있는 바이트 시퀀스만 처리할 수 있습니다. 이것이 전부는 아니므로 -mac hmac -macopt hexkey:$hexkey
대신 필요할 수도 있습니다.
즉, Wireshark를 사용하는 것이 훨씬 더 쉽다는 Gilles의 의견에 동의합니다. 문제가 캡처 파일이 아닌 다른 형식의 데이터가 있는 경우 Wireshark 배포판에는 일반적으로 가짜 캡처를 구성할 수 있는 파일을 조작하기 위한 여러 보조 명령줄 도구가 함께 제공됩니다. 이 경우 Wireshark 또는 tshark main은 암호를 해독할 수 있습니다.