인터넷 뉴스를 보다 보면 *“어느 대형 플랫폼의 서버가 해킹당해 수천만 명의 개인정보가 유출되었다”*는 소식을 심심치 않게 접합니다.

그런데 1Password나 Bitwarden 같은 글로벌 비밀번호 관리자 서비스들은 신기하게도 이렇게 말합니다.

“설령 우리 클라우드 서버가 통째로 해킹당하더라도, 해커는 여러분의 비밀번호를 단 하나도 읽을 수 없습니다. 심지어 저희 회사 직원이나 개발자도 여러분의 비밀번호가 무엇인지 전혀 모릅니다.”

내 모든 비밀번호가 그 회사 서버에 저장되어 있는데, 어떻게 회사조차 내 비밀번호를 모를 수 있을까요? 그리고 어떻게 서버가 털려도 안전할 수 있을까요?

그 비밀이 바로 오늘 이야기할 **영지식 암호화(Zero-Knowledge Encryption)**에 있습니다. 이번 글에서는 복잡한 수학 공식 없이, IT 초급자도 쉽게 이해할 수 있도록 그 원리와 대표 서비스들의 동작 방식을 차근차근 풀어보겠습니다.


1. 영지식 암호화란? 은행 대여금고 이야기

‘영지식(Zero-Knowledge)‘이라는 말을 직역하면 **‘아는 지식이 0개(전혀 없음)’**라는 뜻입니다. 즉, 서비스를 운영하는 서버가 사용자의 데이터에 대해 아는 것이 아무것도 없다는 의미입니다.

이해를 돕기 위해 전통적인 웹사이트와 영지식 서비스를 은행에 비유해 보겠습니다.

[전통적인 웹사이트 방식]
사용자: "제 귀중품(비밀번호)을 맡길게요."
은행(서버): "네, 저희가 받아서 우리 금고에 잘 넣어둘게요. (귀중품 내용물을 볼 수 있음)"
-> 만약 은행 금고가 털리면? 내 귀중품도 도둑맞습니다!

[영지식 암호화 방식]
사용자: "제가 집에서 '나만 열 수 있는 자물쇠'로 꽁꽁 잠근 상자를 맡길게요."
은행(서버): "네, 겉모습만 보관해 드릴게요. (열쇠가 없어서 상자 안을 못 봄)"
-> 만약 은행 금고가 털리면? 도둑은 쇳덩어리 상자만 가져갈 뿐, 열쇠가 없어 못 엽니다!

핵심 동작 원리 3단계

  1. 내 기기(컴퓨터·스마트폰)에서 잠금(암호화): 내가 입력한 비밀번호나 중요한 정보는 인터넷을 타고 서버로 가기 전에, 내 컴퓨터 안에서 암호문(알아볼 수 없는 외계어)으로 바뀝니다.
  2. 잠긴 채로 서버에 전송 및 저장: 서버로 날아가는 데이터는 이미 암호화된 상태입니다. 서버는 그저 “잠긴 데이터 덩어리"를 대신 보관해 주는 창고 역할만 합니다.
  3. 내 기기에서만 열기(복호화): 암호를 푸는 유일한 열쇠(마스터 비밀번호)는 내 머릿속과 내 기기에만 존재하며, 서버로는 절대로 전송되지 않습니다.

2. 왜 단순한 비밀번호가 강력해질까? 키 유도와 Argon2id

우리가 만드는 마스터 비밀번호는 보통 사람이 기억할 수 있는 문자열입니다. 하지만 아무리 복잡하게 만들어도 컴퓨터의 계산 속도 앞에서는 한계가 있습니다.

특히 요즘 해커들은 게임용으로 쓰이는 **고성능 그래픽카드(GPU)**를 수십 대씩 연결해서 1초에 수십억 번씩 비밀번호를 무차별 대입(Brute-Force)해보는 공격을 합니다.

그래서 보안 서비스들은 사람이 입력한 평범한 비밀번호를 **‘절대 풀리지 않는 강력한 암호 열쇠’**로 뻥튀기하는 특수 연산 공식을 사용합니다. 이를 **키 유도 함수(KDF, Key Derivation Function)**라고 부릅니다.

[사용자가 입력한 비밀번호] ("MyP@ssw0rd!")
           +
[고유한 소금값 (Salt)] ("user@email.com" 등 무작위 값)
           │
           ▼
┌──────────────────────────────────────────────┐
│       키 유도 함수 (KDF: Argon2id)           │
│  - 계산 횟수 수천 번 반복                     │
│  - 컴퓨터 메모리(RAM)를 강제로 가득 채움     │
└──────────────────────────────────────────────┘
           │
           ▼
[256비트 슈퍼 암호화 열쇠] (컴퓨터도 때려 맞출 수 없는 긴 난수)

💡 여기서 잠깐: 요즘 대세라는 ‘Argon2id’는 왜 필요할까요?

최근 1Password나 Bitwarden 설정에 들어가 보면 Argon2id라는 생소한 단어를 볼 수 있습니다. 왜 기존 방식을 두고 Argon2id를 쓸까요?

① 기존 방식(PBKDF2)의 한계: “단순 반복은 그래픽카드(GPU)가 제일 잘해요”

과거에 주로 쓰이던 PBKDF2라는 방식은 해시 연산을 수십만 번 ‘단순 반복’해서 시간을 끌었습니다. 하지만 그래픽카드(GPU)는 단순 반복 계산을 동시에 수천 개씩 처리하는 데 특화되어 있습니다. 해커가 비싼 그래픽카드를 동원하면 뚫릴 위험이 커진 것이죠.

② Argon2id의 똑똑한 해결책: “메모리(RAM)를 인질로 잡는다!”

비밀번호 해시 대회의 우승작인 Argon2id는 연산 속도뿐만 아니라 ‘컴퓨터 메모리(RAM)‘를 강제로 많이 차지하도록 설계되었습니다.

  • 그래픽카드는 코어 수는 많지만, 각 코어마다 할당된 메모리는 매우 작습니다.
  • Argon2id는 비밀번호를 한 번 풀 때마다 상당한 크기의 메모리를 요구합니다.
  • 결과적으로 해커가 그래픽카드를 아무리 많이 사 와도 메모리가 부족해서 동시에 여러 비밀번호를 때려 맞추지 못하고 마비되어 버립니다.
  • 추가로 해커가 컴퓨터의 미세한 연산 시간 차이를 측정해 비밀번호를 유추하는 ‘타이밍 공격’까지 차단합니다.

쉽게 말해, **“해커가 값비싼 장비로 무식하게 때려 맞추는 것을 원천 봉쇄하기 위해 만들어진 가장 현대적이고 강력한 방패”**가 바로 Argon2id입니다.


3. 웹 브라우저 속 비밀번호 금고(Vault)는 어떻게 돌아갈까?

우리는 크롬, 사파리, 엣지 같은 웹 브라우저에서 확장 프로그램(Extension)을 깔아 비밀번호 관리자를 자주 사용합니다. 웹 브라우저는 과연 안전할까요?

[평상시: 잠금 상태 (Locked)]
브라우저 저장소 (IndexedDB)에는 '암호화된 외계어 덩어리'만 저장되어 있음.
(컴퓨터를 껐다 켜도 복호화 열쇠는 저장소에 없음)

                      │
                      │ 사용자가 마스터 비밀번호 입력!
                      ▼

[사용 중: 잠금 해제 상태 (Unlocked)]
내 컴퓨터의 임시 메모리(RAM)에서 비밀번호를 풀어 평문 데이터를 잠깐 올려둠.
웹사이트 로그인 시 아이디/비밀번호 자동 입력!

                      │
                      │ 15분 동안 자리 비움 or 브라우저 종료
                      ▼

[다시 잠금 (Locked)]
메모리(RAM)에 있던 열쇠와 비밀번호를 완전히 지워버림 (증발).
다시 열려면 마스터 비밀번호를 새로 쳐야 함.

웹 브라우저가 비밀을 지키는 두 가지 핵심 기술

  1. Web Crypto API (운영체제 전용 암호화 기능 사용): 웹 브라우저의 일반 자바스크립트 코드는 해킹에 취약할 수 있습니다. 그래서 최신 비밀번호 관리자는 브라우저가 운영체제(Windows, macOS) 깊숙한 곳의 하드웨어 암호화 엔진을 직접 호출하는 W3C 표준 기술(crypto.subtle)을 사용합니다. 덕분에 속도도 빠르고 열쇠가 밖으로 새어 나가지 않습니다.
  2. 격리된 세계 (Isolated World): 혹시 악성 웹사이트를 방문했을 때 그 사이트의 해킹 스크립트가 내 비밀번호 확장 프로그램을 훔쳐보면 어쩌나 걱정될 수 있습니다. 브라우저 확장 프로그램은 웹 페이지와 화면(DOM)만 같이 볼 뿐, 프로그램이 실행되는 내부 방(Context)이 완전히 분리벽으로 차단되어 있어 웹사이트의 악성 스크립트가 침범할 수 없습니다.

4. 1Password vs Bitwarden: 두 서비스는 어떻게 다를까?

두 서비스 모두 완벽한 영지식 암호화를 제공하지만, 풀어나가는 방식에는 흥미로운 차이가 있습니다.

4.1 1Password: “비밀번호가 쉬워도 절대 안 뚫리는 비밀 키(Secret Key)”

보통 사람들은 아무리 주의를 줘도 짧거나 익숙한 비밀번호를 마스터 비밀번호로 설정하곤 합니다. 1Password는 **“사용자가 설령 바보 같은 비밀번호를 만들더라도 안전하게 지킨다”**는 목표를 세웠습니다.

[마스터 비밀번호] (사용자가 정한 비밀번호)
       +
[비밀 키 (Secret Key)] (가입 시 기기에 발급되는 128비트 무작위 암호 코드)
       │
       ▼  (두 개를 합쳐서 KDF 연산)
[마스터 언락 키 (Master Unlock Key)] 생성!
  • 비밀 키(Secret Key)의 위력: 가입할 때 내 컴퓨터에만 저장되는 34자리의 무작위 문자열입니다. 이 비밀 키는 1Password 본사 서버에 아예 저장되지 않습니다.
  • 보안 효과: 만약 1Password 서버가 해킹당해 내 암호화 데이터가 털리더라도, 해커에게는 내 ‘비밀 키’가 없습니다. 아무리 내 마스터 비밀번호가 단순해도, 34자리의 무작위 비밀 키를 맞추는 것은 우주가 멸망할 때까지 컴퓨터를 돌려도 불가능합니다.
  • SRP-6a 로그인 프로토콜: 로그인할 때 내 비밀번호를 서버로 보내서 “맞나요?” 하고 확인받지 않습니다. 수학적인 퀴즈(챌린지)를 주고받으며 “나는 비밀번호를 알고 있다"는 사실만 증명하고 로그인합니다.

4.2 Bitwarden: “투명한 오픈소스와 똑똑한 팀 공유 기능”

Bitwarden은 모든 프로그램 소스코드가 인터넷에 공개(Open Source)되어 있어 전 세계 수많은 보안 전문가들에게 매일 검증받는 서비스입니다. 원한다면 내 개인 서버나 NAS에 직접 구축(Self-hosted)할 수도 있습니다.

[Bitwarden의 키 분리 마법]

                    [마스터 비밀번호]
                           │
                           ▼ (Argon2id 연산)
                     [마스터 키]
                           │
             ┌─────────────┴─────────────┐
             ▼                           ▼
    [한 번 더 해싱]               [암호화 키로 확장]
             │                           │
             ▼                           ▼
   [마스터 패스워드 해시]         [대칭 암호화 키]
   -> 서버로 전송되어             -> 내 컴퓨터에만 남아서
      로그인 확인에만 사용           데이터를 잠그고 푸는 데 사용
      (이걸로 데이터 못 풂!)        (서버는 절대 구경도 못 함!)

팀원이나 가족에게 비밀번호를 공유할 때는 어떻게 할까요?

비밀번호를 남에게 알려주려면 보통 평문으로 보내야 할 것 같지만, Bitwarden은 비대칭 암호화(RSA) 기술을 이용해 영지식 상태를 유지하면서 안전하게 공유합니다:

  1. 우편함 비유: 모든 사용자에게는 누구나 넣을 수 있는 ‘우편함 투입구(공개키)‘와 나만 열 수 있는 ‘우편함 열쇠(개인키)‘가 주어집니다.
  2. 회사의 공유 금고를 열 수 있는 열쇠를, 팀원의 ‘공개키’로 꽁꽁 잠가서 서버에 올립니다.
  3. 서버는 잠긴 열쇠의 내용물을 전혀 알 수 없지만, 해당 팀원은 자신의 ‘개인키’로 열어서 공유된 비밀번호를 확인합니다.
  4. 결과: 서버 관리자나 해커는 여전히 아무것도 모른 채, 팀원들끼리만 완벽하게 비밀을 공유할 수 있습니다.

5. 한눈에 비교하는 비밀번호 관리 방식

구분1PasswordBitwarden웹 브라우저 내장 저장 (Chrome/Safari)
작동 원리영지식 클라이언트 암호화영지식 클라이언트 암호화브라우저/운영체제 계정 동기화 암호화
추가 보안 장치비밀 키 (Secret Key) 기본 제공2차 인증(2FA), KDF(Argon2id) 설정OS 생체 인증 (지문/얼굴), 화면 잠금
투명성비공개 상용 소프트웨어 (보안 백서 공개)전체 소스코드 오픈소스 공개Chromium 오픈소스 / Safari 일부 비공개
직접 서버 구축불가 (공식 클라우드만 가능)가능 (개인 서버/NAS 무료 구축)불가 (Google/Apple 계정에 종속)
가장 큰 장점초보자가 대충 비밀번호를 지어도 안전함무료 플랜이 강력하고 투명하며 자유로움별도 설치 없이 바로 쓸 수 있어 가장 편리함

6. 이것만은 꼭 주의하세요: 영지식 암호화도 막지 못하는 위험

영지식 암호화는 클라우드 서버와 네트워크 구간에서는 거의 ‘무적’에 가까운 보안을 자랑합니다. 하지만 사용자의 컴퓨터나 현실 세계의 빈틈까지 막아주지는 못합니다.

+------------------------------------+   +------------------------------------+
|   🛡️ 영지식 암호화가 완벽히 막는 것    |   |  ⚠️ 영지식 암호화도 못 막는 치명적 위험 |
+------------------------------------+   +------------------------------------+
| • 서비스 회사 서버가 통째로 털림   |   | • 내 컴퓨터에 키로거/악성코드 감염  |
| • 서비스 회사 직원의 내부자 훔쳐보기 |   | • 가짜 피싱 사이트에 비밀번호 직접 입력|
| • 경찰/정부의 서버 데이터 압수수색  |   | • 마스터 비밀번호와 복구 코드를 분실 |
| • 공용 Wi-Fi에서의 통신 패킷 도청  |   | • 화면을 열어둔 채 자리를 비움     |
+------------------------------------+   +------------------------------------+
  1. 내 컴퓨터 자체가 해킹당한 경우: 내 PC에 키보드 입력을 가로채는 악성코드(키로거)나 화면을 캡처하는 바이러스가 깔려 있다면, 내가 마스터 비밀번호를 타이핑하는 순간 해커에게 넘어갑니다.
  2. 피싱(Phishing) 사기: 포털 사이트와 똑같이 생긴 가짜 사이트에 속아 아이디와 마스터 비밀번호를 직접 타이핑해 버리면 암호화 기술도 손을 쓸 수 없습니다.
  3. 마스터 비밀번호 분실: 영지식 암호화 서비스의 가장 큰 특징이자 단점입니다. 일반 사이트처럼 “비밀번호를 잊으셨나요? 이메일로 임시 비밀번호를 보내드릴게요” 기능이 원천적으로 불가능합니다. 서비스 회사도 비밀번호를 모르기 때문입니다. 마스터 비밀번호와 복구 코드를 잃어버리면 볼트 안의 데이터는 영원히 버려야 합니다.

7. 마치며: 안전한 비밀번호 생활을 위한 3가지 팁

영지식 암호화는 복잡한 수학과 보안 기술을 통해 우리에게 **“회사를 믿지 않아도, 수학을 믿으면 되는 안전함”**을 선물해 주었습니다.

마지막으로 비밀번호 관리자를 안전하게 쓰기 위한 3가지 팁을 기억해 두세요:

  1. 마스터 비밀번호는 길고 기억하기 쉬운 문장으로 만드세요: 특수문자가 덕지덕지 붙은 짧은 비밀번호(P@s1!)보다, 내가 좋아하는 단어 여러 개를 조합한 긴 비밀번호(coffee-sky-guitar-blue-2026)가 수학적으로 훨씬 안전하고 기억하기도 좋습니다.
  2. 가입 시 주는 ‘비상 복구 키(Emergency Sheet)‘는 반드시 종이에 인쇄하거나 오프라인에 적어두세요: 내가 비밀번호를 까먹었을 때 나를 구제해 줄 유일한 열쇠입니다.
  3. Argon2id 옵션을 켜두세요: Bitwarden 등을 사용 중이라면 설정에서 KDF 알고리즘이 최신 표준인 Argon2id로 되어 있는지 확인해 보세요. 현대 그래픽카드 기반 공격으로부터 내 계정을 가장 든든하게 지켜줄 것입니다.