Chronos Authenticator: iOS 2FA App

Hi Everyone!

I would like to showcase Chronos Authenticator, developed to provide the open-source and privacy community with an alternative iOS 2FA app.

Chronos Authenticator aims to provide robust security and reliable backup features, supporting both time-based (TOTP) and counter-based (HOTP) authentication methods.

Links

App Store: ‎Chronos Authenticator on the App Store
GitHub: GitHub - joeldavidw/Chronos: Chronos is an open-source two-factor authentication (2FA) app for iOS

Features

  • Open-source: Source code available here
  • Secure: Encrypts all token data on device and in iCloud (optional)
    • No unencrypted data leaves your devices
    • Data are only unencrypted in memory
  • Backup & Sync: Effortlessly backup and sync your data with Apple iCloud.
  • Export: Easily export your tokens for backup or transfer
    • Encrypted zip archive
    • Plaintext
    • HTML
  • Import:
    • Chronos
    • Aegis
    • Raivo
    • Google Authenticator
    • LastPass Authenticator
    • More services will be added
  • Anonymous: No telemetry and app account required

Upcoming Features

  • Swipe to show token QR code (available in v6.0)
  • Password reminder prompt (available in v6.0)
  • Service Icons
  • Tap to reveal tokens (available in v6.0)
  • Screenshot prevention
  • Export to HTML with QR codes (available in v7.2)
    • Allow for import via scanning to other authenticator without Chronos as an import option
  • More import options

Security & Encryption Q&A

What cipher string (master key) is used for data encryption?

A 256-bit (32 bytes) array of cryptographically secure random bytes is generated on the device using SecRandomCopyBytes. It functions as the the master key used for data encryption.

What is my password created during onboarding used for?

The password is used to derive an encryption key using scrypt. This derived key is then used to wrap the master key with XChaCha20-Poly1305 cipher, effectively encrypting it. This process allows for the secure storage and transmission of the encrypted master key on the device and, if enabled, in iCloud.

4 Likes

Thats great news, iOS definitely needs a solid offline 2FA app after the
Raivo sell out.

EDIT: After using it i love the simplicity, reminded me of Tofu but with the extra necessary security fuctions. This is my goto iOS 2FA app from now on :slight_smile:

2 Likes

Thank you for putting the effort for this app.
May I humbly ask why you decide to develop an 2FA app while there is ente auth or 2FAS. Is there a difference with regard to the feature parity, or something you did not like?

Edit: correction of autocorrection.

1 Like

Hey! Great question. As a pervious user of Raivo, I wanted to develop a 2FA app that offers similar features to Raivo and to provide an iOS offering that rivals Aegis’s feature set.

Chronos was developed with the following must-have features in mind:

  • Encrypted iCloud backup
  • Sync should be simple
  • No vendor lock-in
    • Backup files must be easily readable (JSON format)
    • QR code included in export (will be available in v7.0)
    • No app account

To answer your question, I wanted an app that is fully end-to-end encrypted with iCloud for syncing between multiple devices.

2 Likes

v6.0 with the following features has been released:

  • Swipe to show token QR code
  • Password reminder prompt every 2 weeks if biometrics auth is used.
  • Tap to reveal tokens

Feedbacks and feature requests are welcome!

Thank you for making this as having alternatives is always a good thing.

1 Like

How are you syncing the data to iCloud? Do you use any of CloudKit’s encryption tools to protect user data, or is the only encryption happening within the app with the master password that’s set?

Encryption is performed using the master key generated when the vault is created.

The models used for iCloud syncing, implemented with SwiftData, can be found here. Token data is encrypted in the EncryptedToken.encryptedTokenCiper field.

Many thanks for your detailed answer!

1 Like

I’ve thought of this app having payed around with it.

Here’s why I wouldn’t use it:

The sync is through iCloud. That keeps me kinda locked in with my devices and OS. I use all kinds of devices including Linux. I would prefer full freedom and flexibility to still get my 2FA codes while not being tied down to any device.

Here’s why: if I lose all my devices and data, I still want to be able to get to my accounts on a new device I buy without needing to buy an iPhone to get back my access to accounts. Also, I don’t trust iCloud so the encrypted sync comes mean much.

This is subjective but it’s how it is with me. But if you can make it such that I’m also able to use the web to log into my account and get my 2FAs - I would consider leaving Ente if you also add the option to add seed tokens on the web itself. This would enable me to give up my smartphone and move to my preferred dumb phone.

Hey! Thanks for the feedback. I understand where you’re coming from. This is where the safekeeping of backups is crucial for any authenticator app you use.

Chronos allows you to export your tokens in JSON and HTML (available in v7.2) formats in a zip archive. Encrypted archives secured with a strong password can be stored in ProtonDrive, iCloud, or any other cloud storage for future use. If you want an offline backup, the HTML export can be printed out and stored in a safe location.

2 Likes

Thank you for responding and clarifying.

And its not like I dislike the app; its just that it doesn’t work for me the way another does given my priority of not being locked into any OS or device and having the freedom to get to my codes even in the worst case scenario of having losing all my electronic devices.

I hope this additional flexibility I have explained in my comments thus far are taken into consideration for future updates and features you may want to provide your users.

2 Likes

v7.2 has been released! This update adds the following features and fixes:

  • Exports now include JSON and HTML files
  • HTML export with QR code
    • Allow for import via scanning to other authenticator
    • Printable for offline storage
  • Plaintext export option has been replaced by Unencrypted Zip Archive
  • Fixed a bug related to parsing and generating OTP Auth URLs

is it possible to have it backup to something other than icloud? Also how do you plan to monetize the app? Generally speaking people don’t build and maintain apps from the goodness of their heart I’d rather have a clear idea how you plan to make money rather than offering a free product to generate usage and then sell it to a 3rd party like Raivo did.

Hey, iCloud is only required if you want automatic data sync between multiple devices. Chronos can be set up with an offline Vault, and exports can be made and backed up anywhere you want.

A very very good question. I have no way to prove this to you, but honestly, I am not planning to make any revenue from creating this app. While donations on GitHub are welcome, they are not necessary. I was a user, donor, and contributor (albeit just a few service icons) of R, and after what happened, I wanted to offer the community an alternative. Chronos is my way of giving back.

That being said, you should not trust me, anyone, or any company with your important data. Always create, save and test your backups!

2 Likes

Hey! It’s been a while since the last update here. Chronos is now on v13, featuring the following new additions:

  • Search
  • Pinning of tokens
  • Import:
    • 2FAS
    • Aegis
    • Ente Auth
    • Google Authenticator
    • LastPass Authenticator
  • Code optimisation
1 Like