VPN/OTP와 사용자 인증

통신 보안 편에서 암호화와 방화벽으로 '내용'과 '통로'를 지키는 방법을 보았습니다. 그런데 서버 입장에서 가장 먼저 풀어야 할 질문은 "지금 접속한 사람이 정말 그 사람인가?"입니다. 이 장에서는 그 질문에 답하는 사용자 인증(비밀번호, 일회용 비밀번호 OTP, 패스키)과, 밖에서도 기관 내부망에 안전하게 들어가게 해 주는 VPN의 동작 원리를 직접 계산해 보며 알아봅니다. 이 장의 OTP는 일회용 비밀번호(One-Time Password)로, 통신 보안 편의 일회용 패드(One-Time Pad)와는 다른 말입니다. 처음 보는 약자는 아래 📖 용어 및 약자 설명에서 찾아보세요.

① 사용자 인증의 기초 — 무엇으로 "나"를 증명할까?

인증(authentication)은 "누구인가"를 확인하는 일이고, 인가(authorization)는 확인된 사람이 "무엇을 할 수 있는가"를 정하는 일입니다. 예를 들어 로그인은 인증이고, 로그인한 학생이 성적 관리 화면에 들어갈 수 없게 막는 것은 인가입니다. 사람을 확인하는 단서(인증 요소)는 크게 세 가지입니다.

인증 요소예강점약점
🧠 아는 것 (지식)비밀번호, PIN, 보안 질문어디서나 쓸 수 있고 비용이 들지 않음엿보기·유출·추측·재사용에 약함
📱 가진 것 (소유)OTP 앱·OTP 기기, 보안키, 스마트폰, 인증서가 든 기기원격에서 훔치기 어려움잃어버리거나 고장 날 수 있음
👆 나 자신 (생체)지문, 얼굴, 홍채잊어버리지 않음, 빠름바꿀 수 없음(유출되면 평생 영향) — 그래서 보통 기기 안에서만 확인

서로 다른 종류의 요소를 두 가지 이상 함께 쓰는 것을 다중 인증(MFA), 두 가지면 2단계 인증(2FA)이라고 합니다. 비밀번호와 OTP는 '아는 것 + 가진 것'이라 다중 인증이지만, 비밀번호를 두 번 묻는 것은 같은 종류라서 다중 인증이 아닙니다. 비밀번호가 유출되어도 공격자에게는 내 OTP 기기가 없으므로 로그인할 수 없습니다.

② 비밀번호 인증 — 서버는 비밀번호를 어떻게 저장할까?

잘 만든 서버는 비밀번호를 원문 그대로 저장하지 않습니다. 회원 가입 때 사용자마다 다른 무작위 값(솔트)을 만들어 비밀번호와 섞은 뒤, 일부러 아주 여러 번 반복하는 해시 함수로 지문을 만들어 저장합니다. 로그인할 때는 입력한 비밀번호로 같은 계산을 다시 해서 저장된 지문과 같은지만 비교합니다. 이렇게 하면 저장소가 통째로 유출되어도 원래 비밀번호를 알아내기가 매우 어렵습니다.

👉 같은 비밀번호로 두 사람을 가입시켜 보고, 반복 횟수를 바꿔 해시 한 번에 걸리는 시간을 재 보세요!

계산은 브라우저에 들어 있는 진짜 PBKDF2-HMAC-SHA256으로 하며, 입력한 비밀번호는 이 화면 밖으로 나가지 않습니다. 걸린 시간은 이 컴퓨터의 성능에 따라 다릅니다.

🧮 실제 값으로 계산해 보기 — 반복 해시가 공격자를 얼마나 늦출까?

그냥 SHA-256: 고성능 컴퓨터로 1초에 약 100억 번 시도 → 대소문자·숫자 8자리(628 ≈ 2.2 × 1014가지) 약 6시간
PBKDF2 60만 번(HMAC 1번 = SHA-256 2번): 1초에 약 100억 ÷ 120만 ≈ 8,300번 → 같은 비밀번호에 약 830년
  • 사용자에게는 로그인할 때 한 번, 수십 ~ 수백 ms만 더 걸리지만, 수조 번을 시험해야 하는 공격자에게는 120만 배의 부담이 됩니다.
  • 솔트가 다르면 같은 비밀번호도 지문이 달라, 미리 계산해 둔 '비밀번호 → 지문' 표(레인보 테이블)를 쓸 수 없고, 사용자마다 따로 공격해야 합니다.
  • 그래도 "123456"처럼 흔한 비밀번호는 몇 번 만에 맞힐 수 있으므로, 로그인 시도 횟수 제한과 ③의 OTP를 함께 씁니다.

③ OTP — 30초마다 바뀌는 일회용 비밀번호

OTP(One-Time Password)는 한 번만 쓸 수 있는 비밀번호입니다. 가장 널리 쓰는 TOTP(시간 기반 OTP) 앱은 처음 등록할 때 서버와 스마트폰이 QR 코드로 비밀 키를 하나 나눠 갖습니다. 그 뒤로는 통신 없이도 양쪽이 각자 지금 시각과 비밀 키로 같은 계산을 해서 같은 6자리 숫자를 만듭니다. 숫자는 30초마다 바뀌므로, 누가 엿보거나 훔쳐도 금방 쓸모가 없어집니다.

OTP 종류숫자를 바꾸는 기준특징
TOTP (RFC 6238)현재 시각 ÷ 30초 (시간 칸 번호)인증 앱(스마트폰), OTP 카드. 가장 흔함
HOTP (RFC 4226)버튼을 누를 때마다 1씩 느는 횟수(카운터)시계가 필요 없지만, 기기와 서버의 횟수가 어긋날 수 있음
문자·이메일 OTP서버가 무작위 숫자를 만들어 보내 줌쓰기 쉽지만 문자 가로채기·유심 복제에 약해 점점 덜 권장됨
푸시 승인앱에 "로그인하시겠습니까?" 알림편리하지만 무심코 '승인'을 누르게 하는 공격(알림 폭탄)에 주의

TOTP 앱 안에서는 다음 계산이 30초마다 일어납니다.

T = ⌊ 현재 유닉스 시각(초) ÷ 30 ⌋  →  H = HMAC-SHA1(비밀 키, T)  →  H에서 4바이트를 골라 31비트 수로  →  그 수 mod 1,000,000 = 6자리 코드

👉 스마트폰과 서버가 각자 같은 코드를 만드는 모습을 보고, 코드를 입력해 로그인해 보세요. 스마트폰 시계를 어긋나게 하거나 같은 코드를 두 번 넣어 보세요!

등록 정보(QR 코드에 담기는 내용):

📱 스마트폰 인증 앱

------

🖥️ 서버 (같은 비밀 키로 직접 계산)

코드는 브라우저의 진짜 HMAC-SHA1로 계산합니다. 서버는 시계 차이를 감안해 앞뒤 한 칸(±30초)까지 받아 주고, 이미 쓴 코드는 다시 받지 않으며, 5번 틀리면 잠깁니다.

🧮 실제 값으로 계산해 보기 — 6자리 OTP를 찍어서 맞힐 확률

6자리 = 1,000,000가지  |  서버가 받아 주는 코드 3개(±1칸)  |  5번 틀리면 잠금
맞힐 확률 ≈ 5 × 3 ÷ 1,000,000 = 0.0015 %
  • 비밀번호를 이미 훔친 공격자도 OTP까지 맞히기는 사실상 불가능합니다. 그래서 시도 횟수 제한이 OTP 안전성의 중요한 부분입니다.
  • 다만 가짜 로그인 화면에 사용자가 OTP를 직접 입력하게 하고 30초 안에 진짜 서버에 대신 넣는 실시간 피싱은 OTP로 막지 못합니다. 이것을 막는 것이 ④의 패스키입니다.

④ 패스키와 공개키 인증 — 비밀을 보내지 않고 증명하기

비밀번호와 OTP는 결국 '비밀 값을 서버에 보내는' 방식이라, 가짜 사이트에 입력하면 빼앗깁니다. 공개키 인증은 비밀을 아예 보내지 않습니다. 기기 안에서 개인키·공개키 한 쌍을 만들어 공개키만 서버에 등록해 두고, 로그인할 때마다 서버가 보낸 무작위 문제(챌린지)에 개인키로 서명해 돌려줍니다. 서버는 공개키로 서명을 확인합니다. SSH 키 로그인, 인증서 로그인, 그리고 요즘 웹의 패스키(FIDO2/WebAuthn)가 모두 이 원리입니다. 패스키는 서명할 때 지금 접속한 사이트 주소(오리진)를 함께 서명하므로, 이름이 비슷한 가짜 사이트에서 받은 서명은 진짜 서버에서 쓸 수 없습니다.

👉 ①~④ 단계를 차례로 눌러 보고, 가짜 사이트와 챌린지 재사용으로 공격해 보세요!

브라우저의 진짜 ECDSA(P-256) 서명으로 계산합니다. 실제 패스키는 운영체제·보안키가 개인키를 안전한 칩 안에 보관하고, 오리진과 챌린지를 담은 정해진 형식에 서명합니다. 여기서는 그 핵심만 흉내 냈습니다.

⑤ VPN — 인터넷 위에 만든 암호화된 전용 통로

VPN(Virtual Private Network, 가상 사설망)은 공용 인터넷 위에 암호화된 터널을 만들어, 멀리 있는 컴퓨터를 기관 내부망에 직접 꽂은 것처럼 쓰게 해 줍니다. 원리는 캡슐화입니다. 내부망으로 가는 원래 패킷 전체를 암호화한 뒤, VPN 게이트웨이로 가는 새 패킷 안에 통째로 담아 보냅니다. 게이트웨이는 바깥 포장을 벗기고 복호화해 원래 패킷을 내부망에 내보냅니다. 길 위에서 엿보는 사람에게는 "누군가 VPN 게이트웨이와 암호문을 주고받는다"는 것만 보입니다.

VPN 종류쓰임특징
원격 접속 VPN집·출장지의 PC가 기관 내부망에 접속사용자 인증(비밀번호 + OTP 또는 인증서)이 핵심
사이트 간 VPN본사와 지사, 관측소와 연구소 네트워크를 상시 연결양쪽 게이트웨이끼리 인증서·사전 공유 키로 인증
IPsec사이트 간 연결에 많이 씀네트워크 계층(L3)에서 IP 패킷을 통째로 암호화. 키 교환은 IKE
SSL/TLS VPN원격 접속(OpenVPN, 기관용 SSL VPN)HTTPS와 같은 TLS 사용. 443번 포트로 방화벽을 잘 통과
WireGuard원격 접속·사이트 간 모두코드가 짧고 빠른 최신 방식. UDP 위에서 ChaCha20-Poly1305로 암호화

👉 VPN을 켜고 끄며, 카페의 공용 Wi-Fi에서 엿보는 사람에게 관측 장비 제어 명령이 어떻게 보이는지 비교해 보세요!

바깥 헤더 크기는 WireGuard(IPv4) 기준입니다. 안쪽 패킷은 브라우저의 진짜 AES-GCM으로 암호화해 보여 주며(WireGuard는 실제로 ChaCha20-Poly1305 사용), 세션 키는 접속할 때마다 키 교환으로 새로 만듭니다. 주소는 설명용 예시입니다.

🧮 실제 값으로 계산해 보기 — VPN 포장은 얼마나 클까?

WireGuard(IPv4): 바깥 IP 20 + UDP 8 + WireGuard 머리 16 + 인증 태그 16 = 60바이트
바깥 MTU 1,500 − 60 = 안쪽 패킷 최대 1,440바이트  →  효율 1,440 ÷ 1,500 = 96 %
  • 바깥이 IPv6이면 IP 머리가 40바이트라 80바이트가 붙습니다. WireGuard의 기본 MTU가 1,420인 이유입니다.
  • 터널 안의 MTU를 이렇게 줄여 두지 않으면, 큰 패킷이 포장 후 1,500을 넘어 조각나거나 버려져 "VPN을 켜면 어떤 사이트만 안 열린다"는 문제가 생깁니다.

VPN에 접속할 때는 다음 과정이 몇 초 안에 일어납니다. ①~④에서 배운 인증과 통신 보안 편의 키 교환·대칭키 암호가 모두 쓰입니다.

1. 서버 확인 — 내 PC가 VPN 게이트웨이의 인증서(또는 등록된 공개키)를 확인해, 가짜 게이트웨이가 아닌지 봅니다.
2. 사용자 인증 — 아이디·비밀번호에 OTP나 인증서·패스키를 더해(다중 인증) "누가" 접속하는지 확인합니다. 게이트웨이는 보통 기관의 인증 서버에 물어봅니다(⑥).
3. 키 교환 — 디피-헬먼 방식으로 이번 접속에만 쓸 세션 키를 만듭니다. 키는 길 위로 오가지 않습니다.
4. 터널 주소 배정과 인가 — 내부망에서 쓸 주소(예: 10.8.0.2)를 받고, 이 사용자가 갈 수 있는 서버와 포트만 허용됩니다.
5. 암호화 통신과 키 교체 — 모든 패킷을 AES-GCM이나 ChaCha20-Poly1305로 암호화하고, 몇 분마다 세션 키를 새로 바꿉니다.

VPN은 만능이 아닙니다. 접속한 PC가 이미 악성 코드에 감염되어 있으면 그 악성 코드도 터널을 타고 내부망에 들어옵니다. 또 VPN 운영자(게이트웨이)는 터널 안의 내용을 볼 수 있으므로, 믿을 수 있는 곳의 VPN만 써야 하고, 터널 안에서도 중요한 통신은 HTTPS·SSH로 한 번 더 암호화하는 것이 좋습니다.

⑥ 로그인 뒤에는? — 인증 서버, 단일 로그인(SSO), 세션

기관에는 서버가 수십 대 있는데, 서버마다 따로 계정을 만들면 관리가 어렵고 퇴직자 계정을 지우는 것도 잊기 쉽습니다. 그래서 계정과 비밀번호·OTP 확인을 인증 서버 한 곳에 모으고, VPN·메일·업무 시스템은 "이 사람 맞나요?"를 인증 서버에 물어봅니다.

구성 요소하는 일
디렉터리 (LDAP, AD)사용자 계정·소속·그룹을 한곳에 저장. 퇴직하면 여기서만 막으면 모든 시스템에서 막힘
RADIUS 서버VPN 게이트웨이·무선랜이 사용자 인증을 맡기는 표준 인증 서버. OTP 확인도 여기서 하는 경우가 많음
단일 로그인 (SSO)한 번 로그인하면 여러 서비스에 다시 로그인하지 않고 들어감. SAML·OpenID Connect 같은 표준 사용
세션·토큰로그인에 성공하면 서버가 '로그인 증표'(세션 ID, 토큰)를 주고, 이후 요청은 이 증표로 확인. 증표는 일정 시간이 지나면 만료
접속 기록누가, 언제, 어디서 로그인했고 실패했는지 남겨 이상한 로그인을 찾아냄(통신 보안 편의 보안 관제)

⑦ 전파천문 현장에서는

전파망원경은 산꼭대기나 섬처럼 먼 곳에 있는 경우가 많아, 연구자와 운영자가 원격으로 관측을 확인하고 장비를 관리합니다. 이때 관측 장비의 제어 프로그램은 대부분 암호화나 인증이 없도록 만들어져 있어, 인터넷에 직접 열면 매우 위험합니다(예: 대용량 데이터 전송 및 수신 편의 jive5ab 제어 포트). 그래서 다음과 같이 겹겹이 지킵니다.

  • 관측소 장비에는 VPN으로 내부망에 들어온 뒤에만 접속할 수 있게 하고, 장비의 제어 포트는 인터넷에 열지 않습니다.
  • VPN 로그인에는 비밀번호 + OTP(또는 인증서·패스키) 다중 인증을 씁니다.
  • 관리자 접속은 접근제어 서버를 거치게 해 누가 어떤 명령을 냈는지 기록하고, 서버 로그인은 비밀번호 대신 SSH 키(공개키 인증)를 씁니다.
  • 관측 데이터를 주고받는 서버끼리는 사람 대신 장비가 인증하는 사이트 간 VPN이나 허락된 주소만 여는 방화벽 규칙으로 연결합니다.

핵심 정리

  • 인증은 "누구인가", 인가는 "무엇을 할 수 있는가"입니다. 인증 요소는 아는 것·가진 것·나 자신(생체) 세 가지이고, 다른 종류를 둘 이상 쓰면 다중 인증입니다.
  • 서버는 비밀번호를 원문이 아니라 솔트 + 여러 번 반복한 해시로 저장합니다. 60만 번 반복하면 공격자의 대입 속도가 120만 배 느려집니다.
  • TOTP는 비밀 키와 시각(30초 칸)으로 HMAC을 계산해 6자리를 만들며, 서버와 기기가 통신 없이 같은 숫자를 얻습니다. 시계 차이 허용, 재사용 금지, 시도 횟수 제한이 함께 필요합니다.
  • 패스키·공개키 인증은 비밀을 보내지 않고 챌린지에 서명해 증명하며, 사이트 주소까지 서명해 피싱에 강합니다.
  • VPN은 원래 패킷을 암호화해 새 패킷에 담는 터널로, 길 위에서는 게이트웨이와의 암호문만 보입니다. 접속할 때 서버 확인 → 사용자 인증 → 키 교환 → 주소 배정 → 암호화 통신 순으로 진행됩니다.
  • 기관은 인증 서버(LDAP·RADIUS)와 SSO로 계정을 한곳에서 관리하고, 접속 기록으로 이상한 로그인을 찾습니다.

📖 용어 및 약자 설명

용어·약자원어(풀이)뜻
사용자 인증
인증 / 인가authentication / authorization누구인지 확인하기 / 확인된 사람이 할 수 있는 일을 정하기
인증 요소authentication factor아는 것(비밀번호), 가진 것(OTP 기기·보안키), 나 자신(생체)
MFA / 2FAMulti-Factor / Two-Factor Authentication서로 다른 종류의 인증 요소를 둘 이상 / 두 가지 쓰는 인증
PINPersonal Identification Number짧은 숫자 비밀번호
솔트salt비밀번호마다 섞는 무작위 값. 같은 비밀번호도 저장값이 달라짐
PBKDF2Password-Based Key Derivation Function 2해시를 여러 번 반복해 비밀번호 대입을 느리게 만드는 표준 함수
레인보 테이블rainbow table흔한 비밀번호의 해시를 미리 계산해 둔 표. 솔트로 무력화
OTPOne-Time Password한 번만 쓰는 비밀번호(일회용 패드 One-Time Pad와는 다름)
TOTP / HOTPTime-based / HMAC-based OTP시각(30초 칸)으로 바뀌는 OTP / 누른 횟수로 바뀌는 OTP
HMACHash-based Message Authentication Code비밀 키와 해시 함수로 만드는 검사값. 키가 없으면 같은 값을 만들 수 없음
SHA-1 / SHA-256Secure Hash Algorithm해시 함수. TOTP 표준의 기본은 SHA-1(HMAC 안에서는 여전히 안전하게 쓰임)
Base32—비밀 키를 A~Z, 2~7 글자로 적는 방식. OTP 등록 QR 코드에 사용
재전송 공격replay attack엿본 인증 값을 그대로 다시 보내 로그인하려는 공격
챌린지-응답challenge-response서버가 매번 다른 문제를 내고 사용자가 비밀로만 풀 수 있는 답을 돌려주는 인증
ECDSA / P-256Elliptic Curve Digital Signature Algorithm타원곡선 전자서명 / 그중 많이 쓰는 256비트 곡선
FIDO2 · WebAuthn · 패스키Fast IDentity Online 2 · Web Authentication · passkey공개키로 로그인하는 국제 표준 · 그 웹 브라우저 규격 · 이를 쓰는 로그인 수단
오리진origin사이트를 구분하는 '규약 + 주소 + 포트'(예: https://www.kasi.re.kr)
피싱phishing진짜처럼 꾸민 가짜 사이트·문자로 비밀번호 등을 빼내는 속임수
VPN
VPNVirtual Private Network가상 사설망. 인터넷 위에 암호화된 전용 통로를 만듦
터널링 / 캡슐화tunneling / encapsulation원래 패킷을 다른 패킷 안에 통째로 담아 보내기
게이트웨이gateway터널의 출입구 역할을 하는 서버·장비
IPsec / IKE / ESPIP Security / Internet Key Exchange / Encapsulating Security PayloadIP 계층 VPN 규약 / 그 키 교환 규약 / 패킷을 암호화해 담는 형식
SSL/TLS VPNSecure Sockets Layer / Transport Layer SecurityHTTPS와 같은 TLS로 만든 VPN(예: OpenVPN)
WireGuard—간결하고 빠른 최신 VPN 규약. 2020년 리눅스 커널에 포함
ChaCha20-Poly1305 / AES-GCM—암호화와 변조 검사를 함께 하는 대칭키 암호 방식
분할 터널링split tunneling내부망으로 가는 통신만 VPN으로, 나머지는 바로 인터넷으로 보내는 설정
MTUMaximum Transmission Unit한 번에 보낼 수 있는 IP 패킷의 최대 크기(보통 1,500바이트)
인증 서버와 로그인 관리
LDAP / ADLightweight Directory Access Protocol / Active Directory사용자 계정을 모아 두는 디렉터리 규약 / 마이크로소프트의 디렉터리 서비스
RADIUSRemote Authentication Dial-In User ServiceVPN·무선랜이 인증을 맡기는 표준 인증 서버 규약
SSOSingle Sign-On한 번 로그인으로 여러 서비스 이용
SAML / OIDCSecurity Assertion Markup Language / OpenID ConnectSSO에서 "이 사람은 인증되었다"는 증명을 주고받는 표준
세션 / 토큰session / token로그인 뒤 서버가 주는 로그인 증표. 일정 시간 뒤 만료
SSH 키Secure Shell key서버 원격 접속에 비밀번호 대신 쓰는 공개키·개인키 쌍
RFCRequest for Comments인터넷 표준 문서 번호(예: TOTP는 RFC 6238)
OWASPOpen Worldwide Application Security Project웹 보안 정보를 공개하는 국제 비영리 단체

🧑‍🏫 선생님·학부모님을 위한 설명 도움말

원리 자세히 보기

  • TOTP가 통신 없이 맞는 이유 — 스마트폰과 서버는 처음에 비밀 키를 한 번 나눈 뒤로는 아무것도 주고받지 않습니다. 둘 다 같은 시각(30초 단위로 자른 번호)을 알고 같은 공식으로 계산하므로 같은 숫자가 나옵니다. 그래서 비행기 모드에서도 인증 앱은 동작하지만, 스마트폰 시계가 크게 틀리면 숫자가 맞지 않습니다.
  • HMAC의 '잘라 쓰기' — HMAC-SHA1 결과는 20바이트입니다. 마지막 바이트의 낮은 4비트를 위치(0~15)로 삼아 거기서부터 4바이트를 꺼내고, 맨 앞 비트를 지워 31비트 정수로 만든 뒤 1,000,000으로 나눈 나머지를 씁니다. 위치가 매번 바뀌므로 결과 숫자에 규칙이 남지 않습니다.
  • 패스키가 피싱에 강한 이유 — 사용자가 가짜 사이트에 속아도, 브라우저가 서명 재료에 넣는 주소는 사용자가 실제로 접속한 가짜 주소입니다. 진짜 서버는 자기 주소가 담긴 서명만 받으므로, 사람이 속아도 기계가 속지 않습니다. 또 서버에는 공개키만 있으므로 서버가 해킹당해도 로그인 정보를 훔쳐 갈 수 없습니다.
  • VPN과 익명성 — VPN을 켜면 카페 Wi-Fi 운영자나 통신사는 내용을 볼 수 없지만, VPN 운영자는 볼 수 있습니다. 기관 VPN은 기관이 운영하므로 문제가 없지만, 무료 상업 VPN은 오히려 정보를 모을 수 있어 주의해야 합니다.

인증과 VPN이 발전해 온 역사

시기사건의미
1960년대 초컴퓨터 비밀번호의 등장미국 MIT의 시분할 컴퓨터(CTSS)에서 여러 사람이 컴퓨터를 나눠 쓰며 사용자마다 비밀번호를 두기 시작했습니다.
1979년솔트와 해시로 비밀번호 저장유닉스의 모리스와 톰프슨이 비밀번호를 솔트와 함께 해시로 저장하는 방법을 정리해 발표했습니다.
1981년램포트의 일회용 비밀번호해시를 여러 번 겹쳐 만든 사슬로 매번 다른 비밀번호를 쓰는 방법이 제안되었습니다. OTP의 출발점입니다.
1990년대VPN 규약의 등장PPTP, IPsec(1998년 표준 정비) 같은 VPN 규약이 나와 기업들이 인터넷으로 지점을 연결하기 시작했습니다.
2000년PBKDF2 표준비밀번호 해시를 여러 번 반복하는 방법이 인터넷 표준(RFC 2898)으로 정해졌습니다.
2001년OpenVPNTLS를 이용한 공개 소프트웨어 VPN이 나와 널리 쓰이게 되었습니다.
2005년 / 2011년HOTP / TOTP 표준횟수 기반(RFC 4226)과 시간 기반(RFC 6238) OTP가 표준이 되어, 서로 다른 회사의 인증 앱과 서버가 함께 동작하게 되었습니다.
2019년WebAuthn 표준웹 브라우저에서 공개키로 로그인하는 규격이 W3C 권고안이 되었습니다.
2020년WireGuard간결한 최신 VPN 규약이 리눅스 커널에 정식으로 들어갔습니다.
2022년 ~패스키 확산주요 운영체제·브라우저 회사들이 비밀번호 없는 로그인(패스키)을 함께 지원하기로 하면서 빠르게 퍼지고 있습니다.

비유로 설명하기

  • VPN은 도시 한가운데를 지나는 지하 통로입니다. 지상의 사람들은 통로 입구로 누가 들어가는 것만 볼 뿐, 안에서 무엇을 나르는지는 보지 못합니다.
  • TOTP는 같은 시계와 같은 비밀 공식을 가진 두 사람이 각자 계산한 암호를 맞춰 보는 것입니다. 미리 말을 맞추지 않아도 같은 시각이면 같은 답이 나옵니다.
  • 패스키는 도장과 인감 증명입니다. 서버는 인감 증명(공개키)만 가지고 있고, 도장(개인키)은 내 손에만 있습니다. 서버가 매번 다른 서류(챌린지)를 내밀므로 지난번 찍은 서류를 다시 낼 수도 없습니다.

자주 하는 오해

  • "VPN을 켜면 해킹을 막는다" — VPN은 통로를 암호화할 뿐, 내 PC의 악성 코드나 피싱 사이트를 막지 못합니다.
  • "OTP가 있으면 피싱에 안전하다" — 가짜 화면에 OTP를 입력하면 공격자가 30초 안에 대신 쓸 수 있습니다. 주소를 확인하거나 패스키를 쓰는 것이 안전합니다.
  • "사이트가 내 비밀번호를 보관하고 있다" — 잘 만든 사이트는 비밀번호 원문이 아니라 솔트를 섞은 해시만 보관합니다. 그래서 '비밀번호 찾기'가 아니라 '비밀번호 재설정'을 해 줍니다.
  • "생체 정보가 서버로 전송된다" — 패스키·스마트폰 지문 로그인은 지문을 기기 안에서만 확인하고, 서버에는 서명만 보냅니다.

함께 해 볼 질문·활동

  • ②의 실험에서 철수와 영희의 저장값이 왜 다른지 설명하고, 반복 횟수를 1번과 60만 번으로 바꿔 걸리는 시간을 비교하기
  • ③의 실험에서 스마트폰 시계를 +30초, +60초로 어긋나게 해 보며 서버가 언제까지 받아 주는지 찾고, 그 이유를 '±1칸'으로 설명하기
  • ④의 실험에서 가짜 사이트 상자를 켜고 서명을 검증해 보며, 사람이 속아도 패스키가 속지 않는 이유를 이야기하기
  • 가족의 이메일·포털 계정에 2단계 인증이나 패스키를 설정해 보고, 복구 코드를 안전한 곳에 적어 두기

본 교육자료는 Anthropic(Claude) 및 OpenAI(ChatGPT)를 활용하여 제작하였으며, 제작자가 내용을 검토·편집하였습니다. 주요 참고자료와 출처는 각 페이지의 「참고 자료 및 출처」에 명시하였습니다. 출처가 별도로 표기되지 않은 페이지와 참고자료에 포함되지 않은 내용은 제작자가 직접 작성하거나 정리한 것입니다. 내용에 오류가 있거나 수정이 필요한 사항을 발견하시면 kvnsite@kasi.re.kr로 알려 주시기 바랍니다.