openssl 명령 줄 도구를 사용하여 SSL 트래픽 암호 해독


2

openssl명령 줄 도구를 사용하여 수동 데이터 추출 / 암호화 / 복호화를 시도하고 있습니다.

RFC5246을 검토하여 필요한 작업을 해결했습니다. 해당 도구로이 단계를 수행 할 수 있는지 여부는 분명하지 않습니다. 설명의 개인 키는 자체 서명 된 인증서를 만들 때 생성 된 개인 키라고 가정합니다.

RSA가 서버 인증 및 키 교환에 사용되면 48 바이트 pre_master_secret이 클라이언트에 의해 생성되어 서버의 공개 키로 암호화되어 서버로 전송됩니다. 서버는 개인 키를 사용하여 pre_master_secret을 해독합니다. 그런 다음 두 당사자 모두 위에서 지정한대로 pre_master_secret을 master_secret로 변환합니다.

내 가정이 올바른지 누군가가 말해 줄 수 있습니까? 캔 openssl명령 줄 도구는이 마스터 키를 생성하는 데 사용할 수 있도록 서버에 대한 pre_master 키를 생성하기 위해 클라이언트에서 사용하고 내 서버 개인 키와 함께 제공하고 pre_master_secret을 암호화?

그렇다면 도구에 익숙하지 않기 때문에 어떻게 해야할지 모르겠습니다.

내가 지적해야 할 또 다른 것은 내가 작업하고있는 암호 제품군이 TLS_RSA_WITH_AES_256_CBC_SHA이며 Wireshark에서 클라이언트의 pre_master_secret이 256 바이트 길이임을 알 수 있습니다.

답변:


4

나는 확실하지 않지만 대답은 '아니오'라고 생각합니다. openssl명령 행 클라이언트 도구의 이기종 모음입니다. X.509 명령은 인증서를 조작하는 데 유용 할 수 있지만 암호화 명령은 OpenSSL 자체를 테스트하는 것 외에는 거의 유용하지 않습니다.

일반적인 알고리즘으로 암호화 계산을 수행해야하는 경우 Cryptodome 라이브러리를 사용하여 Python 대화식 명령 행을 권장합니다 .

그러나 SSL 연결을 해독하려면 가장 쉬운 방법은 일반적으로 Wireshark를 사용하는 것입니다. Wireshark에 개인 키를 찾을 수있는 위치를 알려 주면 RSA 암호화를 사용하는 TLS 연결이 해독됩니다. 임시 Diffie-Hellman을 사용하는 연결의 경우 키만으로는 트래픽을 해독 할 수 없으므로 클라이언트 또는 서버의 추가 정보 가 필요 합니다 .


TLS_RSA_WITH_AES_256_CBC_SHA암호 스위트 를 사용 하는 것은 여러 가지 이유로 나쁜 생각입니다.

  • 그것은이없는 앞으로 비밀을 서버의 개인 키가 손상된 경우,이 키를 사용하여 모든 연결도 손상되어 그. Diffie-Hellman 키 교환 (이름이 EDH 또는 ECDHE 인)을 사용하는 암호 슈트는 앞으로 비밀을 유지합니다.
  • 패딩과 관련된 RSA 암호 해독을 사용합니다. 패딩은 고전적인 구현 버그 소스 및 사이드 채널을 통한 누출입니다. RSA 외에 이름이 EDH 또는 ECDHE이거나 DSA 또는 ECDSA 인 암호 슈트는 암호 해독 대신 서명을 사용하므로 구현 결함이 발생할 가능성이 적습니다.
  • 패딩을 포함하는 CBC 암호 해독을 사용합니다. 패딩은 고전적인 구현 버그 소스 및 사이드 채널을 통한 누출입니다. 이름에 CBC가없는 암호 슈트는 구현 결함을 겪을 가능성이 적습니다.

1

SSL / TLS-to-1.2 일반 RSA 키 교환에서 사용하는 RSAES-PKCS1v1_5는 OpenSSL 명령 줄 작업 rsautl또는pkeyutl 2010 년 1.1.0 이후의 암호 해독으로 해독 할 수 있습니다 . Windows 또는 온라인이 아닌 경우 시스템에서 사용할 수있는 해당 매뉴얼 페이지를 참조하십시오 .

이것은 프리 마스터 비밀을 제공하며, 그 자체로는 트래픽을 해독 (또는 인증) 할 수 없습니다. 마스터 시크릿과 nonces를 사용하여 마스터 시크릿을 파생시킨 다음 마스터 시크릿과 nonces를 사용하여 작업 키를 파생시켜야합니다 (복수). 파생 함수 'PRF'는 SSLv3 (더 이상 사용되지 않음), TLS 1.0 및 1.1 (RFC 2246 및 4346) 및 TLS 1.2 (RFC 5246)간에 다릅니다. (PRF는 초안에 따라 TLS 1.3에서 다시 달라 지지만 일반 RSA 키 교환도 완전히 제거됩니다.)

명령 행은 SSL / TLS PRF에 직접 액세스 할 수 없지만, HMAC가 작성된 HMAC를 수행 할 수 있습니다 (SSLv3 제외). dgst위와 같은 곳에서 man 페이지를 참조하십시오. 참고 -hmac $key는 쉘 / etc에서 전달할 수있는 바이트 시퀀스 만 처리 할 수 ​​있으므로 전부는 아니므로 -mac hmac -macopt hexkey:$hexkey대신 필요할 수 있습니다 .

즉, Gilles와 동의하면 wireshark가 훨씬 쉽게 할 수 있습니다. 문제가 캡처 파일이 아닌 다른 형식의 데이터를 가지고 있다면 wireshark 배포판에는 일반적으로 가짜 캡처를 구성 할 수있는 파일을 조작하기위한 몇 가지 보조 명령 줄 도구가 제공되는데,이 경우 wireshark 또는 tshark main은 해독 할 수 있습니다.


감사합니다. 여전히 큰 학습 곡선에 있습니다. 실제로 openssl에 쉘을 적용하여 MUMPS 언어 로이 작업을 수행 할 수 있는지 확인하려고합니다. 다른 질문을 게시하지 않고 어떻게 후속 질문을합니까?
David B

(1) MUMPS를 알지 못하지만 (M으로 줄어 들었다고 들었습니까?) openssl 명령 줄이 처리 할 수없는 부분이나 처리 방법을 말할 수는 없습니다. 이것은 아마도 스택 오버 플로우에 대한 주제입니다 (여기서는 안 됨). (2) 일반적인 스택 철학은 Q 당 하나의 질문과 그 Q에 대한 답변 (그것을 설명하는 데 도움이되는 링크가 있음)을 가지고 있으므로 각 문제 또는 주제를 찾는 사람들이 각각을 찾을 수 있습니다. 그러나 후속 조치가 원본에 가깝다 면 이 Q를 편집하여 추가 할 수 있습니다 (그러나 이미 해결 된 문제를 제거하는 것은 무의미합니다).
dave_thompson_085

MUMPS는 때때로 "M"이라고합니다. 예, 맞습니다. 나는 후속 질문을 여기에서 링크를 요청했다 ] 나는 희망적으로 openssl이 할 수없는 MUMPS에서 필요한 모든 것을 처리 할 수 ​​있습니다. 지금까지 나는 RFC를 읽고 약간 노력하고 있지만 인정하기 위해 노력하고 있습니다. 내 MUMPS 프로그램이 인증서를 제공하고 있으며 지금까지 악수 메시지와 관련하여 협상하는 과정에 있습니다. 당신이나 누군가가 내 후속 조치를 확인하고 다음에 도움이된다면 도움이 될 것입니다.
David B
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.