본문 바로가기
Security

FIDO의 모든것

by 개폰지밥 2021. 11. 24.
반응형

| FIDO (Fast Identity Online)

FIDO 버전 1.0 표준에는 UAF와 U2F가 있습니다. 이곳에서는 UAF만 설명합니다.

 

| 참고

2017_표준해설서_사용자인증_워터마크를 참고하였습니다.

 

| UAF란?(Universal Authentication Framework)

 - 패스워드 방식 대신 지문, 홍채, 안면 인식 등 다양한 인증방법을 사용하는 인증기술
 - 스마트 기기 내의 API와 인증 장치 간의 인터페이스, 온라인 서버로의 전송 프로토콜 등을 정의

 

| 목차

0. FIDO 정의 및 배경
1. 아키텍쳐
2. 프로토콜 규격
3. 응용 API와 전송 바인딩 규격
4. ASM(인증장치 인터페이스 모듈 API) 
5. 인증장치 명령어
6. 인증장치 메타데이터 서비스 접근
7. 인증장치 메타데이터
8. AppID와 Facet 규격


0. FIDO 정의 및 배경

[부가설명]

FIDO의 정의 및 나타난 배경

기존의 인증수단에는 분실, 재등록이나 별도 프로그램을 설치 해야 하는 불편함이 있었다. 또한, 서버에 개인정보를 등록해두는 것이기 때문에 해킹의 위험에 항상 노출되어 있습니다.

그 불편함을 해결하기 위해 FIDO가 등장하게 되었습니다.

FIDOFast Identity Online으로 비밀번호 없이 본인의 스마트 기기를 통한 인증 후 온라인 서비스를 이용할 수 있습니다

지문, 홍채, 안면 등 고유의 바이오 정보는 개인의 스마트 기기에 저장됩니다.

인증이 필요한 경우, 개인용 스마트 기기내 인증 장치에서 검증한 후, 이 결과를 전자서명 값으로 바꾸어 은행으로 전송함으로써 인증이 이루어집니다.

파이도 방식은 해당 정보를 서버에 저장하는 방식에 비해 정보 노출의 위험이 적고, 비밀번호 입력 과정이 없으므로 편리합니다.


1. 아키텍쳐

[부가설명]

FIDO 클라이언트와 FIDO 서버는 응용 서버와 응용 애플리케이션을 거쳐서 FIDO 프로토콜 메시지를 주고 받습니다.

- 사용자 기기: 스마트폰

-RP 애플리케이션: 간편결제 앱, 뱅킹 앱등이 해당
-FIDO 클라이언트:  응용 서비스의 인증정책에 부합하는 인증장치를 호출하는 역할을 수행합니다. => 쉽게 sdk라고 생각하시면 되고 이 것을 이용해서 rp애플리케이션을 개발
-ASM: FIDO 클라이언트가 FIDO 인증장치를 쉽게 사용할 수 있도록 표준화된 API를 제공하는데, 일반적인 디바이스 드라이버와 같은 역할을 수행.  => 제조사(삼성,애플)등에서 제공
-인증장치: 사용자 인증 및 FIDO 프로토콜 수행에 필요한 보안 정보를 생성/관리하며, 사용자로부터 입력된 인증정보를 확인하고 FIDO 프로토콜에 필요한 보안 메시지를 생성하는 핵심 역할을 수행  => 즉 스마트폰에서 지문을 받아 Device 내에 저장 되어있는 지문과 사용자 지문이 맞는지 확인하고 맞으면 키쌍 생성하고 핸드폰 DB에 개인키를 저장.
-FIDO Server : rp server+ uaf server

- RP Server: UAF 서버로 들어오기 위한 입구

-UAF Server: 실제 FIDO Server 역할을 한다. 등록, 인증, 해지를 수행
-DB: 전자서명 데이터와 공개키를 저장

2. 프로토콜 규격

2.1 등록

[부가설명]

Fido 프로토콜 규격은 등록, 인증, 해지로 되어있습니다.

0) 사용자는 인증수단을 바이오 정보로 변경요청

1)기존 패스워드 확인 한 후 응용 앱과 서버는 FIDO 등록 요청 메시지를 FIDO 서버에 요청한다.
2)FIDO 서버는 인증정책이 포함된 FIDO 등록 요청 메시지를 생성하고 응용 서버 -> -> FIDO 클라이언트에 전달한다.
3)FIDO 인증장치는 사용자로부터 지문을 입력 받고 등록된 지문과 일치하다고 판단하면, 해당 FIDO 서버에 사용자를 등록하기 위한 공개키-개인키 쌍을 생성한다.
4)FIDO 인증장치는 생성된 공개키와 공개키의 증명 정보가 포함된 FIDO 등록 응답 메시지를 응용 앱-> 응용 서버 -> FIDO 서버에 전달하며, 생성된 개인키는 FIDO 인증장치 내에 저장한다.

5) FIDO 서버는 공개키의 증명 정보를 인증장치 메타데이터를 이용해 확인하고, 사용자 공개키를 FIDO 서버에 저장한 후, 그 결과를 반환한다.

 

2.2 인증

[부가설명]

다음은 인증입니다.

0) 응용 앱을 통해 인증을 요청한다.

1) 응용 앱은 응용 서버에 FIDO 인증을 요청하고 응용 서버는 FIDO 서버에 FIDO 인증 요청 메시지를 요청 한다.

2)  FIDO 서버는 FIDO 인증 요청 메시지를 생성하고 FIDO 서버 -> 응용 서버 -> 응용 앱을 통해 FIDO 클라이언트에 전달한다.

3) FIDO 인증장치는 지문을 입력 받고 등록된 지문과 일치하면 FIDO 인증 장치는 등록 프로토콜에서 생성했던 개인키를 이용해 전자서명을 생성한다.

4) FIDO 인증장치는 전자서명이 포함된 FIDO 인증 응답 메시지를 응용 앱과 응용 서버를 통해 FIDO 서버에 전달한다.

5) FIDO 서버는 등록 프로토콜 수행중에 FIDO에 저장되었던 공개키를 이용하여 전자서명을 확인하고 인증 결과를 반환한다.

 

2.3 해지

사실 해지와 같은 경우에는 FIDO 표준 규격에 해당은 안됩니다.

[부가설명]

해지는 간단합니다.

1)응용 appfido 서버에 해지요청을 합니다.
2)Fido 서버는 해지 대상이 있는지 확인합니다.
3)해지 대상이 있으면 해지 시킵니다.

 

03. 응용 API와 전송 바인딩 규격

[부가설명]

- FIDO 인증장치와 FIDO 클라이언트가 통신하기 위해서 ASM API가 필요하고

- 응용클라이언트와 FIDO클라이언트 간에는 UAF API를 제공하여 조회, 등록,인증, 거래 확인, 해지 기능을 처리한다.

- 물리적으로 분리된 응용 서버와 응용 클라이언트간에 안전한 UAF 프로토콜 통신을 위해서 TLS통신 방식을 이용합니다.

 

04. ASM(인증장치 인터페이스 모듈 API) 

[부가설명]

FIDO 클라이언트가 인증장치의 상세한 구현 방식을 이해할 필요 없도록

FIDO 인증장치 배포자는 FIDO ASM이라는 표준화된 소프트웨어 인터페이스, 즉 인증장치 인터페이스 모듈 API를 제공 합니다.

FIDO ASM에서 FIDO 클라이언트에게 제공하는 API 기능은 다음과 같습니다.

정보조회, 인증장치 등록, 인증, 인증장치 해지, 인증장치 등록조회, 인증장치 설정

-정보조회 : 인증장치가 가지는 특성 정보를 제공한다. 제공되는 정보에는 인증장치의 인증장치 식별 ID(AAID), 인증장치의 사용자 로컬 인증 방식, 키 보호 방식 등을 포함한다.

 

05. 인증장치 명령어

[부가설명]

FIDO 인증장치는 SP, USB, 블루투스 등 다양한 물리적 인터페이스를 통해서 사용자 기기에 연결될 수 있다.

Fido 인증장치는 다양한 인증장치들이 공통적으로 제공해야 하는 명령어와 명령어 구조 및 처리 절차를 정의한다.

인증장치는 ASM에서 제공하는 인터페이스와 Attestation key authentication keys 관리, 사용자 확인 모듈 등으로 구성된다.

-인터페이스: asm에서 제공하는 api 인터페이스이다
-Attestaion key(공개키의 검증키): 인증장치 등록 시 생성하는 사용자 공개키가 정상적인 인증장치에 생성한 정보인지 확인하기 위해 인증장치에 설치된 키 정보이다. (일반적으로 인증장치 제조 시 제조사가 주입하게 된다)
-Authentication keys(인증키쌍): 인증장치를 fido 서버에 등록시 생성되는 사용자 키 정보로 인증시 사용되는 사용자 개인키와 등록시 저장해 두었던 관련 정보로 구성된다.
-사용자확인: 인증장치 등록과 인증 기능 처리 시 사용자를 로컬 인증(인증장치에 사전 등록된 사용자 인증정보와 사용자가 입력한 인증정보가 서로 일치하는지를 확인)하는 기능이다.

 

06. 인증장치 메타데이터 서비스 접근

[부가설명]

메타데이터fido 클라이언트와 서버가 인증장치를 이해할 수 있도록 정의한 것입니다.

서비스 기관(rp)fido 등록 및 인증 프로토콜을 수행하기 위해서 인증장치의 메타 데이터를 필요로 합니다.

서비스 기관의 정책에 따라서 1) 메타데이터를 미리 등록하고 관리 하거나 2) 실시간으로 조회해서 사용할 수 있다.

그림은 메타데이터를 실시간으로 조회해서 사용하는 서비스 과정입니다.


07. 인증장치 메타데이터

[부가설명]

FIDO Aliance MDS URL(https://mds.fidoalliance.org/)입력함으로써 인증장치 메타데이터를 실시간으로 다운받을 수 있으나, 폐쇄망에 있는 경우가 많아 사용을 거의 하지 않고, 이미 다운로드된 TXT 형식의 메타데이터를 등록하는 형식으로 인증장치 메타데이터를 관리하는 경우가 많습니다.


08. AppID와 Facet 규격

[부가설명]

Appidfacet를 이용하여 서비스 기관이 제공하는 서로 다른 애플리케이션을 하나의 등록된 키로 사용할 수 있습니다

Appid는 서비스 기관을 대표하는 id이며, facetid는 서비스 기관이 제공하는 애플리케이션 각각에 대한 id를 의미한다.

(클릭)예를 들어 카카오가 하나의 서비스 기관이라고 가정한다면  카카오를 대표하는 하나의 appid가 부여되고,

카카오가 제공하는 안드로이드 앱, ios 앱 또는 안드로이드 앱 중에서도 표준 앱, 인증 앱 등 각각의 앱별로 FacetID를 부여할 수 있다.

(클릭)FacetID는 응용 애플리케이션에 대한 신뢰성을 확인하기 위한 용도로 사용될 수 있다.

FacetID 목록을 FIDO 클라이언트에 전달하여 FIDO 클라이언트를 호출한 응용 애플리케이션이 신뢰하는 응용  애플리케이션인지 확인할 수 있게 된다.

 

AppID와 Facet 규격 - 2

[부가설명]

AppID 정보의 형태는 3가지로 구분할 수 있습니다.

1)Appid정보가 facetid인 경우
2)Appid 정보가 https url인 경우
3)Appid 정보가 null이거나 empty인 경우
예를 들어 위와 같은 url형식으로 faceted 목록을 확인할 수 있습니다.
반응형

'Security' 카테고리의 다른 글

[CentOS7] SSL 설치 및 SSL 적용  (4) 2021.12.24
FIDO  (0) 2020.08.06
CA  (0) 2020.07.10
Certificate(인증서)  (0) 2019.10.02
Encrypt virtual disk(가상 디스크 암호화)  (0) 2019.09.18

댓글