본문 바로가기

개발이야기

생체로그인의 표준인 FIDO2.0 소개

안녕하세요. 저는 회사에서 생체로그인 프로그램을 만들게 되었고, 그 과정에서 FIDO라는 생소한 표준을 접하게 되었습니다.

어려운 부분이 많아 글로 쓰며 정리했는데 이 내용을 공유하고자 합니다.

 

1. 생체인식 로그인과 FIDO2.0 의 발표

구글과 마이크로 소프트를 비롯한 it회사들은 아이디- 비밀번호 로그인을 없애기 위해 꾸준히 노력해왔습니다.

유저들이 계속 유사한 아이디와 비밀번호를 바꾸지 않고 사용하기때문에 보안에 취약하다는 판단 때문이었습니다. 더 자세히 알고 싶은 분들은 밑의 기사를 참고하세요. 

비밀번호 없앤다…구글판 인증기술 뭐? USB 장치 이용한 인증 수단 내년 보급

MS, 비밀번호 없애기 위한 발판 마련한다 

아이디와 비밀번호를 활용하는 로그인을 대체할 강력한 후보는 현재 생체 로그인입니다.(기사는 유비키도 섞여있지만 아직 보편적이진 않죠.) 윈도우즈 헬로우나 애플의 페이스 아이디가 그 예시로, 많은 사람들에게 이미 친숙한 개념입니다.

그리고 어떻게 생각하면 당연하지만, 생체 로그인/ 생체 인식기술을 활용한 인증방식에도 국제적인 기술 표준이 있습니다. 2018년 3월에 발표된 FIDO2.0입니다. FastIDentity Online의 약자이며 파이도라고 읽습니다.

2.FIDO 의 탄생 배경

  • 기존에는 아이디/지문/공인인증서 등으로 로그인(사용자 인증) 시도에 대해, 각각의 로그인 성공여부(인증여부)를 검증하는 서버를 분리해 각각 만들어서 비효율적이었다.
  • 대칭키가 아닌 단일키를 암호화에 사용하는 상대적으로 위험한 행위도 방지해야했다.
  • 생체로그인은 여러 방식으로 구현할 수 있으나, 안전을 위한 최소한의 가이드라인을 제공한다.

그래서 로그인의 표준을 제시한 것이 FIDO 인데, 로그인과정과 인증 프로토콜을 분리하고, 원격 인증은 비대칭 키를 사용하고, 인증서버를 하나로 합치는 것이 주 내용입니다.

3.FIDO1.0 과 2.0의 차이

FIDO는 최근 2.0으로 변경되었습니다. 2.0이 되면서 가장 큰 변화는 FIDO2.0에 들어서 웹에도 FIDO 기술이 적용되었다는 것입니다. 기본에는 모바일에만 적용되었습니다.

또한 로그인을 시도는 장치 외부의 인증장치, 즉 외부 스캐너나 핸드폰에서 인증하는 행위도 가능해졌습니다. (CTAP)

기술적인 차이로는 클라이언트와 서버간 프로토콜 표준인 UAF가 있었는데 이제는 없어지고 자체 프로토콜을 설계해야합니다.

그 외에는 기술 배포하는 표준 단체가 명확해졌습니다.

 

 

4.현황과 범용성

삼성전자,구글,아마존,Paypal등이 참여하고 있으며 크롬, 파이어폭스, 윈도우 엣지(구 익스플로러는 안됨) 웹브라우저가 fido를 지원합니다.

사파리는 FIDO를 지원할 예정이 있다고만 밝힌 상태입니다.

 

5.FIDO2.0의 간략한 구조

(1)서버

서버는 다시 RP서버와 FIDO 서버로 나뉩니다.

RP서버: Relying Party, 즉 개발자가 만드는 서버입니다.

FIDO 서버: 인증장치에 대한 정책을 설정하고 사용자의 공개키를 등록·관리 및 검증합니다.

 

(2)클라이언트

클라이언트는 RP 클라이언트와 FIDO 클라이언트로 나뉩니다.

RP클라: 개발자가 만드는 클라이언트입니다.

FIDO 클라이언트: FIDO 서버의 정책에 따라 인증자를 필터링 하고 ASM과 RP 클라이언트 간의 중계 역할합니다

ASM: FIDO 클라이언트의 요청 을 인증자로 전달하고 인증자에서 생성된 응답 값을 FIDO 클 라이언트로 전달하는 중계역할을 수행합니다.

Authenticator(외/내부 인증자): 생체 인증 등으로 사용자를 사용자 단 말에서 로컬 인증하고 서버에서의 원격 인증을 위한 공개키/개 인키 쌍을 생성, 저장합니다. 개인키를 이용해 전자서명을 수행하고 , 서명을 포함한 공개키를 FIDO 서버에 전송(등록)합니다.

외부인증장치 : 외부장치(스캐너, 핸드폰 등등)를 통해 FIDO 인증자를 이용할 경우 사용자 장치와 통신을 위해 USB, NFC, BLE 등의 CTAP(Client to Authenticator Protocol)2) 표준연동 방식을 적용해야합니다.

(3)프로토콜

자체 프로토콜 적용: 클라이언트와 서버 간의 메시지 전송 시 UAF 프로토콜을 이용하는 FIDO1.0과 달리 FIDO2.0은 서버 에서 정의하는 자체 프로토콜을 설게해 적용해야 합니다. 전자서명 값을 안전하게 전달할수 있도록 암호화 해야겠죠.