블록체인 지갑 다중 플랫폼 서명 체계

Nervos
本文约5250字,阅读全文需要约21分钟
보안과 사용 편의성, 플랫폼 간 일관된 경험의 균형을 맞추는 방법은 다중 플랫폼 서명 체계로 해결해야 하는 문제입니다.

이 기술 기사는 Nervos가 매주 수요일에 개최하는 Dev Meetup에서 가져온 것입니다 저자는 Secret Ape Technology의 Nervos AppChain 기술 이사인 Duan Yangyang입니다.

---

많은 분들이 CryptoKitties와 같은 블록체인 DApp을 플레이하셨을 것입니다.특히 귀여운 고양이를 보고 구매하고 싶을 때 일반적으로 MetaMask를 다운로드하여 설치하라는 메시지가 표시됩니다. MetaMask는 PC 브라우저 기반의 플러그인 지갑입니다.성공적으로 다운로드하여 설치하려면 약간의 과학적 인터넷 지식이 필요합니다.설치가 성공한 후 MetaMask 플러그인 지갑을 호출하여 결제 거래를 완료할 수 있습니다. .


그러나 휴대폰에서 CryptoKitties를 플레이하려는 경우 MetaMask 지갑이 없기 때문에 게임을 계속할 수 없다는 것을 알게 될 것입니다. 아직 휴대폰에 imToken 및 기타 모바일 지갑이 있을 수 있지만 안타깝게도 모바일 브라우저를 통해 CryptoKitties 게임을 열면 서명 결제를 위해 여전히 imToken 및 기타 지갑을 자동으로 깨울 수 없습니다.

다중 플랫폼 서명 문제 및 고충

따라서 PC 브라우저를 기반으로 하는 애플리케이션과 휴대폰의 기본 APP 애플리케이션을 포함하여 DApp을 휴대할 수 있는 다양한 방법이 있음을 알게 될 것입니다. 마찬가지로 지갑에도 imToken 모바일 클라이언트 지갑, 공식 Ethereum 지갑과 같은 PC 기반 클라이언트 지갑, MyEtherWallet과 같은 오픈 소스 웹 지갑 및 다양한 콜드 지갑과 같은 많은 휴대 방법이 있습니다. 콜드 월렛은 이해하기 쉽습니다.내 휴대폰이 인터넷에 연결되지 않은 하드웨어라고 가정하면 지불 서명이 필요한 경우 USB 케이블을 컴퓨터에 연결하기만 하면 서명할 수 있습니다. 개인 키는 전체 프로세스 동안 인터넷에 노출되지 않습니다.

즉, PC 브라우저와 휴대폰에서 동일한 DApp 경험을 달성하고 지갑 계정을 자주 전환할 필요가 없고 돈을 주고 받는 것은 고사하고 현재로서는 불가능합니다. PC 쪽에서는 메타마스크 지갑을 사용할 수 있고, 휴대폰 쪽에서는 모바일 지갑에서 열어봐야 완전한 DApp을 경험할 수 있습니다. Alipay와 WeChat Pay의 원스톱 교차 플랫폼 경험에 대해 생각해 보십시오. 원스톱 다중 플랫폼 서명 문제를 해결할 수 있는 지갑이 없습니까?

더욱 안타까운 것은 메타마스크가 공식 블로그에서 플러그인 지갑은 안전하지 않기 때문에 사용자가 그러한 플러그인 지갑에 많은 자금을 넣는 것을 권장하지 않는다고 언급한 것입니다. 이 순간 쓰라린 미소를 지을지도 모릅니다. 저는 평범한 초보 사용자입니다. 여러 플랫폼에서 거래에 서명할 수 있고 안전한 지갑을 원합니다. 이 작은 요구 사항이 충족되지 않을 수 있습니까? 걱정하지 말고 현재 상황과 가능한 해결책을 분석해 봅시다.

모든 플랫폼에서 DApp 서명 문제를 해결할 수 있는 지갑이 있다면 일관된 경험을 보장할 수 있으며 모바일 지갑의 장점은 프라이빗 키가 항상 로컬로 휴대폰에 저장된다는 것입니다. 브라우저 지갑이나 플러그인 지갑보다 안전하며, 둘째, 사용자는 다양한 플랫폼의 거래를 처리하기 위해 다양한 지갑을 설치할 필요가 없습니다.

따라서 보안과 사용 용이성, 플랫폼 간 일관된 경험의 균형을 맞추는 방법은 다중 플랫폼 서명 체계가 해결해야 하는 문제입니다. 이것이 우리가 지금까지 본 업계의 매력이므로 연구를 시작하고 솔루션을 제공하려고 했습니다.

휴대폰 스캐닝 솔루션

기존 인터넷 애플리케이션은 참고할 수 있는 몇 가지 아이디어를 제공할 수 있습니다.아래 그림의 왼쪽은 휴대폰의 Alipay 결제 페이지입니다. 우리는 모두 Alipay에 대해 잘 알고 있습니다.Alipay를 사용하여 휴대폰으로 결제하면 응용 프로그램이 자동으로 Alipay를 깨운 다음 ​​Alipay에서 직접 결제 프로세스를 완료합니다. 컴퓨터 쪽에서 타오바오 웹사이트에서 결제하면 타오바오 결제 페이지에 QR코드가 뜨는데 휴대폰에서 알리페이를 열고 QR코드를 스캔하면 휴대폰에서 결제를 완료하면 결제 결과가 나온다. Taobao로 전송됩니다 완료, 경험이 매우 좋고 안전합니다.


사진 오른쪽이 넷이즈 메일박스 서비스인데 PC 브라우저에서 넷이즈 메일박스에 로그인하기 전에 계좌번호와 비밀번호를 입력해야 하는데 나중에 넷이즈는 이것이 그다지 안전하지 않다고 느꼈습니다. 번거롭기도 하고, 비밀번호를 분실하면 어떻게 해야 하나요?? 누구나 스마트폰을 가지고 있고, 휴대폰은 상대적으로 사생활이 보호되고 보안성이 높다는 점을 감안해 브라우저에서 로그인할 때 QR코드를 주고, 휴대폰에 있는 이메일 앱으로 QR코드를 스캔하면 모바일 단말기가 완성된다. 확인 및 인증 후 PC 브라우저의 웹 메일이 자동으로 성공적으로 로그인됩니다. 기존 인터넷 제품에 대한 해결책은 브라우저 측에서 더 나은 보안을 해결할 수 없기 때문에 모바일 측에서 코드를 스캔하는 보다 안전한 방법으로 이러한 단점을 보완할 수 있다는 것입니다.

이런 생각을 해보면 PC 브라우저에서 크립토키티를 플레이하고 지금 귀여운 고양이를 사려고 주문을 하고 싶다면 예전에는 과학적으로 인터넷 서핑을 하고 메타마스크를 설치하고 지갑 계정을 만들고, 그런 다음 imToken 또는 다른 지갑을 사용하여 일부 ETH를 MetaMask 지갑으로 전송하고 마지막으로 서명하고 지불하여 구매하십시오. CryptoKitties의 거래 데이터를 QR코드 형태로 직접 제시하고 모바일 지갑을 스캔하여 휴대폰에서 전체 서명 거래 프로세스를 완료한 다음 트랜잭션 데이터를 체인으로 전송하고 최종적으로 트랜잭션 결과는 브라우저 웹 페이지로 다시 전송되므로 전체 경험이 매우 좋습니다.

우리는 이 계획에 대해 생각해 보았지만 나중에 생각해보면 문제가 있습니다! 뭐가 문제 야?

일반 이체 거래가 괜찮다면 거래 데이터는 상대적으로 적지만 컨트랙트를 전개한다면? 이것은 일반적인 계약입니다.그 기능은 단순히 데이터를 저장하고 읽는 것입니다.데이터 필드가 너무 많습니다.QR 코드로 대체하면 대부분의 앱에서 전혀 스캔할 수 없는 밀도가 높은 QR 코드를 찾을 수 있습니다. , 당연히 코드를 직접 스캔하는 방식은 통하지 않을 것이다.

이후 회사 내부 해커톤에서 또 다른 방법을 시도했는데, 데이터가 복잡하고 크기도 크고, QR코드로 직접 스캔해서 휴대폰으로 전송할 수 없기 때문에 서버를 중계기로 활용하여 데이터를 전달할 수 있을까? 복잡한 트랜잭션 데이터를 먼저 릴레이 서버로 전송한 다음 요청 인터페이스를 DApp에 반환하는 것은 여전히 ​​원본 DApp입니다.이 HTTP 요청 인터페이스를 통해 클라이언트는 완전한 트랜잭션 데이터에 액세스할 수 있습니다.DApp이 요청을 받은 후 인터페이스 주소, 요청 주소에서 QR 코드를 생성합니다.

지갑 APP는 QR 코드를 스캔하여 요청 주소를 획득하고 요청 주소에서 거래 데이터를 획득합니다.지갑은 로컬 개인 키로 서명을 완료하고 체인에 전달하고 최종적으로 블록체인이 반환한 거래 해시를 전송합니다. 중계 서버에 DApp과 중계 서버는 영구적으로 연결되어 있기 때문에 DApp은 트랜잭션 해시를 획득하고 트랜잭션 해시에 따라 후속 비즈니스 프로세스를 처리할 수 있습니다.

그것은 좋은 생각입니다. 최소한 몇 가지 문제를 해결하지만 다른 문제를 야기합니다.

DApp의 전체 이름은 탈중앙화 애플리케이션입니다.중계 서버가 추가되면 DApp 자체와 지갑 모두 중계 서버에 크게 의존하게 됩니다.서비스가 비정상적이거나 사용할 수 없게 되면 전체 서명 프로세스가 차단됩니다. 대신 분산형 애플리케이션은 중앙 집중식 서버에 크게 의존해야 하며 이는 블록체인의 분산화 개념과 모순됩니다.

서버 솔루션으로서의 모바일 지갑

DApp과 지갑이 중앙 서버에 크게 의존하는 문제를 해결하기 위해 휴대폰이 서버가 될 수 있는지 고민했습니다. 휴대폰과 컴퓨터가 같은 근거리 통신망에 있으면 IP를 통해 서로 직접 접속할 수 있으며 컴퓨터도 서버가 될 수 있으므로 휴대폰도 서버가 될 수 있다. 휴대폰은 서버이며 DApp은 트랜잭션을 서버로 직접 전송합니다.휴대폰이 트랜잭션 데이터를 받은 후 서명하여 블록체인에 데이터를 전달한 다음 체인에서 반환된 트랜잭션 해시를 DApp으로 보냅니다. . 이것은 중앙화와 분산화 사이의 모순을 해결하지만 컴퓨터와 휴대폰이 동일한 근거리 통신망에 있어야 하고 그렇지 않으면 데이터를 요청할 방법이 없다는 문제가 있습니다.

휴대폰을 서버로 사용하는 경우는 흔하지 않은 방식으로 보통 이 방식은 대용량 파일을 근거리에서 전송할 때나 소규모 점대점 통신을 할 때에만 사용되며 확장에는 적합하지 않습니다. 휴대폰을 LAN 또는 4G로 연결하면 IP가 변경되고 DApp은 연결의 IP 주소를 자주 변경해야 합니다. 좋은 호환성을 얻을 수 있는 방법이 없을 때 이것은 좋은 생각일 수 있습니다.

WalletConnect

업계의 많은 팀들도 이 문제를 해결하기 위해 노력하고 있으며 WalletConnect는 더 유명한 솔루션 중 하나입니다. 또한 중계 서비스를 사용하는데, 이 중계 서비스는 위에서 언급한 것 이상의 역할을 합니다. 간단하게 설명하면 먼저 DApp과 중계 서버가 초기에 핸드셰이크를 하고 장기 세션 연결 채널을 설정한 다음 DApp이 향후 암호화된 트랜잭션 데이터에 대한 대칭 키를 생성하고 DApp이 암호화된 데이터를 전송합니다. transaction data to 중계 서버로 이동하여 서버에서 반환된 거래 데이터 요청 주소를 가져옵니다.

그러면 DApp은 요청 주소, 대칭 키 및 세션 ID를 압축하여 QR 코드를 생성하고 모바일 지갑은 QR 코드를 스캔하여 데이터 요청 주소 및 대칭 키를 추출한 다음 지갑은 인터페이스 주소에서 트랜잭션 데이터 암호문을 가져오고, 그리고 대칭 키를 사용하여 해독하여 트랜잭션 데이터의 일반 텍스트를 가져옵니다. 그런 다음 모바일 지갑에서 거래 확인, 서명 및 전달을 완료하고 최종적으로 체인에서 얻은 거래 해시를 중계 서버로 보냅니다. DApp과 중계 서버는 영구적으로 연결되어 있기 때문에 중계 서버는 트랜잭션 해시를 얻은 후 DApp에 푸시하고 DApp은 트랜잭션 해시에 따라 블록체인에서 트랜잭션의 실행 상태를 쿼리할 수 있습니다.

WalletConnect는 위에서 설명한 방법과 동일하지만 한 단계 더 가깝습니다.거래 데이터는 대칭 키로 암호화되어 보안이 더 좋습니다.중계 서버는 거래 데이터가 전달되는 곳이며 QR 코드는 DApp 모바일 월렛을 탑재한 정보통신 매체는 보다 가벼운 데이터를 운반합니다.

이 솔루션에는 푸시 서비스라는 다른 서버가 있을 수 있습니다. Push 서비스가 있으면 DApp에서 QR코드를 스캔하지 않고 추후 중계 서버로 트랜잭션 데이터를 전송하지만, 바로 Push 서비스로 데이터를 Push하면 Push 서비스가 메시지를 모바일 지갑으로 Push하게 되고, 모바일 지갑 그런 다음 서명하고 체인에 보내고 중계 서비스에 트랜잭션 해시를 알립니다. 물론 푸시 서버가 없는 경우 전체 프로세스를 진행할 수도 있지만 모바일 지갑은 코드를 스캔하여 거래 데이터 요청을 트리거한 다음 후속 프로세스를 완료해야 합니다.

WalletConnect는 Public Push 서비스를 제공하지 않고 Public Relay 서비스만 제공한다는 점에 유의할 필요가 있습니다. WalletConnect는 이 데이터 사양 집합을 EIP 프로토콜로 만들어야 한다고 이더리움 재단에 제안했습니다. 현재 프로토콜은 아직 논의 중이며 아직 확정되지 않았습니다.

AppLink

이전 솔루션보다 약간 더 간단한 다른 방법이 있습니다. 모바일 개발을 해본 친구들은 DeepLink, 또는 간단히 AppLink를 알 수 있습니다.

우리 모두는 브라우저에서 웹사이트 링크 주소를 열면 원하는 웹페이지로 이동할 수 있다는 것을 알고 있지만, 스마트폰의 경우 각 앱은 고립된 정보의 섬이며 그들 사이에 간단한 통신 메커니즘이 없습니다. 간단한 예를 들자면 타오바오와 위챗은 서로를 차단하고 바이두에서는 위챗에 있는 것을 찾을 수 없다. 앱간 정보는 분리된 상태입니다. 따라서 Google과 Apple은 운영 체제 공급자로서 운영 체제 수준에서 이 문제를 해결하기를 희망하므로 AppLink가 있습니다.

어떤 App이든 일정한 프로토콜 사양에 따라 AppLink 서비스에 등록되어 있으면 다른 App도 AppLink 서비스를 통해 연결하여 통신할 수 있습니다. 예를 들어 PC 브라우저에서 고양이를 사고 싶다면 거래 QR 코드가 구매 페이지에 표시됩니다 QR 코드의 내용이 내 페이지에 있는 한 iPhone 시스템 카메라로 QR 코드를 스캔합니다. 운영 체제 AppLink 모바일 지갑에 등록한 경우 모바일 지갑 페이지를 호출하여 후속 서명 결제 프로세스를 완료할 수 있습니다.

그러나 이 서비스는 여러 가지 이유로 널리 사용되지 못했는데, 가장 중요한 이유는 앱이 데이터 공유를 꺼리고 사용자가 앱 내부에 머무르는 것을 선호하여 사용자의 충성도를 높이는 것입니다. 더욱이 안드로이드의 파편화는 상대적으로 심각하여 많은 국내 휴대폰 제조업체들이 운영 체제의 기본 코드를 변경했기 때문에 좋은 일관된 경험을 제공할 방법이 없습니다. 따라서 이 솔루션은 상대적으로 작은 일부 시나리오에서 달성할 수 있으며 모든 시나리오에 적합하지는 않습니다. 이 데이터 프로토콜은 ERC 표준을 수립하기 위해 Ethereum Foundation에도 제출되었으며 현재 초안 프로세스에 있으며 합의에 도달하지 못했습니다.

MyEtherWallet

마지막 사례는 매우 흥미로운데 MyEtherWallet이라는 웹 지갑이 있는데, P2P 보안 채널을 구축하여 서명 거래를 완료하는 방식을 제안합니다. 과거에는 MyEtherWallet에서 지갑을 생성할 때 개인 키, 니모닉 및 기타 정보가 모두 지갑에서 생성되어 브라우저 저장 공간에 저장되었습니다. 그러나 개인키를 웹페이지에 저장하는 것은 사실 안전하지 않습니다.웹페이지 자체에 일정한 저장 기능이 있기는 하지만 여전히 보안이 휴대폰보다 훨씬 취약합니다.이러한 보안 문제를 해결하는 방법은 무엇입니까?

MyEtherWallet은 최근 NEWconnect라는 모바일 앱을 출시했으며 얼마 전에 공개 테스트를 시작했습니다. 뉴커넥트라는 모바일 지갑을 개발했는데, 지갑의 기능이 많긴 하지만 독립적인 지갑 역할을 하지 않고 웹 지갑과 연동해서 사용한다. 예를 들어 사용자가 웹페이지에서 1.5eth의 계좌를 이체하고자 하는 경우 사용자는 웹페이지에서 트랜잭션을 생성하고 휴대폰은 P2P를 통해 웹페이지에 point-to-point로 직접 접속하여 확인 트랜잭션 페이지가 자동으로 팝업됩니다 휴대폰에서 서명된 트랜잭션을 완료한 후 결과가 전달됩니다 P2P 통신 채널은 웹 페이지로 다시 전송되고 웹 페이지는 트랜잭션 처리 후 데이터를 업데이트하고 표시합니다.

이 프로그램의 경험은 매우 좋고 매우 안전합니다. 사설 P2P 통신 채널이기 때문에 거래 데이터가 쉽게 도난당하지 않아 위에서 언급한 문제를 완벽하게 해결할 수 있습니다. 그러나 이 솔루션 역시 확장이 어렵다는 문제가 있으며, 폐쇄된 시스템에서만 데이터를 전송할 수 있다. P2P 자체는 피어 투 피어 통신이며 확장되면 전체 채널 설정 프로세스 및 암호화 메커니즘이 필요하지만 이 아이디어는 정말 배울 가치가 있습니다.

아직 가는 중

아직 업계 전체가 최종 솔루션을 마련하지 못한 상태이며 저희도 다양한 연구와 시도를 하고 있습니다. 많은 사람들이 업계의 요구와 문제점을 발견하고 이를 해결하기 위해 적극적으로 노력하고 있지만 아직 업계 전체가 합의된 솔루션에 도달하지 못했습니다.

현재 많은 블록체인 서비스와 인터넷 서비스 사이에는 경험적 측면에서 여전히 격차가 있으며, 인터넷 서비스는 중앙 집중화되어 있으며 경험과 보안 문제를 해결하는 중앙 집중식 방법이 많이 있습니다. 블록체인 어플리케이션이 탈중앙화 되어 있고 지갑과 DApps도 탈중앙화 되어 있습니다. 최적의 솔루션이 아닙니다.

보안도 중요한 고려사항으로 QR코드로 제시된 거래데이터는 위변조가 용이하고 중계서비스에서 제공하는 거래요청도 가로채기 쉬우며 인터넷 어플리케이션이라면 데이터 검증이 가능하다. 탈중앙화 애플리케이션의 경우 보안과 탈중앙화 간의 균형을 달성하는 방법에 대한 추가 논의가 필요합니다.

우리는 Google Play와 App Store에서 수많은 지갑 소프트웨어를 찾을 수 있으며 경험은 서로 크게 다르지만 Alipay와 같은 다중 플랫폼 서명 지불 문제를 해결할 수 없었습니다. 이러한 이유로 우리는 미래에 보안, 경험 및 탈 중앙화를 고려한 솔루션을 갖기를 희망하면서 여전히 MVP 검증을 연구하고 수행하고 있습니다.