Aegis
A free, secure and open source app for Android to manage your 2-step verification tokens.
Top Related Projects
[Unmaintained] Open source two-factor authentication for Android
Source code for 2FAS Android app
Open source fork of the Google Authenticator Android app
AuthPass - Password Manager based on Flutter for all platforms. Keepass 2.x (kdbx 3.x) compatible.
Quick Overview
Aegis is an open-source, secure, and free 2FA (Two-Factor Authentication) app for Android. It offers a user-friendly interface for managing 2FA tokens, supports various types of 2FA methods, and provides advanced security features like encryption and secure backups.
Pros
- Open-source and free, ensuring transparency and community-driven development
- Supports multiple 2FA methods, including TOTP, HOTP, and Steam
- Offers advanced security features like vault encryption and secure backups
- User-friendly interface with customization options
Cons
- Only available for Android devices, limiting its accessibility
- May require more technical knowledge for some advanced features
- Lacks cloud synchronization options for privacy reasons
- Some users may find the interface less polished compared to proprietary alternatives
Getting Started
To use Aegis:
- Download the app from the Google Play Store or F-Droid.
- Open the app and set up a password or biometric authentication for vault encryption.
- Add your 2FA accounts by scanning QR codes or manually entering details.
- Use the generated codes when logging into your accounts that require 2FA.
For developers interested in contributing:
- Fork the repository on GitHub.
- Clone your fork:
git clone https://github.com/your-username/Aegis.git
- Set up the development environment following the instructions in the project's README.
- Make your changes and submit a pull request for review.
Competitor Comparisons
[Unmaintained] Open source two-factor authentication for Android
Pros of andOTP
- Supports HOTP (counter-based) tokens in addition to TOTP
- Offers a more minimalist and straightforward user interface
- Includes a built-in QR code scanner for easy token addition
Cons of andOTP
- Less frequent updates and potentially slower bug fixes
- Fewer advanced features compared to Aegis (e.g., no biometric unlock)
- Limited customization options for app appearance and behavior
Code Comparison
Both projects are open-source Android applications written in Java. Here's a brief comparison of how they handle token generation:
andOTP:
public static String generateOTP(byte[] secret, long counter) {
byte[] data = ByteBuffer.allocate(8).putLong(counter).array();
return TOTP.generateTOTP(secret, data, DIGITS, ALGORITHM);
}
Aegis:
public static String generateOTP(byte[] secret, long counter) {
byte[] data = ByteBuffer.allocate(8).putLong(counter).array();
return TOTP.generateTOTP(secret, data, DIGITS, HASH_ALGORITHM);
}
Both implementations use similar approaches for OTP generation, with minor differences in variable naming and method organization.
Source code for 2FAS Android app
Pros of 2fas-android
- Supports cloud synchronization for easy backup and multi-device use
- Offers a more modern and user-friendly interface
- Includes additional features like custom icons and widget support
Cons of 2fas-android
- Less focus on privacy; cloud sync may raise security concerns for some users
- Fewer advanced options for power users compared to Aegis
- Relatively newer project with a smaller community and less extensive testing
Code Comparison
Aegis (Kotlin):
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
_menu = menu
updateLockIcon()
return true
}
2fas-android (Kotlin):
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
searchMenuItem = menu.findItem(R.id.action_search)
setupSearchView()
return true
}
Both projects use Kotlin and follow similar patterns for menu creation, but 2fas-android includes additional setup for search functionality in its main menu.
Open source fork of the Google Authenticator Android app
Pros of Google Authenticator
- Developed and maintained by Google, ensuring reliability and regular updates
- Simple and straightforward user interface
- Widely recognized and trusted by many services
Cons of Google Authenticator
- Limited backup and export options
- Lacks advanced features like custom icons or categories
- No built-in encryption for stored tokens
Code Comparison
Aegis uses Kotlin and follows a more modern Android development approach:
class AuthenticatorFragment : Fragment() {
private lateinit var binding: FragmentAuthenticatorBinding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
binding = FragmentAuthenticatorBinding.inflate(inflater, container, false)
return binding.root
}
}
Google Authenticator primarily uses Java with some older Android patterns:
public class AuthenticatorActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Both repositories implement two-factor authentication functionality, but Aegis offers a more feature-rich and modern approach, while Google Authenticator focuses on simplicity and widespread adoption.
Pros of FreeOTP
- Simpler and more lightweight application
- Open-source and maintained by Red Hat, a reputable company
- Supports both HOTP and TOTP protocols
Cons of FreeOTP
- Lacks advanced features like encrypted backups
- Less frequent updates and development activity
- Limited customization options for users
Code Comparison
FreeOTP (Java):
public class Token implements Comparable<Token> {
public static final String TOTP = "totp";
public static final String HOTP = "hotp";
private String issuerInt;
private String issuerExt;
private String label;
private String imageUrl;
}
Aegis (Kotlin):
data class VaultEntry(
var type: OTPType,
var uuid: UUID = UUID.randomUUID(),
var name: String = "",
var issuer: String = "",
var icon: VaultEntryIcon? = null,
var info: OTPInfo,
var period: Int = DEFAULT_PERIOD
)
The code comparison shows that Aegis uses Kotlin and has a more modern, data-class approach for token representation. FreeOTP uses Java and a traditional class structure. Aegis seems to have more built-in fields for customization, while FreeOTP's implementation is simpler.
AuthPass - Password Manager based on Flutter for all platforms. Keepass 2.x (kdbx 3.x) compatible.
Pros of AuthPass
- Cross-platform support (Android, iOS, Windows, macOS, Linux)
- Built with Flutter, allowing for a consistent UI across platforms
- Supports KeePass file format, providing compatibility with existing password databases
Cons of AuthPass
- Less focused on two-factor authentication (2FA) compared to Aegis
- May have a steeper learning curve for users new to password managers
- Smaller community and potentially slower development pace
Code Comparison
AuthPass (Dart/Flutter):
class PasswordList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemBuilder: (context, index) => PasswordListItem(password: passwords[index]),
);
}
}
Aegis (Java/Android):
public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> {
@Override
public EntryHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_entry, parent, false);
return new EntryHolder(view);
}
}
Both repositories focus on secure password management, but with different approaches. Aegis is specifically designed for Android and emphasizes 2FA, while AuthPass aims for cross-platform compatibility using Flutter. The code snippets showcase the different languages and frameworks used in each project, reflecting their distinct development approaches.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Aegis Authenticator
Aegis Authenticator is a free, secure and open source 2FA app for Android. It aims to provide a secure authenticator for your online services, while also including some features missing in existing authenticator apps, like proper encryption and backups. Aegis supports HOTP and TOTP, making it compatible with thousands of services.
For a list of frequently asked questions, please check out the FAQ.
The security design of the app and the vault format is described in detail in this document.
Features
- Free and open source
- Secure
- The vault is encrypted (AES-256-GCM), and can be unlocked with:
- Password (scrypt)
- Biometrics (Android Keystore)
- Screen capture prevention
- Tap to reveal
- The vault is encrypted (AES-256-GCM), and can be unlocked with:
- Compatible with Google Authenticator
- Supports industry standard algorithms: HOTP and TOTP
- Lots of ways to add new entries
- Scan a QR code or an image of one
- Enter details manually
- Import from other authenticator apps: 2FAS Authenticator, Authenticator Plus, Authy, andOTP, FreeOTP, FreeOTP+, Google Authenticator, Microsoft Authenticator, Plain text, Steam, TOTP Authenticator and WinAuth (root access is required for some of these)
- Organization
- Alphabetic/custom sorting
- Custom or automatically generated icons
- Group entries together
- Advanced entry editing
- Search by name/issuer
- Material design with multiple themes: Light, Dark, AMOLED
- Export (plaintext or encrypted)
- Automatic backups of the vault to a location of your choosing
Screenshots
Downloads
Aegis is available on the Google Play Store and on F-Droid.
Verification
APK releases on Google Play and GitHub are signed using the same key. They can be verified using apksigner:
apksigner verify --print-certs --verbose aegis.apk
The output should look like:
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
The certificate fingerprints should correspond to the ones listed below:
Owner: CN=Beem Development
Issuer: CN=Beem Development
Serial number: 172380c
Valid from: Sat Feb 09 14:05:49 CET 2019 until: Wed Feb 03 14:05:49 CET 2044
Certificate fingerprints:
MD5: AA:EE:86:DB:C7:B8:88:9F:1F:C9:D0:7A:EC:37:36:32
SHA1: 59:FB:63:B7:1F:CE:95:74:6C:EB:1E:1A:CB:2C:2E:45:E5:FF:13:50
SHA256: C6:DB:80:A8:E1:4E:52:30:C1:DE:84:15:EF:82:0D:13:DC:90:1D:8F:E3:3C:F3:AC:B5:7B:68:62:D8:58:A8:23
Icon packs
Aegis supports icon packs to make it easier to assign icons to the entries in your vault. There are no official icon packs, but the community maintains a number of third-party icon packs you may want to check out. To learn how to create your own Aegis-compatible icon pack, see the documentation.
-
Unofficial monochrome-styled 2FA icons.
-
Delta version of the unofficial monochrome-styled 2FA icon pack aegis-icons.
-
This project periodically generates an icon pack for Aegis based on Simple Icons.
-
This is a variant on the aegis-simple-icons pack where the icons contain no solid background and just the outlines are being used.
* The icons are automatically generated, so not all of them are as high quality as the ones you'll find in aegis-icons.
Contributing
Looking to contribute to Aegis? That's great! There are a couple of ways to help out. Translations, bug reports and pull requests are all greatly appreciated. Please refer to our contributing guidelines to get started.
Swing by our Matrix room to interact with other contributors: #aegis:matrix.org.
License
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
A couple of libraries vendored in Aegis' repository are licensed under a different license:
Top Related Projects
[Unmaintained] Open source two-factor authentication for Android
Source code for 2FAS Android app
Open source fork of the Google Authenticator Android app
AuthPass - Password Manager based on Flutter for all platforms. Keepass 2.x (kdbx 3.x) compatible.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot