생체 인증
고친 사람 github-actions[bot]
생체 인증은 몸의 특징으로 본인인지 확인하는 방법입니다. 휴대폰에 손가락을 대거나 얼굴을 비추면 잠금이 풀리는 것이 이 방법입니다. 외울 것도 들고 다닐 것도 없습니다. 대신 몸은 바꿀 수 없어서 한 번 새면 되돌리기 어렵습니다.
쉽고 빠른 이해
지문이나 얼굴처럼 몸에 붙은 특징을 열쇠 삼아 본인을 확인합니다. 휴대폰 지문 잠금이 가장 흔한 모습입니다.
비밀번호는 잊어버리고 훔쳐 가기도 쉽습니다. 몸의 특징은 늘 지니고 다닙니다. 남에게 빌려주기도 어렵습니다.
어떻게 도나:
- 처음에 지문을 찍어 비교에 쓸 특징만 뽑아 저장해 둡니다
- 확인할 때 새로 찍은 지문을 저장해 둔 것과 견줘 봅니다
- 충분히 닮았으면 본인으로 받아들입니다
대가도 있습니다. 찍을 때마다 조금씩 달라서 판정이 가끔 틀립니다. 본인을 막기도 하고 남을 들이기도 합니다. 지문은 비밀번호처럼 새로 바꿀 수 없습니다.
웹 로그인에 쓸 때는 지문을 서버로 보내지 않습니다. 기기 안에서 견줘 봅니다. 맞으면 기기 안에 둔 열쇠로 로그인합니다.
본인 확인에 쓰되 비밀번호 같은 다른 길을 늘 함께 둡니다. 생체 정보를 서버에 모으는 구성은 피합니다.
상세
공항 출국 심사대에서 여권을 내밀면 심사관은 여권 사진과 눈앞의 얼굴을 견줍니다. 여권은 「나는 이 사람이다」라는 주장입니다. 사진은 그 주장을 가릴 기준입니다. 사진과 충분히 닮았으면 통과시킵니다.
생체 인증은 이 견줌을 기계가 하는 인증 방법입니다. 사람의 몸이나 행동에서 잰 특징으로 그 사람이 맞는지 가립니다. 인증은 「당신이 주장하는 그 사람이 맞나」를 가리는 일입니다. 휴대폰 지문 잠금, 은행 앱의 얼굴 로그인, 노트북의 지문 로그인이 모두 생체 인증입니다.
몸의 특징으로 사람을 알아보는 기술 전반은 생체 인식이라고 부릅니다. 생체 인증은 그 기술로 본인이 맞는지 가리는 쓰임만 가리킵니다.
생체 인증이 풀려는 문제
본인 확인의 가장 흔한 수단은 비밀번호입니다. 비밀번호는 사람이 외워야 합니다. 그래서 짧고 쉬운 것을 고르거나 여러 사이트에 같은 것을 씁니다.
외운 것은 남에게 넘어가기도 쉽습니다. 어깨 너머로 보거나 가짜 로그인 화면에 적게 만들면 됩니다. 휴대폰처럼 작은 화면에서는 긴 비밀번호를 치는 일이 번거롭습니다.
몸의 특징은 이 두 문제를 비켜 갑니다. 잊어버릴 일이 없습니다. 입으로 불러 줄 수 없으니 전화로 속여 받아 내기도 어렵습니다.
쓰는 특징
생체 인증에 쓰는 특징은 두 갈래로 나뉩니다. 타고난 몸의 생김새와 몸에 밴 행동입니다.
| 갈래 | 예 | 무엇을 재나 |
|---|---|---|
| 신체적 특징 | 지문 · 얼굴 · 홍채 · 손바닥 정맥 | 몸의 모양과 무늬 |
| 행동적 특징 | 목소리 · 손글씨 서명 · 타자 리듬 | 몸을 움직이는 버릇 |
신체적 특징은 잘 변하지 않아서 휴대폰 잠금과 노트북 로그인에 널리 쓰입니다. 대표가 지문 인식, 얼굴 인식, 홍채 인식입니다. 목소리로 사람을 가리는 일은 화자 인식이라고 부릅니다.
행동적 특징은 컨디션과 기분에 따라 흔들립니다. 그래서 혼자 쓰기보다 다른 확인을 거드는 쪽에 자주 쓰입니다.
등록과 대조
생체 인증은 두 단계로 이뤄집니다. 처음 한 번 특징을 저장하는 등록과, 매번 새로 잰 특징을 저장한 것과 견주는 대조입니다.
등록할 때 센서가 지문이나 얼굴을 찍습니다. 기기는 찍은 이미지를 그대로 두지 않고 비교에 필요한 특징만 뽑아냅니다. 지문이라면 손끝의 볼록한 선이 끊기거나 갈라지는 점의 위치와 방향 같은 것입니다. 이 과정을 특징 추출이라고 합니다.
뽑아낸 특징을 모아 저장한 것이 생체 템플릿입니다. 템플릿은 원래 이미지보다 훨씬 작습니다. 비교에 필요한 값만 남기므로 원본 사진을 따로 보관할 필요도 없습니다.
대조할 때는 새로 찍은 이미지에서 같은 방식으로 특징을 뽑습니다. 그 특징이 템플릿과 얼마나 닮았는지를 점수로 냅니다. 이 점수를 유사도 점수라고 합니다.
점수가 미리 정한 기준선을 넘으면 본인으로 받아들입니다. 이 기준선을 임계값이라고 부릅니다.
flowchart TD
A["센서가 지문이나 얼굴을 찍는다"] --> B["특징 추출"]
B --> C["등록 때 저장한 템플릿과 견준다"]
C --> D["유사도 점수"]
D --> E{"점수가 임계값을 넘나"}
E -->|넘는다| F["본인으로 받아들인다"]
E -->|못 넘는다| G["거부한다"]
그림의 마지막 갈림이 생체 인증의 성격을 정합니다. 결과는 「같다, 다르다」가 아니라 「충분히 닮았다, 덜 닮았다」입니다.
비밀번호와 다르게 도는 까닭
비밀번호는 한 글자만 달라도 틀린 것입니다. 그래서 서버는 비밀번호를 해시 함수로 바꿔 저장합니다. 입력이 들어오면 같은 해시가 나오는지만 봅니다. 이 방식을 비밀번호 해싱이라고 합니다.
지문은 같은 손가락이어도 찍을 때마다 다릅니다. 누르는 힘, 손가락 각도, 손의 습기가 매번 바뀝니다. 얼굴도 조명과 표정과 안경에 따라 달라집니다.
생체 정보는 해시로 바꿔 「같은가」만 보는 방식을 쓸 수 없습니다. 입력이 조금만 달라도 해시는 전혀 다른 값이 되기 때문입니다. 생체 인증은 원래부터 닮은 정도를 재는 판정입니다.
두 가지 틀림
닮은 정도로 판정하면 두 방향으로 틀릴 수 있습니다. 다른 사람을 본인으로 받아들이는 것이 오수락입니다. 본인을 남으로 보고 막는 것이 오거부입니다.
오수락이 얼마나 자주 일어나는지를 오수락률, 오거부가 얼마나 자주 일어나는지를 오거부율이라고 합니다. 영어로는 false acceptance rate 와 false rejection rate 입니다.
두 틀림은 임계값을 사이에 두고 서로 맞바꿉니다. 임계값을 어디에 두느냐에 따라 아래처럼 갈립니다.
| 임계값을 | 오수락 | 오거부 | 사용자가 겪는 일 |
|---|---|---|---|
| 높인다 | 줄어든다 | 늘어난다 | 본인인데 몇 번씩 다시 대야 한다 |
| 낮춘다 | 늘어난다 | 줄어든다 | 편하지만 닮은 남도 들어온다 |
두 틀림을 모두 없애는 임계값은 없습니다. 임계값은 무엇을 지키느냐로 정합니다. 결제처럼 남이 들어오면 안 되는 곳은 임계값을 높입니다. 대신 본인이 가끔 막히는 불편을 받아들입니다.
임계값을 옮기다 보면 두 비율이 같아질 때가 있습니다. 그때의 비율을 동일 오류율이라고 합니다. 이 비율이 낮을수록 두 틀림이 함께 적습니다. 서로 다른 생체 인증 방식을 견줄 때 이 값을 씁니다.
검증과 식별
같은 지문 판독기로도 두 가지 일을 할 수 있습니다. 이 절은 둘을 비교 횟수로 견주어 생체 인증이 어느 쪽인지 짚습니다.
검증은 「나는 김철수다」라는 주장이 먼저 있습니다. 시스템은 김철수의 템플릿 하나만 꺼내 새로 찍은 지문과 견줍니다. 휴대폰 잠금이 이 방식입니다. 휴대폰은 주인 한 명의 템플릿만 봅니다.
식별은 주장이 없습니다. 새로 찍은 지문을 저장된 모든 템플릿과 견줘 가장 닮은 사람을 찾습니다. 비교 횟수가 사람 수만큼 늘어납니다. 사람이 많을수록 닮은 남을 고를 가능성도 커집니다.
생체 인증은 검증입니다. 로그인은 늘 「이 계정의 주인이 맞나」를 묻기 때문입니다. 식별은 생체 인증이 아니라 생체 인식의 다른 쓰임입니다.
대조를 어디서 하나
템플릿을 어디에 두고 누가 대조하느냐에 따라 위험이 크게 달라집니다. 이 절은 기기 안에서 끝내는 방식과 서버가 맡는 방식을 견줍니다.
휴대폰과 노트북은 템플릿을 기기 안의 따로 떨어진 보안 구역에 둡니다. 이 구역은 보안 칩이나 그와 비슷한 격리된 처리 장치입니다. 운영체제나 앱도 템플릿을 꺼내 읽을 수 없습니다. 「맞다, 아니다」라는 결과만 받습니다.
웹 로그인에 생체 인증을 쓸 때도 지문은 기기를 떠나지 않습니다. 기기 안의 대조는 개인 키를 꺼내 쓰게 하는 잠금 노릇만 합니다.
개인 키와 공개 키는 짝으로 만들어지는 열쇠 한 쌍입니다. 개인 키는 기기 안에만 둡니다. 공개 키는 처음 등록할 때 서버에 맡겨 둡니다.
전자 서명은 개인 키로 어떤 값에 붙인 표시입니다. 그 표시가 맞는지는 짝이 되는 공개 키로만 검사할 수 있습니다. 그래서 서버는 서명을 보고 개인 키를 가진 기기가 응답했다는 것을 압니다.
sequenceDiagram
participant 사용자
participant 기기
participant 서버
서버->>기기: 매번 새로 만든 값을 보내며 서명을 요청한다
기기->>사용자: 지문을 대 달라고 한다
사용자->>기기: 지문을 댄다
Note over 기기: 템플릿과 대조한다
Note over 기기: 맞으면 개인 키로 서명한다
기기-->>서버: 서명
Note over 서버: 공개 키로 서명을 검사한다
서버는 로그인할 때마다 서명할 값을 새로 만들어 보냅니다. 값이 매번 다르므로 지난번 서명을 가로채 다시 보내도 통하지 않습니다. 그림에서 서버가 받는 것은 서명입니다. 지문 이미지도 템플릿도 오가지 않습니다.
이 흐름을 웹에서 쓰도록 정한 표준이 WebAuthn(Web Authentication)입니다. 브라우저와 서버는 이 표준에 맞춰 열쇠를 만들고 서명을 주고받습니다.
이렇게 만든 로그인 수단을 패스키라고 부릅니다. 비밀번호 대신 기기 안의 개인 키로 로그인하는 것입니다.
템플릿을 서버에 모아 두고 서버가 대조하는 구성도 있습니다. 식별은 모든 사람의 템플릿과 견줘야 하므로 이 구성이 아니면 돌지 않습니다. 이때는 저장소가 새는 순간 모든 사람의 생체 정보가 함께 샙니다.
바꿀 수 없는 비밀
비밀번호가 새면 새 비밀번호로 바꾸면 됩니다. 지문이 새면 바꿀 손가락이 열 개뿐입니다. 얼굴은 하나뿐입니다. 생체 정보가 새는 일은 되돌릴 수 없습니다.
생체 정보는 숨겨 둔 비밀도 아닙니다. 얼굴은 사진으로 어디에나 남습니다. 지문은 컵과 휴대폰 화면에 묻어 남습니다. 그래서 생체 정보를 멀리 있는 서버에 보내는 비밀번호처럼 쓰면 위험합니다.
남의 특징을 흉내 내 센서를 속이는 공격을 스푸핑이라고 합니다. 얼굴 사진을 카메라에 비추거나 실리콘으로 본뜬 지문을 대는 것이 그런 공격입니다.
이를 막으려고 센서 앞에 살아 있는 사람이 있는지를 따로 봅니다. 눈을 깜빡이는지, 얼굴에 깊이가 있는지, 손가락에 피가 도는지를 봅니다. 이 검사를 라이브니스 탐지라고 합니다. 영어로는 liveness detection, 곧 살아 있음을 가려낸다는 뜻입니다.
다중 인증에서의 몫
본인 확인의 증거는 흔히 셋으로 나눕니다. 아는 것, 가진 것, 그 자신인 것입니다. 이 셋을 인증 요소라고 부릅니다.
생체 정보는 그 자신인 것에 듭니다. 성격이 다른 요소를 둘 이상 받아 확인하는 방식이 다중 인증입니다.
휴대폰 지문 로그인은 요소 둘을 한 번에 씁니다. 개인 키가 든 휴대폰은 가진 것입니다. 그 잠금을 푸는 지문은 그 자신인 것입니다. 지문만 흉내 내도 휴대폰이 없으면 들어올 수 없습니다.
백엔드 개발자가 정할 것
웹 서비스에 생체 인증을 붙인다면 패스키처럼 서버가 생체 정보를 받지 않는 구성을 고릅니다. 대조는 기기 안에서 끝납니다. 서버에는 공개 키만 있으니 서버가 털려도 생체 정보는 새지 않습니다.
오거부는 반드시 일어납니다. 손가락을 다쳤거나 마스크를 썼거나 조명이 어두울 때입니다. 그래서 생체 인증에는 늘 다른 길을 함께 둡니다. 보통 PIN(Personal Identification Number, 개인 식별 번호)이나 비밀번호입니다.
그 다른 길이 약하면 생체 인증의 강도도 그만큼 내려갑니다. 공격자는 지문 대신 PIN 을 노리면 되기 때문입니다. 기기를 잃었을 때 쓰는 계정 복구 절차도 같은 이유로 로그인만큼 단단해야 합니다.
여러 나라의 개인정보 법이 생체 정보를 특히 조심해 다룰 민감 정보로 봅니다. 서비스를 만드는 쪽은 생체 정보를 모으지 않고 해결할 방법부터 찾습니다.
관련 항목
생체 인증이 속하는 상위 분류
인증 · 인증과 인가 · 다중 인증 · 인증 요소 · 생체 인식
생체 인증에 쓰는 몸과 행동의 특징
지문 인식 · 얼굴 인식 · 홍채 인식 · 정맥 인식 · 화자 인식 · 행동 생체 인식 · 타자 리듬 인식
한 번의 대조를 이루는 구성 요소
생체 센서 · 특징 추출 · 생체 템플릿 · 유사도 · 임계값
생체 인증의 정확도를 재는 지표
오수락률 · 오거부율 · 동일 오류율 · ROC 곡선
생체 인증을 노리는 공격과 그 방어
스푸핑 · 프레젠테이션 공격 · 딥페이크 · 라이브니스 탐지 · 재전송 공격
템플릿을 기기 안에 가두는 하드웨어
보안 칩 · 신뢰 실행 환경 · TPM
생체 확인을 웹 로그인에 잇는 표준
패스키 · WebAuthn · FIDO2 · 인증기 · 신뢰 당사자 · 개인 키 · 공개 키 · 전자 서명
생체 인증과 함께 쓰거나 대신하는 수단
비밀번호 · PIN · 일회용 비밀번호 · 보안 키 · 스마트카드 · 계정 복구
생체 인증과 다르게 도는 비밀번호 확인 방식
비밀번호 해싱 · 해시 함수 · 솔트 · 크리덴셜 스터핑
생체 정보를 모을 때 적용되는 규칙
개인정보 보호 · 민감 정보 · 데이터 최소화
다른 이름: biometric authentication · 생체인증 · 바이오 인증 · 바이오인증