2009-06-11 8 views
2

SSL 연결 (https)을 통해 웹 서버와 통신하는 클라이언트 프로그램이 있습니다. 이 연결은 얼마나 안전한가요? 내 웹 서버에 설치된 SSL 인증서를 구입했기 때문에 누군가 내 클라이언트와 서버 사이에서 man-in-the-middle 공격을 시도하더라도 인증서가없는 것입니다. 사실입니까?SSL 인증서가있는 경우에도 SSL 연결이 안전합니까?

예를 들어 호스트 이름 www.myserver.com을 소유 한 IP로 리디렉션하려고 시도한 경우 인증서가 설치되지 않은 신뢰할 수없는 소스가 연결로보고되므로 https가 계속 실패합니다.


단지 내 프로그램이 브라우저를 통해 볼 수있는 웹 페이지가 아니라 바이너리임을 지적하고 싶습니다. 따라서 단순히 "신뢰할 수없는 SSL을 허용"을 누르고 계속할 수 없습니다. 신뢰할 수없는 SSL 연결이 감지되면 내 바이너리가 종료되도록 코딩됩니다. 그렇다면 "중간에있는"누군가가 트래픽을 다른 곳으로 리디렉션하고 암호화 된 데이터를 추출 할 수 있습니까?

감사합니다.

답변

7

'중간자'가 실제로 클라이언트 컴퓨터에 앉아 있으면 (바이러스, 트로이 목마 또는 기타 맬웨어를 생각할 때) 해당 연결을 통해 진행되는 모든 작업을 읽고 수정할 수 있습니다. 그러나 클라이언트와 서버 사이에 클라이언트 프로그램이 SSL 인증서의 유효성을 검사한다면 연결은 매우 안전합니다.

4

SSL 인증서를 수락할지 여부를 선택하는 사람 (코드 아님)의 경우 호스트 이름 변경으로 인해 발생하는 오류로 인해 경고 상자를 지나치게 클릭 할 수 있기 때문에 모든 작업이 중단되지 않을 수 있습니다.

0

서버와 클라이언트간에 전송되는 데이터는 암호화됩니다.

그래서 예를 들어 그들은 연결이 보고한다 인증서가없는 신뢰할 수없는 소스가 설치되므로 HTTPS는 은 여전히 ​​실패, 자신이 소유의 IP에 호스트 이름 www.myserver.com 리디렉션 을 시도하는 경우?

예. 그러나 사용자가 보안에 대해 걱정하지 않는다면 경고 메시지는 무시 될 수 있습니다. 통신 만 안전하고 안전합니다. 수신 된 데이터를 해석하고 원하는 것을 수행 할 수있는 클라이언트 프로그램 (바이러스)이있는 경우. 따라서 보안 문제와 "안전한"PC의 중요성에 대해 클라이언트 (사용자)를 교육하는 것이 좋습니다.

매우 기밀 정보 인 경우 데이터가 전송 된 경우 비밀 키와 함께 전송할 데이터로 구성된 다이제스트 필드를 추가하고 클라이언트에 전달하여 다른 보안 계층을 추가 할 수 있습니다. 그런 다음 클라이언트는 데이터 수신 및 비밀 키로 다시 다이제스트를 만든 다음 불일치를 비교하여 비교할 수 있습니다.

불일치가있는 경우 데이터가 전송되는 동안 수정되었습니다.

3

이것은 클라이언트 쪽에서 인증서 유효성을 검사하는 방법과 유효성 검사 프로세스에서 신뢰하도록 선택한 CA에 따라 다릅니다.

클라이언트 응용 프로그램이 신뢰하는 CA 중 하나가 동일한 호스트 이름에 대한 인증서를 발급 한 경우이 인증서는 MITM 공격에서 사용할 수 있습니다. (그리고 사람들이 "wrong" 명에게 발행 한 인증서는 전례가 없습니다.)

서명이 유효한지 여부를 결정하기 위해 프로세스에 사용되는 CA는 SSL 라이브러리 및 사용 방법에 따라 다릅니다.

e.e. 브라우저의 경우, firefox는 브라우저가 기본적으로 신뢰하는 평판 좋은 SSL 공급 업체의 CA 인증서 집합과 번들로 제공됩니다.

Windows는 IE가 기본적으로 신뢰하는 인증서 저장소를 가지고 있으며 Microsoft SSL libraraies를 사용하는 다른 응용 프로그램이이 인증서 저장소를 사용하거나 기본적으로 사용하는 옵션을 가지고 있다고 추측합니다.

0

당신은 문제 혼동 : SSL이 제공하는

  1. 전송 수준 보안을;
  2. SSL을 지원하지 않는 클라이언트 인증.

응용 프로그램에 따라 SSH 터널과 같은 것을 사용하는 것이 좋습니다. 이는 전송을 보호하기위한 강력한 암호 및 공개 키 암호 사용을 통한 로그인 자격 증명을 모두 제공합니다.

각 클라이언트 프로그램에 대한 새로운 공개 키를 자동으로 생성하여 로그인을 위해 인증 된 키 목록에 추가 할 수 있습니다. 따라서 권한이 부여 된 클라이언트 만 액세스 할 수 있습니다.

대부분의 SSH 클라이언트는 알려진 호스트와 다른 공개 키를 가진 서버를 만날 때 자동으로 실패합니다. 이것을 자신의 서버 공용 키로 미리 구성 할 수 있습니다.

3

예, SSL을 사용할 때 일반적으로 MitM 공격으로부터 안전합니다. SSL을 방지하기 위해 설계 (수정)되었습니다.

SSL 인증서는 공개 정보이며 비밀 값이 없습니다. 귀하의 서버는 Hello라고 말한 모든 고객에게 서버를 제공합니다. 개인 키는 인증서의 공개 키와 일치해야합니다. 개인 키는 잘 보관해야합니다.

연결의 안전을 최대화하려면 클라이언트에서 허용 할 수있는 인증서를 엄격히 제한해야합니다. 실제로는 클라이언트 자체에 인증서 자체 (또는 인증서 해시)를 저장하여 정확히 일치하도록 제한 할 수도 있습니다. 이 경우 호스트 이름 일치에 신경 쓰지 않아도됩니다. 적대적인 중개인이 호스트 이름을 사용하여 CA에서 유효한 인증서를 가져올 수있는 극히 적은 기회조차 없애고 DNS를 전복했습니다.

0

핸드셋에서 클라이언트 인증을 제공합니다.