keybase / keybase-issues

A single repo for managing publicly recognized issues with the keybase client, installer, and website.
902 stars 37 forks source link

Feature Request: Signin with Keybase #3292

Open balupton opened 5 years ago

balupton commented 5 years ago

I'm quite perplexed that this isn't something Keybase offered from day 1. It seems very sensible to me that services would be able to login with keybase, which:

  1. creates an account on the service via the user's keybase account authorisation
  2. adds the service to the keybase verified services/accounts for that profile/user
  3. lets the service now what other accounts the user is verified with on keybase
dscotese commented 5 years ago

I imagined a hacker-frustration feature that keybase could offer. I registered the domain name inid.me before I ever heard of keybase, but keybase already implements a lot of what this idea needs. Here's how it works:

  1. A third-party website (TPW) discovers and contracts with keybase to protect its users through keybase.
  2. A member of TPW discovers and decides to use keybase to protect himself.
  3. The member creates a "Realtime Contact List" (RCL) which connects names with messaging platform IDs identifying people who know the member.
  4. Some visitor to TPW uses the member's password to log into TPW.
  5. TPW displays "Waiting for keybase authentication" to the visitor.
  6. TPW sends keybase an authentication request for the member.
  7. Keybase creates a code and sends it to the member in a message that provides them with guidance on what to explain to a friend who will call to help.
  8. Keybase sends messages to five (default) of the people in the RCL. These messages say "Hi! Your friend, [member name], has protected one of their accounts with keybase. They'd appreciate it if you get in touch with them to verify that they are trying to log in. Will you try? (Y/N)"
    1. The friend can reply Y or N, or not at all.
    2. As soon as keybase receives the (first, second, third, user-configurable? random?) Y (from a friend I'll call Helper):
      1. Keybase sends another message to all the other messaging platform IDs that says "Another friend of [member name] is taking care of this. If you'd like to learn more..." plus whatever your marketing guys think is best.
      2. Keybase sends Helper a message that just says "Thanks! If your friend is trying to log in, they will have a code for you to send me. If you can't reach your friend, text back 'no answer'."
  9. The friend who answered Y calls the member, "I got this weird message..." and they have a conversation.
  10. At this point, let's assume the member is the visitor who logged in.
    1. At step 5, the member was reminded to check their own keybase account which has the message described in step 7.
    2. The member asks his friend to text the code from that message back to keybase, which the friend does.
    3. Keybase, upon receiving the code, sends TPW an "Authentication Success!" message.
  11. Now let's take the case where the visitor to TPW was a hacker.
    1. If the member has already noticed the alert from step 7, Keybase would be sending the message from step 8. ii. a. to everyone it messaged, and we would skip to step iii below.
    2. Otherwise, the member thanks his friend, explaining that he is being hacked!
    3. The member looks in his Keybase app for the alert with the code and reports the activity as fraudulent. Keybase creates a reminder for the member to change their password on TPW.
    4. TPW displays a message inviting the hacker to earn kudos or a reward from the member if he adequately explains how he got the member's password, or perhaps a custom message from the member himself, or he is directed to the keybase.io site (which may have a cookie that identifies him, or perhaps just invites the hacker to create an account).
  12. Now let's take the case where Helper is unable to reach the member.
    1. Helper may text back "No answer" in which case:
      1. Keybase will send another alert to the member explaining that they are unreachable.
      2. Keybase then lets the user choose to try the same friend again, leading back to step 8. ii. b., or find a new one, leading back to the beginning of step 8., or else quitting, in which case Keybase sends "Authentication Failure" back to TPW.
    2. After a user-configurable timeout, keybase sends Helper a message asking, "Are you still trying to reach [member name]? (Y/N)" and then repeats this step unless the Helper answers N.
      1. If the Helper answers N, we go back to step 12. i.

As you can see, in both cases, keybase can expand the number of people benefiting from its services, and also make hacking those people much more difficult.