Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement MFA #988

Open
ferrisoxide opened this issue Aug 11, 2024 · 0 comments
Open

Implement MFA #988

ferrisoxide opened this issue Aug 11, 2024 · 0 comments
Labels
feature security Pull requests that address a security vulnerability

Comments

@ferrisoxide
Copy link
Collaborator

ferrisoxide commented Aug 11, 2024

Description

Adding Multi-Factor Authentication (MFA) to the Tool for Systemic change will enhance security by requiring users to provide two or more forms of verification before accessing their accounts.

We will need to design and implement appropriate protocols to support users' needs / expectations with regard to authentication.

Considerations

Source: ChatGPT

1. Understand the MFA Workflow:

  • First Factor (Primary Authentication): Typically a password or PIN.
  • Second Factor (Secondary Authentication): This could be a one-time code sent via SMS, an email, or a push notification, a time-based OTP (TOTP) from an authenticator app, or biometric verification like fingerprint or facial recognition.

2. Integrate MFA Options:

  • SMS/Email-based OTP:
    • Implement a service to send a one-time code to the user's registered phone number or email.
    • After the user enters their password, prompt them to enter the code received.
  • Authenticator App (TOTP):
    • Integrate support for TOTP through apps like Google Authenticator or Authy.
    • When the user enables MFA, generate and display a QR code for them to scan with their authenticator app.
    • Store the shared secret key on the server to validate future tokens.
  • Push Notifications:
    • Implement push notifications that users can approve or deny for authentication.
  • Biometric Authentication:
    • Utilize device capabilities (like fingerprint or facial recognition) for the second factor.

3. User Experience Design:

  • Setup Process:
    • Allow users to enable MFA in their account settings.
    • Provide clear instructions and multiple options for users to choose their preferred second factor.
  • Login Process:
    • After users enter their password, prompt them for the second authentication factor.
    • Ensure that fallback options are available if the user cannot access their primary MFA method (e.g., recovery codes).

4. Security Considerations:

  • Backup Codes: Provide users with a set of one-time-use backup codes when they enable MFA.
  • Device Remembering: Offer a "Remember this device" option to reduce friction for trusted devices, but only after thorough consideration of security risks.
  • Rate Limiting and Throttling: Implement mechanisms to prevent brute force attacks on MFA entry points.

5. Error Handling and Support:

  • Ensure that there are clear and secure processes for users to recover access if they lose their second factor (e.g., account recovery workflows).
  • Provide informative error messages and prompt users to check their second factor if they encounter issues during login.

6. Testing:

  • Perform thorough testing across different scenarios and devices to ensure that MFA works seamlessly.
  • Test edge cases like incorrect OTP entry, expired codes, network failures during push notifications, etc.

7. Compliance and Best Practices:

  • Follow industry standards (e.g., NIST guidelines) for MFA implementation.
  • Ensure compliance with relevant regulations (e.g., GDPR, HIPAA) if applicable.

8. Deployment:

  • Roll out MFA in phases if possible, starting with voluntary adoption and moving to mandatory MFA for all users.
  • Monitor user feedback and system performance, and be prepared to address any issues that arise post-deployment.

By integrating MFA, we will significantly increase the security of user accounts, making it much harder for unauthorized parties to gain access, even if passwords are compromised.

@ferrisoxide ferrisoxide added feature security Pull requests that address a security vulnerability labels Aug 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature security Pull requests that address a security vulnerability
Projects
Status: Backlog
Development

No branches or pull requests

1 participant