zk로그인 신비화: Sui 의 최첨단 인증 살펴보기

영지식 증명을 통해 사용자는 일반적인 웹 자격 증명을 사용하여 Sui 주소를 만들 수 있습니다.

zk로그인 신비화: Sui 의 최첨단 인증 살펴보기

zkLogin 은 블록체인의 고질적인 문제인 지갑의 복잡성으로 인한 신규 사용자 온보딩 마찰에 대한 간단한 해결책입니다. 최첨단 암호화와 기술을 사용하는 zkLogin은 복잡하면서도 우아합니다. 이 글에서는 zkLogin의 메커니즘을 자세히 살펴보고, 사용자와 빌더를 위한 보안 측면을 다루며, Sui의 디자인이 어떻게 이 혁신적인 OAuth 로그인 프로세스를 촉진하는지에 대해 설명합니다.

자세히 알아봅시다!

zkLogin 작동 방식

zkLogin을 사용하면 각 OAuth 자격증명 + 앱 조합에 대해 고유한 Sui 주소가 생성됩니다. 단일 OAuth 자격 증명을 사용하여 무제한의 앱과 연결된 독립 주소를 관리할 수 있습니다. 예를 들어, 서로 다른 두 개의 탈중앙화 거래소 앱에 연결된 단일 Google 계정은 각 앱에 대해 하나씩 두 개의 고유한 Sui 주소를 갖게 됩니다.

일반적인 블록체인 주소의 경우, 생성 시점에 영구 공개-개인 키 쌍이 주소에 연결되고 주소 식별자는 공개 키에서 파생됩니다. zkLogin을 사용하면 주소가 임시 키 쌍과 연결되며, 이 키 쌍은 OAuth 로그인 플로우를 통해 정기적으로 다시 생성해야 합니다. 설계상 Sui 주소는 연결된 키 쌍을 변경할 수 있는 동안 고정된 상태로 유지될 수 있습니다. 이는 zkLogin 주소가 공개 키가 아닌 "키 클레임"이라고 하는 OAuth 제공업체의 반환된 페이로드에서 얻은 고유 식별자에서 파생되기 때문에 가능합니다. 

zk로그인 절차는 6단계로 순차적으로 진행됩니다:

1단계: 임시 키 생성하기

사용자가 앱을 열면 임시 또는 임시 키쌍이 생성됩니다. 이 키쌍에는 만료 기간이 지정되어 필요한 로그인 빈도를 결정합니다. 

2단계: JSON 웹 토큰(JWT) 생성하기

앱은 사용자에게 OAuth 공급자 로그인을 통해 자신을 인증하라는 메시지를 표시하여 공급자로부터 디지털 서명된 데이터 페이로드인 JSON 웹 토큰(JWT)을 생성합니다. 이 JWT에는 논스 필드가 포함되어 있으며, 이 논스 필드에는 만료 기간과 함께 공개 키가 포함됩니다. JWT에는 나중에 Sui 주소를 생성하는 데 사용되는 키 클레임이 포함되어 있습니다.

3단계: 사용자 고유 소금 요청하기

솔트는 임의의 숫자 문자열로, JWT 및 임시 키쌍과 함께 사용하여 OAuth 자격 증명을 Sui 주소와 연결합니다. 이 단계에서 취하는 경로는 빌더에 따라 다른 디자인 옵션이 있으므로 앱에 따라 다릅니다. 앱의 zkLogin 문서 에는 각각 장단점이 있는 여러 가지 소금 관리 옵션에 대한 개요가 나와 있습니다.

한 가지 접근 방식은 필요에 따라 솔트를 저장하고 제공하기 위해 솔트 서비스를 사용하는 SSO 스타일의 솔트 관리 옵션입니다. 이 경로를 사용하면 앱이 JWT 토큰을 솔트 서비스로 보내고, 솔트 서비스는 JWT 토큰의 유효성을 검사한 후 고유한 사용자 솔트를 반환합니다. 솔트 관리에 대한 또 다른 접근 방식은 사용자가 처음 로그인할 때 솔트를 설정하고 이를 비밀번호나 핀으로 취급하여 직접 관리하도록 하는 것입니다.

4단계: zk 증명 생성

JWT 토큰, 솔트, 공개 키로 무장한 프로세스는 zk 증명 서비스에 영지식(zk) 증명을 요청하기 위해 진행됩니다. 이 중요한 단계에서는 다음 사항을 확인하여 요청의 정확성을 엄격하게 조사합니다: 1) 논스가 올바르게 정의되고 공개키를 포함하는지, 2) 제공된 키 클레임이 JWT와 일치하는지, 3) 주소가 키 클레임 및 사용자 소금과 일치하는지, 4) OAuth 공급자 서명이 올바른지 확인합니다. 어느 한 요소라도 기대치에 부합하지 않으면 전체 단계가 실패합니다.

5단계: 사용자의 Sui 주소를 식별하고 트랜잭션을 구성합니다.

그런 다음 애플리케이션은 JWT에서 추출한 사용자 소금과 키 클레임을 기반으로 사용자의 Sui 주소를 식별합니다. 트랜잭션은 임시 서명, zk 증명 및 JWT의 추가 입력과 함께 번들로 제공되는 개인 키를 사용하여 승인된 후 Sui 로 전달됩니다. 

6단계: 거래 유효성 검사

블록체인에 도착하면 Sui 검증자가 인증을 위해 zk 증명과 임시 서명을 모두 꼼꼼하게 조사합니다. 눈 깜짝할 사이에 트랜잭션이 공식적으로 Sui 에 로그인되어 프로세스가 원활하게 완료됩니다.

zkLogin은 기본적으로 OAuth 자격 증명을 사용하여 간단한 로그인 프로세스를 지원합니다.

보안 고려 사항

다른 'X로 로그인' 기능과 마찬가지로 사용자는 로그인에 사용하는 계정의 보안을 유지해야 합니다. 어떤 이유로든 사용자가 OAuth 자격 증명으로 로그인할 수 없는 경우, 해당 자격 증명과 연결된 Sui 주소에 액세스할 수 없습니다. 비밀번호를 잊어버린 사용자는 OAuth 서비스에서 제공하는 표준 복구 절차에 따라 액세스를 복원할 수 있습니다. 

zkLogin 운영에 사용되는 모든 OAuth 계정은 2단계 인증(2FA)을 통합하여 OAuth 공급자 계정과 관련 Sui 주소의 보안을 강화할 것을 강력히 권장합니다. 애플리케이션 빌더는 또한 사용자에게 보안 비밀번호 및 2FA와 같은 보안 모범 사례를 구현하도록 권장해야 합니다. OAuth 계정이 유출되더라도 해커가 zkLogin을 통해 Sui 주소에 액세스하려면 사용자 솔트도 획득해야 한다는 점에 유의해야 합니다.

앱 빌더는 소금 값의 노출을 보호하고 제한하는 것을 우선순위에 두어야 합니다. 이 값은 사용자의 웹 2.0 및 웹 3.0 자격 증명을 연결하는 린치핀 역할을 하며, zk 프로버에 제출하는 것이 매우 중요합니다. 따라서 애플리케이션의 백엔드 내에서 zk 증명 서비스를 호스팅하여 솔트에 대한 잠재적인 타사 액세스를 효과적으로 억제하는 것이 좋습니다. 빌더는 쉽게 사용할 수 있는 공통 참조 문자열을 활용하여 자체 zk 증명자를 독립적으로 개발할 수 있는 옵션이 있습니다. 공통 참조 문자열.

프로버 및 소금 관리에 대한 자세한 내용은 zkLogin 모범 사례 및 빌더를 위한 비즈니스 고려 사항을 참조하세요.

Sui 은 zkLogin을 위한 고유한 위치에 있습니다.

Sui의 암호화 민첩성과 객체 지향 설계는 zkLogin을 통해 원활한 OAuth 로그인 통합을 가능하게 합니다. 대부분의 블록체인이 본질적으로 하나의 암호화 인증 방법만 지원하는 것과 달리 Sui 는 다양한 암호화 체계를 직접 통합할 수 있다는 점에서 차별화됩니다. 이러한 기능 덕분에 사용자는 프로토콜 외부 암호화를 사용하여 트랜잭션을 실행하기 위해 추가 가스 비용을 부담할 필요가 없습니다. Sui 에서는 새로운 기본 암호화 인증 방법을 도입하여 기존 시스템과의 호환성을 유지하므로 사용자가 다른 암호화 방식을 선택한다고 해서 불이익을 받지 않도록 보장합니다.

기존의 Web3 OAuth 로그인 솔루션은 JSON 웹 키(JWK)에 대한 스마트 계약에 의존하므로 오라클 데이터 게시의 정확성에 대한 신뢰가 필요합니다. Sui 는 JWK를 Sui 객체로 표현하여 유효성 검사를 통합하여 이 프로세스를 혁신합니다. zkLogin을 사용하면 Sui 유효성 검사기가 오라클의 역할을 수행하여 사전 정의된 JWK 검증 규칙을 준수하도록 보장합니다. 이 간소화된 접근 방식은 인증 프로세스의 보안과 안정성을 향상시킵니다.

앞으로의 전망

메인넷에서 첫 발을 내딛는 zkLogin은 추가적인 OAuth 공급자와 향상된 기능의 통합으로 흥미진진한 미래를 기대하게 합니다. Sui 생태계에 중요한 이정표가 될 zkLogin이지만 빌더가 자신의 앱에 zkLogin을 통합하기 위해 고삐를 잡을 때 진정한 스릴은 앞으로 다가올 것입니다. 이 원시적인 기능을 구현할 수 있는 방대한 잠재력은 필연적으로 생태계의 진화를 촉발할 것입니다. 여정은 이제 막 시작되었으며 가능성은 무한합니다.

앱에 zkLogin을 통합하는 방법에 대한 자세한 내용은 다음을 참조하세요. zkLogin 문서.