Convert Figma logo to code with AI

beemdevelopment logoAegis

A free, secure and open source app for Android to manage your 2-step verification tokens.

9,409
392
9,409
67

Top Related Projects

3,753

[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:

  1. Download the app from the Google Play Store or F-Droid.
  2. Open the app and set up a password or biometric authentication for vault encryption.
  3. Add your 2FA accounts by scanning QR codes or manually entering details.
  4. Use the generated codes when logging into your accounts that require 2FA.

For developers interested in contributing:

  1. Fork the repository on GitHub.
  2. Clone your fork: git clone https://github.com/your-username/Aegis.git
  3. Set up the development environment following the instructions in the project's README.
  4. Make your changes and submit a pull request for review.

Competitor Comparisons

3,753

[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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

App icon

Aegis Authenticator


Build Crowdin Donate Matrix

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
  • 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

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

Screenshot 5 Screenshot 6 Screenshot 7 Screenshot 8

Downloads

Aegis is available on the Google Play Store and on F-Droid.

Get it on Google Play Get it 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.

* 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: