본문 바로가기

카테고리 없음

FIDO 인증

<FIDO 프레임워크 구조>


<UAF 표준 리스트>


<등록과정>

1. FIDO 클라이언트 : 등록요청

2. FIDO 서버 : Registration Request, 등록가능한 인증장치 관련 정책 회신 (제조사, 모델, 인증 수단 제한)

3. FIDO 클라이언트 : 바이오 인증 요청

4. FIDO 인증장치 : 바이오 인증 후 공개키 쌍 생성

5. FIDO 클라이언트 : Registration Response, 사용자 공개키, 인증장치 Attestation Certification 등 Assertion을 FIDO 서버로 전송

6. FIDO 서버 : 공개키 입증정보를 인증장치 메타데이터로 확인후 등록

- 메타데이터 검증 구조

- 메타데이터 샘플


<인증과정>

1. FIDO 클라이언트 : 인증요청

2. FIDO 서버 : Authentication Request, 거래정보 회신(Challenge 포함)

3. FIDO 클라이언트 : 바이오 인증 요청

4. FIDO 인증장치 : 바이오 인증 후 거래정보에 서명

5. FIDO 클라이언트 : Authentication Response, 서명값을 FIDO 서버로 전송

6. FIDO 서버 : 공개키를 이용하여 서명 확인


<주요 규격>

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

예) 응용API : 인텐트 API, 커스텀 URL

     전송바인딩 규격 : 통신채널 보안 요구사항

2. 인증장치 인터페이스 모듈 API 규격 : 인증장치 배포자가 제공하는 소프트웨어 인터페이스(FIDO ASM), FIDO 클라이언트가 인증장치 검색시 사용

3. ASM(Authenticator Specific Module) : 인증장치와 FIDO 클라이언트 간의 소통을 가능하게하는 드라이버, 일반적으로 인증장치 제조사에서 제공

4. 인증장치 명령어 규격 : 지문/얼굴/홍채/카드 터치 등 인증장치

5. 인증장치 메타데이터 규격

- 어떤 인증인지 ? (지문 / 홍채 / 핀 / ...)

- 전자서명 알고리즘 종류

- 키가 어디에 저장되는지 ? (TEE / SDCARD / ...)

- 지문 정보가 어디에 저장되는지? (TEE / SDCARD / ...)

- 거래 확인 과정에서 TUI 를 사용하는지 ? (Trustzone 에서 띄운 UI)

6. 인증장치 메타데이터 서비스규격 : RP서버가 메타데이터를 접근하기 위한 규격, Trust Anchor 정보 확인 방법 등


<주요 용어>

1. AppID : 서비스기관을 대표하는 ID

예) A은행

2. FacetID : 애플리케이션을 대표하는 ID

예) 인증앱, 뱅킹앱, 대출앱

3. Attestation : 공개키가 인증장치에서 생성한 것임을 입증하기 위해서 Attestation Key로 서명한 값을 FIDO 서버에서 Attestation Certification으로 검증, 

- 서버는 인증장치의 안정성을 확인하기 위하여 공개키 키쌍 / 키길이 / 해시알고리즘 / 저장 위치 / 인증 행위 (PIN/지문/홍채) 등을 메타데이터로 저장하고 있음

- 서버는 인증장치로부터 전달받은 Attestation Certification으로 Attestation Key의 서명을 검증하고 인증장치의 안정성을 판단

- Attestation Key 및 Certification을 제조사가 인증장치 생산시 주입하여 배포

4. Assertion : 인증장치에서 서버에서 생성한 Challenge 와 부가 정보를 포함해 전자서명,  서버에서는 METADATA를 통해 전자서명 알고리즘을 확인

assertion = {Sprivatekey(AAID | H(fcparam) | keyID | Counters | PublicKey) | AttestationCert}

fcparam = {appID | chalenge | facetID | channelBinding}


AAID : Authenticator Attestation ID, 안정한 인증장치임을 증명하는 증명서 ID

challenge : RandomStr

KeyID : FIDO Authenticator 에서 키 쌍과 함께 생성한 키 ㅣ식별자

PublicKey : 이용자의 공개키

Sprivatekey : 제조사가 주입한 Attestation 개인키로 서명 원문을 전자서명.

AttestationCert : FIDO Authentication 내 주입된 제조사 인증서

Counter : Attestation 개인키로 몇 번 서명이 이루어졌는가


<구성요소별 역할>

1. FIDO 클라이언트

- ASM에서 제공하는 API를 이용하여 Authenticator 제어

- UAF ASM API Specification V1.0 규격에 맞춰 ASM 연동

- FIDO 클라이언트 연계모듈을 통해 서비스 앱과 연계

- 연동 앱 (서비스 앱)에서 전달하는 facet ID (서비스 앱 Application ID) 값이 업무서버로부터 수신 받는 TrustedFacet 에 포함되어 있는지 확인하여 연동하는 RP 앱을 검증

- 서버에서 보내온 정책에 부합하는 인증장치를 추출 

- 추출한 인증장치를 사용자에게 보여주어 선택하도록 함


2. ASM(Authenticator-Specific Module)

- FIDO Client용 API 제공 (FIDO UAF Authenticator-Specific Module API)

- FIDO UAF Authenticator Commands v 1.0 규격에 따라 Authenticator와 연동

   getInfo, Register, Sign, Deregister, OpenSettings command

구분 

내용 

 GetInfo

 Authenticator 정보확인

 Register

 사용자 등록을 요청하고, Authenticator에서 생성한 Assertion (키등록정보) 반환

 Authenticate

 사용자 인증을 요청하고, Authenticator에서 생성한 Assertion (서명데이터) 반환

 Deregister

 Authenticator에 등록된 인증키 Key 삭제를 요청하고, 그 결과 값을 반환

 GetRegistrations

 Authenticator에서 등록했던 사용자 정보 (App ID, Key ID) 반환

 


- 비인가자로부터 Authenticator 내 주요정보를 보호하기 위해 ASM에서 KHAccessToken 생성

- Authenticator 유형(First-factor bound/roaming Authenticator, Second-factor bound/roaming

Authenticator에 따라 접근 가능한 ASM command 정의


3. Authenticator(인증장치)

- Attestation Key 정보 관리

- Authentication Key(공개키, 비밀키) 생성 및 관리(키쌍은 사이트, 사용자 ID별 생성)

- ASM으로부터 인증 요청을 받게 되면, 사용자인증 개인키(UAuth.priv)로 인증정보에 대한 전자서명 값 생성

- 생성된 개인키는 대칭키 기반의 암복호화 (FIDO 등록시 개인키는 암호화하여 ASM으로 위탁, FIDO 인증시 ASM에 보관 중인 개인키 복호화 후 전자서명)

- 생체정보 인식모듈 연동을 위한 API 제공

- 생체 정보를 통한 사용자인증 수행

- 사용자 Verification이 성공하면, Token 정보를 생성하여 ASM에 전달하고, Token에 대한 Life-cycle 관리

- Attestation Key 및 증명서를 이용하여 Authenticator 자체에 대한 신뢰성을 증명

- 인증장치 등록 시 등록 Assertion(키 등록 데이터)에 대한 서명 정보를 Attestation Key로 생성

- FIDO 인증수단 등록(Registration) 및 해지(Deregistration)와 관련하여 Authentication Key를 생성하거나 삭제하는 업무를 담당

- FIDO 인증 수단 단계에서 ASM으로부터 인증 요청을 받게 되면, Authentication Key(비밀키,공개키)를

생성하고, Attestation Key를 이용한 서명 값이 포함된 Assertion(키 등록 정보)를 생성

- 생성한 Assertion(키 등록 정보)는 ASM을 통해 FIDO Client로 전송


4. FIDO 서버

- 업무서버와 연동

- UAF Protocol Specification, UAF Application API and Transport Binding Specification, FIDO AppID and Facet Specification 준수

- FIDO 서버는 Attestation 공개키를 이용하여 Authenticator의 Assertion(키등록정보)의 서명값 검증

- 인증수단 등록 및 인증 절차에서 FIDO Client가 보내온 Assertion 정보 검증

- 인증수단 등록 단계에서 Attestation 비밀키로 생성된 서명정보 검증

- 인증 단계에서 Authentication 개인키로 생성된 서명정보 서버에서 관리하고 있는 공개키로 검증

- 인증수단 등록단계에서 Client가 전송한 Assertion (키등록정보)를 Attestation 공개키로 검증하고 Authentication 공개키를 추출

- 추출한 Authentication 공개키를 저장하여 향후 인증 단계에서 서명 검증 시 사용

- Authenticator 정보 (AAID, 벤더 정보, 인증방식, 서명 알고리즘, Key 정보 저장 방식 등) 관리

- Attestation 공개키를 관리하며, 관리자 회면을 통해 Authenticator Metadata 조회 기능 제공

- DBMS에서 Server ID, User ID, Device ID, AAID (Authenticator Attestation ID) 연결 정보 관리

- 업무서버 연동 시 UAF Protocol Specification 규격 준수


<FIDO 2.0 주요 정보>

- UAF + U2F => FIDO 2.0

- Authenticator 및 ASM을 과거에는 제조사에서 제공했지만 FIDO 2.0에서는 Google.MS 등 플랫폼 업체가 빌트인 형태로 제공(OS, 브라우저 등에 포함)

- 웹에서 인증이 가능하도록 FIDO Web API를 W3C표준화


<FIDO 2.0 주요 용어>

1. Key Attestation Format 

 - 인증장치의 신뢰성을 증명하기 위한 정보의 데이터 구조를 정의

 - 비밀키의 신뢰성, 즉 인증장치 및 서버의 키관리 방법 및 전달에 대한 정의

 - 구체적인 환경(TPM 및 안드로이드 외부인증장치 이용)등의 정의를 규정


2. Signature Format

- FIDO 2.0 규격의 인증을 위한 서명의 형식 정의

- FIDO 2.0 인증을 생성하기 위한 비밀키 소유방법 정의

- 인증정보 생성을 위한 클라인트와 인증장치간의 컨텍스트 정보를 서버에 전달하는 방법 정의


3. EAP(External Authenticator Protocol)

- 외부 인증기기와 이용 기기의 클라이언트 플랫폼 간 통신 프로토콜을 정의

- 구체적인 통신방식(USB/Bluetooth/NFC 등)의 적용 정의


4. 인증장치 제공 API

- authenticatorMakeCredential : FIDO 서버 등록을 위한 Credential 생성 및 반환(호출자 Origin, RP Id, 계정정보, Attestation Challenge 등 정보 이용), 인증장치가 FIDO 클라이언트에게 반환시 AttestationStatement 함께 반환

- authenticatorGetAssertion : Crediential을 이용하여 인증 및 서명 기능 제공

- authenticatorCancel : authenticatorMakeCredential, authenticatorGetAssertion 연산 취소


5. FIDO 2.0 서명

- ClientDataHash(FIDO 클라이언트에서 생성), AuthenticatorData(인증장치에서 생성)를 인증장치 개인키로 서명하여 FIDO 클라이언트에게 반환

  * AuthenticatorData : 로컬인증여부, 인증자치 서명 횟수 등 포함


6. FIDO Attestation

- 인증장치에서 생성한 Credential을 검증

 1) Full Basic Attestation : 동일 모델 인증장치가 공유하는 Attestation Key를 이용하여 검증

 2) Surrogate Basic Attestation : Credential을 인증장치의 개인키를 이용하여 검증

 3) Private CA : CA에서 다수의 Attestation Key 쌍을 인증장치별로 생성하고 인증서 발급

 4) DAA(Direct Anonymous Attestation) : DAA 발급자에게서 credential을 발급받아 blind 서명을 생성


[참고자료] http://www.sapphosound.com/archives/1599

http://www.iotoasis.org/?module=file&act=procFileDownload&file_srl=1663&sid=0b2133f8cf7b0a9794897968e5a25a29&module_srl=158&usg=AOvVaw1gWAPwhscnpYSBorJz4ETC

배웅식_강의자료_차세대인증기술_FIDO_v4 (2).pdf