Hippocrat Wallet SDK
Last updated
Last updated
Hippocrat Wallet SDK는 정보 주체가 자신의 신원과 기관으로부터 받은 데이터, 그리고 데이터 공유 보상 등으로 획득한 자산을 관리하는 데이터 지갑을 개발할 수 있게 하는 오픈소스 개발키트입니다. 데이터 지갑에서 개인의 데이터를 보관하는 방식은 원본 데이터 자체를 보관하는 것이 아니라 그 데이터에 접근할 수 있는 카드키나 영수증을 보관하는 것과 유사합니다. 마치 지갑에 현금이나 신용 카드뿐만 아니라 신분증, 멤버십 카드, 티켓, 헌혈증, 카드키, 영수증 등을 보관했다가 필요할 때마다 꺼내 쓰는 것과 같습니다. 지갑을 분실하면 그 안에 있는 것도 함께 잃어버리듯 지갑은 지갑 소유자에게 온전한 통제권이 있으며, 바꿔 말하면 온전한 책임 또한 지갑 소유자에게 있습니다. 데이터 지갑도 마찬가지입니다.
본 장에서는 Hippocrat Wallet SDK에서 제공하고자 계획을 세우고 있는 핵심 기능들을 소개할 것입니다. 그 대부분은 개방형 표준과 오픈소스를 기반으로 구현되는데 이는 바퀴를 새로 발명하는 대신, 이미 충분히 검증된 기술을 기반으로 Hippocrat이 해결하려는 문제에 초점을 둔 부가가치를 더하는 데 집중하기 위함입니다. 이러한 방식은 새로운 소프트웨어에서 발생할 수 있는 의도적/비의도적 결함을 최소화하면서도 개방형 표준에서 지속되는 개선과 혁신을 그대로 누릴 수 있다는 장점이 있습니다. 또한 이러한 방식은 Hippocrat Wallet SDK를 기반으로 개발된 지갑에 담긴 사용자의 자산과 데이터에 다양한 애플리케이션을 통해 접근할 수 있게 개방하여 사용자가 누리는 효용이 더욱 커질 수 있게 합니다.
Hippocrat Wallet SDK의 가장 기본적인 기능은 자신의 자산과 데이터 그리고, 신원 식별자 DID에 접근하고 관리하는 데 필요한 개인키를 안전하게 생성하고 보관하는 것입니다. Hippocrat Wallet SDK은 BIP39 표준과 호환되도록 개발되므로 Bitcoin 지갑 대부분의 개인키, 그리고 이를 복구하기 위한 니모닉 코드(Mnemonic code) 생성 방식과 그 보안성이 동일합니다. 따라서 Hippocrat Wallet SDK는 Bitcoin 지갑 기능을 기본적으로 구현하는데에도 활용될 수 있습니다. 개인키 보관의 추가적인 보안을 위해 기기의 TEE(Trusted execution environment) 등을 활용할 수도 있습니다.
자신의 DID가 생성되면 이를 통해 중개자 없이 데이터에 접근하는 기관과 P2P로 연결할 수 있습니다. 이 사이에 오가는 모든 데이터와 메시지는 종단 간 암호화되어 당사자 외에는 그 내용을 볼 수 없습니다. 이러한 방식을 이용하면 통신 과정에서 발생하는 개인정보 노출 위험을 최소화할 수 있습니다.
최초 연결은 보통 기관의 애플리케이션이나 웹 사이트에서 연결을 위한 QR코드를 스캔하거나 버튼을 누른 후, 사용자가 연결하려는 대상에 대한 정보와 요청 권한 및 데이터 등을 확인한 후 승인하는 방식으로 이뤄집니다. 이렇게 한 번만 연결하면 어느 한쪽에서 종료하지 않는 이상 신뢰 관계로 기억되어 연결이 유지됩니다.
헬스케어 상황을 생각해 보면 일반적으로 병원은 최초 방문 시 신규 환자로 등록해야 합니다. 이때 환자는 등록 버튼을 누르고 본인 데이터 지갑으로 QR코드를 스캔하면 본인임을 확인할 수 있는 이름, 주민등록번호, 사진, 성별 등 법정 신원에 대한 공유 요청을 받습니다. 환자가 이를 승인하면 병원 측 담당자가 환자의 데이터 지갑으로부터 환자 본인임을 확인한 후 환자 등록이 이뤄집니다.
이러한 방식은 로그인이나 다른 인증 수단을 대체하기 때문에 사용자가 연결하려는 서비스마다 아이디와 암호를 생성하고 기억해야 하는 불편함을 해소합니다. 또한 QR코드 인식만으로 간편하게 로그인, 인증, 자산 및 데이터 송수신 등을 할 수 있습니다. 그뿐만 아니라 데이터 지갑 애플리케이션 자체에 PIN, 생체인식 등 추가적인 보안 수단을 개인키와 조합하면 사실상 멀티팩터 인증(Multi-factor Authentication, MFA)으로서 일반적인 로그인 방식보다 훨씬 높은 수준의 보안성을 갖출 수 있습니다.
데이터 지갑을 통해 병원과 같은 상대방과 연결된 상태에서는 사용자가 요청할 때마다 혹은 상대방이 필요하다고 판단할 때마다 원본 데이터 혹은 그 증명서를 상호간에 전송할 수 있습니다.
전형적인 시나리오로는 병원에서 의무기록과 같은 데이터를 발급할 때 환자 본인임을 확인하는 인증 절차를 거친 뒤, 환자의 데이터 지갑에 VC 형태로 발급하는 것입니다. 그러면 데이터 지갑에 데이터가 발급되었으며 이를 승인하겠냐는 알림과 메시지가 도착하고, 승인 후에는 데이터를 확인할 수 있게 됩니다. 일반적인 클라우드 스토리지와 달리, 데이터는 모두 사용자의 암호키에 의해 암호화되어 저장됩니다.
이렇게 발급된 데이터는 필요한 곳에 제시할 수 있습니다. 예를 들어 데이터를 활용한 건강 관리 서비스를 이용하려면 환자에게 서비스를 제공하기 위해 특정 데이터에 접근이 필요하다며, QR코드 스캔을 요청합니다. 환자가 QR코드를 스캔하면 어떤 데이터를 활용하는지 서비스 제공자에 대한 상세 정보와 이용 조건 등을 확인할 수 있고, 이를 승인하면 서비스 제공자에게 데이터를 공유합니다. 그러면 서비스 제공자는 해당 데이터의 해시가 발급자가 제공한 데이터의 해시와 동일한지, 발급자는 신뢰할 수 있는 기관인지 등을 검증합니다. 검증을 마치면 환자에게 필요한 서비스가 제공됩니다. 다소 복잡해 보이지만, 이 모든 과정은 자동화된 소프트웨어가 빛의 속도로 처리하기 때문에 환자는 일반적인 간편 인증 과정처럼 느낄 것입니다.
경우에 따라 데이터 전체를 공유하지 않고 원하는 데이터만 선택해서 공유할 수 있습니다. 심지어 개인정보가 노출될 수 있는 데이터를 상대방에게 공유하지 않고도 목적을 달성할 수 있습니다. 본인이 자녀의 법정 대리인(보호자)임을 증명해야 하는 상황을 예로 들어보겠습니다. 우선 본인 데이터 지갑에 자녀에 대한 정보와 자녀와의 관계가 담긴 정보가 보관되어 있어야 합니다. 병원 담당자는 본인에게 자녀의 보호자가 맞는지 확인하고자 QR코드를 스캔해 달라고 요청할 것입니다. QR코드를 스캔하고 승인하면 시스템은 이름, 생년월일, 성별, 주소 등 개인정보는 노출하지 않은 채 해당 환자의 보호자로 등록되어 있는지만 확인하고 맞다 틀리다 결과만 알려줍니다. 이러한 방법을 영지식 증명(Zero-knowledge proof)이라고 합니다. 병원 담당자는 개인정보가 아니라 실제 보호자인지만 확인하면 되기 때문에 목적을 달성할 수 있습니다.
동의 자체는 기존 방식도 큰 문제가 없습니다. 이미 위의 인증, 로그인, 데이터 관리에서 사용자가 동의 버튼을 누르면 되는 것으로 설명했고, 이는 기존 방식과 비슷합니다.
차이점은 데이터 지갑에서는 이미 동의한 내역을 한번에 확인할 수 있고, 더 이상 상대방에게 권한을 주고 싶지 않은 경우에는 언제든지 철회할 수 있다는 것입니다. 기존 방식은 일일이 해당 서비스를 방문해야 하고, 동의 철회는 대체로 쉽지 않으며, 심지어는 별도 서류를 작성해야 하는 등 번거롭습니다. 이와 달리, 데이터 지갑은 동의 이후에도 사용자에게 정보에 대한 자기결정권을 최대한으로 제공합니다.
또한 사용자가 공유하겠다고 동의한 모든 데이터에는 사용자의 암호키로 일종의 워터마크와 같은 서명을 남길 수 있습니다. 이를 활용하면 특정 기관이 보유한 데이터에 워터마크가 없는 경우, 해당 기관은 해당 데이터를 어떻게 적법하게 가졌는지 증명해야 할 것입니다. 이로써 정보 주체의 데이터가 더 안전한 방식으로 유통될 수 있게 됩니다.
한편, 기존 방식의 본질적인 문제는 ‘나는 약관의 내용을 읽고 동의합니다.’와 같은 문구를 표시하고, 이에 대한 증거로 동의 버튼을 누르도록 ‘강요’하는 동의 확보 방법에 있습니다. 이는 정보 주체보다 서비스를 제공하는 기업을 보호하기 위한 것에 가깝습니다. 서비스 약관 및 프라이버시 정책 등은 내용이 너무 길고 복잡하기 때문에 현실적으로 사용자가 모든 내용을 면밀히 읽고 불합리한 조항이 있는지 검토하기란 어렵습니다. ‘불충분한 동의’가 발생할 수밖에 없는 이유이기도 합니다.
이를 해결하기 위해 Hippocrat에서는 정보 주체를 충분히 보호하면서도 합리적으로 활용하는 데 문제가 없는 정책에 대한 표준화된 라이센스를 도입할 예정입니다. 만약 여러 서비스가 같은 정보보호 정책을 갖추고, 자세히 읽어보지 않아도 모든 내용이 동일하다는 것을 신뢰할 수 있다면 사용자는 여러 서비스를 쓰더라도 한 번만 제대로 읽어보면 될 것입니다. 그 다음부터는 동일한 정보보호 정책 라이센스를 사용한다는 것만 확인하면 그저 동의 버튼만 누르거나 또는 사용자가 원하면 자동으로 동의하도록 설정할 수도 있을 것입니다. 이는 사용자 편의성, 사용자 보호, 기업의 동의 확보율 등 모든 측면에서 도움이 될 것입니다.
만약 표준에 존재하지 않거나 기존에 사용자가 동의한 적이 없는 조항이 담긴 정책의 경우, 동의를 별도로 받아야 하는 약관으로 분리할 수 있습니다. 이러한 경우, 사용자는 변경되거나 새로운 내용만 확인하면 되기에 더욱 확신을 갖고 동의 여부를 결정할 수 있게 됩니다.
이러한 라이센스는 탈중앙 거버넌스 프레임워크에서 관리되어 신뢰성을 갖출 것입니다. 이는 거버넌스 및 DAO에서 자세히 설명하겠습니다.
헬스케어 데이터는 글로벌 단위로 수집되고 활용되어야 그 잠재력이 최대한으로 발휘될 수 있습니다. 데이터 수집과 활용은 정보 주체에게 그 정보를 활용해 생긴 부가 서비스를 제공하는 것으로 이뤄질 수도 있지만, 당장 제공할 서비스가 없는 경우에는 적절한 보상을 하는 편이 보편적이고 효율적일 수 있습니다. 그러한 측면에서 인터넷을 통해 글로벌 단위로 데이터가 빠르고 저렴하게 전송될 수 있는 자산을 지원하고, 이를 데이터 지갑을 통해 주고받으며 보관할 수 있어야 합니다.
이에 가장 적합한 자산은 Bitcoin과 달러와 연동된 Stablecoin일 것입니다. 특히 Lightning 네트워크의 발전 덕분에 수십 달러 이내의 돈은 0.0x 달러도 안 되는 수수료만으로도 전 세계 어디로든 신용카드 결제할 때와 같은 속도로 전송할 수 있습니다. 또한 Taproot와 Taro와 같은 기술의 발전으로 Bitcoin과 라이트닝 네트워크 상에서 Stablecoin 및 HPO의 관리와 전송이 가능해질 예정이고 Hippocrat과 Hippocrat Wallet SDK는 이에 호환되게 개발될 것이므로 사용자나 기업이 선호하는 자산의 형태로 데이터 수집 및 활용을 통한 글로벌 단위의 보상이 가능하게 될 것입니다.
데이터 지갑에는 개인의 귀중한 자산과 데이터가 보관되므로 이를 안전하게 백업하고 복원하는 방법도 중요합니다. 사용자는 기본적으로 BIP-39에 의해 데이터 지갑 생성 과정에서 표시된 니모닉 코드(Mnemonic code)를 안전한 곳에 기록해둠으로써 백업할 수 있습니다. 그런데 이러한 방식은 다소 생소하고 대부분은 개인이 온전히 책임져야 하는 방식이 부담스러울 수 있습니다. 이를 위해 니모닉 코드를 사용자가 설정한 추가 암호로 암호화해 iCloud나 Google Drive 등 평소 사용하는 개인 클라우드 저장소에 저장하는 방식을 지원할 예정입니다.
이러한 방식은 일반적으로 거액의 자산을 보관하는 목적에는 부적합하지만, 데이터 지갑 사용자 대부분이 니모닉 코드 자체를 분실할 위험을 해소할 수 있으므로 적절한 트레이드오프일 수 있습니다. 물론 사용자가 개인 클라우드 저장소에 보관하지 않고, 더 안전한 방법을 선택할 수도 있습니다. 앞서 설명했듯이 Bitcoin 지갑 관련 표준을 준수해 개발할 예정이므로 다중서명 지갑(Multi-sig wallet), Passphrase 추가와 같은 Bitcoin 지갑의 보안성을 높이는 방법은 거의 동일하게 구현할 수 있습니다.
한편, 일정 금액까지는 커스터디형 라이트닝 지갑상에 자산을 보관하고, 일정 금액 이상을 초과하면 사용자가 스스로 관리하는 셀프 커스터디 지갑으로 이체하는 방법 또한 좋은 방법으로 이러한 방식을 사용자에게 안내하여 사용 편의성과 보안의 적절한 균형을 이룰 수 있도록 할 것입니다.
필수적인 고지 내용이나 동의 요청을 사용자가 적시에 확인하려면 알림 기능이 필요합니다. 효과적으로 사용자의 주의를 끌 수 있도록 동의와 서명이 필요할 때만 기기의 시스템 알림 기능을 활용할 것입니다.
일반적으로는 지갑 소유자와 정보 주체가 동일하지만, 많은 환자가 건강이나 기술 이해도 등의 이유로 스스로 데이터 지갑을 관리하기 어려울 수 있습니다. 이러한 경우에는 타인이 환자를 대신해 동의와 데이터 공유에 대한 의사 결정을 할 수 있도록 데이터 지갑 수준에서 대리인을 지정하는 기능을 제공할 수 있습니다. 이때, 대리인 자격을 가진 지갑 사용자는 정보 주체의 데이터를 지갑에 대신 보관하고 통제할 수 있는 권한을 가질 수 있습니다.
이러한 대리인은 보호자와 같은 개인뿐만 아니라 단체가 될 수도 있습니다. 또한 이 기능을 확장하면 환자가 사망했을 때 환자의 자산과 데이터를 후견인이 넘겨받을 수 있도록 구현할 수도 있습니다. 각국 법률에서 이러한 방식이 허용되는지는 추가적인 확인이 필요하지만, 대리인과 후견인에 대한 신원 인증은 앞서 설명한 검증가능한 자격증명(VC)을 통해 전자적 방식으로 구현이 가능합니다.