법인 지갑의 키, 어떻게 만들고 보관해야 할까?

가상자산 회계 실무이야기 4편

by Hye

셀프커스터디의 출발점


지난 편에서 커스터디 업체 선택 가이드를 다뤘다. 이번부터는 다소 복잡할 수 있는 '셀프커스터디 (Self-Custody)'에 대해 본격적으로 다뤄보려 한다.


가상자산 내부통제는 기술적인 측면이 많아 상당히 복잡한 편이다. 게다가 회계담당자 입장에서는 평소 접하지 못했던 IT 보안 용어들이 자주 등장한다. 그래서 내용이 방대해 여러 편에 걸쳐 나눠 설명할 예정이다. 최대한 일상적인 비유를 활용해 쉽게 풀어쓰려 노력하겠지만, 그럼에도 어렵게 느껴지는 부분이 있을 수 있다. 하지만 한 편씩 따라오다보면 어느새 가상자산 내부통제의 전체 그림이 그려질 것이다.


셀프커스터디, 즉 법인이 직접 지갑을 만들어 관리한다는 건 생각보다 복잡한 일이다. 개인이라면 메타마스크를 설치하고 니모닉 12개 단어를 적어두면 끝이지만, 법인은 다르다. 사고나 탈취로부터 자산을 보호하기 위한 환경을 갖춰야 하고, 권한을 분산할 여러 인원도 필요하다. 또한 회계감사에서 이 모든 것의 기초가 되는 Key 가 적절히 통제되고 있다는 것을 입증해야 한다.



시작하기 전에: 기본 개념 정리

시작하기 전에 앞으로 반복적으로 나올 용어에 대한 설명을 간략히 하고 넘어가고자 한다.

Private key : 지갑 내 가상자산을 움직일 수 있는 '디지털 열쇠'. 은행 계좌 비밀번호와 비슷하지만 훨씬 복잡한 암호 형태이다. (예: 0x4c08...a72e)

니모닉 (Seed Phrase) : Private key 를 복구할 수 있는 12 - 24 개의 영어 단어 조합. Private key 와 동일 수준의 중요도로 관리된다.(ex: apple banana ... kite lemon)

Signer : 지갑 내 자산 거래를 실제로 승인하는 사람. 키 생성에 참여했고, 거래 실행 시 비밀번호 입력 등 서명을 수행한다.


앞으로 "키 생성" 이라는 표현이 자주 등장할 것이다. 이때 키 생성이란 지갑을 생성하는 것으로 생성 과정에서 Private key, Public Key, 지갑주소가 모두 생성된다. 그리고 사용하는 프로그램에 따라 다양하겠지만 keystorefile과 Passphrase를 셋팅한다던지, 니모닉을 생성한다던지의 과정을 포함한다.


이런 키 생성 과정을 업계에서는 "키 세레모니(Key Ceremony)"라고 부른다. 키 세레모니는 프라이빗 키의 생성, 백업, 보관이 한 번에 이루어지는 절차로, 철저한 보안 환경에서 수행되어야만 자산을 온전히 보호할 수 있다. 가상자산은 익명성·환전성·비가역성 등으로 인해 고유위험(Inherent Risk)이 매우 높은 자산이기 때문에, 이를 회사 내부에서 직접 관리하려면 강력하고 체계적인 통제를 설계해야 한다. 외부 감사 시에도 이 단계는 핵심 검토 포인트 중 하나이며, 자산 규모나 중요성에 따라 감사인이 키 세레모니 현장에 직접 참관해 절차를 확인하고 증적을 확보하는 경우도 있다.


키를 어디서, 어떻게 생성할 것인가?

AS Photography님의 사진.jpg AS Photography님의 사진

Saferoom이라는 개념

실무에서는 키 생성을 위한 특별한 공간을 'Saferoom'이라고 부른다. 거창하게 들리지만, 은행 금고실처럼 보안이 철저한 공간을 생각하면 된다. 사실 다음 조건만 갖추면 된다.


인터넷 차단 : 유선 랜 케이블 제거, Wifi 비활성화

CCTV 녹화 : 내부에서의 전 과정이 기록될 수 있도록

출입 통제 : 사전에 지정된 인원만 입실 (최소 3명 이상)

문서화 : 출입 및 작업의 날짜, 시간, 참여자, 목적 등을 기록


왜 3명 이상일까? 혼자서 모든 걸 할 수 있으면 자산 유용 위험이 있고, 2명도 공모 가능성이 있기 때문이다. 최소 3명이 참여하면 상호 견제가 가능하고, 이 중 한명은 독립적인 감독역할을 하면 더욱 안전하다. 마치 은행에서 금고를 열 때 여러 직원이 함께 하는 것과 같은 원리다.


중요한 건 이 모든 과정을 사전에 품의서로 승인받고, 작업 완료 후에는 보고서로 문서화해야 한다는 점이다. 나중에 "통제하에 안전하게 생성했음"을 입증할 수 있는 유일한 방법이기 때문이다.


오프라인 생성의 원칙

키는 반드시 오프라인 환경에서 생성해야 한다. Saferoom 구성 시 인터넷 차단 요건이 필요한 이유다. 온라인에서 생성하면 해킹 위험에 노출되기 때문이다. 이를 위해 보통 다음과 같은 방식을 사용한다.


인터넷이 연결되지 않는 전용 노트북 준비 (Wifi 기능제거, 유선 LAN 포트 봉인)

USB에 담긴 키 생성 프로그램 실행

생성된 키를 USB 등에 저장


이렇게 오프라인 환경에서 생성하고 관리되는 지갑(월렛)을 콜드월렛이라고 부른다. 반대로 인터넷상에서 만든 경우 이를 핫월렛이라고 부른다. 법인의 가상자산 관리에 있어서는 콜드월렛이 항상 우선순위로 권장되며, 감사 시 체크하는 주요 포인트 중 하나다.



감사인이 요구하는 통제 요건

Photo By Kaboompics.com님의 사진.jpg Photo By Kaboompics.com

Keystore 와 Passphrase의 분리 보관

법인의 경우 키 생성 시 민감한 정보인 Private key 가 그대로 노출 되는 방식이 아니라 Keystorefile 과 Passphrase 두개로 나뉘어 생성되는 방식이 권장된다.


Keystore : 암호화된 Private Key 파일 (금고)

Passphrase : Keystore를 해독하는 비밀번호 (금고 열쇠)


이 둘을 같은 곳에 보관하면, 마치 금고와 열쇠를 함께 두는 것과 같다. 한 곳만 뚫려도 모든 게 끝이다. 그래서 반드시 분리 보관해야 한다. Keystore 는 보안USB에, Passphrase 는 별도 문서로 다른 금고에 보관하는 식이다.


Passphrase 설정 시에는 KISA 가이드라인을 따를 것이 좋다. 두 종류 이상의 문자로 8자리 이상, 또는 10자리 이상의 복잡한 문자열로 구성해야 한다. 실제로 감사인이 해당 조건을 요구하는 경우가 많다.


니모닉 (Seed Phrase) 미생성

니모닉은 사실 필수가 아니라 '백업수단'이다. Private key 를 잃어버렸을 때 복구할 수 있도록, 기억하기 쉬운 12-24개의 영어 단어로 만들어진 백업 키라고 보면 된다.


그런데 왜 생성하지 않는 것을 권장할까? 바로 '기억하기 쉽다'는 특징이 오히려 위험하기 때문이다. 생성 과정에서 화면에 표시된 니모닉을 누군가 훔쳐보거나 사진을 찍으면, 그 단어들만으로 전체 자산에 접근할 수 있다. 모든 통제를 무력화하는 수단이 되므로 매우 민감하게 보는 것이다.


그래서 실무적으로는 니모닉 대신 Keystore파일과 Passphrase 로 분할하여 생성하는 방식을 사용한다. 이렇게 하면 둘다 있어야만 키에 접근할 수 있어 안전하고, 파일과 Passphrase를 복사하여 따로 저장함으로써 안전하게 백업도 할 수 있기 때문이다.



멀티시그 또는 MPC 구조

단일 키로 모든 자산을 움직일 수 있다면, 그건 기업 통제 관점에서 매우 위험하다. 마치 은행의 공동명의 계좌처럼, 여러 명의 동의해야만 자산을 움직일 수 있도록 해야 안전하다.


멀티시그 (Multi-signature) : 2-of-3, 3-of-5 방식으로 여러 키 중 일정 수 이상이 승인해야 거래 가능

MPC (Multi-Party Computation) : 하나의 키를 여러 조각으로 나누어 관리


예를들어 2 of 3 멀티시그는 "3개의 열쇠 중 2개를 합쳐야 금고가 열리는" 구조이다. 예를 들어 CEO, CFO, CTO가 각각 키를 하나씩 보관하면, 최소 2명이 합의해야만 자산을 움직일 수 있다. 한 사람이 단독으로 자산을 빼갈 수 없는 구조인 것이다.



키 생성 과정 계획 및 로그 기록

키 세레모니 일련의 과정을 미리 계획하고 작업계획서를 통해 문서화 해야 하며 계획서에 따라 과정을 진행하며 모든 것을 기록해 두어야 한다. 기록 대상 예시는 다음과 같다.


생성 일시 및 장소

참여자 명단 및 역할

사용한 프로그램 및 버전

생성된 지갑주소

이외 작업 결과


이렇게 까지 문서화가 필요한 이유는, 그만큼 키가 보안상 중요하고 나중에 정말 안전하게 생성했다는 증거를 남길 유일한 방법이기 때문이다.


이런 과정을 통해 생성된 키는 키 관리대장에 정리해 체계적으로 관리해야한다. 복수의 지갑을 운용하는 경우, 키는 어느 금고에 보관했는지, Signer 는 누구인지, 지갑주소는 뭔지, 백업 키는 어떻게 관리하는지 등을 따로 관리할 필요가 있다. 다만, 이런 정보들은 키의 위치와 키를 실행할 수 있는 권한자를 노출할 위험이 있으므로 관리대장 또한 제한된 인원만 열람할 수 있도록 통제해야한다.


지갑관리대장예시.png 키 관리대장 예시 캡처

자체 개발 지갑이 필요한 이유

"메타마스크를 쓰면 안되나요?"

가장 많이 받는 질문이다. 개인용이라면 크롬 확장으로 이용도 편리하고 범용성이 있어 훌륭한 옵션이지만, 기업 환경에서는 한계가 명확하다.


키 생성 과정을 통제할 수 없음

니모닉 노출 여부를 검증할 수 없음

멀티시그 지원이 제한적

오프라인 키 생성 어려움

감사증적 제공이 어려움


그래서 감사인들은 보통 자체 개발 지갑을 권장한다. 직접 개발하면 프로그램의 개발 및 키 생성부터 보관, 사용까지 모든 과정을 통제할 수 있기 때문이다.


통제 목적에서 권장되는 사항이나 모든 기업이 지갑을 개발할 수는 없다. 가상자산 금액이 크지 않다면 오프라인 키 생성 환경이라도 확보할 수 있는 Ledger, Trezor, 디센트 같은 콜드월렛을 구매하여 이용하거나, 더 중요성이 떨어질 경우 메타마스크를 사용하는 안을 고려할 수 밖에 없다. 다만, 중요성에 달려 있는 것이므로 감사인과 사전 협의가 필요하다.


중요성이 높음에도 불구하고 이런 시중 월렛을 이용하는 것을 고집하는 경우 감사인은 해당 월렛 프로그램을 생성한 회사로부터 Soc report를 받아 올 것을 요구할 수 있는데, 이런 탈중앙화 지갑 프로그램을 만드는 회사 중에서 해당 리포트를 제공할 수 있는 회사는 거의 없다고 보면 된다.


키 보관, 금고 하나로는 부족하다.


Unsplash의rc.xyz NFT gallery (2).jpg 사진: Unsplash의rc.xyz NFT gallery

키를 만들었다면 이제 안전하게 보관해야 한다. 키 생성시 원본 키와 백업 키를 생성했을 것이다. 실무적인 예시를 들면 다음과 같다.


원본 키 보관

위치 : 회사 Saferoom 내 내부 금고

형태 : 보안 USB

접근 : 복수 승인 필요

로그 : 접근 시 마다 목적, 시간, 담당자 기록


백업 키 관리

위치 : 은행 금고 등 외부 시설

형태 : 보안 USB + 종이 (Passphrase) - 각기 다른금고

접근 : 비상 시에만 가능 (이사회 결의 필요)

점검 : 분기별 백업 상태 확인


멀티시그를 이용할 경우, 원본 키 실행을 위해 복수의 키가 생성될 것이다. 예를 들어 CO, CFO, CTO가 각각 멀티시그 Signer 로 지정된 상태라면 각 담당자별로 별도의 금고를 할당하여 보관해야한다. 사내, 사외에 여러개의 금고가 필요한 상황을 마주할 것이다.



마무리 : 키 관리가 곧 가상자산 내부통제다.


셀프커스터디를 시작한다는 건, 단순히 "회사 내에서 지갑을 생성한다"는 의미가 아니다. 키를 어디서, 어떻게 생성하고, 누가 보관하며, 어떤 절차로 사용할지 명확히 설계 하는 것이다.


특히 법인의 경우, 개인과 달리 회계감사라는 관문을 통과해야한다. 감사인이 "이정도면 충분히 통제되고 있다"고 인정할 수준의 체계를 갖춰야 한다. 또한 권한을 부여 받은 담당자들 개인을 신뢰하고 의존하는 구조가 아닌 탄탄한 프로세스에 의존하는 구조가 되어야 운영이 수월할 것이다. 번거롭고 잘못 되었을 때 책임만 부과되는 부담스러운 업무라면 누가 하려고 하겠는가. 그래서 더더욱 체계적인 프로세스가 필요한 것이다.


키 생성과 보관은 셀프커스터디의 시작일 뿐이다. 키를 안전하게 보관했다면, 이제 그 키로 실제 자산을 어떻게 움직일 것인가를 설계해야한다.



다음편에서는 토큰을 보내려면 어떤 통제가 필요한지, 즉 Transaction을 일으킬 때 필요한 통제에 대한 내용을 다뤄보고자 한다.


keyword
작가의 이전글MicroStrategy의 비트코인 전략 탐구 下