brunch

You can make anything
by writing

C.S.Lewis

by SKN Jun 22. 2022

Ramper: 이메일로 Dapp 로그인

Web 3.0 지갑 시리즈 (2)


들어가며


2-3년 전쯤에 미국에서 숙취 해소 음료를 판매하여 250억원 이상의 매출을 올린 한국계 사업가에 대한 기사를 본 적이 있다. 해당 기사는 아홉살 때 캐나다로 이민을 간 이시선 모어랩스 대표가 페이스북과 테슬라 등을 거친 뒤 한국의 숙취 해소 음료에서 영감을 받아 미국에서 숙취 해소 음료를 판매하기 시작하여 큰 성공을 거둘 수 있었다는 내용을 담고 있었다. 그 이후에 스타트업과 관련된 강연에서 한 번 더 이시선 대표의 이야기를 접하게 되면서 숙취 음료 사업의 성공 이후 그의 행보가 궁금해졌다.

이시선 대표의 모닝 리커버리 (출처: 매거진 한경)

그러다가 두 달 전쯤에 다음과 같은 기사를 접하고 읽던 중에 이시선 대표가 Web 3.0 스타트업을 창업했다는 것을 알게 되었다.

이시선 대표의 새로운 스타트업 Ramper의 투자 유치 (출처: 한경)

신기한 마음에 Ramper라는 스타트업이 어떠한 솔루션을 개발하는 곳인지 궁금해졌고, 리서치 결과 Ramper는 이메일 등을 이용해서 Dapp들에 로그인할 수 있는 서비스를 만들고 있다는 것을 알게 되었다. 이전 글(코인베이스 MPC Browser)에서도 다룬 것처럼 필자는 결국 지갑의 사용이 간단하고 쉬워져야 더 많은 유저들이 Web 3.0 서비스들에 온보딩될 수 있다고 믿기 때문에 Ramper의 서비스에 흥미를 느끼고 좀 더 심층적으로 분석하고 싶다는 생각이 들었다. 그래서 해당 글에서는 Ramper가 구체적으로 어떤 서비스를 제공하며, 어떤 원리로 구현되는지 등에 대해서 다뤄보려고 한다.


해당 글은 Ramper의 Medium에 게시된 'Ramper KMS Architecture V2(https://ramper.medium.com/ramper-kms-architecture-v2-c041ea7f71d2)' 와 공식 홈페이지를 참고하여 작성된 글입니다. Ramper의 솔루션이 아직 정식 출시가 된 것이 아니기 때문에 향후 달라지는 점이 있을 수 있습니다.




Ramper 서비스 설명


Ramper의 서비스를 이해하기 위해서는 기존에 크립토를 처음 접하는 유저들이 비수탁 지갑을 이용해서 Dapp을 사용하던 과정을 알아야 한다


1. 기존 비수탁 지갑을 이용한 Dapp 이용 과정


(1) 비수탁 지갑을 다운로드하여 설치한다

(2) 시드 구문을 어딘가에 적어둔다

(3) 거래소(ex. 업비트, 바이낸스)에 가입한다

(4) 거래소에서 암호화폐를 구입한다

(5) 거래소에서 비수탁 지갑으로 암호화폐를 전송한다

(6) Dapp에 방문하여 원하는 거래를 한다


기존에는 크립토에 처음 입문하는 유저가 Dapp을 이용하려면 위와 같이 6단계의 과정을 거쳤어야 했다. Web 2.0 프로덕트들에 익숙해져 있는 초기 유저들의 입장에서는 (1), (2), (5)의 단계가 매우 생소할 수밖에 없다. 크롬에 브라우저 익스텐션 형태로 설치하는 비수탁 지갑의 개념과 시드 구문의 개념 모두 처음에 접하면 이해하기가 어렵다. 그렇기 때문에 지금까지는 이 과정에서 많은 유저들의 초기 이탈이 발생하였다. Ramper의 솔루션은 이러한 절차를 간편화하여 이러한 초기 유저들이 더욱 쉽게 원하는 Dapp을 이용할 수 있도록 만들어주는 것을 목표로 하고 있다.



2. Ramper를 통한 Dapp 이용 과정


Ramper의 데모 버전 (출처: Ramper)

(1) 원하는 Dapp에 방문하여 이메일이나 SSO로 로그인한다

(2) 바로 암호화폐를 구입한다

(3) 원하는 거래를 한다


Ramper는 메타마스크 등의 비수탁 지갑들과 달리 설치를 필요로 하지 않는다. 그렇다면 어떤 방식으로 (1)의 과정에서 Dapp들에 로그인할 수 있는지 의문이 생긴 분들이 많을 것이다. Ramper는 Dapp 개발자들에게 이메일이나 SSO를 통해서 유저들이 Dapp들에게 로그인할 수 있는 SDK를 제공한다. 즉, 유저들이 따로 Ramper 관련한 프로그램을 설치해야하는 것이 아니라, Dapp을 개발하는 팀에서 Ramper가 제공하는 SDK를 이용하여 이메일 및 SSO를 통해 로그인하는 것이 가능하도록 만들어주어야 한다. 그렇기 때문에 Ramper 유저들은 비수탁 지갑을 이용할 때처럼 모든 Dapp들을 이용할 수 있는 것이 아니고, Ramper의 SDK를 적용하여 Ramper의 로그인 솔루션을 지원하는 Dapp들만 이용할 수 있다. 이는 분명 확장성의 측면에서는 큰 단점으로 존재한다.

하지만 Ramper는 Ramper의 솔루션을 제공하는 Dapp들에 한해서는 유저들에게 기존 비수탁 대비 매우 편리한 사용자 경험을 제공한다. 사용자들은 비수탁 지갑을 설치하거나 시드 구문을 어딘가에 적어놓을 필요가 없다. 또한 업비트나 바이낸스 같은 거래소에 가입하여 비수탁 지갑으로 암호화폐를 전송할 필요도 없다. 그저 이메일을 통해서 Ramper에 가입하고, Ramper 지갑 내에서 Moonpay로 바로 암호화폐를 구매하면 된다 (Moonpay를 통해 지갑 내에서 암호화폐를 구입할 수 있는 지갑은 사실 이미 몇 군데 있긴 하다). 이러한 일련의 프로세스는 처음 Web 3.0 프로덕트를 접하는 유저들에게 거의 Web 2.0 프로덕트를 사용하는 것과 같은 경험을 제공해준다. 우리가 지금까지 구글 계정 하나로 페이스북과 에어비앤비 등의 다양한 Web 2.0 서비스들에 가입하여 사용할 수 있었던 것처럼, Ramper를 통하면 하나의 구글 계정으로 (Ramper를 지원하는) 다양한 Dapp들에 로그인하여 서비스를 이용할 수 있다. 

Ramper를 이용하면 Web 3.0에서 Web 2.0과 같은 사용자 경험을 할 수 있다




Ramper 서비스 원리


1. 지갑 개설 과정


Ramper에서 유저가 지갑을 개설하게 되면 다음과 같은 과정이 일어난다.


1) 새로운 핫월렛이 생성된다 (공개 주소 + 개인 키)

2) 그런 다음 개인 키는 Randomized XOR Cipher 프로세스를 통해 원래 개인 키와 동일한 크기의 두 개의 개별 암호(분할 키)로 인코딩된다: Key A와 Key B

3) 하나의 분할 키(Key A)는 타사 KMS 공급자에게 전송되며 개별화된 HSM 암호화 키로 암호화되어 저장된다

4) 다른 분할 키(Key B)는 Ramper 클라우드 저장소로 전송되어 Ramper의 키로 암호화되어 저장된다

Ramper 지갑 개설 과정 (출처: Ramper)


Ramper도 코인베이스와 마찬가지로 개인 키를 두 개의 분할 키로 쪼개는데에 MPC(Multiparty Computation) 기술을 활용한다 (MPC 기술에 대한 설명은 이전글(https://brunch.co.kr/@8f226b2df9034e1/7)에서 하였기 때문에 참조 바랍니다). 개인 키를 두 개의 분할 키로 쪼개서 각각의 보관소(Ramper 클라우드 저장서와 타사 KMS 공급자)로 전송하는 과정이 유저의 기기에서 일어나기 때문에 Ramper는 절대로 Key A를 보게 되는 일이 없다. 즉, Ramper가 마음대로 유저의 지갑에 액세스할 수 없다.



2. 트랜잭션 서명 과정


Ramper에서 유저가 트랜잭션을 서명하게 되면 다음과 같은 과정이 일어난다.


1) 사용자가 Ramper에 의해 인증되면 시간 제한이 걸려있는 사용자 액세스 토큰이 (Ramper가 소유하지 않는) 타사 서비스 제공업체에서 생성된다 

2) Key B는 Ramper에서 사용자 장치로 보내진다

3) 서명할 거래 내역, Key B 및 사용자 액세스 토큰이 Transaction Sign Function으로 전송된다

* Transaction Sign Function은 Intel SGX, AWS Nitro, ARM TrustZone 등의 TEE(Trusted Execution Environment) 내에서 실행된다

TEE(Trusted Execution Environment)는 프로세서 내에 일반 영역과 보안영역을 나누어 제공함으로써 두 영역 간의 정보 교환을 통제하여 보안성을 유지하는 방식이다. 보안 영역에 생체 정보, 결제 정보, 기업 보안 문서 등 중요한 정보를 저장함으로써 일반 영역과 정보 교환이 통제되고 보안 소프트웨어가 안전하게 실행 가능하게 만든다

4) Transaction Sign Function은 TEE 내에서 다음 단계들을 완료한다

    - 사용자 액세스 토큰 및 사용자 ID를 확인한다

    - Key A를 가져온다

    - Key A와 B를 이용해서 원래 개인 키를 복원한다

    - 복원한 개인키로 거래내역 서명한다

    - 서명된 바이트를 사용자 장치로 반환한다

5) 서명된 바이트가 사용자 장치로 반환되면 이를 블록체인으로 전파할 수 있다

Ramper 트랜잭션 서명 과정


위의 과정에서 볼 수 있듯이 사용자 엑세스 토큰의 발급, Key A의 저장, TEE 서비스를 Ramper가 아닌 전부 다른 제 3의 업체에게 위탁하고 있다. 그렇기 때문에 Ramper가 독단적으로 유저의 지갑에 접속할 수 없다. 또한 여러 개의 업체들에게 보안을 위탁하는 형식으로 운영되기 때문에 하나의 업체에 문제가 생겨도 개인 키가 유출되는 상황이 발생하지 않아 단일 실패 지점 (Single Point of Failure)의 위험을 제거했다고 볼 수 있다.




궁금증 및 결론


위과 같이 Ramper에 대한 리서치를 진행하면서 다음과 같은 몇 가지 궁금증이 생겼다.


(1) 트랜잭션 서명 과정의 첫번째 단계인 유저의 Authentication 과정에서 사용자 엑세스 토큰은 정확히 어디서 발급되는 것인지? 

> 어떤 업체에서 사용자 엑세스 토큰을 발급하며, 유저의 Authentication 과정은 정확하게 어떤 방식으로 이루어지는지에 대한 의문이 생겼다 (사용자 엑세스 토큰을 발급하는 과정이 단일 실패 지점이 될 수 있지 않은지)


(2) Key Recovery Process가 어떻게 되는지?

> Ramper가 Medium에서 밝히고 있는 것처럼 MPC 기술을 이용해서 개인키를 분할하기 때문에 Key A와 B 중에 하나가 유출된다고 하더라도 Key Recovery Process를 거쳐서 새롭게 Key A와 B를 만들어낼 수 있는데, 이 과정에서 구체적으로 어떤 방식으로 인증이 이루어지며 보안상으로 문제가 없는지 의문이 생겼다.


(3) Dapp들이 직접 연동해야 하는 것은 그들에게 번거로운 일이 아닐지?

> SDK를 제공하기는 하지만 Dapp들이 직접 Ramper의 솔루션을 연동해야 하는 것은 번거로운 일일 수 있는데 어떤 방식으로 초기에 Dapp들을 온보딩 시킬 것인지에 대한 궁금증이 생겼다.



위와 같이 몇 가지 궁금증들이 존재하지만 이는 아직 Ramper의 서비스가 출시 이전이기 때문에 구체적인 사항들을 알 수 없어서 발생한 부분이 크다. 따라서 향후 Ramper의 서비스가 구체화되고 본격적인 출시가 이루어지면 해결될 부분이 많을 것이라고 생각된다. 빠른 시일 내에 Ramper가 정식 출시되어서 Dapp들을 이메일로 로그인할 수 있는 날이 왔으면 좋겠다는 생각이 든다. 이러한 서비스의 출시는 기존에 신규 유저들의 Web 3.0 온보딩 과정에서 일어나던 이탈을 크게 줄일 수 있을 것으로 기대되기 때문이다. 복잡하게 메타마스크 지갑을 만들고 개인 키를 관리하는 등의 과정을 생략하고 바로 이메일이나 SSO로 Dapp에 로그인할 수 있게 함으로써, 더 많은 유저들이 자유롭게 Dapp들을 사용하여 Crypto의 Mass Adoption을 앞당기는데에 도움이 될 수 있을 것이다.




작가의 이전글 코인베이스 MPC Browser
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari