앞서 소개한 내용은 주로 대칭 암호화에 집중되어 있습니다. 이 문서부터 Dell 은 공개 키 암호화 알고리즘이라고도 하는 비대칭 암호화 알고리즘에 초점을 맞추고 있습니다. 전체 알고리즘에는 키 교환이라는 매우 중요한 부분이 있습니다. 키 교환' 사람' 은 이름에서 알 수 있듯이 해결해야 할 본질적인 문제는 키를 안전하게 교환하는 방법이다. 우리의 오랜 친구인 앨리스 왕후와 밥 경을 초청하여 설명하겠습니다. 앨리스 왕후와 밥 경이 안전하게 통신을 원한다고 가정하면, 앨리스 왕후와 밥 경은 각자의 키를 상대방에게 보낼 것이다. 이렇게 하면 통신 쌍방이 모두 * * * * 에서 공유하는 이 키를 보유하여 후속 정보 보안 상호 작용에 사용할 수 있습니다.
후속 토론을 더욱 접지하게 하기 위해, 우리는 앨리스 여왕과 밥 경이 한 번도 만난 적이 없다고 가정한다. 그러면 어떻게 여왕과 훈작이 안전하게 소통할 수 있을까? 이 문제는 키 교환 알고리즘의 가장 원시적인 응용 프로그램 시나리오이기도 하다. 여왕과 영주 간의 통신의 프라이버시를 보장하기 위해 양측 모두 * * * 공유 키가 필요하지만 보안 통신 * * * 공유 키는 생각만큼 간단하지 않습니다. 악의적인 공격자가 여왕과 영주 사이의 전화 통신이나 이메일 통신을 도청하면 (일반 텍스트 정보를 전송한다고 가정) 악의적인 공격자는 여왕과 영주가 공유하는 키를 훔칠 것이며, 이후의 모든 통신 내용은 이 키에 의해 해독될 수 있기 때문에 여왕과 영주 사이의 모든 개인 통신은 안전하지 않다. 통신 내용은 왕국 전체의 식사 후 이야기가 되었다.
이 문제를 어떻게 해결합니까? 이것은 키 교환 알고리즘이 해결해야 할 핵심 문제이다. 간단히 말해서, 키 교환 알고리즘을 통해 앨리스 왕후와 밥 경은 안전하게 키를 교환할 수 있다. 악의적인 공격자가 모든 통신 회선을 감청하고 있어도 양측으로부터 키를 얻을 수 없었지만, 여왕과 영주는 마침내 근심 없이 가십을 할 수 있게 되었다.
비밀 키 교환은 통신 쌍방이 그들 자신의 비밀 키를 생성하는 것으로 시작된다. 일반적으로 비대칭 암호화 알고리즘은 공개 키와 개인 키의 두 가지 키를 생성합니다. 그런 다음 통신 쌍방은 서로 자신의 공개 키를 보냅니다. 공개 키의' 공개' 는 여기서 공개를 의미합니다. 즉, 악의적인 공격자도 통신 쌍방이 생성한 공개 키 정보를 얻을 수 있습니다. 그런 다음 여왕과 영주가 받은 공개 키와 자신의 개인 키를 결합하면 * * * 공유 통신 키가 됩니다. 악의적인 공격자의 관점에서 이 공개 키를 볼 수 있습니다. 악의적인 공격자는 어느 쪽도 개인 키를 가지고 있지 않기 때문에 악의적인 공격자는 여왕과 영주 간의 통신을 위해' * * *' 키를 얻을 수 없습니다. * * * 여왕과 영주 쪽에서 비밀 키를 즐기는 과정에 대해서는 아래 그림과 같습니다.
키 교환 알고리즘의 일반적인 작동 메커니즘을 이해한 후, 키 교환 알고리즘이 앨리스 왕비와 밥 경 사이의 안전한 통신 문제를 어떻게 해결했는지 다시 한 번 살펴봅시다. 위 그림에 표시된 과정에서 여왕과 영주는 키 교환 알고리즘을 통해 인증 및 암호화 키로 사용할 수 있는 보안 통신에 사용할 수 있는 키를 결정합니다. 따라서 MITM (중매인 공격자) 이 여왕과 영주 간의 통신 데이터를 가로채더라도, 키가 없기 때문에 통신 내용은 깨지지 않고 여왕과 영주는 다음 그림과 같이 안전하게 통신할 수 있습니다.
하지만 여기에 묘사된 내용은 좀 엄격하지 않다. 기껏해야, 우리는 이런 시나리오를 수동적인 MITM 이라고 부를 수 밖에 없다. 백화문에서는 악의적인 공격자가 수동적으로 도청하는 것을 의미하지만, 활성 MITM 과의 주요 차이점은 활성 중개인이 키 교환 알고리즘으로 교환된 데이터를 가로채고 통신 쌍방의 역할을 동시에 시뮬레이션한다는 것이다. 특히 중매인은 여왕과 영주와 동시에 키를 교환하며, 통신측은 자신이 상대방과 * * * * * * 에 대한 * * * * 지식을 달성했다고 생각하지만, 본질적으로 여왕과 영주는 중매인과 관련된 * * * 너는 어떤 원인이 이런 오해를 불러일으켰는지 생각해 볼 수 있다.
사실 배후의 원인은 이해하기 어렵지 않다. 통신양측이 받은 공개 키와 통신의 종단 간 보유 관계를 판단할 수 있는 다른 수단이 없기 때문이다. 다음 그림과 같이 이 키 교환을 "무단" 키 교환이라고도 합니다.
그러면 MITM 의 주동적인 공격을 어떻게 해결할 수 있을까요? 인증 키 교환을 추측 할 수 있다고 생각합니다. 구체적인 비즈니스 시나리오를 통해 이러한 인증 모델이 필요한 이유를 살펴보겠습니다. 우리가 아리운에 배치된 시간 정보를 제공하는 서비스를 개발했다고 가정해 봅시다. 시간 데이터가 악의적인 공격자에 의해 수정되지 않도록 MAC (메시지 인증 코드) 를 사용합니다. MAC 에 대한 개념이 없다면 저자 이전의 문장 자료를 참고할 수 있다.
MAC 는 데이터의 기밀성과 무결성을 보호하기 위해 키가 필요합니다. 따라서 응용 프로그램을 배포할 때 키를 생성한 다음 모든 클라이언트 사용자에게 불법적으로 키를 제공합니다. 어플리케이션 실행이 매우 안정적이며 키 존재로 인해 법을 준수하는 모든 클라이언트가 정확한 시간을 읽을 수 있습니다. 하지만 한 고객이 이 문장 사실을 알게 된 후 이 비밀 키를 사용하여 데이터를 변조할 수 있다는 사실을 알게 되자, 우리 웹사이트는 많은 고객들로부터 읽기 시간이 정확하지 않다는 불만을 받아 시스템의 업무 운영과 데이터 처리에 문제가 생겼습니다.
너는 건축가에게 빨리 처리하라고 해라. 건축가는 각 사용자가 고유한 키를 생성할 수 있는 시나리오를 제공합니다. 지혈은 할 수 있지만, 곧 이 방안이 실행 불가능하고, 조작하고 유지할 수 없다는 것을 알게 될 것이다. 사용자 수가 급증하면서 이러한 키를 구성하고 관리하는 방법은 정기적인 교체는 고사하고 큰 문제가 되었습니다. 키 교환 알고리즘이 여기에 유용할 수 있다. 우리가해야 할 일은 서버에서 키를 생성하고 각각의 새 사용자에게 공개 키 정보를 제공하는 것입니다. 클라이언트는 서버의 공개 키 정보를 알고 있기 때문에 중간에 두 방향의 MITM 공격을 시뮬레이션할 수 없습니다. 우리는 또한이 모델을 인증 키 교환이라고 부릅니다.
이 장면을 계속 분석해 봅시다. 중개인은 서비스와 키를 교환할 수도 있다고 말하지만, 이때 중개인은 일반 클라이언트와 다르지 않아 활성 MITM 공격을 수행할 수 없습니다.
과학기술이 발달하면서 인터넷은 우리 생활에서 거의 어디에나 있기 때문에 통신 쌍방 간의 비밀 키를 안전하게 구축하는 것이 매우 중요하다. 그러나 앞서 설명한 모델의 확장성은 좋지 않습니다. 클라이언트가 서버의 공개 키를 미리 미리 설정해야 하기 때문입니다. 이는 인터넷 시나리오에서 특히 두드러집니다. 예를 들어, 사용자로서 우리는 여러 은행 사이트 및 사회 보장 사이트와 안전하게 소통하기를 원합니다. 휴대폰, 태블릿, 데스크탑 보안 액세스를 위해 각 사이트의 공개 키 정보를 미리 설정해야 하는 경우, 편리성이 얼마나 나쁜지, 새로 개발된 사이트에 어떻게 안전하게 액세스할 수 있는지 고려해 볼 수 있습니다.
따라서 독자들은 매우 중요한 점을 이해해야 한다. 키 교환은 중요하지만 위에서 언급한 확장성 문제가 있습니다. 이 문제의 해결은 디지털 서명 기술에 따라 달라집니다. 디지털 서명과 키 교환의 결합은 우리가 나중에 소개할 SSL 기술의 기초이다. 명확하게 말하는 데 시간이 오래 걸리므로 SSL 원리를 소개하는 전문 장이 뒤에 나옵니다. 그러나, 뒤에서 소개하는 원활함을 위해서, 먼저 몇 가지 구체적인 키 교환 알고리즘과 배후의 수학 원리를 이야기해 보자.
먼저 저자 시리즈 첫 번째 문장 에서 언급한 Diffie-Hellman 키 교환 알고리즘에 대해 이야기하겠습니다. Whitfield Diffie 와 Martin E. Hellman 은 1976 에서' 암호화의 새로운 방향' 이라는 DH(Diffie-Hellman) 키 교환 알고리즘을 소개하는 획기적인 논문을 발표했습니다 이 논문은 첫 번째 키 교환 알고리즘과 첫 번째 공개 키 암호화 알고리즘 (또는 비대칭적 암호화 알고리즘) 의 두 가지 첫 번째가 있기 때문에 독창적이라고 불린다.
DH 알고리즘의 데이터 원리는 군론이며, 이는 오늘날 우리가 접하는 모든 보안 메커니즘의 초석이기도 하다. 수학과 졸업도 아니고, 수학 기초도 너무 착실하지 않기 때문에, 안전의 관점에서 계속 심화하는 방법을 망설이고 있다. 이 알고리즘을 독자들이 더 쉽게 이해할 수 있도록, 다음 내용은 일부 데이터의 기초지식을 다루고 있으며, 고등학교 수학 지식을 가진 학생들이 이해할 수 있을 것이라고 믿는다.
군론을 도입하는데, 첫 번째 문제는 그룹이 무엇인지 명확하게 정의하는 것이다. 필자는 관련 자료를 찾아보았는데, 수학 분야의 집단은 다음과 같은 두 가지 특징을 가지고 있다는 것을 발견했다.
1, 요소 세트로 구성됩니다.
요소 사이에 특수 이진 연산자 (예:? 아니면? ) 을 참조하십시오
위의 정의에 따라 이 요소 세트와 위에 정의된 이진 연산자가 특정 속성을 충족하는 경우 이러한 요소를 그룹이라고 합니다. DH 알고리즘의 경우 다음에 사용되는 그룹을 곱셈 그룹이라고 합니다. 곱셈 이진 연산자를 정의하는 요소의 모음입니다. 독자들은' 그렇다면 이 곱셈군이 어떤 속성을 만족시킬까?' 라고 물을 수 있다. 이 부분은 내용이 비교적 많기 때문에, 우리는 하나하나 열거할 것이다.
-끝났어. 세트의 두 요소가 정의된 연산자에 의해 계산되면 결과도 컬렉션에 있습니다. 예를 들어, 집합 M 이 있고 요소 A, B, c(c=a*b) 가 있다면, 이 세 가지 요소는 클로저 특성과 일치하며 집합에 정의된 산자는 곱셈입니다.
-결합 (Associativity). 이것은 중학교 수학의 조합 개념과 일치한다. 너는 수학 공식 A× (b× c) = (a× b )× c 를 이해할 수 있다.
-신원 요소. 집합에는 단위 요소가 포함되어 있으며 모든 요소 및 단위 요소의 값은 연산자 계산 후 변경되지 않습니다. 예를 들어, 요소 (1, a, b, c ...) 를 포함하는 집합 m 이 있는 경우 1 은 1 * a * 이기 때문에 단위 단위입니다
-역원소. 집합의 모든 요소에는 역요소가 있습니다. 예를 들어, 집합 요소 A 가 있는데, 이 요소의 역요소는 1/a 이고, 연산자는 요소 A 와 역요소의 결과를 1 으로 계산합니다.
필자는 자신의 피상적인 수학 지식이 위의 네 가지 속성에 대한 해석이 여러분을 더욱 곤혹스럽게 할 수 있다는 것을 인정해야 합니다. 그래서 다음 그림을 준비하여 집단이 가지고 있는 네 가지 속성에 대해 좀 더 자세한 추가 설명을 할 수 있기를 바랍니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언)
그룹, 그룹 속성 등에 대한 정보를 소개한 후 DH 알고리즘에 사용된 그룹이 어떤 모습인지 구체적으로 살펴보겠습니다. DH 알고리즘에 사용된 그룹은 양의 정수로 구성되며, 대부분의 경우 그룹화된 요소는 소수입니다. 예를 들면 이 그룹 (1, 2,3, ..., p- 1) 입니다. 여기서 P 는 일반적으로 큰 소수입니다.
주: 소수에 대한 수학적 정의는 2, 3, 5, 7, 11등과 같이 자신과1으로만 나눌 수 있는 숫자입니다. 소수는 비대칭 암호화 알고리즘에 널리 사용됩니다. 컴퓨터 전공 학생들은 대학 기간 동안 소수를 찾고 인쇄하는 프로그램을 작성해야 한다. 알고리즘의 핵심은 모든 숫자를 열거하여 그들이 소수인지 아닌지를 판단하고, 그렇다면 출력하는 것이다. 그러나 알고리즘의 관점에서 볼 때, 이 철저한 모델은 비효율적이기 때문에 업계에서 많은 효율적인 알고리즘이 등장해 곧 비교적 큰 소수를 찾을 수 있게 되었다.
소수를 제외하고 DH 알고리즘에서 사용하는 그룹의 또 다른 속성은 모듈러스 연산자, 특히 모듈러스 곱셈입니다. 먼저 모형 연산을 하는 것은 초등학생의 고공 수학 문제와 매우 유사하며, 상인과 나머지에 중점을 둔다. 예를 들어 모듈을 5 로 설정하면 이 숫자가 5 보다 크면 회전이 1 에서 다시 시작됩니다. 예를 들어 숫자 6 모듈 5 의 결과는 1, 7 의 결과는 2 입니다. 모형 연산의 가장 고전적인 예는 시계입니다. 시계는 하루에 24 시간이 있기 때문에 12 시간으로 계산할 때 오후 13 점은 1 개점이라고 합니다. 왜냐하면/Kloc.
그럼 모듈러스 곱셈의 정의를 살펴 보겠습니다. 우리는 6 을 예로 들었다. 6 = 3? 2. 만약 몰드가 5 라면, 우리는 6 이 모두 (Congo to) 1moduo5 와 같다는 것을 알고 있다. 그러면 우리의 공식은 다음과 같이 쓸 수 있다.
3 × 2 = 1 mod 5
우리는 위의 방정식에서 매우 중요한 결론을 얻었다. Mod 5 를 제거하고 3 × 2 = 1 을 얻습니다. 따라서 3 과 2 는 역수입니다.
마지막으로 DH 알고리즘의 기본 그룹의 두 가지 특징을 요약해 보겠습니다.
-교환법 (교환법), 한 무리의 두 원소는 교환법, 즉 ab=ba 가 있다. 보통 우리는 교환법이 있는 그룹을 갈루아 그룹이라고 부른다.
-유한 도메인 (유한 도메인). 이제 유한 도메인의 특징에 대해 자세히 설명하겠습니다.
DH 알고리즘에 의해 정의된 그룹은 FFDH (Refine Field Diffie-Hellman) 라고도 하며 하위 그룹은 그룹의 하위 집합을 나타냅니다. 정의된 연산자 연산자 하위 세트의 요소를 통과한 후 다른 하위 그룹으로 이동합니다.
군론에서 매우 중요한 개념 중 하나는 순환자군이다. 백화문의 경우 생성기 (또는 기수) 를 통해 자신을 곱할 수 있다는 것이다. 다음 예에서 생성기 4 는 하위 그룹 1 및 4 에 사용할 수 있습니다.
4 mod 5 = 4
4 × 4 mod 5 = 1
4 × 4 × 4 mod 5 = 4 (다시 시작, 순환 하위 그룹의 구현)
4 × 4 × 4 × 4 mod 5 = 1
등등
우리의 몰드가 소수일 때, 다음 그림과 같이 그룹의 각 요소는 하나의 생성기이며, 다음 그림과 같이 루프 하위 그룹을 생성할 수 있습니다.
마지막으로, 우리는 그룹과 DH 에 의해 정의 된 갈루아 그룹을 완전히 요약했습니다.
-그룹은 클로저, 연관, 단위 요소, 역원 등의 특성을 가진 이진 연산을 정의하는 요소의 집합입니다.
-DH 로 정의된 그룹을 갈루아 그룹이라고 하며, 이 그룹을 구성하는 요소는 소수이며, 모듈러스 곱셈은 해당 그룹에 정의됩니다.
-DH 정의 그룹에서 각 요소는 자체적으로 반복적으로 곱하면 하위 그룹이 생성되는 생성기입니다.
그룹은 많은 암호화 알고리즘의 기초입니다. 필자는 약간의 조잡한 지식만 소개했다. 독자가 이 부분에 관심이 있다면 관련 자료를 참조할 수 있다. 팀에 대한 초보적인 이해로 다음 문장 다음에 DH 알고리즘의 배후에 있는 작동 원리를 다시 한 번 소개하니 기대해 주시기 바랍니다.