공개키 암호가 무엇인가요?
Last updated
Last updated
이번 시리즈에서는 블록체인을 이해하고, 거래나 투자를 할 때 이해하고 있어야할 암호(Cryptography)에 대해서 알아보겠습니다. 암호의 기술적인 원리보다는 필요성과 기능에 초점을 맞추어 설명드리겠습니다.
설명에 앞서, 암호 화폐를 거래하려면 왜 사람들이 알아보기도 힘든 '주소'라는 것을 사용해서 관리해야 하는 불편함을 가지고 있는지, 그냥 편하게 전화번호처럼 외워서 사용할 수 있는 수준으로 관리할 수는 없는 것인지 생각해보신 적이 있나요? 아니면 나도 블록체인 서비스(보통 지갑을 통해서)를 이용해보고 싶은데, 처음부터 계정 생성부터 이해하기 어려운 용어들 떄문에 불편함을 겪은 적이 있을 수도 있고요. 이러한 이유들은 암호 화폐와 블록체인이 여러가지 암호 시스템으로 구성되어 있기 때문에 발생합니다.
암호는 우리의 일상적인 생활에서도 굉장히 많이 사용되고 있는 기술입니다. 집을 들어가고 나올 때, 자동차의 문을 열고 잠글 때, 컴퓨터나 스마트폰을 이용 할 때, 이메일이나 인터넷 뱅킹 같은 온라인 서비스를 이용하기 위한 로그인에서도 사용이 됩니다. 혹은 이메일을 통해 문서를 주고 받을 때, 문서를 암호화(Encrypt)하고, 비밀 번호(password)를 공유하여 제한된 사람만 문서에 접근할 수 있도록 하는 행위에서도 사용이 됩니다.
이런 사례에서 보면 중요한 정보를 하나 알 수 있습니다 . 바로 암호 키라는 것인데요. 암호가 적용된 모든 사례에서, 이를 제대로 활용하기 위해서는 암호 키를 알아야 합니다. 흔히 사용하는 비밀 번호도 암호 키의 유형 중에 하나입니다. 또한, 암호 키에 맞는 알고리즘도 필요한데요. 마치 자물쇠와 열쇠같이 암호 시스템도 암호 알고리즘
과 암호 키
로 구성됩니다.
우리가 다양한 상황에서 사용하는 암호 시스템은 크게 2가지로 분류할 수 있습니다. 하나는 공개키 암호
이고, 다른 하나는 대칭키 암호
입니다. 이름의 정의에서 보면, 공개키 암호는 공개되는 암호 키가 있을 것이고, 대칭키 암호는 암호 키가 대칭되는 쌍이 있을 것이라고 유추해 볼 수 있겠네요.
대칭키 암호는 이미 여러분들이 알고 있는 암호화(Encryption)에 많이 사용되는 시스템입니다 아래 그림처럼 대칭키 암호는 A와 B가 정보를 주고 받을 때, 다른 누구도 알아볼 수 없도록 하기 위해서 정보를 암호화하고 암호화를 다시 원본으로 바꾸는 복호화(Decryption)하는 과정에 사용됩니다. 이 때 필요한 암호 키는 A와 B가 동일한 키를 사용합니다. 암호화된 문서를 열어볼 수 있도록 비밀 번호를 공유하는 것과 같습니다.
대칭키 암호는 암호 키가 암호화하는 사람과 복호화하는 사람 쌍방이 공유하는 암호 키에 의해서 작동하는 시스템이라서 정보의 암호화(Encryption)에는 사용할 수 있지만, 암호 키를 필수적으로 2명 이상이 알고 있는 방식이기 때문에 고유성(Uniqueness)이 없습니다.
고유성이 왜 필요할까요? 이것은 여러분이 계약서를 쓸 때 서명을 하는 원리와 동일합니다. 서명은 다른 사람은 할 수 없는 오직 나만의 행위라는 고유성에 대한 증거입니다. 이를 디지털 상으로 표현 하기 위해선 누구도 알 수 없고 오직 나만 알고 있어야 하는 암호 키가 필요합니다. 따라서 고유한 암호키를 가진 시스템도 필요합니다.
이런 환경에서는 공개키 암호가 사용됩니다. 공개키 암호는 이름대로 하나의 키는 공개할 수 있는 반면, 다른 하나의 키는 절대 공개되어서는 안되는 개인의 비밀 정보입니다. 그래서 각 암호 키에 대한 이름을 공개키(Public key)와 개인 키 혹은 비밀 키(Private key or Secret key)라고 말합니다. 개인 키는 나만 알고 있는 정보이기 때문에, 개인키를 통해서 한 행위는 내가 한 행위임을 증명할 수 있는 기능을 가집니다. 반대로 말하면, 디지털 상에서 누구나 나의 개인키만 있으면 내가 할 수 있는 권한이 생긴다고 볼 수 있습니다. 따라서 개인 키는 매우 중요하게 관리되어야 할 정보입니다.
공개키 암호는 고유성을 가진 개인키를 이용해서 서명을 작성하는 행위(Sign)가 가능합니다. 개인키로 한 행위에 대해서 상대방이 검증할 수 있는 과정도 필요하기 때문에 공개가 가능한 공개키는 누구나 검증(Verify) 할 수 있도록 공개됩니다. (공개키 암호를 암호화에도 사용할 수 있지만, 현재 초점과는 무관하므로 넘어가도록 하겠습니다.)
간단히 요약하면, 정보의 암호화에는 대칭키 암호가 사용되고, 고유성이 필요한 서명과 같은 행위에는 공개키 암호가 사용되는 것을 알 수 있습니다. 그럼, 다음 편에서 공개키 암호가 가장 많이 활용되는 사례인 전자 서명에 대해서 알아보겠습니다.