PIN Not Required on iPad for OTP – Is the Data Encrypted? #160

Open
opened 2025-06-15 13:28:01 +08:00 by mazi-wan · 2 comments
mazi-wan commented 2025-06-15 13:28:01 +08:00 (Migrated from github.com)

I set a PIN for OTP on my Mac mini. It works correctly on Android, Ubuntu, and macOS — the Yubico Authenticator prompts for the PIN before showing the OTP. However, something strange happens on the iPad: it shows the OTP directly without asking for the PIN.

What I'm curious about is:
Is the OTP data actually encrypted? Even when I’ve set a PIN?

device:esp32-s3/pico2

I set a PIN for OTP on my Mac mini. It works correctly on Android, Ubuntu, and macOS — the Yubico Authenticator prompts for the PIN before showing the OTP. However, something strange happens on the iPad: it shows the OTP directly without asking for the PIN. What I'm curious about is: Is the OTP data actually encrypted? Even when I’ve set a PIN? device:esp32-s3/pico2
polhenarejos commented 2025-06-23 02:47:06 +08:00 (Migrated from github.com)

I didn't understand what you refer for "PIN" for OTP. But Yubico Authenticator only asks for a PIN for FIDO2 accounts, I didn't see any similar for OTP.
Plus, I cannot tell you why it works everywhere except on your iPad without a log.

I didn't understand what you refer for "PIN" for OTP. But Yubico Authenticator only asks for a PIN for FIDO2 accounts, I didn't see any similar for OTP. Plus, I cannot tell you why it works everywhere except on your iPad without a log.
mazi-wan commented 2025-06-23 22:45:15 +08:00 (Migrated from github.com)

Thank you for your reply. Sorry that I didn't describe it clearly. Specifically, it is TOTP. In the account displayed in the app.
In the oath_select function in src/fido/oath.c, the iPad fails to correctly obtain the data of ef_otp_pin

file_t *ef_otp_pin = search_by_fid(EF_OTP_PIN, NULL, SPECIFY_EF);

if (file_has_data(ef_otp_pin)

file_has_data(ef_otp_pin) is false on the iPad

Image
Thank you for your reply. Sorry that I didn't describe it clearly. Specifically, it is TOTP. In the account displayed in the app. In the oath_select function in src/fido/oath.c, the iPad fails to correctly obtain the data of ef_otp_pin file_t *ef_otp_pin = search_by_fid(EF_OTP_PIN, NULL, SPECIFY_EF); if (file_has_data(ef_otp_pin) file_has_data(ef_otp_pin) is false on the iPad <img width="1129" alt="Image" src="https://github.com/user-attachments/assets/1338dfed-9fff-434d-8e5c-4c891e63a57e" />
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dearsky/pico-fido#160