2019.02.13

강은성의 보안 아키텍트 | 블록체인과 보안(3)

강은성 | CIO KR
블록체인과 보안(1)에서는 “블록체인의 보안성이 좋다”라는 속설(?)을 전통적으로 보안의 (기술적인) 목적으로 삼아왔던 기밀성, 무결성, 가용성의 측면에서 검토했고, 블록체인과 보안(2)에서는 합의 알고리즘과 같은 블록체인 자체의 속성 측면과 소프트웨어 측면, 소프트웨어 기반 서비스의 측면에서 블록체인의 보안성을 살펴봤다. 이번 칼럼에서는 블록체인 애플리케이션 중 가장 대중화된 암호화폐 전자지갑의 보안과 사용자의 보안 활동에 관하여 살펴보려고 한다.

먼저 알아둘 게 있다. ‘지갑'(Wallet)이 가진 의미 때문에 암호화폐 전자지갑에는 암호화폐가 들어 있다고 생각하는 분들이 의외로 많다. 하지만 블록체인 기반의 전자지갑에는 돈과 관련된 아무런 데이터도 저장되어 있지 않다. 계좌 A에서 계좌 B로 10BTC를 송금하면, 그 거래 기록이 해당 블록체인의 모든 노드에 쓰이고, 전자지갑은 블록체인에 써 있는 거래 기록을 읽어서 계좌 A에서 B로 10BTC가 이동하였고, 그에 따라 A의 잔고가 얼마라는 데이터를 보여준다. 거래 기록은 블록체인에 있고, 암호화폐 지갑은 사용자 인터페이스일 뿐이다. 

전자지갑은 공개키 암호시스템에서의 공개키(Public key)를 (변형하여) 은행 통장의 계좌번호처럼 사용하고, 이에 상응하는 개인키(비밀키, Private key)를 그 계좌의 비밀번호처럼 사용한다. 하지만 누구든지 전자지갑의 계좌를 알면 누구든지 계좌의 거래 이력과 잔액을 알 수 있고, 개인키를 아는 사람은 누구든지 연결 계좌의 암호화폐를 다른 계좌로 송금할 수 있다는 점은 기존 금융거래와는 크게 다른 점이다. 개인키를 잃어버리거나 그것이 남에게 노출되어 자신의 암호화폐를 분실하는 경우가 이따금 발생한다. 전자지갑 개인키의 안전한 관리가 암호화폐(암호자산) 보호의 관건인 이유다. 

통장의 비밀번호와는 달리 개인키는 너무 길어서 외우기 어렵기 때문에 많은 사용자들이 이것을 PC의 하드디스크에 저장해 놓고, 복사&붙이기를 해서 사용한다. 매우 위험한 방법이다. 기존 인터넷 금융거래에서도 공인인증서의 개인키를 PC의 하드디스크에 저장했다가 예금을 탈취당하는 사고가 발생하기도 했다. PC가 악성코드에 감염되면 개인키와 디지털 서명용 비밀번호가 유출될 수 있기 쉽기 때문이다. 개인키를 이메일에 저장하거나 구글 드라이브 등 클라우드에 저장하는 사용자들도 있다. 이 경우에는 반드시 이메일이나 클라우드 로그인 시 2단계 인증을 사용하고, 개인키가 남들에게 공유 또는 전달되지 않도록 유의해야 한다. 

개인키를 종이에 출력하여 보관하기도 한다. 본인이 잃어버리지 않을 수 있도록 물리적으로 안전한 곳에 보관할 수 있다면 불편하지만 보안성은 좋은 방법이다. (이 때 보관한 곳을 잊어버리지 않도록 가끔 확인해 보는 게 좋다.) 개인키를 USB 메모리(이동식 저장장치)에 저장하고, USB 메모리를 안전한 곳에 보관하고 있다가 꼭 필요한 경우에만 PC에 연결해 사용하는 방법도 있다. 보안 수준은 PC 하드디스크에 저장하는 것과 다르지 않지만, PC 접속시간이 크게 줄기 때문에 사고 발생 가능성은 훨씬 작다. 또한 복사&붙이기를 통해 개인키를 이용했다면 각 운영체제에서 제공하는 클립보드 삭제 기능을 통해 클립보드에 저장된 개인키를 삭제하는 것이 안전하다. (물론 여러 응용 프로그램에서 복사 기능을 이용하면 기존 클립보드의 내용이 사라지긴 하지만 말이다.)

요즘에는 모바일앱 전자지갑을 이용하는 사용자들이 많아졌다. 대부분의 지갑앱에서는 개인키 대신에 비밀번호를 제공한다. 개인키를 직접 사용하는 것보다 보안성이 좋다. 이 비밀번호는 개인키를 암호화/복호화하는 데 이용하기 때문에 비밀번호를 잊어버리면 개인키를 잃어버리는 것과 마찬가지다. 또한 인터넷 포털이나 은행에서 사용하는 비밀번호와 달리 블록체인에서는 지갑 비밀번호를 저장하는 서버가 없으므로 본인이 잊어버리면 복구할 수 없다는 점에 유의해야 한다. 따라서 지갑앱에서 비밀번호나 개인키 복구 기능을 제공한다면, 비상 상황을 대비하여 잘 알아둬야 한다. 

한 지갑앱을 여러 단말에 설치한 경우 한 단말에서 만든 비밀번호는 그 단말에만 적용된다. 개인키를 암호화하여 해당 단말에 저장하는 데 사용하기 때문이다. 따라서 한 단말의 지갑 비밀번호가 노출되었다 하더라도 해당 단말을 분실하지 않으면 개인키가 자동으로 노출되는 것은 아니다. 당황하지 말고 비밀번호를 다른 것으로 바꾸면 된다. 지갑앱을 재설치할 때 앱이나 운영체제에 따라 기존 저장된 개인키가 삭제될 수도 있으므로 유의해야 한다. 비밀번호는 자주 사용하지 않으면 잊어버리기 쉽다. 종종 비밀번호를 사용하는 것이 바람직하다. 혹시 비밀번호를 외우지 못해 어쩔 수 없이 어디엔가 저장해야 한다면 개인키를 저장하는 것처럼 안전하게 저장해야 한다.

대부분의 사용자들은 암호화폐의 매수나 매도를 위해 암호화폐거래소 전자지갑을 갖고 있을 것이다. 거래소 사이트에서 로그인을 하면 전자지갑을 만들어 사용할 수 있다. 이 때 전자지갑의 개인키와 공개키는 모두 거래소에서 보관한다. 사용자의 개입 없이 암호화폐의 주문 체결이 이뤄져야 하기 때문이다. 보안 측면에서 본다면 좋지 않은 방법이다. 따라서 거래소 로그인에는 반드시 2단계 인증을 사용해야 한다. 또한 거래소가 해킹되면 나의 전자지갑에 있는 암호화폐도 함께 도난당할 수 있으므로 거래소를 선택할 때에는 거래소의 보안수준을 살펴보는 것이 좋다. 국내 거래소 중에는 정보통신망법에서 규정한 정보보호관리체계(ISMS) 인증을 받은 곳이 있다. ISMS 인증을 받는 것이 해킹을 당하지 않는다는 보증이 되지는 않지만, 이 인증을 받는 것이 그리 간단치 않기 때문에 그 정도의 투자는 했다고 볼 수 있다. 한국인터넷진흥원 사이트의 ‘인증서 발급현황'에서 인증받은 기업목록을 볼 수 있다. 키워드 검색도 가능하다. 

암호화폐 전자지갑 웹 사이트에서 제공하는 지갑 서비스도 있다. 이러한 지갑 서비스의 경우에는 비밀번호나 2단계 인증 등 다양한 보안 옵션을 제공해 주는 것이 장점이다. 다만 이러한 사이트를 사칭한 악성코드 공격(Phishing)으로 피해를 입은 사례가 있어서 지갑 접속이나 업데이트 시 사이트 URL을 확인하여 실제 이 사이트에 접속하고 있는지 확인할 필요가 있다. 하드웨어 지갑도 있다. 일반적으로 하드웨어 지갑은 웹 서비스나 모바일앱으로 제공되는 지갑보다 보안성이 뛰어나다. 다만 가짜 하드웨어 지갑의 판매에 관한 사례들이 있어서 구매와 최초 설정 시 유의해야 한다.

이런 다양한 전자지갑 중 편의성, 보안성, 가성비 등을 종합하여 어떤 지갑을 선택할지 판단하는 것은 사용자의 몫이다. 
 
끝으로 암호화폐 소유자에게 주의해야 할 몇 가지 행동을 권해 드리고자 한다. 통장에 1천만 원이 있다면 그 비밀번호를 남에게 알려 주지 않을 것이다. 아마 내 통장에 1천만 원이 있다는 것조차 알려주지 않을 듯하다. 같은 이치다. 전자지갑에서 계좌는 반드시 자신이 만들어야 한다. 만드는 과정에서 계좌의 개인키가 노출될 수 있기 때문이다. 개인키나 비밀번호는 반드시 자신만 알고 있어야 한다. 계좌번호(공개키)를 커뮤니티 같은 곳에 공개하는 것도 바람직하지 않다. 계좌번호를 알면 나의 암호화폐 이력과 액수를 쉽게 알 수 있어서 보안공격의 대상이 될 수 있다. 

PC에서 전자지갑을 이용한다면 PC가 악성코드에 감염되지 않도록 유의해야 한다. 믿을 만한 안티바이러스 제품을 설치하고 실시간 감시, 매일 주기적인 정밀검사를 수행하도록 설정하는 것은 기본이고, 웹하드, P2P, 불법 컨텐츠가 많은 사이트, 잘 알려지지 않은 사이트 등 악성코드가 배포되기 쉬운 곳은 아예 접속하지 않는 것이 좋다. PC방이나 쇼핑몰, 공항 등 공공장소에 있는 PC에서는 절대로 전자지갑을 이용한 거래(를 포함한 모든 금융거래)를 하지 말아야 한다. 모바일앱 지갑도 마찬가지다. 스마트폰이 악성코드에 감염되지 않도록 조심하고, 메신저나 문자메시지를 통해 잘 모르는 URL을 받았을 때 클릭하지 말아야 한다. 

사업자들도 암호화폐 지갑에 편의성과 보안성을 높인 기능을 추가해 주면 좋겠다. 예를 들어 요즘 생체인증을 제공하는 단말들이 많이 나왔는데, 지갑에서도 단말에서 제공하는 인증체계를 지원하거나, 2단계 인증을 옵션으로 제공하면 사용자들이 자신의 암호자산을 보호하는 데 큰 도움이 될 것이다.

인터넷의 역사를 돌아보면 1960년대까지 거슬러 올라가지만, 인터넷이 대중화되어 폭발적으로 성장한 것은 1993년 웹 브라우저 모자이크(Mosaic)가 출현한 이후다. 이제까지 암호화폐 전자지갑은 가장 많이 사용되는 블록체인 서비스이긴 하지만 그것의 용도나 사용성 측면에서 웹 브라우저에는 크게 못 미친다. 아무쪼록 하루빨리 킬러 애플리케이션이 나타나 블록체인이 대중화되는 시기가 도래하기를 기대해 본다.

* 강은성 대표는 보안전문업체 연구소장과 시큐리티대응센터장을 거치고, 인터넷 포털회사에서 최고보안책임자(CSO)를 역임한 국내 최고의 보안전문가다. CISO Lab을 설립하여 보안컨설팅과 보안교육을 진행하였고, 지금은 암호화폐 개발업체인 블록체인오에스의 CISO로 일하고 있다. 저서로 IT시큐리티(한울, 2009)와 CxO가 알아야 할 정보보안(한빛미디어, 2015)가 있다. ciokr@idg.co.kr
 



2019.02.13

강은성의 보안 아키텍트 | 블록체인과 보안(3)

강은성 | CIO KR
블록체인과 보안(1)에서는 “블록체인의 보안성이 좋다”라는 속설(?)을 전통적으로 보안의 (기술적인) 목적으로 삼아왔던 기밀성, 무결성, 가용성의 측면에서 검토했고, 블록체인과 보안(2)에서는 합의 알고리즘과 같은 블록체인 자체의 속성 측면과 소프트웨어 측면, 소프트웨어 기반 서비스의 측면에서 블록체인의 보안성을 살펴봤다. 이번 칼럼에서는 블록체인 애플리케이션 중 가장 대중화된 암호화폐 전자지갑의 보안과 사용자의 보안 활동에 관하여 살펴보려고 한다.

먼저 알아둘 게 있다. ‘지갑'(Wallet)이 가진 의미 때문에 암호화폐 전자지갑에는 암호화폐가 들어 있다고 생각하는 분들이 의외로 많다. 하지만 블록체인 기반의 전자지갑에는 돈과 관련된 아무런 데이터도 저장되어 있지 않다. 계좌 A에서 계좌 B로 10BTC를 송금하면, 그 거래 기록이 해당 블록체인의 모든 노드에 쓰이고, 전자지갑은 블록체인에 써 있는 거래 기록을 읽어서 계좌 A에서 B로 10BTC가 이동하였고, 그에 따라 A의 잔고가 얼마라는 데이터를 보여준다. 거래 기록은 블록체인에 있고, 암호화폐 지갑은 사용자 인터페이스일 뿐이다. 

전자지갑은 공개키 암호시스템에서의 공개키(Public key)를 (변형하여) 은행 통장의 계좌번호처럼 사용하고, 이에 상응하는 개인키(비밀키, Private key)를 그 계좌의 비밀번호처럼 사용한다. 하지만 누구든지 전자지갑의 계좌를 알면 누구든지 계좌의 거래 이력과 잔액을 알 수 있고, 개인키를 아는 사람은 누구든지 연결 계좌의 암호화폐를 다른 계좌로 송금할 수 있다는 점은 기존 금융거래와는 크게 다른 점이다. 개인키를 잃어버리거나 그것이 남에게 노출되어 자신의 암호화폐를 분실하는 경우가 이따금 발생한다. 전자지갑 개인키의 안전한 관리가 암호화폐(암호자산) 보호의 관건인 이유다. 

통장의 비밀번호와는 달리 개인키는 너무 길어서 외우기 어렵기 때문에 많은 사용자들이 이것을 PC의 하드디스크에 저장해 놓고, 복사&붙이기를 해서 사용한다. 매우 위험한 방법이다. 기존 인터넷 금융거래에서도 공인인증서의 개인키를 PC의 하드디스크에 저장했다가 예금을 탈취당하는 사고가 발생하기도 했다. PC가 악성코드에 감염되면 개인키와 디지털 서명용 비밀번호가 유출될 수 있기 쉽기 때문이다. 개인키를 이메일에 저장하거나 구글 드라이브 등 클라우드에 저장하는 사용자들도 있다. 이 경우에는 반드시 이메일이나 클라우드 로그인 시 2단계 인증을 사용하고, 개인키가 남들에게 공유 또는 전달되지 않도록 유의해야 한다. 

개인키를 종이에 출력하여 보관하기도 한다. 본인이 잃어버리지 않을 수 있도록 물리적으로 안전한 곳에 보관할 수 있다면 불편하지만 보안성은 좋은 방법이다. (이 때 보관한 곳을 잊어버리지 않도록 가끔 확인해 보는 게 좋다.) 개인키를 USB 메모리(이동식 저장장치)에 저장하고, USB 메모리를 안전한 곳에 보관하고 있다가 꼭 필요한 경우에만 PC에 연결해 사용하는 방법도 있다. 보안 수준은 PC 하드디스크에 저장하는 것과 다르지 않지만, PC 접속시간이 크게 줄기 때문에 사고 발생 가능성은 훨씬 작다. 또한 복사&붙이기를 통해 개인키를 이용했다면 각 운영체제에서 제공하는 클립보드 삭제 기능을 통해 클립보드에 저장된 개인키를 삭제하는 것이 안전하다. (물론 여러 응용 프로그램에서 복사 기능을 이용하면 기존 클립보드의 내용이 사라지긴 하지만 말이다.)

요즘에는 모바일앱 전자지갑을 이용하는 사용자들이 많아졌다. 대부분의 지갑앱에서는 개인키 대신에 비밀번호를 제공한다. 개인키를 직접 사용하는 것보다 보안성이 좋다. 이 비밀번호는 개인키를 암호화/복호화하는 데 이용하기 때문에 비밀번호를 잊어버리면 개인키를 잃어버리는 것과 마찬가지다. 또한 인터넷 포털이나 은행에서 사용하는 비밀번호와 달리 블록체인에서는 지갑 비밀번호를 저장하는 서버가 없으므로 본인이 잊어버리면 복구할 수 없다는 점에 유의해야 한다. 따라서 지갑앱에서 비밀번호나 개인키 복구 기능을 제공한다면, 비상 상황을 대비하여 잘 알아둬야 한다. 

한 지갑앱을 여러 단말에 설치한 경우 한 단말에서 만든 비밀번호는 그 단말에만 적용된다. 개인키를 암호화하여 해당 단말에 저장하는 데 사용하기 때문이다. 따라서 한 단말의 지갑 비밀번호가 노출되었다 하더라도 해당 단말을 분실하지 않으면 개인키가 자동으로 노출되는 것은 아니다. 당황하지 말고 비밀번호를 다른 것으로 바꾸면 된다. 지갑앱을 재설치할 때 앱이나 운영체제에 따라 기존 저장된 개인키가 삭제될 수도 있으므로 유의해야 한다. 비밀번호는 자주 사용하지 않으면 잊어버리기 쉽다. 종종 비밀번호를 사용하는 것이 바람직하다. 혹시 비밀번호를 외우지 못해 어쩔 수 없이 어디엔가 저장해야 한다면 개인키를 저장하는 것처럼 안전하게 저장해야 한다.

대부분의 사용자들은 암호화폐의 매수나 매도를 위해 암호화폐거래소 전자지갑을 갖고 있을 것이다. 거래소 사이트에서 로그인을 하면 전자지갑을 만들어 사용할 수 있다. 이 때 전자지갑의 개인키와 공개키는 모두 거래소에서 보관한다. 사용자의 개입 없이 암호화폐의 주문 체결이 이뤄져야 하기 때문이다. 보안 측면에서 본다면 좋지 않은 방법이다. 따라서 거래소 로그인에는 반드시 2단계 인증을 사용해야 한다. 또한 거래소가 해킹되면 나의 전자지갑에 있는 암호화폐도 함께 도난당할 수 있으므로 거래소를 선택할 때에는 거래소의 보안수준을 살펴보는 것이 좋다. 국내 거래소 중에는 정보통신망법에서 규정한 정보보호관리체계(ISMS) 인증을 받은 곳이 있다. ISMS 인증을 받는 것이 해킹을 당하지 않는다는 보증이 되지는 않지만, 이 인증을 받는 것이 그리 간단치 않기 때문에 그 정도의 투자는 했다고 볼 수 있다. 한국인터넷진흥원 사이트의 ‘인증서 발급현황'에서 인증받은 기업목록을 볼 수 있다. 키워드 검색도 가능하다. 

암호화폐 전자지갑 웹 사이트에서 제공하는 지갑 서비스도 있다. 이러한 지갑 서비스의 경우에는 비밀번호나 2단계 인증 등 다양한 보안 옵션을 제공해 주는 것이 장점이다. 다만 이러한 사이트를 사칭한 악성코드 공격(Phishing)으로 피해를 입은 사례가 있어서 지갑 접속이나 업데이트 시 사이트 URL을 확인하여 실제 이 사이트에 접속하고 있는지 확인할 필요가 있다. 하드웨어 지갑도 있다. 일반적으로 하드웨어 지갑은 웹 서비스나 모바일앱으로 제공되는 지갑보다 보안성이 뛰어나다. 다만 가짜 하드웨어 지갑의 판매에 관한 사례들이 있어서 구매와 최초 설정 시 유의해야 한다.

이런 다양한 전자지갑 중 편의성, 보안성, 가성비 등을 종합하여 어떤 지갑을 선택할지 판단하는 것은 사용자의 몫이다. 
 
끝으로 암호화폐 소유자에게 주의해야 할 몇 가지 행동을 권해 드리고자 한다. 통장에 1천만 원이 있다면 그 비밀번호를 남에게 알려 주지 않을 것이다. 아마 내 통장에 1천만 원이 있다는 것조차 알려주지 않을 듯하다. 같은 이치다. 전자지갑에서 계좌는 반드시 자신이 만들어야 한다. 만드는 과정에서 계좌의 개인키가 노출될 수 있기 때문이다. 개인키나 비밀번호는 반드시 자신만 알고 있어야 한다. 계좌번호(공개키)를 커뮤니티 같은 곳에 공개하는 것도 바람직하지 않다. 계좌번호를 알면 나의 암호화폐 이력과 액수를 쉽게 알 수 있어서 보안공격의 대상이 될 수 있다. 

PC에서 전자지갑을 이용한다면 PC가 악성코드에 감염되지 않도록 유의해야 한다. 믿을 만한 안티바이러스 제품을 설치하고 실시간 감시, 매일 주기적인 정밀검사를 수행하도록 설정하는 것은 기본이고, 웹하드, P2P, 불법 컨텐츠가 많은 사이트, 잘 알려지지 않은 사이트 등 악성코드가 배포되기 쉬운 곳은 아예 접속하지 않는 것이 좋다. PC방이나 쇼핑몰, 공항 등 공공장소에 있는 PC에서는 절대로 전자지갑을 이용한 거래(를 포함한 모든 금융거래)를 하지 말아야 한다. 모바일앱 지갑도 마찬가지다. 스마트폰이 악성코드에 감염되지 않도록 조심하고, 메신저나 문자메시지를 통해 잘 모르는 URL을 받았을 때 클릭하지 말아야 한다. 

사업자들도 암호화폐 지갑에 편의성과 보안성을 높인 기능을 추가해 주면 좋겠다. 예를 들어 요즘 생체인증을 제공하는 단말들이 많이 나왔는데, 지갑에서도 단말에서 제공하는 인증체계를 지원하거나, 2단계 인증을 옵션으로 제공하면 사용자들이 자신의 암호자산을 보호하는 데 큰 도움이 될 것이다.

인터넷의 역사를 돌아보면 1960년대까지 거슬러 올라가지만, 인터넷이 대중화되어 폭발적으로 성장한 것은 1993년 웹 브라우저 모자이크(Mosaic)가 출현한 이후다. 이제까지 암호화폐 전자지갑은 가장 많이 사용되는 블록체인 서비스이긴 하지만 그것의 용도나 사용성 측면에서 웹 브라우저에는 크게 못 미친다. 아무쪼록 하루빨리 킬러 애플리케이션이 나타나 블록체인이 대중화되는 시기가 도래하기를 기대해 본다.

* 강은성 대표는 보안전문업체 연구소장과 시큐리티대응센터장을 거치고, 인터넷 포털회사에서 최고보안책임자(CSO)를 역임한 국내 최고의 보안전문가다. CISO Lab을 설립하여 보안컨설팅과 보안교육을 진행하였고, 지금은 암호화폐 개발업체인 블록체인오에스의 CISO로 일하고 있다. 저서로 IT시큐리티(한울, 2009)와 CxO가 알아야 할 정보보안(한빛미디어, 2015)가 있다. ciokr@idg.co.kr
 

X