디지털 서명이란 무엇인가요?
해시 함수와 공개 키 암호 방식은 디지털 서명 시스템의 핵심 요소이며, 오늘날 광범위한 분야에 적용되고 있습니다.
디지털 서명은 디지털 데이터의 진위성과 무결성을 검증하는 데 사용되는 암호 메커니즘입니다. 우리는 이를 손으로 작성한 일반적인 서명의 디지털 버전이라 간주할 수도 있겠지만, 보다 복잡하며 보안이 우수합니다.
간단히 말하자면 디지털 서명이란 메시지나 문서에 첨부된 하나의 코드라 할 수도 있습니다. 코드가 생성된 이후, 이는 발신자로부터 수신자에게 메시지가 전송되는 과정에서 변조되지 않았다는 증거가 됩니다.
암호화를 통해 커뮤니케이션을 보호하는 개념은 고대로 거슬러 올라가지만, 1970년대 공개 키 암호 방식(PKC)의 발달과 함께 디지털 서명 체계가 가능해졌습니다. 따라서 디지털 서명이 어떻게 이뤄지는지 알기 위해서는 해시 함수와 공개 키 암호 방식의 기초를 먼저 이해할 필요가 있습니다.
해시 함수
해싱은 디지털 서명 시스템의 핵심 요소 중 하나입니다. 해싱에는 어떠한 크기의 데이터라도 고정된 크기의 값으로 변환하는 과정이 포함됩니다. 이는 해시 함수라 알려진 특별한 알고리즘을 통해 이뤄집니다. 해시 함수에 의해 생성된 결괏값을 해시값 또는 메시지 다이제스트라고 합니다.
암호화와 결합될 경우, 이른바 암호 해시 함수를 통해 고유한 디지털 지문으로 사용될 수 있는 해시값(다이제스트)을 생성할 수 있습니다. 이는 입력 데이터(메시지)가 조금이라도 변경되면 결괏값(해시값)이 완전히 달라짐을 의미합니다. 그리고 이것이 바로 암호 해시 함수가 디지털 데이터의 진위성을 검증하는 데 광범위하게 사용되는 이유입니다.
공개 키 암호 방식 (PKC)
공개 키 암호 방식 또는 PKC는 하나의 공개 키와 하나의 개인 키로 이뤄진 한 쌍의 키를 사용하는 암호화 시스템을 일컫습니다. 두 키는 수학적으로 연관되어 있으며, 데이터 암호화 및 디지털 서명에 모두 사용할 수 있습니다.
암호화 도구로서 PKC는 가장 기본적인 방법인 대칭형 암호화보다 안전합니다. 오래된 시스템은 정보를 암호화하고 해독하기 위해 동일한 키를 필요로 하지만, PKC는 공개 키를 통해 데이터를 암호화하고, 상응하는 개인 키를 통해 데이터 해독을 가능하게 합니다.
이 외에도 PKC 체계는 디지털 서명 생성에도 적용될 수 있습니다. 기본적으로 해당 과정은 서명자의 개인 키를 통해 메시지(또는 디지털 데이터)를 해싱하는 과정을 포함합니다. 이후, 메시지 수신자는 서명자가 제공하는 공개 키를 사용해 서명이 유효한지 확인할 수 있습니다.
특정 상황에서는 디지털 서명에 암호화가 포함될 수 있지만, 언제나 그렇지는 않습니다. 예를 들어 비트코인 블록체인은 PKC와 디지털 서명을 사용하지만, 많은 이들이 믿고 있는 것과 달리 해당 과정에는 암호화가 포함되지 않습니다. 엄밀히 말하자면 비트코인은 타원 곡선 디지털 서명 알고리즘(ECDSA)을 사용해 트랜잭션을 검증합니다.
디지털 서명은 어떻게 이뤄지나요?
가상자산 세계에서 디지털 서명 시스템은 해싱, 서명, 검증 세 가지 기본 단계로 이뤄지는 경우가 많습니다.
데이터 해싱
첫 번째 단계는 메시지나 디지털 데이터를 해시화 하는 것입니다. 이는 해싱 알고리즘을 통해 데이터를 제출하여 해시값이 생성(예를 들면 메시지 다이제스트)됨으로써 이뤄집니다. 앞서 언급한 것처럼 메시지 크기가 상당히 다를 수 있지만 해시화 되었을 때는 동일한 길이의 해시값을 갖게 됩니다. 이는 해시 함수의 가장 기본적인 속성입니다.
그러나 디지털 서명을 생성하기 위해 데이터를 해싱하는 것이 필수적인 것은 아니며, 개인 키를 사용해 전혀 해시되지 않은 메시지에 서명할 수도 있습니다. 그러나 가상자산의 경우 고정된 길이의 다이제스트를 다루는 것이 전체 과정을 용이하게 하기 때문에 데이터는 언제나 해시화 됩니다.
서명
정보가 해시된 다음, 메시지 발신자의 서명이 필요합니다. 공개 키 암호 방식이 사용되는 순간입니다. 디지털 서명 알고리즘의 종류는 다양하며, 저마다 고유한 메커니즘을 갖고 있습니다. 그러나 기본적으로 해시된 메시지는 개인 키로 서명되며, 메시지 수신자는 상응하는 공개 키(서명자가 제공한)를 통해 유효성을 확인할 수 있습니다.
달리 말하자면 서명이 생성될 때 개인 키가 포함되지 않는 경우, 메시지 수신자는 유효성을 검증하기 위해 상응하는 공개 키를 사용할 수 없게 됩니다. 공개 키와 개인 키는 모두 메시지 발신자에 의해 생성되지만, 수신자에게는 공개 키만 공유됩니다.
디지털 서명은 각 메시지 내용과 직접적으로 관련된다는 점을 유의할 필요가 있습니다. 따라서 손으로 쓴 서명들과 다르게 디지털로 서명된 각 메시지는 다른 디지털 서명을 갖게 될 것입니다.
검증
마지막 검증 단계에 이르는 전 과정을 설명하기 위해 예를 들어 보겠습니다. 앨리스가 밥에게 메시지를 작성하고, 이를 해시화 한 다음, 해시값과 개인 키를 통해 디지털 서명을 생성했다고 해보겠습니다. 해당 서명은 특정 메시지의 고유한 디지털 지문으로 사용될 것입니다.
밥이 메시지를 수신하면 앨리스가 제공한 공개 키를 통해 디지털 서명의 유효성을 확인할 수 있습니다. 이러한 방식으로 밥은 해당 서명이 앨리스에 의해 생성된 것임을 확신할 수 있는데, 앨리스만이 (적어도 우리가 기대하는 바로는) 공개 키에 상응하는 개인 키를 갖고 있기 때문입니다.
따라서 앨리스는 자신의 개인 키를 안전하게 보관해야만 합니다. 다른 이가 앨리스의 개인 키를 손에 넣게 될 경우, 디지털 서명을 생성하고 앨리스인 척 할 수 있습니다. 비트코인의 경우 이는 누군가 허락 없이 앨리스의 비트코인을 이동시키거나 사용할 수 있다는 것을 의미합니다.
디지털 서명은 왜 중요한가요?
디지털 서명은 데이터 무결성, 진위성, 부인 방지라는 세 가지 결과를 얻기 위해 주로 사용됩니다.
- 데이터 무결성: 밥은 앨리스의 메시지가 전송되는 동안 변경되지 않았음을 검증할 수 있습니다. 메시지가 수정되면 전혀 다른 서명이 생성될 것입니다.
- 진위성: 앨리스의 개인 키가 안전하게 보관되는 한, 밥은 해당 디지털 서명이 다른 이가 아닌 앨리스에 의해 생성되었음을 확인할 수 있습니다.
- 부인 방지: 앨리스의 개인 키가 어떤 특정 이유로 노출되지 않는 이상, 서명이 생성되고 나면 앨리스는 서명한 사실을 앞으로 부정할 수 없습니다.
활용 예시
디지털 서명은 다양한 종류의 디지털 문서와 인증서에 적용될 수 있습니다. 이처럼 디지털 서명은 다양하게 사용되며, 가장 일반적인 사용 사례는 다음과 같습니다.
- 정보 기술: 인터넷 통신 시스템 보안을 강화하기 위해 사용됩니다.
- 재무: 디지털 서명은 감사, 지출 보고서, 대출 계약 등에 사용될 수 있습니다.
- 법률: 정부 문서를 포함한 모든 종류의 비즈니스 계약 및 법적 계약에 디지털 서명이 사용될 수 있습니다.
- 의료: 가짜 처방전과 의료 기록을 방지하는 데 디지털 서명이 사용될 수 있습니다.
- 블록체인: 디지털 서명 체계는 (개인 키가 유출되지 않는 한) 가상자산의 정당한 소유권을 가진 이들만이 자금 이동을 위한 트랜잭션에 서명할 수 있도록 합니다.
한계
디지털 서명 체계가 직면한 주요 과제들은 세 가지 최소 필요조건에서 비롯됩니다.
- 알고리즘: 디지털 서명 체계에서 사용되는 알고리즘의 수준은 중요합니다. 여기에는 신뢰할 수 있는 해시 함수와 암호화 시스템을 선택하는 것이 포함됩니다.
- 구현: 알고리즘이 좋지만, 구현이 좋지 못하다면 디지털 서명 시스템은 결점을 보일 것입니다.
- 개인 키: 개인 키가 유출되거나 손상되면, 진위성과 부인 방지 속성이 더는 유효하지 않을 것입니다. 가상자산 사용자가 개인 키를 분실할 경우 상당한 재정적 손실로 이어질 수도 있습니다.
전자식 서명과 디지털 서명 비교
간단히 말하자면 디지털 서명은 문서와 메시지에 전자식으로 서명하는 방법을 의미하는 특정한 종류의 전자식 서명과 관련이 있습니다. 따라서 모든 디지털 서명은 전자식 서명이지만, 전자식 서명이 언제나 디지털 서명인 것은 아닙니다.
이들의 주된 차이점은 인증 방법에 있습니다. 디지털 서명은 해시 함수, 공개 키 암호 방식, 암호화 기법 등의 암호 시스템을 사용합니다.
마치며
해시 함수와 공개 키 암호 방식은 디지털 서명 시스템의 핵심으로, 오늘날 광범위한 분야에 적용되고 있습니다. 디지털 서명이 적절히 구현될 경우 보안을 강화할 수 있고, 무결성을 보장하며, 모든 종류의 디지털 데이터의 인증을 가능하게 할 수 있습니다.
블록체인 세계에서 디지털 서명은 가상자산 트랜잭션에 서명하고 승인하는 데 사용됩니다. 해당 서명은 특히 비트코인에서 중요한데, 이는 상응하는 개인 키를 소유한 이들만 코인을 사용할 수 있기 때문입니다.
전자식 서명과 디지털 서명 모두 수년간 사용돼왔지만, 여전히 성장 가능성이 큽니다. 오늘날 많은 관료체제가 여전히 종이 서류 작업에 기초하고 있지만, 더욱 디지털화된 시스템으로 옮겨 감에 따라 디지털 서명 체계가 더 많이 채택될 것으로 보입니다.