보안을 위해 블록체인을 사용한다고 이야기하기 전에
by 유수웅
종종 블록체인을 통해 보안 문제를 해결했다고 하거나, 보안을 위해 블록체인을 이용한다는 이야기를 듣게 된다. 하지만 이 말은 보안의 어떠한 관점에 대해 이야기 하느냐에 따라 맞기도 하고 틀리기도 하다.
보안은 단순히 하나의 개념과 매치되는 것이 아닌 다양한 범위와 정의로 이루어질 수 있다. 누군가는 보안이 ‘비밀을 지키는 것’과 매칭되는 개념일 수 있고, 누군가는 보안이 ‘공격에 대한 저항’과 매칭되는 개념일 수 있다. 이 경우 ‘보안이 무엇이다’라고 정의 내리는 것보다는 보안이 제대로 이루어지지 않았을 때 손상되는 개념을 살펴보는 편이 차라리 쉽다.
1. Integrity (무결성)
무결성은 누군가 데이터를 위조 또는 변조하지 못하도록 하는 것이다. 최근에는 거의 모든 데이터가 디지털로 저장되고 있는데, 공격자는 해당 데이터로의 접근 경로에서 가장 취약한 지점을 공격함으로써 원하는 대로 데이터의 무결성을 훼손한다.
비트코인은 당사자간 거래가 가능한 전자화폐 체계(Peer-to-Peer Electronic Cash System)로서 처음 제안되었다. 기존에는 이중지불(Double Spending) 문제 때문에 P2P 거래를 어려운 것으로 생각했는데 비트코인은 블록체인을 통해 이를 해결하고자 한 것이다. 이중 지불은 하나의 자산이 여러 번 사용되는 것을 말하는데, 바로 이 이중지불 문제가 데이터의 무결성이 훼손된 상황으로 볼 수 있다. 원장에 기록된 한 번 사용된 자산의 기록을 변조하여 다시 사용할 수 있도록 하는 것이다.
비트코인의 기반기술인 블록체인은 그런 이유로 무결성 측면에서 좋은 방안이 될 수 있다. 물론 합의 알고리즘에 따라 51% 공격 등을 통해 무결성을 위협할 수 있다고 하지만 그에 대응하여 다양한 합의 알고리즘 역시 발전하고 있기에 현재로서는 큰 문제는 없다고 보여진다.
2. Availability (가용성)
가용성은 언제든 필요한 시점에 서비스에 접근할 수 있도록 하는 것이다. 이것을 위협하는 것이 DDoS 공격이다. 서비스 공급자에게 일시적으로 감당할 수 없는 트래픽을 발생시켜 서비스를 마비시킴으로써 목적을 달성하게 된다.
블록체인은 가용성 측면에서도 좋은 방안이 될 수 있다. 블록체인이 기본적으로 분산 시스템이기 때문인데, 분산된 시스템은 단일장애지점(Single point of failure) 문제로부터 자유롭다. 따라서, 특정 노드가 가용성에 대한 공격을 받더라도 다른 노드를 통해서 언제든 서비스에 접근할 수 있다.
3. Non-repudiation (행위부인)
행위부인은 어떠한 행위를 한 후 그 행위에 대해 부정하는 것을 의미한다.
우리는 종종 우리의 행위를 증명하거나 상대의 행위를 확인해야 하는 경우가 많다. 우편물을 보낼 때 상대가 제대로 받았는지 확인하기 위해 등기를 이용하며, 계약을 할 때는 계인을 하고 서로 한 부씩 가지게 된다.
하지만 이러한 절차가 갖추어지지 않으면 행위부정이 일어날 수 있다. 우편물이나 대금을 받고도 받지 않았다고 부정할 수 있으며, 접근하지 말아야 할 정보에 접근하고도 부인할 수 있는 것이다.
행위부인에 딱 맞아 떨어지는 사례는 아니지만 2017년에 모 대학병원에서 한 개인의 전자 의무기록을 직원들이 무단으로 열람하고 심지어 내용을 친구에게 보내기도 하여 문제가 된 경우가 있다. 보통 중요한 데이터를 관리하는 곳은 로그를 관리하고 있고, 이 사건도 접속한 로그가 남아 있기 때문에 누가 접속한 것인지 금방 확인할 수 있었지만 누군가 의도적으로 이러한 중요 자료에 접근하고도 하지 않은 것처럼 꾸밀 수 있는 여지가 있는 것은 보안의 위협요소로 볼 수 있다.
블록체인은 그 개념상 데이터의 비가역적 특징을 가지므로 적절한 인증이 이루어졌다는 전제 하에 디지털 서명 과정 및 트랜잭션 기록으로 온체인 상의 모든 과정을 투명하게 할 수 있다. 이러한 이유로 행위부인을 위해 블록체인을 사용하는 것은 적절하다고 보여진다.
4. Confidentiality (기밀성)
기밀성은 권한이 없는 자가 특정 데이터에 접근하지 못하도록 하는 것이다. 누군가에게 알려지지 않아야 할 중요한 정보, 혹은 누구도 몰랐으면 하는 정보를 관리해야 하는 경우 우리는 ‘보안’에 신경 써야 한다고 이야기한다.
디지털 정보의 기밀성을 위해 우리는 패스워드라는 것을 사용한다. 나만이 알 수 있는 패스워드를 통해 내 정보에 대한 접근을 통제하는 것이다. 하지만 비밀번호는 기밀성을 보장해 줄 수 없다. 공격자는 비밀번호를 탈취함으로써 얼마든지 그 정보에 접근할 수 있기 때문이다.
암호화 자산을 관리해본 사람이라면 이 문제가 얼마나 쉽지 않은지 알 것인데, 내 암호키에 대한 기밀성을 확보하기 위해 종이에 암호키를 적어 장농에 보관하거나, 인터넷이 연결되지 않은 로컬 컴퓨터에 저장하거나, 하드웨어 월렛을 사용하기도 한다.
순수하게 블록체인만으로는 기밀성의 문제를 해결할 수 없다. 만약 그 데이터가 퍼블릭 혹은 프라이빗 블록체인에 블록체인에 기록된다면 그것은 다양한 공격 포인트를 만듦으로써 기밀성을 더욱 위협하는 결과를 낳게 된다. 간혹 이를 위해 해시값만 온체인에 기록하는 방식을 이야기하는데 이것은 기밀성의 보장이 아닌 무결성의 검증이라고 봐야 한다. 따라서 이런 의미의 ‘보안’을 염두에 두고 블록체인을 사용한다고 이야기하는 것은 맞지 않다.
5. Authentication (인증)
인증은 내가 나임을, 혹은 내가 권한을 가진 자임을 입증하는 것이다. 인증이 훼손될 경우 권한을 가지지 않은 주체가 권한을 확보하게 된다.
현실 세계에서는 주민등록증, 운전면허, 학생증 등의 방식으로 인증을 처리하는 한편, 디지털 환경에서는 인증을 위해 제3의 신뢰기관을 통한 인증방식을 사용한다. 이는 결과적으로 패스워드 방식을 통해 처리하는 것으로서 디지털 환경에서는 패스워드를 탈취하면 자연스럽게 인증도 해결되기 때문에 원치 않는 결제나 서명 등이 가능해지게 된다.
순수한 블록체인 기술은 인증의 문제 역시 해결할 수 없다. 최근 블록체인을 이용한 Self-sovereign Identity는 인증 자체를 해결한다기보다는 프라이버시 문제 최소화에 방점이 있다고 보여지므로 보안 측면에서의 인증과는 전혀 다른 문제로 볼 수 있다.
이렇듯 다양한 개념들을 ‘보안’이라는 개념으로 압축해 버리면 블록체인의 무결성 관점에서 이야기하는 사람과 블록체인의 기밀성 관점에서 이야기하는 사람과의 블록체인의 보안에 대한 논의는 평행선을 그을 수밖에 없다. 따라서 블록체인을 통해 보안을 해결한다는 표현보다는 위에서 언급한 정확한 개념을 위해 블록체인을 사용하였다고 정의해 주는 편이 정확한 이해와 커뮤니케이션에 도움이 될 것이다.
읽어주셔서 감사합니다.
원본 링크: https://noder.foundation/before-you-think-about-security/
노더 텔레그램 구독: https://t.me/noder_foundation
TXID: 0xcb219476def449e0a5c87b119d6543c6457814b28b0bc332b268af9e8d905dad