"이더리움으로 로그인"이 혁신적인 이유는 무엇입니까?
원래 제목: "Ethereum으로 로그인하는 것이 게임 체인저인 이유 - 1부"
원본 편집: ETH 중국어
원본 편집: ETH 중국어
SIWE(Sign-In with Ethereum)는 인터넷에서 사용자 선택을 혁신합니다.
일부 대규모 중개인과 타협하는 대신 사용자는 이제 블록체인 계정을 제어하는 동일한 개인 키를 사용하여 (중개인을 통하지 않고) 직접 로그인할 수 있습니다. SIWE를 통해 우리는 대기업이 더 이상 사용자가 서비스에 액세스하고 행동을 모니터링할 수 있는 능력을 박탈할 수 없는 또 다른 길을 열어줍니다.
SIWE는 dapp, 앱, 지갑, 보안 회사 등과 같은 커뮤니티 구성원과의 공개 토론을 통해 달성되는 완전 개방형 인증 표준입니다. 웹사이트 login.xyz에서 모든 회의록과 메모를 찾을 수 있습니다. 이 접근 방식은 거대 기술 기업이나 정부 벤더(프라이버시 및 디지털 권리 옹호자들의 반대를 받는)에 의한 독점 ID 시스템의 폐쇄적 개발과는 거리가 멀다.
반대로 이더리움을 통한 로그인(EIP-4361)은 모든 네트워크 기반 서비스를 안전하게 인증하기 위해 이더리움 계정에 대한 개방형 CC(크리에이티브 커먼즈) 서명 형식을 정의합니다. SIWE는 Ethereum Foundation과 ENS의 직접적인 지원을 받아 커뮤니티에서 구축했으며 Spruce는 작년 말 프로젝트를 담당했습니다. "이더리움으로 로그인"이 무엇을 의미하는지, Web3의 모든 빌더를 위한 "지갑 연결"을 넘어서는 방법에 대해 논의하게 되어 기쁩니다.
지갑에 연결하기 vs. 이더리움으로 로그인하기
"Connect Wallet" 버튼은 이제 dapp의 주요 기능입니다. 이 버튼을 클릭하면 사용자는 Web3 및 블록체인과 상호 작용하는 여정을 시작합니다.
지갑을 연결하면 앱에서 사용 중인 계정을 알 수 있지만 그게 전부입니다. 스마트 계약과 상호 작용하고 암호 화폐를 보내고 dapp을 통해 메시지에 서명하는 데 사용하려는 계정을 지갑에서 더 쉽게 알 수 있습니다. 지갑에 연결하는 기능은 매우 간단합니다. dapp은 귀하에 대한 "기억이 없고" 간단한 상호 작용을 위한 플랫폼을 구축합니다.
애플리케이션이 사용자 기본 설정 또는 개인 채팅 메시지 로드와 같이 사용자와 보다 풍부한 컨텍스트 상호 작용을 원할 때 우리는 먼저 계정 뒤에 있는 실제 개인 키 소유자와 대화하고 있는지 확인해야 합니다. 계정. "Connect Wallet"은 그러한 보증을 제공하지 않지만 SIWE는 가능합니다. 즉, 세션을 설정하고 데이터를 안전하게 읽고 쓰기 위해서는 사용자를 인증해야 합니다. 둘 사이의 차이점을 설명하기 위해 지갑에 연결하는 Carl과 세션을 설정하는 Sam의 두 가지 예를 들었습니다.
(번역자 주: 세션은 클라이언트와 서버 간의 상태를 유지하기 위한 솔루션입니다. 그 근거는 클라이언트가 처음 방문할 때 서버가 세션 ID를 생성하여 클라이언트에 반환합니다. 물론 서버는 또한 세션 ID를 메모리에 저장합니다. 클라이언트가 세션 ID를 얻은 후 각 후속 요청에서 서버로 세션 ID를 다시 보내므로 서버는 클라이언트가 방문한 것을 알기 위해 자체 메모리를 쿼리할 수 있습니다.세션 사용자 로그인 인증을 구현하는 데 사용할 수 있으며, 서버에서 생성한 세션 ID를 다시 클라이언트로 보낸 후 쿠키에 저장하는 경우가 많으므로 세션 기반 인증을 쿠키 기반 인증이라고도 합니다. 출처)
Carl은 dapp을 사용하며 훌륭한 경험을 가지고 있습니다. 그는 Uniswap에서 거래하고 Aave에서 빌릴 수 있으며 OpenSea에서 NFT를 구매할 수도 있습니다. 이러한 몇 가지 작업을 수행하려면 지갑을 연결하기만 하면 됩니다. Carl의 작업은 순조롭게 진행되어 어느 날 문제에 직면했습니다. 그는 이러한 dapp이 자신에 대해 무언가를 기억하여 이 dapp을 세 번째, 네 번째 및 다섯 번째로 사용할 때 더 나은 경험을 제공할 수 있기를 원합니다.
Carl은 Uniswap이 자신의 청산 우선권을 자동으로 가져올 수 있다면 Aave가 자신이 가장 좋아하는 대출 시장을 기억할 수 있고 OpenSea도 0x2Fe1a3 대신 자신의 이름을 기억할 수 있다고 생각합니다. Carl은 지갑을 연결할 때마다 처음부터 시작합니다.
Sam은 그런 문제가 없을 것입니다. Dapp이 인증하고 세션을 설정하면 관련 정보가 저장됩니다. Sam이 연결을 끊고 다시 인증하더라도 세션은 그가 중단한 부분부터 계속되고 응용 프로그램은 여전히 Sam에 대한 모든 것을 기억합니다. 그의 정보는 그가 제어하는 원격 데이터베이스에 보관될 수도 있습니다.
SIWE 통합
Web3 환경을 살펴보면 어떤 형태로든 제공하는 많은 기존 서비스를 찾을 수 있습니다."Sign-In with Ethereum", 그러나 많은 사람들이 동등하지 않습니다. 일반적으로 이를 사용하여 계정과 연결된 독점 메타데이터를 관리하는 사용자와 쿠키 기반 세션을 설정합니다. 예를 들어 사용자에게 사이트에서 자신의 프로필을 사용자 정의할 수 있는 권한을 부여하려는 경우(OpenSea처럼) 사용자만 자신의 프로필을 편집할 수 있도록 변경하기 전에 사용자를 인증해야 합니다. 워크플로는 다음과 같습니다.
지갑을 연결한 후 첫 번째 단계는 사람이 읽을 수 있는 메시지를 사용자에게 제공하여 사용자가 상호 작용하는 내용을 이해할 수 있도록 하는 것입니다. 많은 경우에 사용자는"LOGIN"(로그인), 또는 로그인하라는 텍스트 또는 때로는 임의의 숫자(여기서 임의의 미친 문자 및 숫자 모음에 서명). 따라서 대신 기존 관행을 기반으로 필수 필드 집합을 결정하고, 많은 우수한 보안 조치를 취하고, 사람의 가독성과 안전한 작동의 균형을 맞추는 엄격한 구문을 적용할 수 있습니다. 또한 지갑은 최소한 이러한 유형의 정보를 사용자에게 계속 제공하기 위해 기존 인터페이스와 관행을 변경할 필요가 없습니다.
첫째, 우리는 이 지저분한 "SIWE" 정보를 모두 가져와 수용 가능한 일반적인 방식으로 사용자에게 요청을 제출할 수 있습니다.
정보 공유 - 공유 인터페이스
서명 메시지 형식에 동의하면 이제 애플리케이션과 지갑이 같은 언어로 말할 수 있습니다. 애플리케이션이 사용자에게 서명 요청을 제출하면 지갑은 해당 요청을 확인하고 EIP-4361(SIWE) 정보와 일치하는지 확인하고 사용자가 웹사이트에 로그인하고 있음을 알릴 수 있습니다.
이 시점에서 지갑은 사용자 경험을 개선하고 사용자가 취하려는 조치에 대해 의심의 여지가 없도록 친숙한 양식화된 인터페이스를 제공할 수 있습니다. 사용자에게 서명할 임의의 텍스트 블록을 제공하는 대신. 이제 지갑이 서명 요청을 "이해"하기 때문에 사용자는 "로그인"하기 위해 확인 대화 상자를 클릭하기만 하면 됩니다. 완전한 투명성을 위해 EIP-4361 사양에 명시된 모든 정보와 필드는 상세 보기와 같은 다른 하위 인터페이스에서 계속 사용할 수 있어야 합니다.
EIP-4361의 정보에서 보다 명확한 인터페이스를 얻을 수 있습니다.
이 사양은 또한 피싱 공격을 방지하기 위한 도메인 바인딩 도입, 재생 공격 방지를 위한 nonce 도입, 프로세스 전반에 걸쳐 사용자를 추가로 보호하는 등 지갑에 대한 추가 보안 요구 사항을 도입합니다. 예를 들어, 지갑이 유효한 SIWE 메시지를 찾았지만 사용자가 example.com에 서명하고 있는 경우(그러나 실제로는 exampie.com에 있음) 지갑은 사용자에게 상황을 경고할 수 있습니다.
인증을 넘어서
SIWE 정보는 특정 리소스에 접근할 수 있는 권한 부여 또는 dapp UX의 기능 및 사용 편의성 향상을 위한 세션 개인 키 위임으로 이해될 수도 있습니다. 예를 들어 사용자의 데이터를 저장하는 애플리케이션이 아니라 사용자가 보유하고 있는 데이터로 자신의 세션을 강화할 수 있는 세상을 상상해 보십시오. 자세한 내용은 다음 기사를 읽어 보시기 바랍니다.《From Sign-In with Ethereum to Session Keys》
이 기사의 2부를 곧 게시할 예정이니 계속 지켜봐 주세요! 그때까지 SIWE를 구현하십시오!


