용어정리
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.