2018.01.03

비트코인과 블록체인 해킹 사례

Roger A. Grimes | CSO
초기부터 비트코인과 블록체인에 열광했던 많은 사람이 비트코인과 블록체인이 가진 암호화라는 속성이 지속적인 해킹을 막아내기에 충분한지 궁금해했다. 그 답을 찾는데는 오래 걸리지 않았다. 컴퓨터에서 실행되는 가치있는 모든 것이 그렇듯이 비트코인과 다른 암호화 화폐와 블록체인도 빈번하게 공격을 받았으며 그 가운데에는 성공적인(?) 공격도 있었다. 수억 달러의 피해가 발생하고 많은 이가 사기를 당했으며, 블록체인은 훼손당했다. 몇 가지 해킹 사례를 살펴보면 다음과 같다.

- 비트코인 채굴자(Bitcoin miner) 악성코드
비트코인 하나가 채굴될 때마다 그 이후의 비트코인 생성 난이도는 더 높아진다. 특수한 '채굴' 컴퓨터를 가동하고 냉각하는 데에는 많은 전기가 소비된다. 비트코인 채굴자에게 가장 큰 비용은 전기 요금이다. 이런 이유로 많은 채굴자가 '빌린' 리소스를 갖고 비트코인을 채굴하는데, 고용자를 채용해 직접 채굴하는 방법도 있지만 비트코인 채굴 악성코드를 퍼트리기도 한다.

현재 규모가 가장 큰 악성코드 봇넷의 상당수가 비트코인 채굴 전용이다. 악성코드의 의도 측면에서 가장 나쁜 형태는 아닐지라도 여전히 컴퓨터와 기기(온라인 비디오 카메라 장비나 공유기를 해킹하는 경우가 많다)를 무단 사용하는 것으로 피해자는 금전적인 피해를 입게 된다. 또한 해킹당한 컴퓨터의 속도도 저하된다. 비트코인 채굴 악성코드를 차단하는 방법은 다른 악성코드에 대처하는 방법과 동일하다.

- 가치 저장소(value store) 도난
암호화화폐는 지갑(Wallet)이라고 하는 파일 저장소에 가치를 저장하는 경우가 많다. 지갑은 컴퓨터의 다른 모든 가치 저장소와 마찬가지로 침해, 조작, 절도, 전송이 가능하다. 게다가 사람들은 종종 보호용 PIN/비밀번호를 잊거나 저장소가 있는 하드 드라이브를 잃어버리는데, 이 경우 해당 가치 저장소를 영원히 되찾을 수 없는 경우가 많다.

랜섬웨어 역시 같은 문제를 유발한다. 일반적인 은행 계좌의 경우, 컴퓨터에 문제가 생기면 다른 컴퓨터를 사용해 온라인 계정에 접속할 수 있고 그 가치도 그대로 유지된다. 하지만 지갑은 그렇지 않다.

대부분의 전문가들은 악성코드 또는 해커가 접근할 수 없는 오프라인 지갑에 가치를 저장할 것을 권장한다. 이렇게 하면 당사자가 그 가치를 사용하기도 더 어려워진다. 오프라인 속성상 가치 저장소를 사용하거나 업데이트하려면 며칠 동안 기다려야 할 수 있다. 온라인 지갑을 사용한다면 가능한 경우 다중 요소 인증으로 보호해야 한다.

- 전송 트로이 목마(Transfer trojans)
암호화화폐 트로이 목마는 컴퓨터를 모니터링하면서 암호화화폐 계좌 번호로 보이는 정보가 나타나길 기다린다. 이런 정보를 발견하면 사용자가 전송하려고 했던 원래의 계좌를 자신의 계좌 번호로 바꾼다. 면밀히 살피지 않고 전송 버튼을 누르는 순간 더 이상 되돌릴 수 없다.

- 구현상 약점
"이론에서는 이론과 실제 사이에 차이가 없다. 그러나 실제에서는 차이가 있다." 이 말을 누가 가장 먼저 했는지는 알 수 없지만 인쇄 형태로는 1986년 월터 J. 사비치가 쓴 책 <파스칼: 프로그래밍 기술과 과학 입문서(Pascal: An Introduction to the Art and Science of Programming)>에 처음 등장했다.
모든 암호화 구현이 그렇듯이 항상 암호화 알고리즘보다는 해당 알고리즘을 구현하는 프로그램이 훨씬 더 취약하다. 일반적으로 암호화 솔루션에서 발견할 수 있는 취약점 또는 약점은 블록체인에서도 발생한다. 프로그래밍 버그 또는 프라이빗 키(또는 비트코인 지갑)에 대한 취약한 보안으로 인해 전체가 무너질 수 있다. 암호화화폐를 사용하거나 블록체인 프로젝트에 참여하기 전에 소프트웨어 프로그래머들이 보안 개발 주기(Secure Development Lifecycle, SDL) 프로세스를 적용해 버그를 최소화하고 있는지 확인해야 한다.
해커가 암호화화폐 소프트웨어를 조작해 가치를 훔친 사건은 지금까지 여러 번 발생했다. 최근 한 사건에서는 해커들이 코딩에서 실수를 저지르는 바람에 본인들도 아무것도 훔치지 못했지만 안타깝게도 모든 사람의 지갑이 복구가 불가능하도록 손상되기도 했다. 도둑은 지갑을 훔치지 못했는데, 모두가 지갑을 털린 것이다.

- KPA(known Plaintext Attack), 일명 크립(crib) 공격
좋은 암호화의 결과로 나오는 암호화 텍스트는 무작위적인 텍스트 형태를 보인다. 이론적으로 암호화 공격자는 원래의 평문 텍스트가 어떤 형태인지 알아낼 수 없다. 그러나 블록체인 기술에서는 블록의 형식이 잘 알려져 있거나 알아내기 쉽다. 모든 블록에서 특정 문자 또는 숫자가 항상 같은 자리에 위치한다. 이를 통해 암호화 공격자는 모든 암호화 보호 블록 내에 있는 평문 텍스트의 일부분을 '베낄' 수 있다.
또한 모든 블록은 이전 블록의 함수인데, 이는 근본적인 암호화 암호문의 전체적인 보호 능력을 약화시킨다. 암호문이 취약하지 않다면 큰 문제는 아니지만 어쨌든 이는 공격자에게 유리한 요소가 된다.

- 취약한 SHA-256?
많은 보안 전문가는 전신인 SHA-1과 동일한 계산 취약점을 갖고 있는 SHA-256이 비트코인과 블록체인에서 문제가 될 지 관심을 갖고 있다. 지금 현재로서는 답을 알 수 없다.
SHA-256은 가까운 미래까지는 충분히 안전하다. 더 중요한 점은 세계 금융 거래와 HTTPS 트랜잭션의 대부분이 SHA-256으로 보호되므로 누군가 SHA-256을 깨트린다면 단순히 비트코인과 블록체인이 아닌 훨씬 더 큰 문제에 직면하게 된다는 것이다. 암호화화폐나 블록체인을 만들 계획이라면 암호문만 변경하고 기반 프로그램은 그대로 유지하는 "암호화 민첩성(crypto-agility)"도 계획해야 한다.

- 거래소 해킹
비트코인과 관련된 가장 일반적인 해킹 논의 가운데 하나이면서 모든 블록체인 프로젝트에 적용 가능한 주제는 이를 통제하는 중앙화된 웹사이트의 해킹 빈도다. 거래소 해킹은 매우 빈번하게 일어난다. 최근 해커들이 7,000만 달러 어치의 비트코인을 챙겼다. 지금까지 수십억 달러를 관리하는 많은 암호화화폐 사이트가 해킹으로 피해를 입었다. 해킹이 발생하면 그간 사람들이 쌓아올린 비트코인 가치는 허공으로 사라진다. 오프라인 위치에 가치를 백업하는 것을 잊지 말아야 한다.
가장 큰 해킹 사건 중에는 비양심적인 운영자가 수백만 달러를 챙겨 달아난 사건도 있다. 암호화화폐 거래소와 거래를 한다면 해당 사이트가 잘 보호되고 신뢰할 수 있는지 확인해야 한다. 이 사이트에서 암호화화폐를 도난당해도 적어도 아직까지는 FDIC(Federal Deposit Insurance Corporation)에서 구제해주지 않는다(한국 또한 마찬가지로 예금보험공사에서 구제해주지 않는다. 편집자 주).

대규모 퍼블릭 블록체인, 태생적으로 더 안전
블록체인 보안과 관련해 이해해야 할 한 가지 중요한 개념은 분산된 퍼블릭 블록체인이 태생적으로 프라이빗 블록체인에 비해 더 안전하다는 점이다. 공격자는 블록체인을 해킹하려면 50% 이상의 참가자 또는 블록을 해킹해야 하며 해킹 속도 또한 새로운 블록이 생성되는 속도보다 빨라야 한다.

이런 이유로 대규모 퍼블릭 블록체인은 규모가 더 작은 프라이빗 블록체인에 비해 태생적으로 더 안전하다. 소규모 블록체인은 특히 모든 관련 '비밀'이 한 장소 또는 한 회사에 저장되는 경우, 더 빠르고 쉽게 해킹당할 수 있다. 사실 많은 보안 전문가는 단일 기업 블록체인의 필요성 자체에 의문을 제기한다. 이들은 블록체인의 장점은 블록체인이 하나의 보안 경계를 넘어 분산될 때만이 실현된다고 설명한다. 그러나 블록체인은 복잡한 금융 거래를 수초 만에 완료할 잠재력을 지녔고 소규모 블록체인은 훨씬 더 큰 하이브리드 또는 퍼블릭 블록체인의 구성 요소가 될 가능성이 높기 때문에 작은 규모의 프라이빗 블록체인도 여전히 많이 사용된다.

모든 보안 전문가는 블록체인의 현재와 미래, 그리고 보안 분야에서의 의미를 이해해야 한다. 아무리 안전한 암호화를 기반으로 하더라도 다른 모든 것과 마찬가지로 블록체인 역시 해킹된다. editor@itworld.co.kr   

2018.01.03

비트코인과 블록체인 해킹 사례

Roger A. Grimes | CSO
초기부터 비트코인과 블록체인에 열광했던 많은 사람이 비트코인과 블록체인이 가진 암호화라는 속성이 지속적인 해킹을 막아내기에 충분한지 궁금해했다. 그 답을 찾는데는 오래 걸리지 않았다. 컴퓨터에서 실행되는 가치있는 모든 것이 그렇듯이 비트코인과 다른 암호화 화폐와 블록체인도 빈번하게 공격을 받았으며 그 가운데에는 성공적인(?) 공격도 있었다. 수억 달러의 피해가 발생하고 많은 이가 사기를 당했으며, 블록체인은 훼손당했다. 몇 가지 해킹 사례를 살펴보면 다음과 같다.

- 비트코인 채굴자(Bitcoin miner) 악성코드
비트코인 하나가 채굴될 때마다 그 이후의 비트코인 생성 난이도는 더 높아진다. 특수한 '채굴' 컴퓨터를 가동하고 냉각하는 데에는 많은 전기가 소비된다. 비트코인 채굴자에게 가장 큰 비용은 전기 요금이다. 이런 이유로 많은 채굴자가 '빌린' 리소스를 갖고 비트코인을 채굴하는데, 고용자를 채용해 직접 채굴하는 방법도 있지만 비트코인 채굴 악성코드를 퍼트리기도 한다.

현재 규모가 가장 큰 악성코드 봇넷의 상당수가 비트코인 채굴 전용이다. 악성코드의 의도 측면에서 가장 나쁜 형태는 아닐지라도 여전히 컴퓨터와 기기(온라인 비디오 카메라 장비나 공유기를 해킹하는 경우가 많다)를 무단 사용하는 것으로 피해자는 금전적인 피해를 입게 된다. 또한 해킹당한 컴퓨터의 속도도 저하된다. 비트코인 채굴 악성코드를 차단하는 방법은 다른 악성코드에 대처하는 방법과 동일하다.

- 가치 저장소(value store) 도난
암호화화폐는 지갑(Wallet)이라고 하는 파일 저장소에 가치를 저장하는 경우가 많다. 지갑은 컴퓨터의 다른 모든 가치 저장소와 마찬가지로 침해, 조작, 절도, 전송이 가능하다. 게다가 사람들은 종종 보호용 PIN/비밀번호를 잊거나 저장소가 있는 하드 드라이브를 잃어버리는데, 이 경우 해당 가치 저장소를 영원히 되찾을 수 없는 경우가 많다.

랜섬웨어 역시 같은 문제를 유발한다. 일반적인 은행 계좌의 경우, 컴퓨터에 문제가 생기면 다른 컴퓨터를 사용해 온라인 계정에 접속할 수 있고 그 가치도 그대로 유지된다. 하지만 지갑은 그렇지 않다.

대부분의 전문가들은 악성코드 또는 해커가 접근할 수 없는 오프라인 지갑에 가치를 저장할 것을 권장한다. 이렇게 하면 당사자가 그 가치를 사용하기도 더 어려워진다. 오프라인 속성상 가치 저장소를 사용하거나 업데이트하려면 며칠 동안 기다려야 할 수 있다. 온라인 지갑을 사용한다면 가능한 경우 다중 요소 인증으로 보호해야 한다.

- 전송 트로이 목마(Transfer trojans)
암호화화폐 트로이 목마는 컴퓨터를 모니터링하면서 암호화화폐 계좌 번호로 보이는 정보가 나타나길 기다린다. 이런 정보를 발견하면 사용자가 전송하려고 했던 원래의 계좌를 자신의 계좌 번호로 바꾼다. 면밀히 살피지 않고 전송 버튼을 누르는 순간 더 이상 되돌릴 수 없다.

- 구현상 약점
"이론에서는 이론과 실제 사이에 차이가 없다. 그러나 실제에서는 차이가 있다." 이 말을 누가 가장 먼저 했는지는 알 수 없지만 인쇄 형태로는 1986년 월터 J. 사비치가 쓴 책 <파스칼: 프로그래밍 기술과 과학 입문서(Pascal: An Introduction to the Art and Science of Programming)>에 처음 등장했다.
모든 암호화 구현이 그렇듯이 항상 암호화 알고리즘보다는 해당 알고리즘을 구현하는 프로그램이 훨씬 더 취약하다. 일반적으로 암호화 솔루션에서 발견할 수 있는 취약점 또는 약점은 블록체인에서도 발생한다. 프로그래밍 버그 또는 프라이빗 키(또는 비트코인 지갑)에 대한 취약한 보안으로 인해 전체가 무너질 수 있다. 암호화화폐를 사용하거나 블록체인 프로젝트에 참여하기 전에 소프트웨어 프로그래머들이 보안 개발 주기(Secure Development Lifecycle, SDL) 프로세스를 적용해 버그를 최소화하고 있는지 확인해야 한다.
해커가 암호화화폐 소프트웨어를 조작해 가치를 훔친 사건은 지금까지 여러 번 발생했다. 최근 한 사건에서는 해커들이 코딩에서 실수를 저지르는 바람에 본인들도 아무것도 훔치지 못했지만 안타깝게도 모든 사람의 지갑이 복구가 불가능하도록 손상되기도 했다. 도둑은 지갑을 훔치지 못했는데, 모두가 지갑을 털린 것이다.

- KPA(known Plaintext Attack), 일명 크립(crib) 공격
좋은 암호화의 결과로 나오는 암호화 텍스트는 무작위적인 텍스트 형태를 보인다. 이론적으로 암호화 공격자는 원래의 평문 텍스트가 어떤 형태인지 알아낼 수 없다. 그러나 블록체인 기술에서는 블록의 형식이 잘 알려져 있거나 알아내기 쉽다. 모든 블록에서 특정 문자 또는 숫자가 항상 같은 자리에 위치한다. 이를 통해 암호화 공격자는 모든 암호화 보호 블록 내에 있는 평문 텍스트의 일부분을 '베낄' 수 있다.
또한 모든 블록은 이전 블록의 함수인데, 이는 근본적인 암호화 암호문의 전체적인 보호 능력을 약화시킨다. 암호문이 취약하지 않다면 큰 문제는 아니지만 어쨌든 이는 공격자에게 유리한 요소가 된다.

- 취약한 SHA-256?
많은 보안 전문가는 전신인 SHA-1과 동일한 계산 취약점을 갖고 있는 SHA-256이 비트코인과 블록체인에서 문제가 될 지 관심을 갖고 있다. 지금 현재로서는 답을 알 수 없다.
SHA-256은 가까운 미래까지는 충분히 안전하다. 더 중요한 점은 세계 금융 거래와 HTTPS 트랜잭션의 대부분이 SHA-256으로 보호되므로 누군가 SHA-256을 깨트린다면 단순히 비트코인과 블록체인이 아닌 훨씬 더 큰 문제에 직면하게 된다는 것이다. 암호화화폐나 블록체인을 만들 계획이라면 암호문만 변경하고 기반 프로그램은 그대로 유지하는 "암호화 민첩성(crypto-agility)"도 계획해야 한다.

- 거래소 해킹
비트코인과 관련된 가장 일반적인 해킹 논의 가운데 하나이면서 모든 블록체인 프로젝트에 적용 가능한 주제는 이를 통제하는 중앙화된 웹사이트의 해킹 빈도다. 거래소 해킹은 매우 빈번하게 일어난다. 최근 해커들이 7,000만 달러 어치의 비트코인을 챙겼다. 지금까지 수십억 달러를 관리하는 많은 암호화화폐 사이트가 해킹으로 피해를 입었다. 해킹이 발생하면 그간 사람들이 쌓아올린 비트코인 가치는 허공으로 사라진다. 오프라인 위치에 가치를 백업하는 것을 잊지 말아야 한다.
가장 큰 해킹 사건 중에는 비양심적인 운영자가 수백만 달러를 챙겨 달아난 사건도 있다. 암호화화폐 거래소와 거래를 한다면 해당 사이트가 잘 보호되고 신뢰할 수 있는지 확인해야 한다. 이 사이트에서 암호화화폐를 도난당해도 적어도 아직까지는 FDIC(Federal Deposit Insurance Corporation)에서 구제해주지 않는다(한국 또한 마찬가지로 예금보험공사에서 구제해주지 않는다. 편집자 주).

대규모 퍼블릭 블록체인, 태생적으로 더 안전
블록체인 보안과 관련해 이해해야 할 한 가지 중요한 개념은 분산된 퍼블릭 블록체인이 태생적으로 프라이빗 블록체인에 비해 더 안전하다는 점이다. 공격자는 블록체인을 해킹하려면 50% 이상의 참가자 또는 블록을 해킹해야 하며 해킹 속도 또한 새로운 블록이 생성되는 속도보다 빨라야 한다.

이런 이유로 대규모 퍼블릭 블록체인은 규모가 더 작은 프라이빗 블록체인에 비해 태생적으로 더 안전하다. 소규모 블록체인은 특히 모든 관련 '비밀'이 한 장소 또는 한 회사에 저장되는 경우, 더 빠르고 쉽게 해킹당할 수 있다. 사실 많은 보안 전문가는 단일 기업 블록체인의 필요성 자체에 의문을 제기한다. 이들은 블록체인의 장점은 블록체인이 하나의 보안 경계를 넘어 분산될 때만이 실현된다고 설명한다. 그러나 블록체인은 복잡한 금융 거래를 수초 만에 완료할 잠재력을 지녔고 소규모 블록체인은 훨씬 더 큰 하이브리드 또는 퍼블릭 블록체인의 구성 요소가 될 가능성이 높기 때문에 작은 규모의 프라이빗 블록체인도 여전히 많이 사용된다.

모든 보안 전문가는 블록체인의 현재와 미래, 그리고 보안 분야에서의 의미를 이해해야 한다. 아무리 안전한 암호화를 기반으로 하더라도 다른 모든 것과 마찬가지로 블록체인 역시 해킹된다. editor@itworld.co.kr   

X