Giter Site home page Giter Site logo

ssb-room-broker-auth-spec's Introduction

ssb-room-broker-auth-spec's People

Contributors

staltz avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ssb-room-broker-auth-spec's Issues

Protect tokens against spoofing by the room server

Suppose the room server is malicious and once a remote peer tries to use a tokenized alias URL, the server just responds false to the brokerAuth.request() (pretending that the alias owner is offline) and then proceeds to abuse that token to introduce another evil buddy to consume that token and force the alias owner to follow the evil buddy. Boom. ๐Ÿ’ฅ

We could try to sign or encrypt the token somehow, but in general, the room server MUST NOT know what the plaintext token is. On the other hand, how are we going to do that? The first step is the remote peer visiting the tokenized alias URL in a browser and the web browser replying with an SSB URI, which will then open the SSB app and make the muxrpc calls.

Multi-use tokens

Allow the possibility that a token can be used by many remote peers.

`brokerAuth.request()` also sends tiny proof of ownership

Problem: avoid spam from attackers trying to use the room alias. If anyone with a new app can input my alias, then that could cause a popup on my app asking for approval. The popups can get too intrusive if it's about an attacker and I have to reject them every time.

Idea: When the new app sends brokerAuth.request() it can also send a partial proof that it owns the same SSB ID, sort of like a "password". It could be the 1st word in the 24 words phrase. The "proofword".

This would create a lot more friction to brute force attacks because the room can detect that an attacker is calling too many brokerAuth.request()s and ban the attacker based on SSB ID or IP. And even in the worst case where the attacker guesses the correct 1st word (out of 2048 words), the effect is not a breach, it's simply that the old app would show the popup asking for permission.

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.