[Bitcoin] - ch10. 비트코인의 보안

‍허진·2023년 3월 9일
0

Blockchain

목록 보기
13/19
post-thumbnail

본 글은 '비트코인, 공개 블록체인 프로그래밍(Andreas M. Antonopoulos 저, 최은실, 김도훈, 송주한 옮김, 2018)'을 바탕으로 작성되었습니다.

비트코인은 은행 계좌에 들어 있는 잔액처럼 가치에 대한 추상적인 개념이 아니기 때문에 비트코인을 안전하게 보호하는 것에 어려움이 따른다. 비트코인은 마치 디지털 캐시 혹은 금과 매우 유사하여, 비트코인 해제키를 소유하고 있다는 것의 의미는 캐시나 귀금속 덩어리를 소유하고 있다는 것과 같다. 우리는 비트코인을 분실할 수도 있고 엉뚱한 곳에 둘 수도 있고 도난당할 수도 있으며 실수로 누군가에게 잘못된 금액을 전송할 수도 있다. 이와 같은 모든 경우, 사용자들은 비트코인을 다시 찾을 수 없다.

하지만, 비트코인 지갑은 백업이 가능하다. 지갑은 여러 개의 복사본으로 저장 가능하며, 심지어 하드카피로 종이 위에 인쇄도 가능하다. 비트코인은 현금이나 금, 은행 계좌들과 많이 다르기에, 비트코인의 보안에 대해서 생각할 때도 새로운 방법으로 접근해야 한다.

> 보안 원리

비트코인의 핵심 원리는 분산화이며 이러한 특징은 보안에 있어 중요한 의미를 지닌다. 전통적인 은행과 같은 중앙 집중화된 모델은 외부로부터 유해 인자를 막아 주는 접근 통제 및 검사 기술에 의존한다. 하지만 비트코인과 같이 분산화된 시스템은 통제에 대한 책임을 사용자에게 넘긴다. 비트코인 네트워크의 보안은 접근 통제가 아닌 작업증명에 기반을 두고 있기 때문에 비트코인 네트워크는 개방 가능하고 비트코인 트래픽을 암호화할 필요는 없다.

신용카드 시스템 같은 전통적인 지불 수단 네트워크상에서는 암호학을 이용해서 종단간(end-to-end) 안전하게 처리되어야 하며, 지불 트래픽이 수송 중이거나 저장될 때 중간에 거래 과정을 지켜보는 사람 혹은 중개인이 해당 트래피을 위험에 빠뜨릴 가능성이 없음이 확실해야 한다.

하지만 비트코인은 특정 가치에 대해서만 특정인에게 승인하기 때문에 위조 또는 수정될 수 없다. 거래 당사자의 신분 등 어떠한 개인 정보도 유출되지 않고 추가적인 결제를 만들 권한도 없다. 따라서 비트코인 결제 네트워크는 암호화시키거나 도청으로부터 보호할 필요가 없다. 안전하지 않은 와이파이나 블루투스 등의 공개 채널을 통해서도 보안성을 유지한 채 비트코인 거래르 사실상 전송할 수 있다.

비트코인의 분산 보안 모델은 사용자에게 많은 권한을 주지만, 그와 함께 키에 대한 보안을 유지해야 하는 책임도 따라온다. 이는 인터넷에 연결된 스마트폰이나 노트북 등 범용 컴퓨터 기기상에서는 어렵다. 비트코인의 분산 모델이 신용카드에서 발생하는 대량 위험을 방지할 수는 있지만 많은 사용자들이 키를 안전하게 보호하지 못해서 해킹당할 가능성이 있다.

> 비트코인 시스템을 안전하게 개발하기

비트코인 개발자들이 가장 유념해야 하는 특성은 분산화다. 비트코인의 보안은 키에 대한 분산 제어와 채굴자들이 검증하는 독립적인 거래에 달려 있다. 따라서 우리가 비트코인의 보안성을 활용하고자 한다면 우선 비트코인 보안 모델 내에 있어야 한다. 즉, 사용자의 손을 벗어난 키를 제어하려 하지 말고 블록체인에서 벗어난 거래는 시행하지 말아야 한다.

예를 들어, 초창기의 비트코인 교한소 여러 곳에서는 사용자들의 돈 전부를 단일 서버에 저장된 키를 가진 '온라인(hot)' 단일 지갑에 집중해서 넣어 두었다. 이러한 설계는 키에 대한 제어권이 중앙 집중화되어 있고, 많은 시스템이 해킹 당하면서 끔찍한 결과를 낳았다.

또 다른 실수로는 거래 수수료를 줄이고 거래 처리 속도를 향상시키기 위해 '블록체인에 기록되지 않는' 거래를 시행하는 것이다. '블록체인에 기록되지 않는' 시스템은 내부적인 중앙 집중식 장부에 거래를 기록하고 해당 거래들을 가끔씩 비트코인 블록체인에 동기화하게 될 것이다. 이러한 관행은 분산화된 비트코인 보안을 독점적이고 중앙 집중식 방법으로 대체해버린다. 거래가 블록체인에서 떨어져 나가게 되면 적절하지 않게 보안이 유지된 중앙 집중식 장부는 사용자도 모르는 사이에 위조 및 자금 유용, 보유 자금의 급감 등읙 가능성을 갖게 된다.

즉, 정리하자면 비트코인만의 독특한 분산 보안 모델을 활용하려면 우리에게 익숙하긴 하지만 결국 비트코인의 보안을 파괴하게 될 중앙 집중식 구조를 사용하지 않아야 한다.

> 신뢰 루트(Root of Trust)

전통적인 보안 아키텍처는 신뢰루트(root of trust)라고 불리는 개념을 기반으로 하고 있다. 신뢰루트란 전체 시스템 혹은 어플리케이션의 보안을 위한 기반으로 사용되는 신뢰 코어를 말한다. 신뢰루트 개념은 가장 신뢰할 수 있는 부분이 시스템의 가장 단순한 부분에 존재한다는 것을 의미한다. 그러므로 복잡한 소프트웨어들이 이 부분을 감싸고 있는 것이다.

이러한 보안 아키텍쳐는 다양한 단계로 반복되며 처음에는 단일 시스템의 하드웨어 내에 신뢰루트를 형성하다가 나중에는 운영 시스템을 통해서 더 높은 수준의 서비스로 신뢰루트를 확장시키고 최종적으로는 신뢰가 줄어들고 있는 동심원 계층에 있는 여러 서버들까지 전파된다

비트코인의 보안 구조는 다르다. 비트코인에서는 합의 체계가 완전히 분산화된 신뢰 공개 장부를 형성한다. 정확하게 검증된 블록체인은 최초블록을 신뢰루트로 사용해서 신뢰체인을 가장 최근에 생성된 블록까지 확장한다. 비트코인 시스템은 블록체인을 신뢰루트로 사용할 수 있고, 사용해야만 한다. 다른 여러 시스템 상에 존재하는 서비스로 구성되어 있는 복잡한 비트코인 어플리케이션이 있더라도, 궁극적으로 분명하게 신뢰할 수 있는 것은 완벽하게 검증된 블록체인뿐이다.

만약 사용자의 어플리케이션이 명료하게 혹은 함축적으로 블록체인이 아닌 대상에게 신뢰를 부여한다면, 이는 취약성을 야기하기 때문에 고려해야 한다. 사용자의 어플리케이션 보안 아키텍처를 평가하는 좋은 방법은 위험한 상황을 가정해보는 것이다. 어플리케이션의 구성 요소를 하나하나 선택해서 해당 요소가 위험에 빠진 경우 전체 보안에 미치는 영향을 생각해야 한다. 취약성이 없는 비트코인 어플리케이션은 비트코인 합의 메커니즘의 위험에 빠진 경우에만 취약해야 한다. 이는 신뢰루트가 비트코인 보안 아키텍처의 가장 강한 계층을 기반으로 두고 있다는 의미이다.

> 사용자 보안의 모범 사례

정보 보안 분야에서 수십 년 동안 연구 활동 및 발전이 있어 왔지만 디지털 자산은 여전히 강력한 적을 만나면 취약성을 드러낸다. 금융 서비스 회사나 정보국, 방위 산업 계약 등 고도로 보호되고 제한되는 시스템에서도 잦은 빈도로 보안의 구멍이 뚫린다. 비트코인은 실질적 가치를 보유한 디지털 자산을 생성하며, 도난당하거나 새로운 소유주에게로 즉시 유용되어 찾을 수 없는 상태가 되기도 한다.

다행스럽게도 비트코인 역시 컴퓨터 보안을 개선하기 위한 인센티브를 만들어 냈다. 컴퓨터 상에 비트코인을 저장하게 되면서 사용자들이 컴퓨터 보안의 필요성에 초점을 맞추게 되었다. 비트코인을 비롯한 여러 디지털 화폐가 확산되고 채택 범위가 넓어지면서 직접적으로 얻을 수 있는 효과는 해킹 기술뿐만이 아니라 보안 솔루션도 발전한다는 점이다.

지난 세월동안 비트코인을 채택하면서 얻은 직접적인 혜택으로는 하드웨어 암호화, 키 저장 및 하드웨어 지갑, 다중서명 기술, 디지털 에스크로의 형태로 정보 보안의 영역에서 엄청난 혁신적인 결과물이 나왔다는 점이다.

> 물리적 비트코인 저장

많은 사용자들이 디지털 정보 보안보다 물리적 보안에 좀 더 친금감을 느끼기에 비트코인을 보호하는 가장 효과적인 방법은 정보 보안을 물리적 형태로 전환하는 것이다. 비트코인 키의 프린트 복사본을 '종이지갑'이라고 한다. 이렇게 비트코인을 오프라인 상에 보관하는 것을 cold storage라고 하며 가장 효과적인 보안 기술 중 하나다.

> 하드웨어 지갑

스마트폰이나 데스크톱 컴퓨터와는 달리 비트코인 하드웨어 지갑은 단 하나의 목적만을 가지고 있다. 바로 비트코인을 안전하게 보관하는 것이다. 공격을 가하는 범용 소프트웨어가 없고 제한된 인터페이스가 있는 하드웨어 지갑은 누구나 이용할 수 있는 수준의 보안을 비전문가인 사용자들도 가지게 된다. 하드웨어 지갑에 대해 더 궁금한 점이 있다면 Trezor를 참고하자.

Trezor 홈페이지

> 리스크 다각화하기

비트코인 사용자들은 하나의 지갑에 보유 중인 비트코인 전부를 넣고 다니기 보다, 위험을 다수의 다양한 비트코인 지갑들로 분산시켜야 한다. 예를 들어 작은 금액으로 쪼개서 온라인 지갑이나 모바일 지갑에 '잔돈'으로 보관하고, 나머지 금액은 데스크톱 지갑이나 오프라인(cold storage) 등 다른 저장 메커니즘에 쪼개서 보관해야 한다.

> 멀티시그와 거버넌스

다중서명 주소는 지불을 위해서 하나 이상의 서명을 필요로 하기 때문에 자금을 안전하게 지켜 준다. 서명키들은 다양한 장소에서 서로 다른 사람들의 통제 하에 보관되어야 한다. 예를 들어 한 기업에서 서명키는 단 한 사람의 서명만으로는 자금이 위험에 빠지지 않는다는 사실을 확실하게 하기 위해 독립적으로 생성되어 여러 명의 회사 중역들이 각자 보관해야 한다.

> 생존력

보안에 있어 자주 간과되는 중요한 고려 사항은 가용성이다. 특히 키 소유주가 질병 등으로 정상적인 생활이 불가능하거나 사망할 시 가용성은 중요한 문제가 된다. 비트코인 사용자들은 복잡한 암호를 사용해서 키를 안전하고 비공개로 보관해서 그 누구와도 키를 공유하지 말 것을 권유 받는데, 이러한 관행 때문에 사용자의 가족이 비트코인을 해제하지 못하는 경우 어떠한 금액도 되찾을 수가 없게 된다. 따라서 비트코인을 보유하고 있다면 신뢰하는 친척 혹은 변호사와는 접근 방식에 대한 세부사항을 공유하는 것을 고려해야 한다.

profile
매일 공부하기 목표 👨‍💻 

0개의 댓글