008. FIDO 2.0 Key Attestation Format - Security Consideration

FIDO 2.0 Key Attestation Format

FIDO의 3가지 스펙 문서 중 Key Attestation Format부터 정리한다.

블로그 제목의 길이가 길어지면 가독성이 떨어지기 때문에 편의상 KAF로 줄여서 제목을 붙이도록하겠다.

참고 FIDO alliance : FIDO 2.0 Key Attestation Format 문서

Security Consideration(보안 고려사항)

Privacy(개인 정보)

Attestation Key는 사용자를 추적하거나 동일한 사용자의 다양한 온라인 신원을 파악하여 같이 쓸 수 있도록 연결하는 데 사용할 수 있다.

아래와 같은 다양한 방법으로 완화시켜 사용할 수 있다.

  • FIDO Authenticator 업체는 같은 하나의 인증 키나 특정 개수의 Attestation key를 사용하여 모든 디바이스를 서비스하도록 제공할 수 있다.

    참고 이를 Full Basic Attestation 이라고 한다.

    위와 같은 방법을 사용하면 FIDO Authenticator가 해킹당한 경우 특정 Attestation Key를 해지하지 못하도록 사용자를 익명화시킬 수 있다.

  • FIDO Authenticator는 Privacy CA 모델에 따라 각기 다른 Attestation Key를 생성해줄 수 있다. 이는 Origin Attestation Key와는 다른 Attestation Key, 관련 인증서 요청 등을 동적으로 생성하거나 수행할 수 있게 해준다.

    참고 예를 들어 FIDO Authenticator는 Master Attestation Key와 Certificate를 함께 제공하여 클라우드를 운영하기위한 Privacy CA와 결합시킨 후, Origin Attestation Key와 Attestation Certificate를 동적으로 생성할 수 있다.

  • FIDO Authenticator는 직접 익명 Attestation을 구현할 수 있다. FIDO ECDAA Algorithm을 이용하여 Authenticator가 숨겨진 Attestation signature를 생성할 수 있다.
    이렇게 하면 Attestation signature는 핸들링되지않지만 Relying Party는 DAA Root Key를 사용하여 서명을 확인할 수 있다.

Attestation Certificate and Attestation Certificate CA Compromise

Attestation Certificate(증명 인증서)와 CA 손상에 대해서 알아보자.

Attestation certificate를 발급하기 위해 사용되는 root CA나 중간 CA가 손상 되면 FIDO Authenticator의 Attestation Key는 안전하기는 하지만 더 이상 신뢰할 수 없는 상태 가 된다.

FIDO Authenticator 업체는 Public Attestation Key를 기록하기 때문에 중간 CA든 새로운 Root CA든 해당 key에 대한 새로운 Attestation Certificate를 발급할 수 있다. Root CA가 변경 되면 Relying Party는 신뢰할 수 있는 Root Certificate를 새로 발급 받아야 한다.

FIDO Authenticator의 Attestation Certificate는 Key가 손상되면 이를 발급한 CA에서 반드시 해지 해야 한다.
만약 펌웨어의 결함으로 노출되는 경우 FIDO Authenticator 업체는 새로운 펌웨어 업데이트를 제공하고 이미 생산된 FIDO Authenticator에 대해 새로운 Attestation Key와 Certificate를 삽입해야 한다.
FIDO Authenticator가 이 기능을 가지고 있지 않으면 FIDO Authenticator가 더 이상 유효한 Attestation statements를 사용할 수 없다.

Attestation Certificate의 유효성 검사가 중간 CA의 인증서로 인해 실패할 수도 있다.
이 때 Relying Party의 정책에 따라 사용자의 Registration이나 Authentication 요청을 거부하게 될 경우엔 Relying Party의 등록도 취소하거나 surrogate attestation의 사용을 허가해야 한다.

참고 Surrogate Attestation : 대리증명

참고 Attestation Model의 내용이 있는 포스팅

CA가 손상된 날짜가 등록된 FIDO Credential은 위와 동일한 중간 CA까지 연결된 Attestation Certificate을 사용한다.

따라서 Authenticator가 해지된 후에 Registration이 수행 되는 경우 FIDO Credential의 등록을 취소하기위해서 중간 Attestation CA Certificate를 기억하는 것이 좋다.

만약 DAA Attestation Key 가 유출된 경우라면, 이에 관련된 DAA-Issuer에 의해 폐기된 Authenticator 리스트에 추가될 수 있다.

참고 폐기된 Authenticator 리스트를 RougeList 라고 한다.

Relying Party는 DAA-Verify 를 수행할 때 RougeList에 속하는 지 여부를 확인 해야한다. FIDO Metadata Service를 이용해 RougeList와 관련된 정보에 쉽게 접근할 수 있다.

Attestation Certificate Hierarchy

Attestation Certificate의 계층 구조에 대해서 알아보자.

FIDO는 Attestation Certificate를 총 3개의 계층 구조로 구성하는 것을 권장한다.

이 3개의 계층 구조는 각각 Attestation Root, Attestation Issuing CA, Attestation Certificate 로 이루어져 있으며 각 FIDO Authenticator 디바이스에 대해 별도의 Issuing CA를 사용하여 특정 버전의 디바이스와 발생한 이슈를 쉽게 구분할 수 있도록 작성하는 것이 좋다.

Attestation Root Certificate가 AAGUID와 같은 Single FIDO Authenticator 장치에 종속되지 않도록 작성되어야 하며, AAGUID는 Attestation Certificate 자체가 되거나 core.rawDataD 의 확장형태로 지정해야 한다.