2010-11-21 12 views
1

Botan 유틸리티를 사용하여 암호화를 수행하고 있습니다. SSH를 사용하여 원격 시스템에 연결을 초기화 할 때 보안 SSH 연결을 통해 키를 교환 할 수 있습니다. 그러나 때때로 inetd를 사용하여 연결을 설정합니다.이 경우 inetd 연결에는 보안이 없지만 원격 컴퓨터와 키를 교환하는 데 사용해야합니다.안전하지 않은 연결을 통해 암호화 키를 보내는 방법?

불안정한 채널을 통해 공개 키를 보내고 리모트 쪽이 이것을 사용하여 안전하지 않은 채널을 통해 내게 다시 전송할 키를 암호화하는 데 사용한다고 상상해보십시오.이 암호를 해독하면 키.

Botan이 지원하는 이러한 프로토콜 종류의 예는 무엇입니까?

+1

당신은 키 교환, 디피 - 헬만을 할 필요가 또는 공개 키 또는 뭔가. 발견 : http://files.randombit.net/botan/tutorial.pdf 키 쌍 생성은 12 페이지에 있습니다. – AndreKR

+1

여기의 문제는 고전적인 MITM입니다. 초기 전송에서 원격 측에 수신 한 키가 본인의 것인지 아니면 공격자의 것인지 여부를 확인하는 방법입니다. 원격 측에서 신뢰하기로 결정하면 침입자의 키에 신뢰를 부여한 후 응답을 가로 채어 자신의 암호를 대체 할 수 있습니다. 안전하지 않은지, 이것이 있는지 여부를 확인할 방법이 없다. aken 장소 또는 아닙니다,이 채널만을 사용합니다. – Piskvor

+2

@AndreKR : 사전에 일종의 신뢰를 구축해야합니다. 그렇지 않으면 신뢰할 수있는 채널을 통해 신뢰를 구축해야합니다. 그렇지 않으면 DH + kex *는 이후의 시도에서 동일한 원격 종단점과 통신하고 있다는 것입니다. 상대방에 대한 보증을 제공하고 키를 안전하게 교환 할 수 있습니다. – Piskvor

답변

3

이전 트러스트 또는 사이드 채널을 통한 통신이 없으면이를 수행 할 방법이 없습니다. Diffie-Hellman kex를 사용하면 연결에 참여하지 않은 다른 사람들에 대해 안전한 채널을 설정할 수 있지만 원하는 수신자와 통신하고 있는지 확인할 수는 없습니다.

클래식 MITM 예 : 일부 원격 종점에 연결하면 공개 키를 받고 그 키로 서명 된 것을 보냅니다. 그러나 실제 목적지로 키를 전송했는지 또는 공격자가 응답을 보낸 것인지 확인할 수있는 방법이 없습니다. 따라서 안전한 터널이 있지만 안전하게 통신하는 정보가 없습니다 (예 : 공격자는 의도 한 목적지에 연결하여 암호화되지 않은 채 통과하는 트래픽을 프록시 처리 할 수도 있습니다.

의도 한 끝점과 실제로 통신하고 있는지 확인하려면 먼저 호스트의 식별을 보안 채널을 통해 교환해야합니다. SSH는 "지문"을 사용하여이 작업을 수행합니다. 호스트를 신뢰하고 독립적 인 채널을 통해 지문을 확인한다고 가정하면 처음 연결할 때 묻습니다.

2

내가 비슷한 상황에서 수행 한 작업은 처음에는 개인/공개 키 쌍을 교환하도록 준비했기 때문에 각 클라이언트의 공개 키를 가지고 있으므로 연결되면 메시지가 전달되었습니다. 그때 내가 해독 할 수있는 타임 스탬프.

타임 스탬프가 유효하고 타임 스탬프가 유효하면 (타임 스탬프의 수명으로 5 초를 사용했습니다) 안전하게 통신 할 수있는 방법이 있으므로 키를 교환합니다.

그러나이 작업은 사전에 수행해야했습니다.

익명 사용자가 연결할 수없고 불가능한 보안이 필요한 경우. 나는이 같은 문제에 매우 도움이되었다고

한 문서는 신뢰할 수없는 시스템 관리자와 보안 통신을하려고 * 프로그래밍 사탄의 컴퓨터 ", http://www.cl.cam.ac.uk/~rja14/Papers/satan.pdf했다.