월렛은 새로운 Auth 레이어다

발행: (2026년 1월 12일 오전 05:36 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

Introduction

Web2에서 인증을 구현해 본 적이 있다면, Web3 지갑도 낯설게 느껴지지 않을 것입니다.
인증은 언제나 한 가지에 관한 것이었습니다: 이 사용자가 특정 아이덴티티에 대한 제어권을 증명할 수 있는가? Web3는 질문 자체를 바꾸지는 않으며, 단지 증명을 누가 저장하느냐만 바꿉니다.

PS: Stateful는 애플리케이션이 과거 상호작용에서 얻은 정보(‘상태’)를 기억하고, 그 컨텍스트를 사용해 새로운 요청을 처리한다는 의미입니다.


Web2 Authentication Overview

Identity on the Server

Web2에서는 아이덴티티가 여러분의 서버에 존재합니다.

Typical login flow

  1. 사용자가 이메일과 비밀번호를 제출합니다.
  2. 백엔드가 저장된 자격 증명과 대조해 검증합니다.
  3. 세션 또는 JWT가 발급됩니다.

OAuth Flow

OAuth도 같은 구조를 따릅니다:

  1. Google, GitHub 등에서 아이덴티티를 주장합니다.
  2. 여러분의 시스템은 제3자를 진실의 출처로 신뢰합니다.

이 모델들은 세 가지 구조적 특성을 만듭니다:

  1. 비밀을 저장해야 함
  2. 아이덴티티가 플랫폼에 종속됨
  3. 백엔드가 보호와 복구를 담당함

대부분의 Web2 인증 문제는 실수가 아니라 이 모델의 결과입니다.


Wallet‑Based Authentication

Wallet‑based 인증은 아키텍처를 뒤집습니다:

  • 비밀번호 없음.
  • 자격 증명 데이터베이스 없음.
  • 외부 아이덴티티 제공자 없음.

지갑은 단순히 키 쌍입니다:

ComponentRole
Public key (address)사용자 식별자
Private key제어권 증명

인증은 데이터 서명을 통해 이루어지며, 비밀을 제출하는 것이 아닙니다.

Exact Flow (Web2‑friendly terms)

  1. Server가 무작위 챌린지(논스)를 생성합니다.
  2. Client가 지갑에 논스를 서명하도록 요청합니다.
  3. Server가 지갑 주소를 사용해 서명을 검증합니다.
  4. 검증에 성공하면 사용자가 인증됩니다.

이는 SSH에서 사용되는 공개키 인증과 동일한 모델입니다.


Example Code (JavaScript)

// server
const nonce = generateRandomNonce();
storeNonce(address, nonce);

// client
const signature = wallet.signMessage(nonce);

// server
const isValid = verifySignature({
  address,
  nonce,
  signature
});

if (isValid) {
  authenticateUser(address);
}

비밀번호 비교도, 저장된 비밀도 없습니다—오직 암호학적 검증만 존재합니다.


Implications of Decentralized Auth

  • 사용자가 자신의 아이덴티티를 소유
  • 플랫폼이 조용히 접근을 취소할 수 없음
  • 하나의 아이덴티티가 여러 애플리케이션에서 사용 가능
  • 백엔드는 더 이상 인증을 제어하지 않으며, 단지 수학적 검증만 수행합니다.

Limitations & What Still Needs to Be Handled

지갑이 인증을 해결해 주지만, 다음을 해결하지는 않습니다:

  • 권한 부여(Authorization)
  • 사용자 프로필 관리
  • 키 분실 방지

여전히 구현해야 할 것들:

  • 역할 관리
  • 권한(Permissions)
  • 애플리케이션 수준의 사용자 데이터

지갑은 로그인 시스템을 대체할 뿐, 더 넓은 애플리케이션 로직을 대체하지는 않습니다.


Conclusion

지갑을 서버가 아닌 사용자를 위한 SSH 키라고 생각해 보세요.
이렇게 보면, 지갑 기반 인증은 이국적인 것이 아니라 아이덴티티 시스템의 자연스러운 진화로 보일 것입니다.

Back to Blog

관련 글

더 보기 »

맞춤 인증 흐름 및 구현 이해

Custom Auth Flow 구현 최근 나는 Custom Auth Flow를 정말 이해하려고 노력했고, 그 구현이 실제로 어떻게 작동하는지 알아보려고 했습니다. 그래서 나는 다시 구축하기 시작했습니다.