<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