Open6

item: Kensington VeriMark Guard (CTAP2キー)

okuokuokuoku

macOSの標準UIだと何かエラーになる

WebAuthnを使うと標準のUIをトリガできる。(これ以外だとAppleIDも使えるけどAppleIDは普通に機器認証の方が安全だと思うので...)

Firefoxではエラーになる。(出るUI自体はSafariと同じ)

Safariだと正常にサインインできるが、指紋認証になっていない。たぶんU2Fにフォールバックしている。

okuokuokuoku

libfido2を試す

コマンドラインからセキュリティトークンを設定するには libfido2 https://github.com/Yubico/libfido2 のツールが使える。適当にビルド。

cmake -DCBOR_FOUND=ON ¥
  "-DCBOR_INCLUDE_DIRS=/Users/okuoku/stage/libcbor/src;/Users/okuoku/stage/libcbor/build/src;/Users/okuoku/stage/libcbor/build" ¥
  -DCBOR_LIBRARY_DIRS=/Users/okuoku/stage/libcbor/build/src ..

ビルドすると tools 以下に fido2-token コマンドができる。

% ./fido2-token -L
ioreg://4295162511: vendor=0x047d, product=0x8055 ( VeriMark Guard Fingerprint Key)
% ./fido2-token -I ioreg://4295162511
proto: 0x02
major: 0x32
minor: 0xcf
build: 0xe9
caps: 0x04 (nowink, cbor, msg)
version strings: U2F_V2, FIDO_2_0, FIDO_2_1_PRE
extension strings: credProtect, hmac-secret
aaguid: (ここにAAGUIDが出る)
options: rk, up, nouv, noclientPin, credentialMgmtPreview, nouserVerificationMgmtPreview
fwversion: 0x0
maxmsgsiz: 7609
maxcredcntlst: 20
maxcredlen: 256
maxcredblob: 0
maxlargeblob: 0
pin protocols: 1
pin retries: 0
pin change required: false
uv retries: undefined
sensor type: 1 (touch)
max samples: 8

今はprovisionしていないので nouv noclientpin

-S で PIN を登録して -S -e で指紋を登録する。

% ./fido2-token -S ioreg://4295162511
Enter new PIN for ioreg://4295162511: 
Enter the same PIN again: 
% ./fido2-token -S -e ioreg://4295162511
Enter PIN for ioreg://4295162511: 
Touch your security key.
Sample ok.
Touch your security key (7 samples left).
Sample ok.
Touch your security key (6 samples left).
Sample ok.
Touch your security key (5 samples left).
Sample ok.
Touch your security key (4 samples left).
Sample ok.
Touch your security key (3 samples left).
Sample ok.
Touch your security key (2 samples left).
Sample ok.

これで uv が立つ。

options: rk, up, uv, clientPin, credentialMgmtPreview, userVerificationMgmtPreview

これ以降は間違った指をタッチすると署名が拒否されるようになる。

okuokuokuoku

GUI

Windowsのコントロールパネルは標準でFIDO2セキュティトークンの管理機能を内蔵している。他にはGoogle Chromeにある。

設定 → プライバシーとセキュリティ → セキュリティキーの管理 から行ける。

Windows Helloのような親切なUIではない。例えば色んな指をとっかえひっかえタッチしても登録や認証に成功してしまう。

okuokuokuoku

返却されるAttestation

Synapticsなんだ。。

Version: 3 (0x2)
Certificate Serial Number: 1771 (0x6eb)
Signature Algorithm: ecdsa-with-sha256
Issuer: 1.2.840.113549.1.9.1=cert-authority@synaptics.com,CN=Synaptics CA,OU=PCD,O=Synaptics\, Inc.,L=San Jose,ST=CA,C=US
Validity
Not Before: 2020-06-09T02:00:09
Not After: 2050-06-09T02:00:09
Subject: CN=Synaptics,OU=Authenticator Attestation,O=Synaptics\, Inc.,L=San Jose,ST=CA,C=US
Subject Public Key Info:
Type: ECC
Public-Key: (256 bit)
pub:
04:c0:1a:0a:2c:5b:aa:84:fc:88:15:85:ff:7c:a3:5b:0b:e1:
d2:52:7b:64:50:03:c0:cf:09:99:89:e0:25:8d:72:68:1a:08:
6e:55:16:79:e9:60:77:cf:4d:cf:83:1b:6f:3b:19:c5:78:3b:
81:15:a1:d8:83:7f:d7:34:6d:42:fa
Curve: secp256r1
X509v3 extensions:
1.3.6.1.4.1.45724.1.1.4 (FIDO: Device AAGUID):
AAGUID: d94a29d952dd42479c2d8b818b610389
X509v3 Basic Constraints:
CA: FALSE
Signature Algorithm: ecdsa-with-sha256
30:46:02:21:00:f2:92:19:c2:bf:e9:0c:62:18:c5:cc:62:8a:
81:dd:20:8e:be:82:fd:1f:ee:6a:a6:9c:7c:4b:16:f2:3e:1c:
d9:02:21:00:92:23:4f:7d:8a:f2:78:ba:9f:be:be:e0:dd:3a:
24:a8:98:ed:fc:f0:54:ac:0b:af:8d:21:ca:08:a5:78:3a:8c
Fingerprint:
MD5:
80:95:76:d2:21:65:2b:46:ec:a3:2a:0a:14:d8:50:56
SHA1:
00:d8:75:69:b6:37:f9:c8:10:a9:ef:23:55:72:55:83:21:aa:
91:b2
SHA256:
1a:f0:59:c8:9a:9c:cd:dc:fc:b3:3a:a0:3f:37:96:b6:68:6d:
67:1b:e7:c0:cc:4b:4b:81:38:7e:fa:d0:8d:58
Subject key identifier:
0e:80:20:d7:82:b6:7d:00:f4:78:39:f4:42:dd:c2:42:db:e4:
fc:2f