테크 #백서리뷰#기술분석#이더리움#tech
삼성 블록체인 키스토어 SDK의 모든 것
삼성 녹스에 기반한 보안성 높은 하드웨어 월릿, 삼성 블록체인 키스토어
개인키 복구 기능 탑재, 외부 지갑 연동도 가능
삼성 블록체인 SDK, 올해 말 정식 공개 예정
강민승 기자
등록일: 2019-07-16  수정일: 2019-07-17

[이미지: 삼성전자 홈페이지 캡쳐]


1초 요약(TL;DR)

☛개발자가 삼성 블록체인 키스토어 SDK를 사용하면 자체 모바일 하드웨어 월릿을 만들 수 있다.

삼성 블록체인 키스토어는 이더리움 계열 토큰만 현재 지원, 앞으로 여러 종류의 토큰을 지원할 예정이다.

블록체인 개발 SDK는 기능이 제한돼 있다. 정식 사용을 위해 삼성과의 파트너십이 현재 필요하다.


삼성이 블록체인 키스토어 소프트웨어개발키트(SDK)를 지난달 27일 공개했다. 지난달 애플은 iOS에서 애플리케이션 보안을 높일 용도로 크립토키트를 공개했지만 삼성은 애초에 하드웨어 지갑에 특화된 개발도구를 공개해 대조된다. 삼성은 갤럭시 모바일 애플리케이션에서 블록체인을 지원하도록 두 종류의 SDK를 현재 지원하고 있다. 여기에는 일반적인 기능을 탑재한 ‘삼성 블록체인 SDK’와 개인키를 관리하는 ‘삼성 블록체인 키스토어 SDK’ 두 종류가 있다. 삼성 블록체인 SDK가 더 큰 범주다. 삼성 블록체인 키스토어 SDK는 큰 틀에서 삼성 블록체인 SDK에 포함된다.


민감데이터 보호, 물리적 복제방지 기능 탑재된 ‘모바일 개인키 금고’

삼성 블록체인 키스토어는 프라이버시 데이터를 관리하고 개인키를 보관하는 금고 역할을 한다. 이번에 발표된 삼성 블록체인 키스토어 SDK를 사용하면 삼성 갤럭시 S10시리즈, 갤럭시 폴드 등에 미리 탑재된 하드웨어 월릿의 기능을 개발할 수 있다. 하드웨어 월릿에 저장되는 개인키는 갤럭시의 하드웨어 칩셋과 연결된 민감데이터보호(SDP) 기능을 통해 보호된다. 삼성에 따르면 SDP가 적용된 갤럭시는 도난, 기기 분실, 악성 공격이 발생해도 개인키 등 중요 데이터가 유출되지 않는다고 한다. SDP 방식으로 저장된 데이터는 기기의 온오프와 별도로 항상 암호화된 상태를 유지하게 되기 때문이다. 


이밖에도 갤럭시S10 시리즈의 칩셋에는 물리적복제방지(PUF) 기술이 적용돼 있어 예측이 어려운 보안키를 생성할 수 있다. PUF는 반도체 생성 과정에서 발생하는 개체별 미세 오차를 토대로 난수를 생성하는 기술을 말한다. 이같이 적용된 PUF 기술은 모바일 하드웨어 월릿의 보안성을 높이는 장치가 될 것이라는 예측이 나온다. 한편 삼성의 블록체인 키스토어는 스마트폰이 공장에서 제조될 때 탑재되는 설치형 기능으로 갤럭시 S10 이전 버전에서는 키스토어를 사용할수 없다.


하드웨어 보안솔루션 ‘삼성 녹스’의 일부로 구동

삼성 녹스는 안드로이드 운영체제와 별개로 구동되는 삼성의 하드웨어 보안솔루션을 말한다. 삼성 모바일의 키스토어는 삼성 녹스가 구동하는 트러스트존 안에 구축된다. 삼성 녹스는 하드웨어 칩셋부터 안드로이드 운영 체제, 애플리케이션 컨테이너의 보안까지 종합적으로 통제하고 방어한다. 삼성 녹스는 보안 레이어를 여러 겹으로 구성해 기기의 데이터가 안전한지 검증하는 작업을 실시간으로 끊임없이 수행한다.


뿐만 아니라 키스토어는 보안성을 더욱 끌어올리기 위해 신뢰실행환경(TEE) 위에서 구동된다. 때문에 사용자가 개인키를 사용해 결제를 진행할 경우 갤럭시에서는 별도의 시크릿창을 열어 사용자의 데이터를 입력받고 처리한다. 이를 신뢰유저인터페이스(TUI)라고 한다. 이는 멀웨어나 인증되지 않은 애플리케이션으로부터 사용자의 데이터를 안전하게 방어하기 위함이다. 또 삼성 블록체인 키스토어에서는 개인키를 비롯한 프라이빗 데이터가 운영체제 외부에서 보이지 않도록 애초에 설계돼 데이터 노출 등 공격 벡터를 줄이고 있다.


블록체인 SDK, 개인키 만들고 외부 지갑 연동도 가능

삼성 블록체인 키스토어 SDK를 사용하면 개인키를 생성, 저장, 관리, 백업하는 기능을 애플리케이션에서 모두 구현할 수 있게 된다. 디앱(dApp)을 효율적으로 구동하기 위해서는 디앱과 연동된 개인키 지갑 등 지갑 인터페이스는 필수적이다. 키스토어 SDK가 등장하기 전에는 삼성의 블록체인 SDK를 사용해 써드파티가 만든 외부 지갑을 앱과 연동해 주로 사용했다. 삼성 블록체인 SDK에는 외부 지갑 연동을 위한 네트워크 모듈이 포함돼 있어 외부 키를 받아올 수 있었기 때문이다.


하지만 전문적인 디앱을 만들고자 할 경우 해당 디앱에 특화된 지갑 애플리케이션이 필수적이다. 이번에 발표된 삼성 블록체인 키스토어 SDK를 사용하면 디앱 등 블록체인 서비스에 쉽게 연동되는 지갑을 수월하게 개발할 수 있다. 이로써 갤럭시 사용자는 웹지갑 등 외부 소프트웨어 지갑을 경유하지 않고도 갤럭시에 내장된 키스토어에서 사용자의 개인키를 꺼내 디앱에서 직접 사용할 수 있을 것으로 기대된다. 사용자 입장에서는 디앱 사용에 필요한 절차가 한 단계 줄어들어 사용자경험(UX)이 개선되는 셈이다. 다만 애플리케이션 업체가 개발한 앱과 삼성의 하드웨어 월릿을 연동하려면 삼성과의 파트너십이 요구된다.


메타마스크처럼 니모닉으로 개인키 복구가능

삼성 블록체인 키스토어에서 구현하는 암호화폐 지갑은 기본적으로 계층결정적(HD) 지갑의 형태다. HD 지갑 기술은 여러개의 개인키와 주소를 관리하는 효과적인 메커니즘을 탑재하고 있어 대부분의 지갑에 적용돼 있다. HD 지갑에서 사용자의 계정은 기기에서 만들어내는 고유한 마스터 시드값을 토대로 생성된다. 


또 삼성 블록체인 키스토어에는 단어쌍을 이용해 사용자의 계정을 복구할 수 있는 기능이 탑재돼 있다. 이는 삼성 블록체인 키스토어가 비트코인기능개선안(BIP)-39 표준안을 지원하고 있기 때문에 가능하다. BIP-39란 이더리움 지갑인 메타마스크 등 HD지갑에서 사용되는 연상기호(니모닉)의 표준을 말한다. 니모닉을 입력하면 지갑에 담긴 사용자 계정을 암호학적으로 모두 복구할 수 있는 특징이 있다. 지갑의 백업키인 셈이다. 예를 들어 사용자가 개인키를 분실한다 해도 12단어쌍을 지갑 소프트웨어에 입력하면 기존 계정을 모두 복구할 수 있다. 뿐만 아니라 BIP-39 표준을 사용하는 외부 지갑에서 생성한 개인키도 삼성 블록체인 키스토어로 손쉽게 이동시킬 수 있다. 다만 사용자는 백업키에 해당하는 니모닉을 분실하지 않도록 항상 유의해야 한다.


기능 제한된 현 삼성 블록체인 SDK, 곧 정식 공개된다

삼성 블록체인 SDK, 삼성 블록체인 키스토어 SDK 모두 자유로운 사용에는 사실상 제한이 따른다. 삼성 블록체인 SDK는 베타버전으로 제공되며 기능은 현재 여럿 제한돼 있고 파트너십을 맺은 업체만 사용할 수 있다. 반면 키스토어의 경우 개발자 모드를 통해 누구나 현재 개발할 수 있지만 마켓에 개발한 앱을 정식으로 배포하려면 앱 아이디가 필요하다. 앱 아이디는 애플리케이션의 메타데이터에 포함되는 값으로 삼성에서 인증값으로 사용하는 값이다. 애플리케이션 업체가 앱 아이디를 얻으려면 삼성에서 애플리케이션을 검토하고 승인하는 절차가 필요하다. 이렇게 삼성과 파트너십을 통해 개발된 애플리케이션은 삼성 블록체인 월릿과 연동할 수 있다. 한편 삼성은 블록체인 키스토어에 적용되는 토큰의 종류를 여럿으로 늘리고 키스토어 서비스 지역도 다국적으로 확장할 계획이다. 삼성은 삼성 블록체인 SDK를 올해 말 정식으로 공개할 예정이다.


키스토어 SDK로 만드는 갤럭시 지갑, 어떻게 만드나?

삼성 블록체인 키스토어는 안드로이드 라이브러리 형태로 제공된다. 키스토어 SDK는 자바(java) 클래스로 이뤄져 있다.

[사진: 안드로이드 스튜디오로 본 삼성 블록체인 키스토어 SDK 파일 내부]


키스토어의 핵심 기능은 디앱에서 사용자가 블록체인의 트랜잭션에 서명하는 기능이다. 트랜잭션의 서명에는 사용자의 개인키가 필수적이다. 트랜잭션이라는 주문서에 개인키라는 도장을 찍어 네트워크로 전송하는 셈이다. 하지만 사용자가 개인키를 이같이 사용하려면 하드웨어 월릿의 특성상 개인식별번호(PIN)나 지문인식 등 사용자 인증이 기본적으로 필요하다. 지갑에서 사용자 인증이 된 후 키스토어에서 직접 생성된 키나 외부지갑에서 받아온 개인키를 서명에 사용할 수 있다. 개발자는 키스토어 SDK를 사용해 블록체인 애플리케이션에서 트랜잭션이 동작하는 로직을 구현할 수 있다. 다음은 삼성 개발자 홈페이지에 구현된 키스토어 지갑 코드의 일부이다.

 

[코드 출처: 삼성 개발자 홈페이지, 한글로 주석을 수정]


디앱이나 안드로이드 앱은 서명이 되지 않은 트랜잭션을 우선 생성하고 삼성 블록체인 키스토어에 서명을 요청하는 형식으로 동작한다. 코드의 createRawTransaction는 서명이 안 된 새로운 트랜잭션이며 이를 signEthTransaction 기능을 통해 서명을 요청하고 있다.


signEthTransaction이 요청되면 갤럭시S10에는 TEE가 관리하는 시크릿창(TUI)이 팝업된다. 사용자가 PIN이나 지문 등으로 인증을 수행하면 트랜잭션 서명이 완료된다. 이후 트랜잭션은 이더리움 등 블록체인 네트워크로 전파된다.


코드의 내부를 상세히 보면 키스토어의 서명에서는 사용자의 계정을 HD지갑에서 받아오고 있다. HD 지갑에서는 모든 공개키, 개인키가 트리(tree) 자료구조처럼 가지를 뻗듯 확장된다. 각 가지는 슬래시(/)로 구분된다. 예를 들어 가장 먼저 등장한 m가지가 개인키(m)과 공개키(M)를 나누는 분기점에 해당한다. 사용자 계정의 주소는 몇 가지 규칙을 통해 나열된다. m/44’/60’/0’/0/0 코드 자체는 지갑 이더리움 계정의 첫번째 개인키를 뜻한다. 


삼성 블록체인 키스토어는 HD 지갑을 구현하며 BIP-44 표준을 기본적으로 따른다. HD 지갑은 구현하는 방식에 따라 여러 형태가 존재한다. 참고로 BIP-44란 HD지갑의 표준인 BIP-32에서 코인마다 코인타입을 부여하고 멀티계좌를 지원하도록 구현한 형태다. 참고로 이더리움 지갑에도 비트코인기능개선제안(BIP) 표준을 얼마든지 적용할 수 있다. BIP 자체는 기능 제안이며 플랫폼마다 구현이 다를 수 있기 때문이다. 코드에 등장한 ethGasLimit에는 처리할 수 있는 최대 수수료를 정하고 있다. 코드에 적힌 21000은 트랜잭션 하나 정도의 가스값을 나타낸다. data는 트랜잭션에 추가되는 데이터로 어떠한 데이터도 모두 첨부될 수 있다. 암호화된 값이나 영지식증명 등의 결과값도 해당 데이터 필드에 담길 수 있다.


[강민승 기자]


D.VIP 3기 투자 중급반
북마크
좋아요 : 0
공유
https://dstreet.io/news/view-detail?id=N20190716153949529339
URL복사
댓글 0
댓글쓰기
댓글 쓰기
에어드랍 가즈아