AuthenTrend ATKey.Pro: a forensic look at the CTAP 2.0 variant on Arch Linux

hardware review CTAP2.0 SKU: do check the note below

The ATKey.Pro from AuthenTrend is a FIDO2 hardware security key with an onboard capacitive fingerprint sensor. This review tests the device thoroughly on Linux and is quite explicit about what was verified by direct command output, what was confirmed by manufacturer documentation, and what remains genuinely unknown.

Important: two distinct SKUs share the ATKey.Pro name The device tested here reports AAGUID e1a96183-5016-4f24-b55b-e3ae23614cc6, which the FIDO passkey developer registry identifies as ATKey.Pro CTAP2.0. A separate, newer product (AAGUID e416201b-afeb-41ca-a03d-2281c28322aa) is the ATKey.Pro CTAP2.1, which AuthenTrend now sells and markets as "CTAP2.1 compliant." These are distinct devices with distinct firmware behaviour. Kindly verify your unit's AAGUID with fido2-token -I /dev/hidrawX | grep aaguid before relying on CTAP2.1-specific behaviour.

Test environment

OS
Arch Linux
Kernel
6.18.21-1-lts
libfido2
1.16.0
pam-u2f
1.4.0-2
TPM2 co-present
AMD fTPM, tpm_crb
Nitrokey HSM co-present
SmartCard-HSM PKI

Device information verified

Full output of fido2-token -I /dev/hidraw6 2>&1 | head -30. It is worth noting that this command hangs at a PIN prompt when a PIN is configured; piping through head captures the capabilities without blocking.

AAGUIDe1a96183-5016-4f24-b55b-e3ae23614cc6 Identified as "ATKey.Pro CTAP2.0" per passkey developer AAGUID registry
Firmware0x01 (bcdDevice 1.00)
FIDO versionsU2F_V2, FIDO_2_0, FIDO_2_1_PRE PRE signifies a draft implementation, not the ratified CTAP2.1 standard
Algorithmses256 (P-256) + eddsa (Ed25519)
ExtensionscredBlob, credProtect, hmac-secret
TransportUSB only. No NFC, no USB-C on this unit.
maxcredcntlst20 Credential management enumeration limit; actual on-device storage capacity is not confirmed
Non-resident credentialsUp to 160 per manufacturer Key-wrapped, stored server-side, consuming no device storage
Max message size2048 bytes
Max large blob1024 bytes
PIN protocol1 only Protocol 2, as required by ratified CTAP2.1, is absent. Protocol 1 sends the PIN as a SHA-256 hash rather than using an encrypted exchange.
PIN retries8 (minimum length 4, change not required at present)
UV retries5 before fingerprint lockout
SensorTouch type 1, 12 samples per enrolment, up to 10 fingerprints stored
MCUBroadcom BCM5810X, FIPS 140-2 Level 3 certified Per FIDO Alliance certification listing; not directly verifiable from Linux userspace
USB interfaceshidraw6 (FIDO, uaccess tagged); hidraw7 (enrolment channel, root-only)

systemd-cryptenroll compatibility verified

Output of systemd-cryptenroll --fido2-device=list on Arch Linux:

RK ✓  resident keys CLIENTPIN ✓  PIN support UP ✓  user presence UV ✓  user verification ALWAYSUV ✗  UV not mandatory

The ALWAYSUV ✗ result indicates that the device supports fingerprint verification but does not enforce it unconditionally. A PIN is accepted as a fallback for user verification. Fingerprint lockout after 5 failed attempts does not render the key unusable, as the PIN path remains open. The PIN retry counter resets to 8 after a successful PIN change via fido2-token -C.

Linux access: udev verified on Arch Linux

On Arch Linux with current systemd, the FIDO interface enumerates on hidraw6 and is automatically tagged ID_FIDO_TOKEN=1, ID_SECURITY_TOKEN=1, and uaccess. No entry in /etc/udev/rules.d/ is required. Stable symlinks are created at /dev/input/by-id/...-fido and ...-hidraw. The fingerprint management interface remains at 0600 root, as is proper for the enrolment channel. Do note that this zero-configuration behaviour is specific to Arch with its current udev rule set; other distributions may well require manual rules.

SSH key generation verified

Both non-resident and resident Ed25519-SK keys generated and signed successfully. A critical distinction applies to what the device actually does at each stage, and one must not conflate the two modes.

non-resident
Keygen requested user presence (capacitive touch), not user verification (biometric). Both the standard and -O verify-required variants printed "Confirm user presence" and completed at identical speed. ssh-keygen -t ed25519-sk -f /tmp/test_up -N "" SHA256:2ne5859Iua/+3tdFiqqcR3ehoqdklPr1GCV+QaBelAI Signing via ssh-keygen -Y sign produced a valid signature and likewise requested UP only.
verify-required
The -O verify-required flag embeds a policy annotation in the public key. ssh-keygen itself still requests UP during generation. At actual SSH authentication time, an SSH server that reads the verify-required annotation will request UV, at which point the device invokes the fingerprint sensor for biometric assertion. This path was not tested end-to-end against a live SSH server in the present review. ssh-keygen -t ed25519-sk -O verify-required -f /tmp/test_uv -N "" SHA256:3zRu/QwyEiWz7uHjsFIxA8ZxaKN+kaXHdcNqhjgRmZ8
resident
Resident credential written to device. A file passphrase was prompted for local key handle encryption. No device PIN prompt appeared; the enrolled fingerprint satisfied the UV challenge via uvToken, with the fingerprint sensor performing biometric matching. Resident keys occupy on-device storage and are recoverable via ssh-keygen -K on any machine. ssh-keygen -t ed25519-sk -O resident -f /tmp/test_rk SHA256:DeSKb5W6+HMBB5zSwZK9+WbQqtHZzlYXU5ooKLqsBOI

LUKS2 disk encryption enrolment verified

Lennart Poettering's systemd 248 post explicitly names the ATKey.Pro as a tested device for systemd-cryptenroll; AuthenTrend sent him three units for the purpose. The required capability is hmac-secret, which is confirmed present in this device's fido2-token -I output. Enrolment was verified using a throwaway loopback image so as not to touch any real volumes:

sudo systemd-cryptenroll --fido2-device=auto /tmp/test_luks.img

The resulting LUKS2 token header, as confirmed by cryptsetup luksDump:

fido2-clientPin-required
true
fido2-up-required
true
fido2-uv-required
false: biometric verification is not requested by default
fido2-rp
io.systemd.cryptsetup
Default behaviour at boot is PIN plus touch, not fingerprint. The default enrolment requests clientPin and user presence; one enters the PIN and touches the key. To enrol with biometric unlock, pass --fido2-with-user-verification=yes explicitly. It is also worth noting that if UV lockout occurs at boot (5 failed fingerprint attempts), the PIN fallback activates. Keeping the PIN retry counter healthy is therefore operationally important. Full boot-time unlock (as distinct from loopback image testing) requires updating /etc/crypttab and regenerating the initramfs via mkinitcpio.

The test machine also carries an AMD firmware TPM2 (/dev/tpmrm0, tpm_crb driver, SHA-256 PCR banks active). TPM2 and FIDO2 can each be enrolled into the same LUKS2 header as independent unlock paths: TPM2 for automated boot, the ATKey.Pro as a portable fallback requiring physical possession.

PAM integration package verified

pam-u2f 1.4.0-2 is installed and pam_u2f.so is present at /usr/lib/security/pam_u2f.so. The ATKey.Pro is quite visible to pamu2fcfg. Full PAM enrolment (generating a working u2f_keys entry and verifying sudo unlock) was not completed in this review, as pamu2fcfg returned FIDO_ERR_RX during the test run, most likely on account of a PIN prompt interaction. The Arch Wiki U2F article documents the full configuration procedure quite well.

Standalone fingerprint enrolment vendor-confirmed

The device supports enrolling fingerprints without any software or internet connection whatsoever. One inserts the key into any powered USB port, presses the side button three times to enter enrolment mode, then touches the sensor repeatedly until the LED signals completion. The device accepts up to 12 good touches per finger, which is consistent with the max samples: 12 value returned by fido2-token -I and is documented in the vendor quick-start guide. This path was not personally tested in the present review.

What is absent from this model verified absent

No PIV on the ATKey.Pro. No CCID. No NFC. pcsc_scan does not enumerate this device; it exposes no CCID interface and is entirely invisible to pcscd. If one's workflow involves PKCS#11, OpenSC, certificate-based card login, or PIV, this particular model shall not suffice. There is likewise no NFC and no USB-C on the USB-A unit tested here.

It is worth noting, however, that AuthenTrend does maintain open-source Linux tooling for their PIV-capable products (notably the ATKey.Card NFC). Their piv-cli-tool (C, MIT licence) is modelled on Yubico's yubico-piv-tool, includes a ykcs11/ PKCS#11 module, and builds on Linux via CMake. Separately, piv-pairing-scripts (Shell, MIT, updated February 2025) provides pairing automation. Neither was tested against the ATKey.Pro in this review, as pcsc_scan confirms no CCID enumeration on this unit. Readers who also own the ATKey.Card or Badge products will find these repositories quite useful.

Scores

Linux compatibility
9.5 / 10
FIDO2 feature depth
8 / 10
SSH workflow
8.5 / 10
Versatility
6 / 10

Scores are subjective assessments rather than measurements. Authentication speed was not benchmarked.

What works well

  • +Zero udev configuration on Arch Linux with systemd
  • +Ed25519-SK verified working, not merely advertised
  • +Resident SSH: uvToken enables fingerprint-as-UV during keygen
  • +hmac-secret confirmed; LUKS2 enrolment via systemd-cryptenroll verified
  • +Both FIDO2 and AMD fTPM enrollable into the same LUKS2 header
  • +FIDO 2.1 PRE features present: credMgmt, bioEnroll, uvToken, hmac-secret, credBlob, credProtect
  • +UV lockout recoverable via PIN path; counter resets on PIN change
  • +Standalone fingerprint enrolment requiring no software whatsoever
  • +FIPS 140-2 Level 3 certified MCU (Broadcom BCM5810X)
  • +pam-u2f package present for sudo and login integration

Worth knowing

  • xThis is the CTAP2.0 SKU; the CTAP2.1 variant carries a different AAGUID
  • xPIN protocol 1 only, which is weaker than protocol 2's encrypted PIN exchange
  • xLUKS2 default is PIN plus touch rather than fingerprint; UV requires an explicit flag
  • xssh-keygen requests UP (touch) rather than UV (biometric) at key generation time
  • xAlwaysUV is disabled; fingerprint verification is not unconditionally enforced
  • xNo PIV, no CCID, no NFC, no USB-C on this model
  • xResident credential storage capacity is not published by the manufacturer
  • xfido2-token -I hangs at the PIN prompt when a PIN is set; pipe output through head
  • xpamu2fcfg enrolment was not fully verified in this review
  • xFirmware 0x01; no ATKey.Pro-specific update or management tooling found for Linux
  • xPIV tooling (piv-cli-tool, MIT) exists on GitHub but applies to ATKey.Card, not this model

Verdict

On the whole, the ATKey.Pro CTAP2.0 is a quite well-specified FIDO2 key that works correctly on Linux with no configuration effort. SSH-SK key generation and signing are verified. LUKS2 enrolment via systemd-cryptenroll is verified. The fingerprint sensor does indeed perform biometric matching when the application explicitly requests UV, as is the case during resident SSH keygen via uvToken and during browser-based WebAuthn authentication. It does not, however, perform biometric matching during standard non-resident keygen or LUKS2 enrolment unless one opts in with the appropriate flag. Should one require the ratified CTAP2.1 feature set, it would be prudent to verify the AAGUID of one's unit before purchase, as AuthenTrend sells both variants under the same product name.

Further reading

Comments

Popular posts from this blog

Aggressive yet sane persistent SSH with systemd and autossh

Anycasting IPv6 TCP and UDP

LEDE/OpenWRT on a PC Engines APU2(c4)