- Fido(fast Identify Online)란? 개인용 스마트 기기에서 지문, 홍채 안면 등의 바이오 정보를 이용해 본인임을 인증하는 기술 즉 패스워드 대체수단이다.
- 파이도는 지문, 홍채 안면 등 고유의 바이오 정보는 개인의 스마트 기기에 저장됩니다. 인증이 필요한 경우, 개인용 스마트 기기내 인증 장치에서 검증한 후, 이 결과를 전자서명 값으로 바꾸어 은행으로 전송함으로써 인증이 이뤄집니다. 파이도 방식은 해당 정보를 서버에 저장하는 방식에 비해 정보 노출의 위험이 적고, 비밀번호 입력 과정이 없으므로 편리합니다.
- UAF(Universal Authentication Framework)란? 패스워드 방식 대신 지문, 홍채 안면 인식 등 다양한 인증방법을 사용하는 인증기술, 스마트 기기 내의 API와 인증 장치 간의 인터페이스, 온라인 서버로의 전송 프로토콜 등을 정의
- U2F(Universal Second Factor)란? 패스워드 방식과 함께 별도의 인증장치를 사용하는 2차 인증기술
FIDO 유니버셜 인증 프레임워크(UAF)
- 제 1부 아키텍처 개요
- ASM(Authenticator Specific Module)은 FIDO 인증장치를 쉽게 사용할 수 있도록 표준화된 API를 제공하는데 드라이버와 같은 역할을 수행한다.
- FIDO 인증장치(Authenticator)는 fido 프로토콜 수행에 필요한 보안 정보를 생성/관리하며, 사용자로부터 입력된 인증정보를 확인하고 fido 0로토콜에 필요한 보안 메시지를 생성하는 핵심 역할을 수행한다.
- 제 2부 프로토콜 규격
FIDO UAF 프로토콜은 크게 등록(Registration), 인증(Authentication), 거래확인(Transaction Confirmation), 해지(Deregistration) 프로토콜로 구성.
등록 프로토콜 순서
0) 사용자가 응용 서비스에 id와 패스워드를 등록한상태에서 패스워드 -> 지문 변경 요청
1) 응용 애플리케이션과 서버는 사용자 패스워드 확인 후 fido 서버에 fido 등록 요청
2) Fido 서버는 인증정책이 포함된 fido 등록 요청 메시지를 생성하고 fido 클라이언트에 전달한다.
3) Fido 인증장치는 지문과 일치하다고 판단되면, 해당 fido 서버에 사용자를 등록하기 위한 공개키 - 개인키 쌍을 생성한다.
4) 공개키와 공개키의 증명 정보가 포함된 fido 등록 응답 메시지를 fido 서버에 전달하며, 생성된 개인키는 fido 인증장치 내에 저장한다.
5) Fido 서버는 공개키의 증명 정보를 인증장치 메타데이터를 이용해 확인하고, fido 등록 응답 메시지 내의 사용자 공개키를 fido 서버에 저장한 후, 그 결과를 반환한다.
인증 프로토콜 순서
0) 사용자는 인증을 요청한다.
1) 응용 애플리케이션은 응용 서버에 응용 서버는 fido 서버에 fido 인증 요청 메시지를 요청한다.
2) Fido 서버는 fido 인증 요청 메시지를 생성하고 fido 클라이언트에 전달한다.
3) Fido 인증장치는 사용자로부터 지문을 입력받고 등록된 지문과 일치하다고 판단되면 개인키를 이용해 전자서명을 생성한다.
4) Fido 인증장치는 전자서명이 포함된 fido 인증 응답 메시지를 fido 서버에 전달한다.
5) Fido 서버는 등록 프로토콜 수행중에 fido 서버에 저장되었던 공개키를 이용하여 전자서명을 확인하고 인증 결과를 반환한다.
제 3부 응용 api와 전송 바인딩 규격
응용 애플리케이션(Relying Party Application, 사용자 기기에 설치된 클라이언트 애플리케이션)은 웹브라우저에서 실행되는 웹 응용, 안드로이드 os에서 실행되는 앱, ios에서 실행되는 앱을 대상으로 한다.
RP 응용 서버 – RP 응용 클라이언트 간에 uaf 프로토콜 통신을 위해서 TLS 통신 방식 이용
RP 응용 서버 – FIDO 클라이언트 간에는 UAF 프로토콜인 조회(Discovery), 등록(Registration), 인증(Authentication), 거래 확인(Transaction Confirmation), 해지(Deregistaion) 기능 처리
조회는 fido 서버가 사용 가능한 인증장치에 대한 메타데이터 정보를 통해서, FIDO 클라이언트에서 FIDO 기능의 가용성을 확인할 수 있는 기능이다.
등록은 fido 인증장치가 새로운 키 정보를 생성하여 관련된 RP 서버의 사용자 계정에 생성된 키를 등록하는 기능이다.
인증은 사용자가 본인 계정에 등록된 키 정보의 소유 증명 정보를 FIDO 서버에 제공한다.
제 4부 인증장치 인터페이스 모듈 API
인증장치 인터페이스 모듈 API를 이용하여 FIDO 인증 및 조회 하는데 metadata가 필요하다.
제 7부 인증장치 메타데이터 서비스
메타데이터 서비스는 인증받은 인증장치들에 대한 메타데이터를 제공한다. 인증장치가 사용자에 의해 선택되어 사용되는 경우, 해당 인증장치가 인증 정책에 위배되지 않는다면, 해당 인증장치가 생성하여 보내온 FIDO 등록 및 인증 프로토콜 메시지를 수용하고 서비스를 제공한다.
제 9부 AppID와 Facet 규격
FIDO 응용 애플리케이션의 신뢰성 확인 과정
AppID와 Facet 표준은 서비스 기관이 제공하는 서로 다른 애플리케이션을 하나의 등록된 키로 사용할 수 있는 방법을 설명한다.
AppID는 서비스 기관을 대표하는 ID이며, FacetID는 서비스 기관이 제공하는 애플리케이션 각각에 대한 ID를 의미한다. 예를 들어 TTA를 하나의 서비스 기관이라고 가정한다면, TTA를 대표하는 하나의 AppID가 부여되고, TTA가 제공하는 안드로이드 앱, IOS 앱 또는 안드로이드 앱 등 각각의 앱별로 FacetID를 부여할 수 있다.
제 11부 용어 해설
FIDO 표준에서 공통적으로 사용하는 용어 및 약어 해설
- AAID(Authenticator Attestation ID): 유일한 식별자이다. 응용 애플리케이션은 aaid를 이용하여 장치에 대한 attestation 공개키와 인증장치 메타데이터를 찾을 수 있다.
- ASM / Authenticator Specific Module : FIDO 인증장치 하드웨어와 FIDO 클라이언트 소프트웨어 사이에서 동일한(uniform) 인터페이스를 제공하는 소프트웨어 모듈이다.
- Authenticator Metadata: AAID와 연계되어 있으며 fido 인증장치의 고유 특성들에 대한 정보를 나타낸다.
- Bound Authenticator: 신뢰된 사용자 기기로 제한한다.
- Discovery: fido를 사용자 기기에서 제공할 수 있는지를 판단하는 과정이다.
- Enrollment: 사용자 인증정보에(예 : 지문특징정보)를 인증장치에 등록하는 과정이다.
- Fido client: 사용자 기기에서 uaf나 u2f 프로토콜 메시지를 처리하는 소프트웨어다.
- Key identifier(key id): 등록된 키를 식별할 수 있는 정보이다.
- Khacess token: 인증장치 명령어에 대한 접근제어를 위해 사용되는 비밀 값으로, 인증장치 등록시 asm에 의해 생성되어 인은장치가 관리한다.
- SignedData: 인증장치의 서명(sign) 명령어의 결과로 인증장치에 의해 생성되고 반환되는 데이터이다.
- Step-up authentication: 인증된 세션에서 수행되는 인증이다. 예를 들어 송금 할 때 사용된다.
- Transaction confirmation: 응용 애플리케이션이 특정 정보(예: 계좌이체 정보)를 디스플레이하여 사용자의 동의를 요청하는 fido 프로토콜 과정이다.
참고: TTA 표준안내서 사용자 인증
참고: ssl vs tls 차이점 참고: https://smartits.tistory.com/209
참고: 디지털 인증서: https://opentutorials.org/course/228/4894
============================================================================
FIDO Setting
[Admin Server]
1) 웹 어플리케이션 WAS webapps 폴더 하위에 올리기
…/webapps 밑에 .war 파일 놓기
2) 안전한 통신을 위한 SSL/TLS 인증서 넣기
- apache-tomcat-버전 밑에 *.jks와 *.pem 넣은 후
- .../conf/server.xml에 위치 명시
keystoreFile=*.jks 명시 (\)
3) tomcat 시작 해서 war 파일 압축 해제
was bin 폴더 이동 start.bat
...\WEB-INF\config 수정
4) 웹에서 접속하기 위해서 ip 허용 및 분석을 위한 log파일 위치 명시
\WEB-INF\config\allow.conf 에서 ip 모두 허용
- ...\WEB-INF\config\fido\fido2admin.properties ip 허용해준 allow.conf 읽혀주기
fido.access.ipconfig.path=allow.conf 위치 명시 => 반드시 / 로 경로 표시
(로그 파일 위치 명시)
fido.server.transaction.logfile.root.path=FIDO2Admin/ 폴더 위치 명시 => 반드시 /로 경로 표시
5) DB 연결
...\WEB-INF\config\jdbc_conf.xml
6) 테스트를 위한 LOG 수정
...\webapps\MagicFIDO2Admin\WEB-INF\config\logback.xml 수정
ERROR -> DEBUG
============================================================================
[FIDO Server]
- ip 허용
- db 연결
- ...\WEB-INF\config\fido\fido.properties 설정
[Admin 설정]
1) FIDO서버 주소 설정
2) 인증장치
파일 선택: metadata.txt 선택
3) app key 등록(사이트별)
4) 추가한 인증장치 허용 하기
fido 공부 시작한지 얼마 안돼서 틀린 내용이 많을 수도있어유... 있으면 알려주세요 ^0^
'Security' 카테고리의 다른 글
[CentOS7] SSL 설치 및 SSL 적용 (4) | 2021.12.24 |
---|---|
FIDO의 모든것 (0) | 2021.11.24 |
CA (0) | 2020.07.10 |
Certificate(인증서) (0) | 2019.10.02 |
Encrypt virtual disk(가상 디스크 암호화) (0) | 2019.09.18 |
댓글