Update on BitTorrent Chat

Abe —  December 19, 2013 — 60 Comments

Inside BitTorrent’s approach to building serverless messaging apps.

121713-bt-chat-blog-2

First, a few words on Chat’s origins. Here at BitTorrent, we value privacy. With the news this year reminding us all of the susceptibility of the communications platforms we rely on to snooping, we found ourselves wanting something new, something secure, something private. We ultimately realized that we were uniquely qualified to build this platform.

The primary weakness that we see in the available communications platforms is that they all rely on some central server to route and store all of your communication. Even if your provider can deliver industry-standard security, they cannot provide you with any kind of assurance that your communication is private. All it takes is the right (or wrong) person gaining access to your provider’s central servers, and your privacy evaporates.

Enter BitTorrent Chat. We’re building a product that allows you to talk to your friends using peer-to-peer. No central authority required.

Solving for serverless chat

But how would this work? If you don’t have a central authority, where do you login? Where is your username and password stored? How do you route connections between users? These are the engineering issues that we’re tackling with Chat.

Using public key encryption to protect user privacy

With BitTorrent Chat, there aren’t any “usernames” per se. You don’t login in the classic sense. Instead, your identity is a cryptographic key pair. To everyone on the BitTorrent Chat network at large, you ARE your public key. This means that, if you want, you can use Chat without telling anyone who you are. Two users only need to exchange each other’s public keys to be able to chat.

Using public key encryption provides us with a number of benefits. The most obvious is the ability to encrypt messages to your sender using your private key and their public key. But in public key encryption, if someone gains access to your private key, all of your past (and future) messages could be decrypted and read. In Chat, we are implementing forward secrecy. Every time you begin a conversation with one of your contacts, a temporary encryption key will be generated. Using each of your keypairs, this key will be generated for this one conversation and that conversation only, and then deleted forever.

Building an encrypted DHT

Underlying BitTorrent Chat is the method we use to translate a public key to an IP address. Just like our flagship products BitTorrent and µTorrent, Chat uses a distributed hash table to find IP addresses. The DHT removes the need for a central server to route messages. (Curious about DHT? A short reading list, below.)

In essence, the DHT is a web of peers cooperating. You ask your closest neighbor if they know of the person you are looking for. You then ask their neighbors, and their neighbors’ neighbors, and so on. Eventually, you’ll get to a peer (neighbor) who knows the address of the person you’re looking for. They return this address to you. This is done in such a way that only you know who you are looking for. (The person you are looking up would also know.)

If you understand the fundamentals of the DHT, you might be wondering, “How is a DHT more secure? Aren’t you giving your IP address out to the entire DHT? That’s LESS secure than a central server!” With Chat, we are expanding on what we can use the DHT for. We have updated our DHT protocol to support encryption. The new DHT protocol enables users to find each other securely and privately.

We could go on forever about the engineering behind Chat. But that’s all for now. Sign up for the Private Alpha for more details and the latest news. We can’t wait for you to try out Chat!

Read more about DHT technology:

BitTorrent Tech Talk on the DHT

Wikipedia article on BitTorrent’s version of the DHT

Wikipedia article on DHT technology in general

Wikipedia article on public key encryption

Wikipedia article on forward secrecy

Abe

Posts

Abraham Goldoor is a software engineer on the BitTorrent Chat team. Abe is nostalgic for the Internet of his youth, when anonymity was the standard and his parents were oblivious.
  • Guest

    Wow.. when we can start beta testing then?

  • http://oskarhane.com/ Oskar Hane

    Can’t wait to try this!

  • matthew21995

    Looking forward to alpha or beta testing so badly!

  • http://kevburnsjr.com Kev Burns

    Will I be able to use the same account synced to multiple devices?

    • Сёма Мрачный

      your “account” will be synced with all peers and therefore with all devices that you want, I guess.

      • Christian Bock

        Technically it won’t be that hard to sync 2 or more devices, if at least 2 of them are online at the same time. Look at Bittorrent sync – you could implement a chat like that in no time, using 1 chat folder for every chat connection per person and putting files there…

    • Abraham Goldoor

      Maaayyyybe… =) It’s certainly been explored, I just can’t reveal everything just yet.

  • Jesse

    With this type of implementation how would one be able to load previous chats from other devices? When I leave my desk from talking with a friend then want to start talking with them on my phone, will I have to start a new conversation with them? Would this be considered the sync part of the program where I would have to keep all devices on for the chat conversations to be synced?

    What about when all devices are offline, will I be able to receive chats at a later time or will the sender just not be able to send messages when I’m offline?

    • FunnySheet

      Just use something regular for normal chats. Use this when you want to rob a bank or start a revolution, after all what other reason would you have for such maximum security, certainly not to discuss your girlfriends menstrual cycle.

      • Christian Bock

        You always want to encrypt as much as possible to not be suspicius when you suddenly start to encrypt messages. Also, a probable cause can come from the tinyest fraction inside your mensy talk…

    • Abraham Goldoor

      You bring up excellent points. I’d really like to answer your questions in full, but we want to hold back some details for further blog posts ;-) But just know that syncing between devices, and offline messaging support have been explored… stay tuned for more soon.

  • Kamil Trebunia

    Great progress, keep it up! I wish it was possible with some interoperable tech stack, like WebRTC, so that we could talk to pretty much anyone with the browser (if they don’t have anything dedicated) – not necessarily with standalone bit torrent chat client.

    • Abraham Goldoor

      Wait and see… you just might be pleasantly surprised

  • Alfredo Levy

    Does skype use a central server? or is peer to peer?

    • rysliv

      The only way they can sync messages between devices, connect the service with an API and have usernames and passwords is that they have a central server.

      • Kenny Levinsen

        They don’t – Chat messages sync between clients. In order for a chat to be synced, 1 other participant of the chat needs to be online, be it the people you talk to, or the device you used to perform the chat.

        Chats are P2P.

      • kanylbullen

        Skype uses (or used) both Client-Server and P2P techniques actually. The swede who designed the original skype protocol started out at Kazaa (http://en.wikipedia.org/wiki/Kazaa)

      • FuturesBrightFuturesCrypto

        It’s not the only way. Look at DHT and public-private key encryption. BitMessage, RetroShare, etc.

    • Animus

      Both actually. While both the sender and reciever must be online for a message to be sent, the message will still be sent through Microsofts servers on the way. This was not the case before Microsoft bought Skype though

  • ercorbata

    Wow! Looks great! I never use WhatsApp. I’m keeping my mobile phone chat
    virginity for Bittorrent Chat jaja Mi question is: If I send a message
    to an offline person and then go offline too, my message will be sent
    when I go online again or it will be stored encripted in another
    Bittorrent user ultil delivered?

    • Сёма Мрачный

      others stored yours, you stored others, I guess.

      • Abraham Goldoor

        It’s a really good question and a hard one to solve. I can’t reveal more yet, but just know that we’ve thought about offline messaging quite a bit… more to follow.

        • Сёма Мрачный

          I think that it is possible to keep your encrypted workflow (like messages and contact list) on other peers. it may be in separate containers: all contact lists of all peers (because as have small size) should be on every machine, each message (in a few copies) should to be atomized on some. messages may have time mark to be killed. all data transfers by I2P scheme. I believe in you.

        • RestfullBull

          TextSecure have solved this, there’s a protocol in their blog.

          BTW , how does one hide the p2p communication ? TOR or is there something better?

  • draconicrose

    Pretty amazing stuff. I can’t wait to see how things will turn out. I have the feeling the worst part about this will be getting non-techies to use it as well.

    • Abraham Goldoor

      Very astute. It’s definitely a tricky balance to craft a product based on real crypto that is easy enough to use for everyone. We’re really excited though by some of the solutions we’ve devised. Stay tuned… we’ve got many more exciting details to share!

  • http://www.johnswords.com John Swords

    I cannot wait to beta test this for you guys.

  • rysliv

    What would be useful if this came to all mobile platforms; Windows Phone, Android and iOS, maybe Blackberry. Not just the two most popular ones, iOS and Android. That’d be very disappointing.

    • Abraham Goldoor

      Don’t lose hope! We are exploring many platforms, and will be supporting Desktop OSes as well. We have no plans to ONLY support iOS and Android at this point.

      • http://www.dsaif.com/ Saif

        Well that sucks

        • Abraham Goldoor

          ?? This comment confuses me. I was trying to say that the previous commenter might be delightfully surprised… we have plans for many platforms.

  • TrappedMonster

    Will it be open source, or will it be useless?

  • http://www.top-favoris.co.cc SMed79

    Pefff :-/ request sent (October 03, 2013) to join and try alpha program for BitTorrent Chat BUT Still waiting !!!

    • Abraham Goldoor

      Sorry! =( Know that it’s not a black hole… now that you’re signed up, you’re among the first to try it out!

  • Brad Laue

    This really needs to have source published. How can people trust it otherwise? Come on guys.

    • Skeptikel

      Agreed. And contrary to what the general public tends to think at first glance, security is not about proprietary, undisclosed algorithms, as if the logic of the security/privacy measures work like a simple password or secret hand-shake…

      There is indeed the matter of trusting the code that is handling security/privacy, and there is also the matter of having the overwhelmingly vast amount of combined expertise of the open-source community to ensure that potential flaws and vulnerabilities are detected, analyzed, and eliminated. Of course, this is far more successful when there are thousands if not millions of minds, than with only those few who are permitted access to proprietary code.

      While I do not have any citations lined up, nor am I much of an authority on the matter, what my peers and mentors seem to almost unanimously agree upon is that open-source has been demonstrated time and time again to be a far stronger policy than proprietary. And of course, the entire industry is moving toward open-source, with profit sources shifting to services, support, requirements-oriented development/refactoring/deployment, etc… More sustainable economically for that matter, contrary to the initial shock value of “but if more and more is going to be open and FREE, what about our careers??” ;-)

    • mikeswierczek

      I would be satisfied if they publish an open protocol specification anyone can implement.

  • Guest

    In the hope of no country except those who had power to cripple encryption standards can log the chat?

  • disgusted

    I hope that a very secure tech solution will appear in response to the
    problem created by the political will to steal our privacy.

  • Soul

    +1 for open source

  • guest

    will this require to open ports? if so, it won’t be usable for unexperienced users…

    • Abraham Goldoor

      If by that you mean will users have to have the know-how to manage their own port forwarding/NAT/firewall to use Chat, then no, they won’t need to do that. We’re certainly supporting NATPMP/UPNP, and are looking for Chat to be as useful right out of the box for users of all experience levels.

      • guest

        yes, that’s what i meant. nice. thanks for explaining!

        • Abraham Goldoor

          Absolutely! I’m glad you asked. A big part of the work is not only being smart about the security and privacy of an application like Chat, but also… what will usability look like? We’re working very hard here at BitTorrent on all of our products to address all levels of expertise.

  • Christian Bock

    FUCK YES

    • Abraham Goldoor

      I concur. =)

  • Willem van Dam

    It would be amazing if you could also create chat rooms on your website where people can join in at any time. It would be something like IRC only this time with a password or something, or chatrooms on websites where you need to be invited to.

  • stef brun

    ^^…

    • Abraham Goldoor

      ??

      • stef brun

        Hi… better^^

        2013/12/23 Disqus

  • http://alexgorbatchev.com Alex Gorbatchev

    Not placing trust into any closed source security solution willingly.

  • Сёма Мрачный

    will you have some difference from Bitmessage? I found this open-source project in active development stage. maybe you should make union with it.

    • FRIdSUN

      From what I know this is different from Bitmessage that the message in Chat is transferred directly between the sender and the recipient, while all Bitmessage clients receive all messages and try decryption on each of them. I am interested how Bittorrent is gonna address offline messaging in this model.

  • SAM

    A couple of months ago my wife sent me a picture of a truck that she liked. No more searching I even wrote the name on my mobile. And the next day I received in my email an advertisement for the truck.

    It is disturbing to know that they are spying on us and sold our information to that level.

    Privacy no longer exists!

    I’m hoping Bit Torrent Chat!

  • http://www.zdnet.com/blog/open-source/ Social Butterfly

    Excellent work guys! BitTorrent Chat will usher in a new era of secure P2P communications. My hats off to all the coders who are going to make this a REALITY!

  • http://googleplus.VoluntaryMan.com/ William Thieme

    do we get encrypted dht for bittorrent downloads, too?

  • abral

    There was a similar opensource project called CSpace (http://download.cnet.com/CSpace/3000-7240_4-10564457.html). I can’t find its source code anymore.

  • FuturesBrightFuturesCrypto

    The developer’s exceptional silence about the openness of the source code is highly suspicious, while they answer many other things in the comments below.

    Sorry, open source or it didn’t happen. Security through obscurity belongs to our pre-Snowden era illusion of safety.

  • gaborgabor

    Any news? Has a private release been published? Screenshots?

  • Richard Sandberg

    Hi, having read this awesome written piece I’m also pleased to fairly share my familiarity here with colleagues.chats