2010-06-20 4 views
5

HTTPS 보안 모델에서 가장 약한 부분은 브라우저에서 신뢰할 수있는 CA 목록입니다. 누군가가 추가 CA를 목록에 삽입하여 사용자가 잘못된 사람을 신뢰할 수있는 방법에는 여러 가지가 있습니다.서버 측에서 HTTPS man-in-middle 공격을 방지하는 방법은 무엇입니까?

예 : 공용 컴퓨터 또는 회사의 PC. 관리자는 혼자서 발급 된 CA를 신뢰하도록 강요 할 수 있습니다. HTTPS 릴레이를 사용하는 HTTPS 프록시 서버에서는 매우 불안정 할 수 있습니다. 결과적으로, 사용자는 메시지, 로그인 및 암호를 스파이 할 수 있으므로 브라우저에서도 신뢰할 수있는 SSL 연결 상태임을 알 수 있습니다.

이 경우 사용자와 시스템을 보호하기 위해 웹 응용 프로그램 개발자가 할 수있는 작업은 무엇입니까?

+1

신뢰할 수있는 루트 CA 인증서를 설치하려면 사용자 컴퓨터에 액세스해야합니다. 일단 기계에 액세스하면 인증서를 설치하는 것보다 데이터를 훔치는 것이 훨씬 쉬워 지므로이 시나리오는 SSL 보안의 유용성면에서 실제로 유효하지 않습니다. SSL은 사용자가 사용자 컴퓨터에 직접 액세스하지 않고도 유선을 통해 전송 된 트래픽을 스니핑하는 중간자 (man-in-the-middle) 공격으로부터 보호해야합니다. – TheCodeKing

답변

4

웹 응용 프로그램 개발자는 이에 대해 거의 할 수 없습니다.

이 문제는 스택 아래로 처리해야합니다.

전 세계 사람이 원하는 경우 :

a. 다른 컴퓨터에 허위 루트 CA 넣기

b. 해당 CA에서 도메인에 대한 인증서를 발행하십시오

c. 사이트로 가장하십시오

d. 귀하의 도메인에 대한 다른 사용자의 로컬 DNS 항목을 다른 IP 주소로 지정하십시오.

위의 단계 중 어느 단계에서도 응용 프로그램이 관련되거나 문의되지 않으므로 네트워크 관리와 보안이 중요합니다.

그 외에도 개인 네트워크에서 로컬에서만이 작업을 수행 할 수있는 합법적 인 이유가있을 수 있습니다. 나는 그들을 어떻게 막을 것인가?

이것은 본질적으로 기업 웹 프록시 필터가 수행하는 것이며 본인의 권리가 있습니다.

악의적 인 사람이 위의 조치를 취하는 것을 막을 때까지는 고객 시스템 관리자에게 필요한 사항이 있습니다. 사용자의 단말기가 공격자에 의해 소유되는 경우

+0

최근 질문 http://stackoverflow.com/questions/19993696/is-there-any-way-to-access-ssl-certificate-details-using-javascript 가능한 해결 방법을 알려주십시오. 이 프로젝트 https://github.com/digitalbazaar/forge는 JavaScript가 SSL 정보를 읽는 데 도움이 될 수 있으며 CA 발급자 이름이 일치하지 않으면 일종의 경고를받을 수 있습니다. –

1

이론적으로, 말하기, 당신은 이미 잃은 당신이 그것을에 대해 할 수있는 건 없어 - 푸시은 그들이 당신의 대책을 필터링하거나 긁어 스푸핑 할 수 쑤셔 넣어 오면 전체 사이트.

실제적으로 상대방의 작업을 어렵게 만들 수 있지만 은 무기 경쟁입니다. 악의적 인 소프트웨어가 스캐너와 비교하여 사용하는 모든 종류의 대응책을 사용해야 할 것입니다. 왜냐하면 적의 관점에서 볼 때 사이트가 무효화되는 것을 막아 악의적 인 행동을하기 때문입니다! - 당신이 할 수있는 모든 일이 당신의 적을 충분히 염두에두면 신속히 반대 될 것이라는 것을 알고 있어야합니다.

예를 들어 자바 스크립트 또는 애플릿에서 소켓을 열거 나 XmlHttpRequest을 사용할 수 있지만 추가 한 항목을 제거하기 위해 필터를 업데이트하지 못하게 할 수 없습니다.

다형성 출력을 내거나 다른 리버스 엔지니어링 기술을 사용하면 더 많은 마일리지를 얻을 수 있으므로 사이트에 두 번의 히트가 없어 브라우저에 전송 된 유사한 코드/리소스가 생성되지 않습니다.과도한 양의 작업이지만 상대방에게 사람을 중간에서 놀고 싶다면 씹을 퍼즐을줍니다.

관련 문제