글: Jeremy Cook
공개키 암호화의 작동 원리
디지털 시대가 시작된 이래 사적인 메시지를 지구 반대편의 누군가에게 보낼 때 합리적인 수준의 보안을 기대하는 것은 대체로 당연하게 받아들여지고 있습니다. 우리도 그런 메시지가 그 본래 형태로 전달될 것으로 믿고 있습니다. 하지만 누구든지 무엇이든 게시하고 어떤 주장이든 할 수 있는 세상에서 우리의 온라인 소통이 진실하고 안전하다고 믿을 수 있을까요?
온라인 보안을 가능하게 하는 가장 중요한 기술 중 하나는 비대칭 암호화라고도 하는 공개키 암호화입니다. 그 기본 개념은 발신자가 수신자가 제공한 공개 암호화 키를 사용해서 정보를 암호화하는 것입니다. 수신자는 그에 대응하는 고유(그리고 비밀) 개인 키를 사용해서 해당 정보의 암호를 해제합니다.
하지만 개념적으로 이것은 어떻게 작동하는가? 공개키가 정보의 암호화에 사용된다면 왜 이 동일한 공개키를 사용해서 해당 정보의 암호를 해제할 수 없는가? 그에 대해서 알아보겠습니다. 하지만 먼저 비유를 하나 들겠습니다.
공개-개인 키의 짝과 일방향 함수
공개키 암호화를 알려진 위치에 있고 잠겨 있는 우편함이라고 생각해보십시오. 우편함의 주소가 공개 "키"입니다. 우편함의 주인은 우편함을 열수 있는 자신의 개인(말 그대로) 키를 절대로 공유하지 않습니다. 누구든 우편함으로 메시지를 보낼 수 있지만 오직 그 주인만 그러한 메시지를 읽을 수 있습니다.
온라인에서 잠금은 일방향 수학 함수를 통해서 달성됩니다. 이 함수를 통해서 데이터가 공개키로 암호화될 수 있지만 동일한 공개키는 새로운 데이터를 암호화하는 데 사용될 수는 없습니다.
공개키는 잠겨 있는 우편함에서 편지를 꺼내는 데 사용할 수 없습니다. 오로지 그에 대응하는 개인키를 통해서만 우편함의 편지를 꺼낼 수 있습니다.
공개키 암호화는 어떻게 쌍방향 통신에 사용되는가?
한발 더 나아가서 A가 B와 안전하게 통신하고자 할 때 직면하는 문제에 대해서 생각해보겠습니다. 이 문제는 다음과 같인 방법으로 해결될 수 있습니다.
- A는 공개키 Ax를 생성 및 공유하고 개인키 Ay를 보유합니다.
- B는 공개키 Bx를 생성 및 공유하고 개인키 By를 보유합니다.
- A가 발송할 메시지 A1을 공개키 Bx를 사용해서 A1e로 암호화하고 이 암호화된 메시지를 B에게 보냅니다. 그러면 B가 메시지 A1e를 개인키 By를 사용해서 A1으로 암호해제합니다.
- B는 발송할 메시지 B1을 공용키 Ax를 사용해서 B1e로 암호화하고 이 암호화된 메시지를 A에게 보냅니다. 그러면 A가 메시지 B1e를 개인키 Ay를 사용해서 B1으로 암호해제합니다.
여기서 중요한 점은 개인키는 절대 공유되지 않는 반면에 공개키는 동일한 메시지를 암호화 및 암호해제하는 데 사용될 수 없기 때문에 공개될 수 있다는 것입니다. 일단 메시지가 전송을 위해서 암호화되면, 암호화의 주체조차 해당 개인키를 갖고 있지 않기 때문에 메지시에 무엇이 들어 있는지 볼 수 없습니다.
발신자 검증
개인키가 없으면 암호화된 메시지를 볼 수 없지만 누구든 개인키에 대응하는 공개키가 있으면 메시지를 암호화할 수 있습니다. 다시 우편함의 비유로 돌아가면, 믿을 수 있는 친구가 잠겨 있는 나의 우편함에 쪽지를 남길 수 있지만 우편광고 업자, 사기꾼 그리고 기타 원치 않는 사람도 그렇게 할 수 있습니다. 어떤 이는 봉투에 신뢰하는 지인의 이름을 적고, 아마도, 그가 위험한 상황에 있고 많은 현금, Apple 상품권, 크루거랜드(남아공의 금화) 또는 기타 자산이 필요하다고 주장할 수도 있습니다.
여기에서 우편함의 비유는 더 이상 통하지 않지만 공개키 암호화는 발신자를 검증할 수 있습니다. 이 과정이 작동하려면 A와 B가 쌍방향으로 검증된 통신을 위해서 공개키와 개인키 쌍을 생성해야 합니다. 그런 다음 각 메시지는 두 번 암호화됩니다. 한 번은 발신자의 개인키로 그리고 그 다음은 수신자의 공개키로. 통신을 검증하고 보안을 유지하려면:
- A는 발신 메시지 A2를 개인키 Ay를 사용해서 그리고 다시 공개키 Bx를 사용해서 A2e로 암호화합니다.
- B가 공개키 Ax를 사용해서 메시지 A2e를 암호해제, 즉 A2e가 개인키 Ay를 사용해서 생성된 것이라는 점을 검증하며 따라서 발신자의 신원을 검증하게 됩니다. 그러면 B는 개인키 By를 사용해서 이 메시지를 추가로 암호해제하여 사용 가능한 데이터로 전환합니다.
따라서 처음에 생성된 동일한 키 쌍이 기본적인 비대칭 통신은 물론 검증된 비대칭 통신에도 사용될 수 있는 것입니다. 근본적인 차이는 기본 비대칭 교환시에는 메시지당 총 2개의 키만 사용되는 반면에 검증을 위해선 메시지당 총 3개의 키가 사용된다는 점입니다.
공개키는 그 자체로 일방향 함수는 아니지만 데이터를 적절하게 암호화하기 위한 일방향 함수의 입력값으로 사용된다는 점에 주의하십시오.
인간이 수행하는 데이터의 암호화/암호해제는 여기에서 포괄적으로 다뤘지만 그러한 작업을 반드시 인간이 수행해야 하는 것은 아닙니다. 안전한 웹사이트 검색을 가능하게 하는 TLS/SSL과 같은 프로토콜은 비대칭 암호화를 사용합니다. 이러한 유형의 암호화는 블록체인의 작동에 필수적입니다.
비대칭은 대칭을 가능하게 합니다
1970년대에 비대칭 암호화가 도래하기 전에 대칭 키 암호화, 즉 전송의 각 상대방이 메시지를 교환하는 동일한 규칙을 필요로 하는 암호화가 통신의 탈취를 방지하는 방법이었습니다. 인터넷의 시대에는 메시지를 교환하는 사람 또는 비인간 주체와 물리적으로 절대 접촉할 수 없고 키를 공적 경로로 전달하면서 보안 위험을 야기하는 만큼 대칭 암호화는 문제 투성이입니다.
동시에 대칭 암호화는 여전히 많은 경우에 바람직한 방법입니다. 웹에서 HTTPS를 가능하게 하는 TLS/SSL 프로토콜은 비대칭 암호화를 사용해서 대칭 암호화 '세션' 키를 전달합니다. 그러면 세션 키는 대칭 암호화를 통한 두 주체 간의 개인 통신을 촉진하는 데 사용됩니다.
실용적인 관점에서 공개키 암호화와 같은 기술을 사용한 강한 보안은 개인정보보호에 대한 합리적인 수준의 기대를 갖고 온라인 통신을 가능하게 합니다. 이는 또한 Alexa와 Google Home같은 스마트 기기의 보안을 유지함으로써 사용자의 활동이 불법적인 또는 원하지 않는 방식으로 공유되지 않는다는 점에 대한 신뢰를 구축할 수 있습니다.
Arrow.com에서 인증기와 같은 보안 솔루션 제품은 물론 아래와 같은 우리의 인기 제품을 확인해보십시오.