[FIDO UAF] Authenticator가 FIDO CA로부터 공인 인증서 발급받기

SSY·2023년 11월 25일
0

Security

목록 보기
2/7
post-thumbnail

1. 시작하며

FIDO UAF 통신의 근간이 되는 PKI방식에 대해 다루려 한다. 이는 Public Key Infrastructure의 약자로, 공개키 기반 인증방식을 진행하는데 필요한 전체적인 근간 시설(=신뢰할 수 있는 상위 인증 기관 == Root CA)을 의미하며, 이를 기반으로 안전하게 서명과 검증 작업을 진행하는걸 의미한다.

2. Root CA 인증서의 Client Party 인증서 검증

[비대칭키 암호화란?]
PKI 인증방식은 당연하게도 비대칭키 암호화 알고리즘을 사용한다. 여기서 비대칭 암호화 할고리즘이란 데이터를 암호화하고 복호화하는데 있어 서로 다른키를 사용한다는걸 의미한다.

[서명과 검증이란?]
비공개키로 데이터를 암호화 하는 과정을 서명이라 하며, 공개키로 복호화 하는 과정을 검증이라 한다.

FIDO UAF 기준, client party는 비공개키를 소유하며, server party는 공개키를 소유한다. client party가 데이터를 서명하여 server party로 보내면 server party에선 이를 검증한다. 이때 검증하는데 있어, 도착한 데이터의 위변조 여부를 판단해야만 하는데, 판단 기준은 client party가 전송한 Attestation 인증서를 사용하여 검증 진행해야만 한다.

하지만 이때, client party가 전송한 인증서가 신뢰할 수 있는지 아닌지는 어떻게 알 수 있을까? 그것은 바로, 해당 인증서를 발급한 기관의 공개키를 사용해 검증하는 것이다. 아래 사진으로 이해해 보자.

이해를 위해 사진 왼쪽이 Root CA 및 인증서이고, 오른쪽이 client party 및 인증서라고 생각하면 된다.

우선, client party가 전송한 인증서가 신뢰할 수 있는 인증서임을 증명하기 위 사전 과정이 필요하다. client party가 보내온 인증서를 Root CA로부터 서명받음과 동시에 인증서를 발급받는 과정이 바로 그것이다.

3. Root CA로부터의 공인 인증서 발급

좀 더 자세히 말해보자면, 인증서는 아래와 같은 정보를 가지고 있다.

  1. 소유자 이름
  2. UID
  3. 공개키
  4. 인증서 유효 기간
  5. 위 1 ~ 4번 데이터를 해시화한 값

위 정보 중 5번, '인증서 해시 값'을 Root CA에게 전송하며 서명 요청 및 인증서 발급 요청을 아래와 같이 하게 된다.

"Root CA님, 제가 스스로 인증서를 만들었어요. 근데, 이 인증서를 공인 인증서로 만들고 싶은데요. 제가 가지고 있는 해시값을 Root CA님의 비공개키로 서명해주시고, 그 서명값을 저에게 주세요. 그렇게 해서 최종적으로 공인 인증서를 만들고 싶습니다."

위 과정이 끝나게 되면, Root CA가 'client party의 해시 인증서 서명 값'을 돌려주게 되고, client party는 '공인 인증서'를 소유하게 된다.

그럼 반대로, 검증할땐 어떻게 할까? 간단하다. 아까 공인 인증서를 발급받는 과정의 정 반대로만 하면 된다. 이는 Root CA가 가지고 있는 인증서 내의 공개키를 사용하여 서명값 검증을 시도하고 검증이 완료되었다면 신뢰할 수 있는 인증서인 것이다. 만약, 검증에 실패하면 위변조된 데이터거나, 신뢰할 수 있는 인증서이라는 뜻이다.

4. Attestation 인증서와 FIDO Root CA 인증서

FIDO UAF Authenticator가 소유한 Attestation 인증서에 대해 다루려 한다. 다루기 앞서, Authenticator가 무엇인지를 먼저 다루겠다.

[Authenticator란?]
하드웨어 관점 : 각종 생체 인증 장치 센서들을 의미하며, 지문 인식 센서, 홍채 인식 센서, 안면 인식 센서, 목소리 인식 센서들이 있다.
소프트웨어 관점 : 위 센서들을 개발자가 custom하게 개발을 가능하게 하기 위해 Authenticator 제조사(ex. Knox Secure)들이 하드웨어 추상화 계층(=HAL)인터페이스를 만들어 놓는다. 그럼 이 Authenticator를 쓰는 기기 제조사(ex. SAMSUNG, Google, Hwawai...)들은 HAL을 구현하여 응용 소프트웨어 SDK를 만들게 된다.
요약 : 즉, 생체 인식 하드웨어와 이러한 HAL을 구현한 응용 SDK 전체를 Authenticator라고 한다.

FIDO UAF 인증을 위해선 사용자들의 인증 정보를 우선적으로 수신해야 하는데, 이를 수신하는 게 바로 Authenticator이다.하지만 여기서 문제가 있다. 과연 이러한 Authenticator가 신뢰할 수 있는 모듈일까? 에 대한 것이다.

악의적인 의도를 품은 Authenticator제조사라면, Authenticator기기를 이상하게 만들어 아무 사용자의 인증정보로도 인증이 가능하게 할 수 도 있을것이다. 또한 HAL을 이상하게 구현하여 이상한 동작을 유도할 수 있는 응용 SDK메서드를 만들고 이를 몰래 숨겨놓을 수도 있을 것이다. 즉, Authenticator의 신뢰성도 체크할 수 있어야만 한다. 이 신뢰성을 체크할 수 있게 하는 기관이 바로 FIDO CA이다.

Authenticator가 응용 SDK까지 모두 만들어졌다면, 이를 FIDO CA로부터 공인인증서를 받아야만 한다. 그리고 그 과정에 대한 흐름을 아래 사진에 정리해 놓았다.

  1. Autneitcator 센서 제조사(ex. Knox)가 Authenticator를 제조한다. 그리고 이러한 HAL을 구현한 응용 SDK를 기기 제조사(SAMSUNG, Google, Hwawai)가 제조한다.
  2. 해당 Authenticator의 신뢰성 확보를 위해 FIDO CA에 서명 요청 및 공인 인증서 발급 요청을 한다.
  3. FIDO CA는 자신의 비공개키를 사용하여 인증서를 서명하며 공인 인증서를 만든다.
  4. 다 만들어졌으면 이를 MDS에 적재한다.
  5. MDS에 Authenticator의 인증서와 이를 서명한 Root 인증서를 적재한다.

    [MDS란?]
    MetaDataService라는 뜻으로, FIDO 프로토콜을 사용하며, 신뢰할 수 있는 Authenticator들의 인증서와 Root 인증서를 모아둔 Json 파일이다. 해당 파일 안에 있는 Authenticator만 FIDO 인증을 사용할 수 있다.

6 ~ 7. 서명된 인증서를 Authenticator 기기 제조사들에게 응답하며, 이를 통해 신뢰할 수 있는 FIAO 프로토콜 사용이 가능한 Authenticator 인증서를 기기 안에다 박아놓는다.

위의 과정이 끝나게 되면, 해당 Authenticator들을 사용하여 FIDO UAF 인증 프로토콜을 사용할 수 있다는 의미가 된다.

마치며

여기까지 PKI 인증방식의 대략적인 개념과 이를 사용하여 FIDO UAF 프로토콜의 신뢰성 있는 인증 방식이 어떻게 되는지 알아보았습니다. 다음 시간에는 이 Authenticator 인증서를 활용하여 client party가 server party에 인증 수단 등록을 하는 흐름과 인증을 하는 흐름에 대해 설명드리려 합니다.

profile
불가능보다 가능함에 몰입할 수 있는 개발자가 되기 위해 노력합니다.

0개의 댓글

관련 채용 정보