본문으로 건너뛰기

공개키 암호화

공개키 암호학은 공개해도 되는 정보와 주인만 보관해야 하는 비밀 정보를 수학적으로 연결해 사용하는 기술입니다. 이 범주에는 기밀성을 위한 공개키 암호화와, 대응하는 개인키에 의한 승인을 검증하는 전자 서명이 포함됩니다. 공개키와 개인키는 수학적으로 연결된 한 쌍으로 만들어집니다.

열쇠를 둘로 나누는 이유

잠글 때와 열 때 같은 열쇠를 사용하는 방식을 대칭키 방식이라고 합니다. 오래전부터 사용된 방식이지만, 상대방에게 비밀 열쇠를 어떻게 전달할 것인지가 어려운 문제로 남습니다.

열쇠를 편지에 적어 보내면 편지를 훔쳐본 사람이 열쇠까지 얻을 수 있습니다. 열쇠를 잠가서 보내려 하면 그 자물쇠를 열 또 다른 열쇠가 필요해지는 순환이 생깁니다. 직접 만나서 전달할 수 있다면 해결되지만, 인터넷에서는 지구 반대편의 처음 보는 사람과도 정보를 주고받아야 합니다.

공개키 방식은 열쇠의 역할을 나누어 이 문제에 접근합니다.

우편함으로 이해하기

공개키 암호화는 우편함에 비유할 수 있습니다. 우편함 위에는 누구나 편지를 넣을 수 있는 투입구가 있고, 아래에는 주인만 열 수 있는 잠긴 문이 있습니다.

투입구의 위치를 온 동네에 알려 줘도 지나가는 사람은 편지를 넣을 수 있을 뿐, 안에 쌓인 편지를 꺼낼 수는 없습니다. 꺼내는 문을 여는 열쇠는 주인만 가지고 있기 때문입니다.

이 비유에서 누구나 사용하도록 공개된 투입구가 공개키이고, 꺼내는 열쇠가 개인키입니다. 이는 공개키 암호화에서 기밀성을 확보하는 방식에 해당합니다. 공개키는 보여 줘도 되지만 개인키는 감춰야 합니다.

한 쌍으로 만들어지는 키

공개키와 개인키는 따로 만든 뒤 나중에 맞춰 보는 것이 아니라, 처음부터 수학적 관계를 가진 한 쌍으로 생성됩니다. 공개키 암호화에서는 공개키로 암호화한 내용을 개인키로 복호화하고, 전자 서명에서는 개인키로 서명한 내용을 공개키로 검증합니다. 서명은 개인키로 암호화한 것을 공개키로 복호화하는 절차가 아닙니다.

개인키에서 공개키를 계산하는 것은 빠르게 수행할 수 있습니다. 반대로 공개키만 보고 개인키를 알아내는 계산은 사실상 끝나지 않을 정도로 어렵다고 여겨집니다. 비트코인의 개인키 후보 수는 대략 2²⁵⁶ 규모입니다. 그래서 공개키는 다른 사람에게 알려도 개인키를 그대로 드러내지 않습니다.

비트코인에서의 사용

비트코인의 서명 장치는 개인키를 관리하고 거래에 서명하는 도구입니다. 새 키를 생성할 때에는 개인키에서 공개키를 계산합니다. 일부 주소 형식에서는 공개키를 해시하는 등 추가로 가공한 값을 주소에 담습니다. 그러나 모든 주소가 단일 공개키를 가공한 것은 아닙니다. 주소 형식에 따라 공개키나 스크립트 등을 인코딩합니다. 따라서 주소는 다른 사람에게 알려도 되지만, 개인키는 주인만 보관해야 합니다. 개인키에 관한 내용은 개인키에서 더 볼 수 있습니다.

비트코인을 사용할 때는 개인키로 거래에 서명합니다. 이 서명은 개인키를 공개하지 않으면서 해당 개인키를 알고 있고 거래를 승인했다는 사실을 증명하는 표식입니다. 네트워크의 다른 컴퓨터들은 공개키를 이용해 서명이 유효한지 확인합니다. 요약하면 개인키로 서명하고 공개키로 거래 승인을 확인하는 방식입니다. 다만 개인키를 탈취한 사람도 유효한 서명을 만들 수 있으므로, 서명 검증만으로 실제 소유자를 보증할 수는 없습니다.

거래 내용을 숨기는 기술과는 다르다

공개키 암호화를 사용한다는 말을 들으면 비트코인의 거래 내용도 암호로 감춰져 있을 것이라고 생각하기 쉽습니다. 하지만 비트코인의 전체장부는 누구나 확인할 수 있습니다. 어느 주소에서 어느 주소로 얼마가 이동했는지 기록이 공개됩니다.

비트코인은 공개키 암호학 가운데 전자 서명 기능을 이용해 거래의 승인을 검증합니다. 거래 내역 자체를 암호로 숨겨 잔고를 감추는 방식과는 다릅니다. 대응하는 개인키에 의한 승인은 검증할 수 있지만, 장부는 공개되어 있는 구조입니다.

공개되는 정보의 대가

주소가 공개되면 그 주소의 거래 내역과 잔고도 누구나 살펴볼 수 있습니다. 주소와 실제 사람이 연결되면, 그 주소에 이어진 거래 기록이 해당 사람과 연결될 수 있습니다.

따라서 공개키와 주소를 알려 주는 일은 개인키를 공개하는 것과 다르지만, 공개된 주소를 어떻게 사용하는지는 별도로 주의해야 할 문제입니다. 공개키 암호학은 기밀성을 위한 암호화와 대응하는 개인키에 의한 거래 승인 검증을 구분해 사용하는 기술입니다.

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유