FIDO UAF U2F

용어정리

FIDO : Fast IDentity Online
UAF : Universal Authentication Framework
U2F : Universal 2nd Factor
ASM : Authenticator Specific Module

FIDO : ID, PW기반의 인증을 대체하기위한 기술
FIDO Aliance : FIDO표준을 만들기위한 연합
UAF : 로그인 자체를 대체하는 기술
U2F : 로그인 보안을 강화하기위해 ID, PW를 입력받고 추가로 인증하는 방법

FIDO 1.0 :

 

FIDO USB Key

일본사는 친구통해 구매한 중국산Feitian FIDO 동글이 왔다. (일반 우편, 260엔? 정확히 일주일 걸림)

뭐 그냥 흔한 USB 메모리처럼 생겼으나

[ 1122.049536] usb 1-1.1.2: new full-speed USB device number 10 using xhci_hcd
[ 1122.164650] usb 1-1.1.2: New USB device found, idVendor=096e, idProduct=0858
[ 1122.164654] usb 1-1.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1122.164657] usb 1-1.1.2: Product: U2F CCID KBOARD
[ 1122.164659] usb 1-1.1.2: Manufacturer: FT
[ 1122.168493] hid-generic 0003:096E:0858.0005: hiddev0,hidraw4: USB HID v1.00 Device [FT U2F CCID KBOARD] on usb-0000:00:14.0-1.1.2/input0

키보드로 인식한다.

 

잉여잉여한 추석을 통해 사용방법을 익혀볼 예정. (이글도 업데이트 예정)

 

오픈소스

https://github.com/apowers313/fido2-server
https://github.com/google/u2f-ref-code/

 

SmartCard로써 사용

키, 서명생성

pkcs15-init –verify-pin –auth-id 80 –generate-key rsa/2048 –key-usage sign,decrypt –label “RSA”
openssl req -engine pkcs11 -new -key “pkcs11:object=RSA” -keyform engine -out myCert.pem -days 3650 -outform pem -x509 -utf8
pkcs15-init –store-certificate myCert.pem –id 00 –verify-pin

Linux ssh서버설정

~/.ssh/authorized_keys에 공개키 위치 (pkcs15-tool —read-ssh-key 00)

윈도 Putty-CAC

certutil.exe -scinfo 실행하면 Putty 설정메뉴의 Connection -> SSH -> Certificate에 Set CAPI Cert 누르면 인증서가 뜬다.
아니면 set PKCS cert 해서 “C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll”를 지정해줘도 된다.

https://zerowidthjoiner.net/2019/01/12/using-ssh-public-key-authentication-with-a-smart-card
https://github.com/OpenSC/OpenSC

only@ThinkPad-E585:~/.ssh$ pkcs15-tool --dump
Using reader with a card: FT CCID [CCID] 00 00
PKCS#15 Card [GIDS card]:
	Version        : 2
	Serial number  : 3b61a83369e8d6-----------------
	Manufacturer ID: www.mysmartlogon.com
	Flags          : 

PIN [UserPIN]
	Object Flags   : [0x03], private, modifiable
	ID             : 80
	Flags          : [0x12], local, initialized
	Length         : min_len:4, max_len:15, stored_len:0
	Pad char       : 0x00
	Reference      : 128 (0x80)
	Type           : ascii-numeric
	Tries left     : 3

Private RSA Key [RSA]
	Object Flags   : [0x01], private
	Usage          : [0x06], decrypt, sign
	Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
	ModLength      : 2048
	Key ref        : 129 (0x81)
	Native         : yes
	Auth ID        : 80
	ID             : 00
	MD:guid        : 0d3bd9b5-0374-38b9-c5ae-37d54a890cb6

Public RSA Key [RSA]
	Object Flags   : [0x00]
	Usage          : [0x41], encrypt, verify
	Access Flags   : [0x02], extract
	ModLength      : 2048
	Key ref        : 129 (0x81)
	Native         : yes
	Path           : 3fffb081
	ID             : 00

X.509 Certificate [RSA]
	Object Flags   : [0x00]
	Authority      : no
	Path           : a010df25
	ID             : 00
	Encoded serial : 02 14 1A0146494D172CCF7D5B31E1A43A4A571BBE35D8

Ref

https://developers.yubico.com/U2F/
https://fidoalliance.org/specs/fido-u2f-v1.0-ps-20141009/fido-u2f-hid-protocol-ps-20141009.html
https://github.com/hillbrad/U2FReviews
https://www.rcdevs.com/docs/howtos/epass/epass/ [feitian-epass-nfc.pdf]
박승철. (2017). PKI 인증과 FIDO 인증에 대한 비교 분석. 한국정보통신학회논문지, 21(7), 1411-1419.
조상래, 조영섭, 김수형. (2016). FIDO 2.0 범용인증기술 소개. 정보보호학회지, 26(2), 14-19.
김재중. (2015). FIDO(Fast IDentity Online)를 이용한 비밀번호 없는 공인인증시스템에 관한 연구. 정보과학회지, 33(5), 9-12.

Leave a Reply

Your email address will not be published. Required fields are marked *