유리 아커만(Yuriy Ackermann) 시니어 FIDO Alliance 인증 엔지니어

FIDO Alliance는 FIDO U2F 버전 1.2 사양의 출시를 발표하게 된 것을 기쁘게 생각합니다.

마지막 두 버전 이후 구조적 변경, 개선, 업데이트 및 새로운 보안 기능이 있었습니다. 아래에서는 이러한 변경 사항에 대해 자세히 살펴보겠습니다. 변경 사항의 요약 버전을 보려면 “FIDO U2F v1.2: 변경 사항 개요“로 이동하세요.

JS API

인터페이스 u2f {

무효 레지스터(

DOMString
appId
,

순서<RegisterRequest>
registerRequests
,

순서<RegisteredKey>
registeredKeys
,

function(RegisterResponse 또는 Error)
콜백
,

선택적 unsigned long? opt_timeoutSeconds

);

무효 기호(

DOMString
appId
,

DOMString
챌린지
,

순서<RegisteredKey>
registeredKeys
,

function(SignResponse 또는 Error)
콜백
,

선택적 unsigned long? opt_timeoutSeconds

);

};

고급 JS API가 업데이트되었습니다. 이전에는 모든 “RegisterRequest및 “SignRequest” appId 및 챌린지. JS API v1.2에서 appld는 첫 번째 인수로 전달됩니다. u2f.register입니다.

/* —– U2Fv1.0 —– */

appId =https://example.com

“;

registerRequests = […];

하자 signRequests = […];

for (registerRequests의 regReq 허용) {

regReq.appId = appId;

}

for (signRequests의 signReq 허용) {

signReq.appId = appId;

}

u2f.register(registerRequests, signRequests, () => {

})

/* —– U2Fv1.2—– */

appId =https://example.com

“;

registerRequests = […];

하자 signRequests = […];

u2f.register(appId, registerRequests, signRequests, () => {

})

v1.2가 재정의된 또 다른 방법은 인증 요청 사전입니다. ” 유형의 이전 사전SignRequest“가 “RegisteredKey” 사전으로 대체되었습니다.

/* —– U2Fv1.0 —– */

dictionary SignRequest { // 이전

DOMString 버전;

DOMString 챌린지;

DOMString 키 핸들;

DOMString appId;

};

/* —– U2Fv1.2 —– */

dictionary RegisteredKey { // 새로 만들기

DOMString 버전;

DOMString 키 핸들;

전송? 전송;

돔스트링? 앱ID;

};

이 변경으로 챌린지가 사전에서 제거되었으며 이제 u2f.sign 명령의 두 번째 인수입니다 첫 번째 인수는 u2f.register 명령과 동일한 appId입니다.

/* —– U2Fv1.0 —– */

appId =https://example.com

“;

하자 signRequests = […];

for (registerRequests의 regReq 허용) {

regReq.appId = appId;

}

u2f.sign(사인 요청, () => {

})

/* —– U2Fv1.2 —– */

appId =https://example.com

“;

let 챌린지 = “YJjw3jBh6RiMPKY0lMWq8GXm0Qap”;

registeredKeys = […];

u2f.sign(appId, 챌린지, registeredKeys, () => {

})

이전 버전과의 호환성을 위해 클라이언트는 SignRequest를 계속 처리할 수 있습니다. SignResponse 처리를 계속할 수 있는 RP에도 동일하게 적용됩니다.

또 다른 추가 기능은 “전송” 배열. RP는 특정 키 핸들이 사용하는 것을 전송하는 클라이언트에게 지시할 수 있습니다. 그것은 사용을 통해 그렇게합니다 전송 열거형:

열거형 전송 {

“bt”, // 블루투스 클래식(블루투스 BR/EDR)

“ble”, // Bluetooth Low Energy (Bluetooth Smart)

“nfc”, // 근거리 무선 통신

“usb”, // USB HID

“usb-internal”// 탈착식 USB HID (내장)

};

이는 클라이언트가 표시된 전송에 의해 지정된 프롬프트를 참조할 수 있는 UI/UX에 특히 유용합니다.

Authenticator Transport Extension” 섹션에서 전송 검색에 대해 설명합니다.

MessagePort API는 자체 요청 정의 사전 IDL을 얻었습니다.

사전 U2fRequest {

DOMString 유형;

돔스트링? 앱ID;

부호 없는 길다고요? 타임아웃초;

부호 없는 길다고요? 요청 ID;

};

이는 “U2fRegisterRequest” U2fSignRequest로 확장됩니다.

사전 U2fRegisterRequest :
U2fRequest
{

DOMString 유형 = ‘u2f_register_request’;

순서<RegisterRequest> registerRequests;

순서<RegisteredKey> registeredKeys입니다.

};

사전 U2fSignRequest : U2fRequest

{

DOMString

유형
= ‘u2f_sign_request’;

DOMString

챌린지
;

순서<
등록키

>


registeredKeys
입니다.

};

보시다시피 U2F JS API에 발생하는 변경 사항은 MessagePort API에도 동일하게 발생합니다.

/* —– U2Fv1.0 —– */

var port = <브라우저별 방식으로> U2F MessagePort를 얻습니다.

port.addEventListener ( ‘메시지’, 응답 핸들러);

port.postMessage({

‘유형’: ‘u2f_register_request’,

‘registerRequests’: [<RegisterRequest 인스턴스>, …],

‘signRequests’: [<알려진 토큰 1>에 대한 SignRequest, …],

‘시간 초과 초’: 30,

‘requestId’: <고유 정수> // 선택 사항

});

/* —– U2Fv1.2 —– */

var port = <브라우저별 방식으로> U2F MessagePort를 얻습니다.

port.addEventListener ( ‘메시지’, 응답 핸들러);

port.postMessage({

‘유형’: ‘u2f_register_request’,

‘appId’: <애플리케이션 ID>,

‘registerRequests’: [<RegisterRequest 인스턴스>, …],

‘registeredKeys’: [<알려진 토큰 1>의 RegisteredKey, …],

‘시간 초과 초’: 30,

‘requestId’: <고유 정수> // 선택 사항

});]

인증자 전송 확장

등록하는 동안 인증자는 배치 키를 사용하여 챌린지에 서명하고 공개 키에 X.509 인증서를 제공합니다. 이제 공급업체에서 X.509를 추가할 수 있습니다. FIDO OID 및 U2F 인증서 확장은 U2F 인증자 인증서임을 식별합니다.

— FIDO 얼라이언스의 OID

id-fido 개체 식별자 ::= 1.3.6.1.4.1.45724

— FIDO U2F 프로토콜 OID

id-fido-u2f 개체 식별자 ::= { id-fido 2 }

— FIDO U2F 인증서 확장 arc

id-fido-u2f-ce 객체 식별자 ::= { id-fido-u2f 1 }

인증자의 유형을 식별하기 위해 사양은 U2F 전송 확장을 정의합니다

— FIDO U2F 인증서 확장

id-fido-u2f-ce-transports 객체 식별자 ::= { id-fido-u2f-ce 1 }

fidoU2FTransports 확장 ::= {

구문 FIDOU2FTransports ID id-fido-u2f-ce-transports

}

FIDOU2FTransports ::= 비트 문자열 {

bluetoothRadio(0),– 블루투스 클래식

블루투스LowEnergy라디오(1),

uSB(2),

nFC(3)를 사용합니다.

uSBInternal(4)

}

원시 메시지 형식

이 업데이트의 가장 중요한 기능 중 하나는 자동 인증자 지원이 추가된 것입니다. 이 기능을 사용하면 APDU(Application Protocol Data Units)가 새 서명 매개 변수를 수신했습니다. 사용자 존재 및 서명(0x08)을 적용하지 않음 . 이제 클라이언트는 사용자 프레즌스를 적용하지 않고도 서명을 요청할 수 있습니다. 이는 인증 모드와 같은 “전달자 토큰”에 자동 모드를 사용하는 FIDO 기반 페더레이션 솔루션에 특히 유용합니다. FIDO 기반 솔루션의 가장 큰 장점은 누출 복원력입니다. FIDO 프로토콜은 디지털 서명을 기반으로 하고 프라이빗 키는 일반적으로 보안 enclave에 저장되므로 페더레이션 ID는 인증자를 복구할 수 없는 전달자 토큰으로 사용할 수 있으므로 클라이언트 쪽의 XSS 및 맬웨어에 대해 걱정할 필요가 없습니다.

U2FHID (유투피드)

U2FHID가 U2FHID_LOCK로 업데이트되었습니다. 명령. 이제 클라이언트는 최대 10초 동안 한 채널에만 통신을 잠그도록 인증자에게 요청할 수 있습니다. 클라이언트는 인증자 잠금 시간을 연장하기 위해 LOCK 명령을 지속적으로 보낼 수 있습니다.

메타데이터 문

U2F는 메타데이터 문에 대한 지원을 받았습니다.

{

“description”: “FIDO Alliance U2F 인증자 샘플”,

“attestationCertificateKeyIdentifiers”: [“7c0903708b87115b0b422def3138c3c864e44573”],

“프로토콜패밀리”: “u2f”,

“인증자 버전”: 2,

“upv”: [

{ “주”: 1, “부”: 2 }

],

“assertionScheme”: “U2FV1BIN”,

“인증 알고리즘”: 1,

“publicKeyAlgAndEncoding”: 256,

“attestationTypes”: [15879],

“userVerificationDetails”: [

[{ “사용자 확인”: 1 }]

],

“키 보호”: 10,

“matcherProtection”: 4,

“첨부 힌트”: 2,

“isSecondFactorOnly”: “참”,

“tcDisplay”: 0,

“attestationRootCertificates”: [

“MIICPTCCAeOgAwIBAgIJAOuexvU3Oy2wMAoGCCqGS

VdLIgtfsbDSu7ErJfzr4AiBqoYCZf0+zI55aQeAHjI…

lQ==”

],

“아이콘”: “BM10”

}

이러한 변경 사항을 수용하기 위해 다음과 같은 새 필드가 추가되었습니다.

  • attestationCertificateKeyIdentifiers – RFC5280의 SHA-1 인증서 SKID
  • assertionScheme – 새로운 U2FV1BIN 체계 정의

이러한 변경으로 이제 U2F를 메타데이터 서비스 프로토콜에서 지원하는 목록에 추가할 수 있습니다.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — —

U2Fv1.2에 대한 자세한 내용은 FIDO Alliance 사양 리포지토리

참조하십시오.

 

참조

 


More

블로그: FIDO APAC Summit 2023: 아시아 태평양 지역에서 더 간단하고 강력한 인증 개척

2023년 8월 28일부터 30일까지 FIDO Alliance는 FIDO APAC Summit 2023에서 아시아 태평양 지역의 업계 리더,…

자세히 보기 →

2023년 70억 개 이상의 온라인 계정에서 패스키를 사용한 암호 없는 로그인이 가능해짐에 따라 FIDO 인증 채택이 급증

일본에서도 주목할 만한 패스키 배포로 모멘텀이 계속되고 있으며, SBI Sumishin Net Bank가 멤버십을 발표하고 Mercari가…

자세히 보기 →

FDO를 통한 엣지 및 커넥티드 디바이스 보안: Authenticate Virtual Summit

Dell, IBM, Intel, Red Hat 등에 가입하여 FIDO Device Onboard를 활용하여 에지 및 IoT 공간에…

자세히 보기 →