단계별 키 및 메시지 교환(CNG 예제)

암호화 개인/공개 키 솔루션은 중간자 개입 공격에 취약합니다.이러한 공격은 도청, 바꿔치기, 서비스 거부 및 피싱 등의 다양한 형태를 취할 수 있습니다.CNG(Cryptography Next Generation) 보안 통신 예제에서는 제3자(Mallory)가 두 통신 끝점(Alice와 Bob) 사이에 개입하는 바꿔치기 공격에 대해 설명합니다.

다음 단원에서는 CNG 예제 개요에서 설명하는 다섯 가지 보안 버전에 대한 배경 정보, 그림 및 단계별 지침을 제공합니다.

  • 버전 1: 기본적인 메시지 교환

  • 버전 2: 서명되지 않은 키와 서명되지 않은 메시지 교환

    • 가로채기를 수행하지 않는 경우

    • 가로채기를 수행하는 경우

  • 버전 3: 서명된 키와 서명된 메시지 교환

  • 버전 4: 서명된 키와 서명된 메시지 교환(감지 사용)

  • 버전 5: 서명된 키와 서명된 메시지 교환(응용 프로그램 종료 사용)

버전 1: 기본적인 메시지 교환

다음 그림에서는 중간자 개입 공격이 없는 경우 Alice와 Bob이 메시지를 전송하는 모습을 보여 줍니다.메시지는 암호화되거나 디지털 서명되지 않습니다.CNG 예제에서 버전 1을 선택하면 이 절차를 볼 수 있습니다.그림 아래에 이 과정이 단계별로 설명되어 있습니다.

버전 1: 기본적인 메시지 교환

버전 1: 기본적인 메시지 교환

Alice와 Bob은 암호화 및 서명되지 않은 메시지를 전송합니다.

1.Alice가 메시지를 만듭니다.

2.Alice가 Bob에게 메시지를 전송합니다.

3.Bob이 Alice의 메시지를 받습니다.

4.Bob이 메시지를 만듭니다.

5.Bob이 Alice에게 메시지를 전송합니다.

6.Alice가 Bob의 메시지를 받습니다.

버전 2: 서명되지 않은 키와 서명되지 않은 메시지 교환(가로채기를 수행하지 않는 경우)

다음 그림에서는 중간자 개입 공격이 없는 경우의 키와 메시지 교환을 보여 줍니다.CNG 예제에서 버전 2를 선택하고 Mallory에 의한 가로채기를 해제하면 이 절차를 볼 수 있습니다.그림 아래에 이 과정이 단계별로 설명되어 있습니다.

버전 2: 서명되지 않은 키와 서명되지 않은 메시지 교환(가로채기를 수행하지 않는 경우)

버전 2: 서명되지 않은 키와 서명되지 않은 메시지(가로채기 사용 안 함)

Alice와 Bob이 자신의 키를 만듭니다.

1.Alice가 공개/개인 키 쌍을 생성합니다.

2.Alice가 자신의 공개 키를 Bob에게 전송합니다.

3.Bob이 Alice의 공개 키를 저장합니다.

4.Bob이 공개/개인 키 쌍을 생성합니다.

5.Bob이 자신의 공개 키를 Alice에게 전송합니다.

6.Alice가 Bob의 공개 키를 저장합니다.

Alice와 Bob이 일치하는 키 자료를 파생합니다.

7.Alice가 자신의 개인 키와 Bob의 공개 키를 사용하여 공유 비밀 계약을 생성합니다.그런 다음 공유 비밀 계약을 사용하여 키 자료를 파생합니다.

8.Bob이 자신의 개인 키와 Alice의 공개 키를 사용하여 동일한 공유 비밀 계약을 생성합니다.그런 다음 공유 비밀 계약을 사용하여 Alice와 동일한 키 자료를 파생합니다.

공유 비밀 계약 및 키 파생에 대한 자세한 내용은 ECDH 알고리즘 개요(CNG 예제)를 참조하십시오.

Alice와 Bob이 서로 메시지를 전송합니다.

9.Alice가 메시지를 만들고 키 자료를 사용하여 암호화합니다.

10.Alice가 Bob에게 암호화된 메시지를 전송합니다.

11.Bob이 메시지를 받아 암호를 해독합니다.

12.Bob이 메시지를 만들고 키 자료를 사용하여 암호화합니다.

13.Bob이 Alice에게 메시지를 전송합니다.

14.Alice가 메시지를 받아 암호를 해독합니다.

버전 2: 서명되지 않은 키와 서명되지 않은 메시지 교환(가로채기를 수행하는 경우)

다음 그림에서는 중간자 개입 공격이 있는 경우의 키와 메시지 흐름을 보여 줍니다.CNG 예제에서 버전 2을 선택하고 Mallory에 의한 가로채기를 활성화하면 이 절차를 볼 수 있습니다.

버전 2: 서명되지 않은 키와 서명되지 않은 메시지 교환(가로채기를 수행하는 경우)

버전 2: 서명되지 않은 키와 서명되지 않은 메시지(가로채기 사용)

Mallory가 Bob을 가장합니다.

1.Alice가 공개/개인 키 쌍을 생성합니다.

2.Alice가 자신의 공개 키를 Bob에게 전송합니다.

3.Mallory가 Alice의 공개 키를 가로채서 저장합니다.

4.Mallory가 Alice와 사용할 자신의 공개/개인 키 쌍을 생성합니다.

5.Mallory가 자신의 공개 키를 Alice에게 전송하고 Bob이 보낸 것처럼 가장합니다.

6.Alice가 Mallory의 공개 키를 Bob의 키로 간주하고 저장합니다.

Mallory는 Alice와 키를 완전히 교환하기 전까지 Bob에 대한 채널을 만들지 않습니다.이는 Alice와 PublicChannel을 공유하기 때문입니다. 자세한 내용은 소스 코드 개요를 참조하십시오.Mallory는 자신이 바꿔친 키를 Alice에게 전송한 후에만 PublicChannel을 닫고 다시 연 다음 Bob에게 연결할 수 있습니다.

이 단계를 Alice가 보낸 메시지가 Bob에게 전송되는 17-22단계와 비교해 보십시오.

Mallory가 Alice를 가장합니다.

7.Mallory가 Bob과 사용할 두 번째 공개/개인 키 쌍을 생성합니다.

8.Mallory가 자신의 공개 키를 Bob에게 전송합니다.

9.Bob이 Mallory의 공개 키를 Alice의 키로 간주하고 저장합니다.

10.Bob이 공개/개인 키 쌍을 생성합니다.

11.Bob이 자신의 공개 키를 Alice에게 전송합니다.

12.Mallory가 Bob의 공개 키를 가로채서 저장합니다.

Alice와 Mallory가 일치하는 키 자료를 파생합니다.

13.Alice가 자신의 개인 키와 Bob의 공개 키로 간주되는 키(실제로는 공개 Mallory/Alice 키)를 사용하여 공유 비밀 계약을 생성합니다.그런 다음 공유 비밀 계약을 사용하여 Mallory/Alice 키 자료를 파생합니다.

14.Mallory가 자신의 개인 키와 Alice의 공개 키를 사용하여 동일한 공유 비밀 계약을 생성합니다.그런 다음 공유 비밀 계약을 사용하여 Alice와 동일한 키 자료를 파생합니다.

Bob과 Mallory가 일치하는 키 자료를 파생합니다.

15.Mallory가 자신의 개인 키와 Bob의 공개 키를 사용하여 공유된 비밀 계약을 생성합니다.그런 다음 공유 비밀 계약을 사용하여 Mallory/Bob 키 자료를 파생합니다.

16.Bob이 자신의 개인 키와 Alice의 공개 키로 간주되는 키(실제로는 공개 Mallory/Bob 키)를 사용하여 동일한 공유 비밀 계약을 생성합니다.그런 다음 공유 비밀 계약을 사용하여 Mallory와 동일한 키 자료를 파생합니다.

참고

13단계 및 16단계 이후 Alice와 Bob은 서로 동일한 키 자료를 공유하고 있다고 생각하지만실제로는 서로가 아닌 Mallory와 키 자료를 공유하고 있는 것입니다.

Alice가 Bob에게 메시지를 전송합니다.

이 시점에서 Mallory는 사용 가능한 두 개의 파이프를 열었으므로 이중 대화에 참여할 수 있습니다.이는 Mallory가 한 번에 채널을 하나만 열어 암호화 키를 가로챈 1-6단계와 다릅니다.

17.Alice가 메시지를 생성하고 13단계에서 생성한 Mallory/Alice 키 자료를 사용하여 암호화합니다.Bob에게 보낼 메시지의 내용은 판매 예상 고객에 대한 것입니다.

18.Alice가 Bob에게 메시지를 전송합니다.

19.Mallory가 메시지를 가로채서 암호를 해독하고고객 정보를 알아냅니다.

20.Mallory가 Alice의 메시지를 기초로 가짜 메시지를 생성하고 고객의 주소를 변경합니다.그런 다음 공유 Mallory/Bob 키 자료를 사용하여 가짜 메시지를 암호화합니다.

21.Mallory가 Bob에게 메시지를 전송합니다.

22.Bob이 메시지의 암호를 해독하고 Alice가 보낸 것으로 간주합니다.

Bob이 Alice에게 메시지를 전송합니다.

23.Bob이 메시지를 생성하고 16단계에서 생성한 Mallory/Bob 키 자료를 사용하여 암호화합니다.Alice에게 보낼 메시지의 내용은 고객을 만날 예정이라는 것입니다.

24.Bob이 Alice에게 메시지를 전송합니다.

25.Mallory가 메시지를 가로채서 암호를 해독하고 삭제합니다.

26.Mallory가 공유 Mallory/Alice 키 자료를 사용하여 가짜 메시지를 생성합니다.Alice에게 보낼 메시지의 내용은 판매 고객의 주소가 잘못된 것 같지만 계속 연락을 취해 보겠다는 것입니다.

27.Mallory가 Alice에게 메시지를 전송합니다.

28.Alice가 메시지의 암호를 해독하고 Bob이 보낸 것으로 간주합니다.메시지의 내용을 그대로 믿고 다른 고객으로 주의를 돌립니다.

버전 3: 서명된 키와 서명된 메시지 교환(가로채기를 수행하는 경우)

다음 그림에서는 암호화 키와 메시지의 흐름, 중간자 개입 공격 및 키와 메시지에 서명하는 데 사용된 디지털 서명을 보여 줍니다.CNG 예제에서 버전 3을 선택하고 Mallory에 의한 가로채기를 활성화하면 이 시나리오를 볼 수 있습니다.

버전 3: 서명된 키와 서명된 메시지 교환(가로채기를 수행하는 경우)

버전 3: 서명된 키와 서명된 메시지(가로채기 사용)

버전 3은 버전 2와 동일하지만 디지털 서명을 사용하여 메시지와 암호화 키에 서명한다는 점이 다릅니다.

1-6단계에서 Alice는 비보안 PublicChannel을 통해 디지털 서명 키를 전송하고 Mallory는 이 키를 가로채서 자신이 바꿔친 키와 메시지에 서명하는 데 사용합니다.따라서 Alice, Bob 및 Mallory는 동일한 디지털 서명 키를 사용합니다.15, 20, 35 및 42단계에서 Alice와 Bob이 키 및 메시지 서명의 유효성을 검사해도 Mallory의 가로채기를 감지할 수 없습니다.

버전 4: 서명된 키와 서명된 메시지 교환(감지 사용)

다음 그림에서는 암호화 키와 메시지의 흐름, 중간자 개입 공격 및 키와 메시지에 서명하는 데 사용된 디지털 서명을 보여 줍니다.또한 버전 4 소프트웨어에서는 잘못된 서명을 감지합니다.CNG 예제에서 버전 4를 선택하고 Mallory에 의한 가로채기를 활성화하면 이 시나리오를 볼 수 있습니다.

버전 4: 서명된 키와 서명된 메시지 교환(감지 사용)

버전 4: 서명된 키와 서명된 메시지(감지 사용)

버전 4와 버전 3의 차이점은 다음과 같습니다.

  • 버전 4 소프트웨어는 Alice와 Bob에게만 주어집니다.

  • 버전 4는 버전 3에서 사용된 디지털 서명 키를 전송하지만 이를 가짜 키로 취급합니다.

  • 버전 4에서 Alice는 Mallory가 알지 못하는 개인 채널을 통해 Bob에게 두 번째 디지털 서명 키를 전송할 수 있습니다.이는 위 그림에서 0단계에 해당합니다. Alice와 Bob은 이 개인 디지털 서명을 사용하여 키와 메시지에 서명합니다.

  • 버전 4의 경우 15, 20, 35 및 42단계에서 Mallory의 잘못된 서명이 감지되고 보안 경고가 표시됩니다.

Mallory는 계속 버전 3 디지털 서명을 사용하여 자신이 바꿔친 키와 메시지에 서명합니다.그 결과는 다음과 같습니다.

  • 버전 4 개인 디지털 서명 키에 대해 알 수 없습니다.

  • 보안 경고를 받지 않습니다.

  • Alice와 Bob이 잘못된 키와 메시지 서명을 감지할 수 있다는 사실을 모릅니다.

버전 5: 서명된 키와 서명된 메시지 교환(세션 종료 사용)

다음 그림에서는 암호화 키와 메시지의 흐름, 중간자 개입 공격 및 키와 메시지에 서명하는 데 사용된 디지털 서명을 보여 줍니다.버전 4와 마찬가지로 잘못된 서명이 감지됩니다.CNG 예제의 버전 5를 선택하고 Mallory에 의한 가로채기를 활성화하면 이 시나리오를 볼 수 있습니다.

버전 5: 서명된 키와 서명된 메시지 교환(종료 사용)

버전 5: 서명된 키와 서명된 메시지(세션 종료 사용)

버전 5는 버전 4와 동일하지만 Alice와 Bob이 받은 공개 암호화 키의 디지털 서명이 잘못된 경우 세션이 종료된다는 점이 다릅니다.

참고 항목

개념

CNG(Cryptography Next Generation) 보안 통신 예제

암호화 서비스