2009-10-27 2 views
12

Diffie-Hellman 키 교환 알고리즘을 사용하여 SSL 대신 웹 페이지에서 클라이언트 - 서버 통신을 암호화 할 수 있습니까? 가능한 경우 단점 (즉, 표준에서 인증 기관을 요구하는 SSL을 사용하는 이유)은 무엇입니까? Diffie-Hellman을 사용하여 공유 키를 비밀리에 설정하여 이후의 모든 통신을 암호화하는 데 사용할 수 있다는 것을 알고 있습니다.SSL 대신 Diffie-Hellman을 사용 하시겠습니까?

답변

9

사실 Diffie-Hellman은 SSL의 일부입니다. 그러나 한 부분이 다른 부분을 대체하지 않습니다. CA (

이 서버의 인증서 인증서 기관에서 서명 디피-Hellman 공개 매개 변수를 포함 의 디피 - 헬만 키 교환 : here SSL 디피 - 헬만에서

가 사용된다). 즉, 공개 키 인증서에는 Diffie-Hellman 공개 키 매개 변수가 포함되어 있습니다. 클라이언트는 디피 - 헬만 공개 키 매개 변수 중 하나 인증서, 클라이언트 인증 이 필요한 경우, 또는 키 교환 메시지를 제공합니다. 이 방법을 사용하면 고정 공개 키를 사용하는 Diffie-Hellman 계산을 기반으로 두 피어간에 고정 비밀 키가 생성됩니다.

+0

그래서 PKI 사용을 피할 방법이 없다고 생각합니다. 제 3 자의 사용없이 암호화 된 링크를 안정적으로 수립 할 수있는 알고리즘 오버 헤드에 관계없이 두 당사자가 사용할 수있는 방법이 있다면 호기심이 궁금합니다. – kmnan

+0

이론상으로 아니오. 타사를 사용하지 않고도 원하는 대상과의 암호화 된 링크를 설정하고 있는지 확신 할 수 없습니다. – alexkr

+0

물론 있습니다. 예를 들어, 두 당사자가 키 서명 파티 중에 공개 키를 교환하는 경우 보안 연결을 설정하기 위해 타사가 필요하지 않습니다. – Accipitridae

20

두 개는 실제로 비교할 수 없습니다. DH는 키 교환 알고리즘입니다. SSL은 연결하려는 서버가 실제로 누구인지 밝히기 위해 시도합니다. 그렇게하기 위해, 여러분은 믿을 수있는 누군가에게 추적 할 수있는 인증서를 사용합니다.

DH만으로는 다른 사람이 전송 된 데이터를 읽지 못하게합니다. SSL은 그 이상을 수립하기위한 것입니다 (하지만 DH를 사용하여 다른 사람들이 스트림을 읽지 못하게 할 수 있습니다).

명백한 예를 들자면 DH를 사용하면 중간 공격에서 사람이 상당히 간단합니다. 원하는 서버 대신 내 서버에 연결할 수있게하면 DH를 사용하여 "안전한"세션을 설정할 수 있습니다. 그런 다음 원래 의도했던 서버에 연결합니다. 내가 얻은 모든 패킷은 암호 해독하고 해당 서버에 연결하는 데 사용한 키로 다시 암호화 한 다음 해당 서버로 보냅니다. 나는 모든 응답 패킷과 동일하다. 당신에게 모든 것이 원래 서버에서 직접 나온 것처럼 보이며, 당신이 만든 구매는 정상적인 것처럼 작동합니다. 변경되는 유일한 점은 귀하의 신용 카드 번호도 저장한다는 것입니다. 그 다음날 연료를 충전하려고하면 충전이 거부됩니다. 그동안 귀하의 모든 신용을 소비했기 때문입니다.

SSL의 인증은 최소한 이러한 일이 발생하지 않도록하기위한 것입니다. 브라우저가 (예를 들어) www.amazon.com에 연결을 시도한 경우 SSL 인증서가 www.amazon.com으로 발행되었음을 지정하지 않은 경우 경고 메시지가 표시되고 CA는 인증서를 발급하지 않아야합니다 그런 인증서를 누구나하지만 아마존.

편집 :이 말을 다시 한 번 더 추가해야합니다. DH는 그 자체로도 위에서 말한 대부분을 보장하지 않습니다. 그 자체로, DH는 단지 키를 교환하는 방법 일뿐입니다 (또는 "키를 교환하지 않고 동일한 키를 만들기 위해 양 당사자가 필요한 정보를 교환해야합니다"라고도 할 수 있습니다). 양 당사자가 키를 가지고 있으면 데이터를 암호화/해독하는 데 (그리고 아마도) 사용할 수 있습니다. 그러나 암호화는 실제로 DH 자체와 별개입니다.

4

익명의 Diffie-Hellman 키 계약을 SSL과 함께 사용할 수 있습니다. 이는 채널에서 개인 정보를 제공하지만 인증은 제공하지 않습니다.

물론 인증 없이는 사적인 채널이 "man-in-the-middle"에 연결될 수 있기 때문에 프라이버시를 가질 수 없습니다. 그래서 익명의 DH 암호 스위트가 권장되지 않습니다.

인증서의 부족이 정말 필요한 SSL을 사용을 중지하는 경우, startcom.org.

+0

+1 - 깔끔한 링크, 개인 홈 서버에 대한 내 자신의 인증서를 만들었습니다 ... 방문자에게 추가 할 필요가 없도록 브라우저에 내장 된 CA를 사용하는 무료 인증서가 있음을 알지 못했습니다. 예외 –

+0

IE가 불행히도 그들을 지원한다고 생각하지 않습니다. 나는 최근에 그것을 검토하지 않았으므로 그것이 여전히 사실인지 잘 모르겠습니다. – erickson

+0

사실 startcom.org에 대한 빠른 확인은 그들이 인터넷 익스플로러를 지원한다는 것을 보여줍니다. – cmaduro

2

디피 - 헬만 키 교환에서 무료로 하나 keyexchange에 대한 입니다 얻을. 그것은 당신에게 인증을 제공하지 않습니다 (당신이 말하는 사람), 당신은 인증서와 PKI가 필요합니다.

그래서 예를 암호화 할 수 있지만 당신은 당신이, 자체 암호화 할 수 없습니다

1

에 DH 키 교환을 얘기하는 사람들과 잘 모릅니다. 세션 키를 설정하는 데 사용되지만 암호화는 수행하지 않습니다. 따라서이 수준에서 질문은 잘못 설명되거나 정확도 부족 또는 이해 부족을 나타냅니다 (정밀도가 이번에 문제라고 생각합니다).

질문 :

  • 는 모든 사람과 데이터를 암호화 하시겠습니까?
  • 누구와 통화하고 싶은지 확인 하시겠습니까?

이미 지적했듯이 SSL은 DH 키 교환을 사용하여 세션 키를 설정합니다. 그러나 다른 쪽 끝의 프로그램이 (직접 또는 간접적으로) 신뢰하는 사람임을 보증합니다. 다른 사람이 신뢰할 수 있는지 여부를 걱정할 필요가없는 경우 간단한 DH 키 교환을 사용하고 인증서가 필요없는 암호화 된 데이터를 보낼 수 있습니다. 그러나 당신이 그것을 확인하지 않는 한 당신이 누구와 이야기하고 있는지 확신 할 수 없을 것입니다 - 그리고 SSL 등에 의해 사용 된 인증서는 그 검증에 도움이됩니다.