Home > 전체기사

[보.알.남] ‘나를 찾기 위한, 나만 알고 있는’ 12개의 키워드, 니모닉

  |  입력 : 2022-09-11 23:58
페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기 네이버 블로그 보내기
암호화폐 보안성 강화 위해 난수를 사용한 특별한 문자들의 조합
니모닉 코드 단어는 BIP-39라는 일반적인 산업표준에서 표준화
암호화하지 않은 니모닉이 클라이언트에서 서버로 전달되지 않도록 해야


[보안뉴스 김영명 기자] ‘니모닉(Mnemonic)’이란 지갑을 복구하기 위한 12개의 단어다. 암호화폐 지갑의 개인 키가 너무 복잡한 단어들로 구성돼 있어 이를 쉽게 입력할 수 있도록 갖춰진 형식이다. 처음에 지갑을 생성할 때 지갑은 영어 단어 그룹을 사용해 고유의 지갑 문구를 생성하게 되는데, 이 고유한 지갑 문구가 내 지갑의 니모닉이 된다. 니모닉은 12개의 단어를 초기에 설정한 배열과 같은 방식의 순서대로 맞추는 것을 의미하며, 문자 배열을 초기대로 완성하지 못하면 어느 누구도 암호화폐 지갑을 열 수 없게 설정돼 있다.

[이미지=utoimage]


위키피디아에 따르면, 니모닉의 어원은 그리스 신화의 기억의 여신 므네모시네(Mnemosyne)에서 유래됐다. 므네모시네의 자녀인 뮤즈(Muses)는 올림포스 신들의 축제에서 아폴론을 도와 음악을 연주했는데, 악보가 없던 때라 기억력에 의존해 연주했다고 한다. 그래서 니모닉의 어원은 ‘기억’에 기반하고 있다. 니모닉은 개인 키와 같이 유출될 경우 지갑 내 암호화폐를 모두 잃게 될 수 있다. 컴퓨터 내 메모장과 같은 곳에 저장하면 악성코드에 노출돼 위험할 수 있다. 따라서 암호화해 저장하는 것을 추천한다. 보통 니모닉과 개인 키의 경우 프린트하거나 어딘가에 적어두고, 금고 등 물리적으로 보관하는 것이 가장 안전한 방법이다.

그러면, 먼저 지갑의 정의부터 알아보자. 우리나라 블록체인 및 암호화폐 정보포털인 해시넷(hashnet)에 따르면, 암호화폐 지갑은 블록체인 네트워크와 상호 작용하는 수단 중 하나로, 지갑 주소와 암호로 구성돼 있다. 지갑 주소는 다른 사람들과의 암호화폐 거래를 위해 공개해도 되지만, 개인 암호는 지갑 소유자 본인만 알고 있어야 한다. 암호화폐 지갑은 비트코인(bitcoin) 지갑, 이더리움(ethereum) 지갑, 리플(ripple) 지갑 등으로 구분하며, 각각 암호화폐 종류별로 별도로 보유해야 한다.

비트코인 지갑은 영문자 대문자/소문자, 아라비아 숫자로, 이더리움 지갑은 영문자 소문자와 아라비아 숫자의 조합으로 구성돼 있다. 리플 지갑은 지갑 주소와 별도로 데스티네이션 태그가 있어야 다른 사람이 송금한 돈을 받을 수 있다.

핫월렛과 콜드월렛은? 인터넷 접속 여부의 차이
전 세계 금융투자를 다루는 사이트인 인베스토피디아(Investopedia)에 따르면, 코인지갑은 핫월렛(Hot Wallet)과 콜드월렛(Cold Wallet) 등 두 가지로 분류되는데, 이렇게 나누는 기준은 거래 과정에서의 인터넷 연결 유무다. 핫월렛은 인터넷 주소가 네트워크에 연결돼 온라인 상태에서만 거래를 주고받을 수 있으며, 실시간으로 거래를 주고 받아 ‘핫월렛’이라고 표현한다. 콜드월렛은 온라인 연결 없이 오프라인 상태에서만 존재하기 때문에 거래 자체가 불가능하다.

콜드월렛은 고액투자자나 코인을 안전하게 보관하기 위한 목적으로 쓰일 뿐, 거래를 하지는 않기 때문에 해킹 등 보안 유지과정에서 핫월렛과 비교해 더욱 안전하다. 콜드월렛을 위한 암호화폐 전송은 ①거래내역 생성 ②개인키 서명 ③전송 등 세 단계로 이뤄지게 되는데, 1~2단계는 콜드월렛 자체적으로 해당 활동을 처리하게 되며, 마지막 전송 단계에서만 별도의 키를 생성하게 된다. 콜드월렛을 활용한 암호화폐 전송은 개인 키 노출이 없으며, 이미 서명된 트랜잭션 코드를 첨부해 전송하기 때문에 상대적으로 보안성이 높다.

핫월렛은 온라인으로 연결되는 모든 지갑을 의미하며, 연결성을 유지하고 있기 때문에 콜드월렛과 비교해 해킹 등 보안위험에 노출될 가능성이 상대적으로 높다. 하지만 핫월렛은 실시간으로 연결되는 만큼 편리하게 사용이 가능해 많은 사람들이 이용하는 지갑 유형이며, 예금계좌, 소액투자, 단기투자용 등으로 사용된다.

▲전 세계에 유통되는 수많은 암호화폐의 종류[이미지=해시넷]


니모닉 단어, 난수를 사용해 보안성 강화
니모닉 단어는 결정적 지갑(단일 마스터 키 또는 단일 시드로부터 파생된 개인 키를 포함한 지갑)을 파생하기 위한 시드로 사용되는 난수(특정한 배열 순서나 규칙이 없는 연속적인 임의의 수)를 인코딩한 단어 시퀀스를 뜻한다. 결정적 지갑을 구현한 지갑 애플리케이션은 지갑을 처음 생성할 때 12~24개의 단어 시퀀스를 보여준다. 니모닉 단어는 난수 생성 소스로 형성하기 때문에 지갑이 스스로 랜덤하게 생성한 단어로 키를 만들어 더욱 보안성이 높다.

이상적인 단어 목록은 △처음 네 글자를 입력해 명확하게 식별할 수 있는 단어를 사용해야 하며 △‘class’와 ‘clastic’, ‘security’와 ‘secund’ 등 유사한 단어를 함께 사용하면 추측하기도 어렵고 오류가 더 많이 생길 수 있으며 △코드 단어를 보다 효율적으로 검색이 가능하도록 정렬된 단어 목록을 사용하는 것이 유용하다는 등의 특징이 있다. 니모닉 코드 단어는 BIP-39(Bitcoin Improvement Proposal 39)라는 일반적인 산업표준에서 표준화됐다.

니모닉 단어와 시드의 생성 절차는
니모닉 단어를 생성하기 위한 첫 번째 단계는 암호학적으로 랜덤한 128~256비트의 시퀀스 S를 생성한다. 두 번째 단계는 SHA(Secure Hash Algorithm)-256 해시값 중 왼쪽에서 ‘시퀀스 S의 길이/32비트’ 만큼을 체크섬(오류 검출을 위해 사용되는 자료)으로 만든다. 세 번째는 단계2에서 만든 체크섬을 시퀀스 S의 끝에 추가한다. 네 번째는 단계3에서 만든 시퀀스와 체크섬을 합한 전체를 11비트 단위로 분할한다. 다섯 번째로 각 11비트를 2048(211)개의 미리 정의된 단어로 치환한다. 마지막 여섯 번째로 단어 시퀀스로부터 순서를 유지하면서 니모닉 코드를 생성한다.

위와 같은 단계로 생성된 니모닉 단어는 128~256비트 길이의 엔트로피(불규칙하게 생성되는 일정한 길이의 난수)를 표현한다. 엔트로피는 키 스트레칭 함수 PBKDF2(암호화)를 통해 512비트의 시드를 만드는데 사용된다. 생성된 시드는 결정론적 지갑을 구축하고, 키를 파생하는 데 사용된다.

키 스트레칭(Key Stretching) 함수는 해시를 여러 번 반복해 브루트-포스 공격(Brute-force attack, 무작위 대입 공격)에 대비하는 것을 의미하는데, 니모닉과 솔트(Salt)의 파라미터를 사용한다. 솔트 파라미터는 브루트-포스 공격을 가능하게 하는 조회 테이블(Lookup Table) 생성을 어렵게 하는 역할을 한다.

시드 생성에서 PBKDF2(암호화) 키 스트레칭 함수의 첫 번째 파라미터는 위의 여섯 번째 단계에서 만든 니모닉이다. 두 번째 파라미터는 상수 문자열 ‘Mnemonic’에 사용자가 지정한 암호문을 붙인 솔트다. PBKDF2는 니모닉과 솔트를 HMAC-SHA512로 2048번의 해싱해서 512비트 값을 만들어내는데, 이 값이 시드가 된다.

▲니모닉 코드 생성(좌)과 시드 추출 과정(우)[이미지=해시넷]


선택적 암호문, 보안성 강화하는 도구
BIP-39 산업표준은 시드 생성에서 선택적 암호문 사용이 가능하다. 이때 암호문을 설정하지 않았다면, 니모닉은 상수 ‘Mnemonic’과 함께 솔트를 구성해 연장되고, 주어진 니모닉으로부터 특정한 512비트 시드를 생성한다. 만약 암호문을 사용한다면, 스트레칭 함수는 동일한 니모닉으로부터 다른 시드를 생성한다. 실제로 단일 니모닉이 주어졌을 때 암호문이 다르면, 다른 시드를 만들어낸다. 수많은 암호문에 따라 각각 또 다른 많은 시드를 만들 수 있으며, 이를 통해 초기화되지 않은 수많은 지갑을 형성할 수 있다. 특히, 암호문은 충분히 복잡하고 길어 실제로 이를 풀어내기 위해 무차별 대입을 하거나, 우연히 사용 중인 암호를 추측해서 알아맞출 가능성은 없다.

선택적 암호문은 △니모닉 자체만으로는 의미가 없도록 생성해 니모닉 백업이 도난으로부터 보호될 수 있도록 하는 2차 팩터의 기능을 한다 △공격자의 협박으로 암호문을 공개해야 할 경우 그럴듯한 가짜 암호문을 제공해 피해를 조금이나마 줄일 수 있다는 등의 특징이 있다.

선택적 암호문은 또한 지갑의 주인이 중병에 걸리고 의식이 없거나 사망했을 때 주인 외에 암호문을 파악하고 있는 사람이 없다면, 시드는 무용지물이 되고 지갑에 저장된 모든 자금은 영원히 소멸하게 되는 특징도 지녔다.

니모닉, 내 지갑의 강화된 잠금장치
니모닉이 유출되면, 내 지갑을 통째로 다른 사람에게 가져다 바치는 것과 마찬가지이기 때문에 니모닉의 보안은 더욱 각별히 신경써야 하고, 가까운 지인이라도 보여주지 않는 것이 좋다.

니모닉 유출을 막기 위해서는 ①절대 암호화하지 않은 니모닉이 클라이언트에서 서버로 전달되지 않게 할 것 ②서버 보안상 오류로 서버 데이터베이스가 공격자에게 노출되더라도 공격자가 사용자의 니모닉을 알 수 없게 할 것 ③서버가 안전하더라도 클라이언트가 고객이 아닌 다른 사람의 손에 넘어갔을 때 니모닉 복구가 불가능하게 할 것 등 세 가지를 지키면 된다.

특히, 두 번째와 세 번째는 기존 암호통신에서 ‘키 교환’이라는 방식을 통해 해결할 수 있다. 키 교환 방식을 활용하면, 서버와 클라이언트는 각자의 비대칭 키(정보를 암호화할 때 사용하는 키와 암호를 복호화할 때 사용되는 키가 서로 다른 것)를 활용해 안전한 방식으로 대칭 키(정보를 암·복호화할 때 사용되는 키가 서로 같은 것) 공유가 가능하다.

이때 클라이언트에서는 비밀정보를 생성할 때 PIN(Personal Identification Number)을 사용해 한 번 더 비밀정보를 보호한다. 그후 클라이언트는 AES(미국 표준 암호알고리즘)과 대칭 키를 사용해 니모닉을 암호화하고, HTTPS를 사용해 암호화한 니모닉을 서버에 전달한다. 서버는 데이터베이스에 서버 자신의 비밀정보와 암호화한 니모닉만을 저장한다. 클라이언트는 니모닉 암호화가 끝나면 즉시 메모리에서 자체 비밀정보를 제거하며, 아무런 정보도 남기지 않는다. 이때 서버가 해킹 공격을 받더라도 공격자는 암호화된 니모닉과 서버만의 비밀정보를 얻게 된다. 이렇게 암호화된 니모닉을 풀어낼 수 있는 확률은 극히 낮다.
[김영명 기자(boan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>

  •  
  • 0
  • 페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기 네이버 블로그 보내기

  •  SNS에서도 보안뉴스를 받아보세요!! 
시큐아이 에스케어 파워비즈 배너 2022년 3월15일 시작~ 12개월 23년 1월12일 수정 위즈디엔에스 2018
설문조사
보안전문 기자들이 뽑은 2023년 보안 핫키워드 10개 가운데 가장 주목되는 키워드는?
보안에서 진짜 ‘핫’한 제로트러스트와 공급망 보안
전문화, 분업화로 더욱 심해지는 랜섬웨어 공포
2023년 클라우드 생태계를 위협할 다양한 보안이슈들
전 국민이 사용하는 스마트폰, 2023년 해커의 집중 타깃
피싱 공격, 새로운 서비스형 위협 ‘PhaaS’로 더 악랄해지다
2022년 말에 터진 서명키 탈취사건, 2023년의 서막에 불과하다
밀집도 모니터링, 지능형 CCTV와 영상분석 트렌드 주도
주 52시간 근무제 달라지나? 정부 정책 따라 출입·근태 인증 보안 시장 요동
메타버스, 주목받는 만큼 증가하는 보안위협
스마트농업 육성 본격화, 보안과 안전 기반 하에 추진돼야