Giter Club home page Giter Club logo

stopguessing's Introduction

StopGuessing

A system for protecting password-based authentication systems from online-guessing attacks.

Purpose

Services that employ passwords to authenticate users are subject to online-guessing attacks. Attackers can pick a common password and try to login to the user's account with that password. If services don't do anything to stop this attack, attackers can issue millions of guesses and compromise many accounts. Some services block user accounts after a few failed guesses, but if attackers are trying to login to all user accounts this will cause all users to be locked out. Thus, more advanced systems to prevent online-guessing attacks block IP addresses engaged in guessing, rather than the accounts targeted by guessers.

StopGuessing is a reference implementation of an IP reputation framework. It provides two unique features not present in previous system. First, StopGuessing identifies frequently-occuring passwords in failed login attempts to identify which passwords are being frequently guessed by attackers. It can provide stronger protection to users whose passwords are among those being guessed frequently, and provide faster blocking to IP addresses that guess these passwords. To detect frequently-occuring incorrect passwords, it uses a new data structure called a binomial ladder filter. Second, StopGuessing is able to identify which login attempts have failed due to typos of the users' password, and be less quick to conclude that an IP that submitted the typo is guessing than for a failure that is not caused by a typo.

For more information about the motivation for this approach, the underlying algorithms, and for simulations that measure the efficacy of StopGuessing against different attacks, see the following papers:

The Binomial Ladder Filter: https://research.microsoft.com/... StopGuessing: https://research.microsoft.com/...

Project Structure

Contributing

There are many opportunities to contribute to the StopGuessing project. You might want to help the system use additional IP reputation information, or information about the geographic location or other features of IPs. You might want to make it easier to use StopGuessing on other platforms. You might want to port part or all of the code to be native to other languages. You might want to build support for the binomial ladder filter into memory databases. If you'd like to contribute, the best way to get started is to reach out to us at [email protected].

stopguessing's People

Contributors

msftgits avatar stevensona avatar uppajung avatar yuansweet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stopguessing's Issues

Maintain a list of previous valid passwords

Maintain a list of previous valid passwords for an account so as to use this information for account recovery if an attacker takes over the account and changes the password.

Respond to lists of user ids/passwords from other sites

When a list of user ids (usernames/emails)/passwords from a compromised site is obtained, the system should facilitate

  1. Testing if a user used the same password on that other site in real time if the password is known.
  2. Testing the next time the users' correct password is entered if we only have a hash of the password (but know the hash function).
  3. Adding an attribute to the account so that it can be searched easily and so password-reset can be enforced.
  4. Revoking any cookies created after the suspected date of compromise or otherwise provide less benefit to having such a cookie.
  5. Optionally prevent all logins from clients that do not have cookies that predate the compromise.
  6. Track compromised passwords as a new type to use when penalizing blocking attacks. The use of a compromised password from an iP the user has logged in before may be an indicator that an IP is trying to login with these passwords.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.