index.md (8766B)
1 +++ 2 title = "How to Replace Keybase in 3 Easy Steps" 3 date = 2020-07-03 4 updated = 2021-04-12 5 [extra] 6 type = "post" 7 +++ 8 9 Ever since [Keybase was acquired by Zoom][keybase-joins-zoom], a 10 [company][zoom-security-one] [with][zoom-security-two] 11 [a][zoom-security-three] [very][zoom-security-four] 12 [bad][zoom-security-five] [history][zoom-security-six] 13 [with][zoom-security-seven] 14 [security][zoom-security-eight]/[privacy][zoom-security-nine], 15 [people wanted an alternative][zoom-security-ten]. There have been a 16 few different alternatives proposed: this is ~~the best~~ mine. 17 18 <!-- more --> 19 20 ## What is Keybase? 21 22 Before we talk about replacing [Keybase][keybase], we should have a 23 good idea of what Keybase actually is. It's main features are as 24 follows (ordered as on the website): 25 26 * E2EE chats and messaging (people and teams). 27 * Cryptographic identity verification from around the net. 28 * [KBFS][kbfs] (Public signed file hosting, private E2EE file storage 29 w/ sharing, [Static site hosting??][kbfs-static]) 30 * Git repositories? Crypto? [An alternative to PGP?][saltpack] 31 32 ## Previous Attempts to Replace Keybase 33 34 I'm not the first person to try this, obviously. Some brave folks have 35 tried to build Keybase alternatives, such as [keys.pub][keys.pub] and 36 the brand-new [Keyoxide][keyoxide]. I've tried both, but found that 37 though they both are good in their own right, they are not the 38 solutions that I am looking for. 39 40 ## OK Time for the Steps 41 42 ### Step #1: Chat/Messaging 43 44 There are a few great pre-existing options for encrypted messaging: 45 [Signal][signal], [ProtonMail][protonmail] if you want to go full 46 email, [Telegram][telegram], and [WhatsApp][whatsapp]. However, they 47 all have their problems (though I use the first two on a daily basis). 48 Signal requires a phone number, and is more of an iMessage/text 49 replacement than a Slack-style chat app. Protonmail is literally not 50 chat – it's email. Telegram is (debatably) [not][telegram-security-one] 51 [secure][telegram-security-two]. If you use WhatsApp for security you 52 might be crazy – I only use it because it's *the way* to communicate 53 with people in the Middle East and Africa. 54 55 Instead, I would recommend you use [**Matrix**][matrix]. Matrix is an 56 "open network for secure, decentralized communication," and it's the 57 perfect replacement for Keybase's chat ~~and I would argue most other 58 chat apps too~~. It utilizes E2E encrypted messaging, and can be 59 self-hosted as well ~~or if you're cheap like me just get your friend 60 to host~~. 61 62 In addition to a Matrix server, you also need a client. For this, I 63 recommend [**Element**][element] – though [Nio][nio], once stable, 64 will almost surely be my go-to. Element is a beautiful Matrix client 65 with a bunch of awesome features, including Slack-like integrations, 66 and apps for pretty much every major platform (Linux, MacOS, Windows, 67 iOS, Android, and a web client). ~~Plus it looks a lot like Discord.~~ 68 69 ### Step #2: Identity verification 70 71 Replacing Keybase's [original function][keybase-archive] is probably 72 the most difficult part of this tutorial: cryptographically verified 73 identity proofs is a great and innovative idea. I would swap this out 74 with an [**IndieWeb**][indieweb] profile – one [part][h-card] of the 75 larger [microformats][microformats] HTML structure. There are some 76 pretty great tutorials out there (I would recommend [this 77 one][kev-article] by the fantastic [Kev Quirk][kev] and [this 78 one][brian-article] by [Brian Wisti][brian]), so I won't go into too 79 much detail about exactly how to do that. However, it's important to 80 note that though Kev recommends hiding your h-card with the 81 `display: none;` property: [don't do that][invisible-metadata]. I just 82 merged my about and contact pages onto my homepage, and added the 83 microformats classes to my existing markup. 84 85 {{ image(sources=["h-card.png"], fallback_path="h-card.png", fallback_alt="My Indieweb h-card") }} 86 87 ### Step #3: File Storage 88 89 Replacing KBFS is easy to do, but hard to get right. Swapping to 90 [Google Drive][drive] is probably the move that most people would 91 make, but that abandons the entire security/encryption aspect of 92 Keybase. There's also [Dropbox][dropbox], but that has the same 93 problems as above. [ProtonDrive][proton-drive] has potential, but it's 94 not out yet. 95 96 **EDIT:** ProtonDrive is now in beta for paying subscribers, but I am 97 shifting away from the Proton ecosystem for other reasons and do not 98 recommend it. More in a future blog post. 99 100 Enter [**Syncthing**][syncthing]. [Nikita Tonsky][sync-article] wrote 101 one of my favorite posts of all time about Syncthing – go read it. One 102 reason Syncthing is so great is that it's not the same thing as KBFS 103 or any of the other "Drive" solutions. Instead of being a file hosting 104 system, it's a "continuous file synchronization program" – aka p2p. 105 You have no data limits other than your storage and no third-party to 106 worry about. Plus, sharing folders is also incredibly easy. Just read 107 the article. 108 109 ### Bonus Step #4: Video Calling 110 111 It would be a shame to talk about text chat, or really any form of 112 communication, in this new pandemic age without talking about video 113 chat. After all, the whole reason I'm writing this article is because 114 the new videocalling giant [Zoom][zoom]. So, how have I replaced Zoom 115 and how does that relate to replacing Keybase? Well, Matrix happens to 116 have a fantastic [Jitsi Meet][jitsi] [integration][jitsi-in-matrix]. 117 Plus, the folks over at Jitsi are [working on E2E encryption for their 118 calls][jitsi-e2e]. I've integrated Jitsi Meet into my self-hosted 119 instance of Matrix, and now all my videocalls are just that – mine! 120 121 ## Summary 122 123 * Swapped chat to Matrix and Riot. 124 * Swapped identity verification to Indieweb. 125 * Swapped file storage/sync to Syncthing. 126 * Added videocalling to chat program via Jitsi. 127 128 ## Conclusion 129 130 Keybase is a great service, and the people who work there should be 131 really proud of what they've built. However, given Zoom's aquisition 132 of the company, the stability and security of the product have been 133 called into question. So, ever one to hop on a hype train, I jumped 134 ship. I'm really happy with my solution, and I'd love to hear your 135 thoughts as well. 136 137 [keybase-joins-zoom]: https://keybase.io/blog/keybase-joins-zoom 138 [zoom-security-one]: https://medium.com/bugbountywriteup/zoom-zero-day-4-million-webcams-maybe-an-rce-just-get-them-to-visit-your-website-ac75c83f4ef5 139 [zoom-security-two]: https://theintercept.com/2020/03/31/zoom-meeting-encryption/ 140 [zoom-security-three]: https://twitter.com/c1truz_/status/1244737672930824193 141 [zoom-security-four]: https://protonmail.com/blog/zoom-privacy-issues/ 142 [zoom-security-five]: https://www.axios.com/zoom-closes-chinese-user-account-tiananmen-square-f218fed1-69af-4bdd-aac4-7eaf67f34084.html 143 [zoom-security-six]: https://twitter.com/nicoagrant/status/1268020841054269440 144 [zoom-security-seven]: https://citizenlab.ca/2020/04/move-fast-roll-your-own-crypto-a-quick-look-at-the-confidentiality-of-zoom-meetings/ 145 [zoom-security-eight]: https://twitter.com/DanAmodio/status/1245329512889487361 146 [zoom-security-nine]: https://twitter.com/Ouren/status/1241398181205889024 147 [zoom-security-ten]: https://news.ycombinator.com/item?id=23103386 148 [keybase]: https://keybase.io/ 149 [kbfs]: https://book.keybase.io/docs/files 150 [kbfs-static]: https://book.keybase.io/docs/files#keybase-pub 151 [saltpack]: https://saltpack.org/ 152 [keys.pub]: https://keys.pub/ 153 [keyoxide]: https://keyoxide.org/ 154 [signal]: https://signal.org/ 155 [protonmail]: https://beta.protonmail.com/ 156 [telegram]: https://telegram.org/ 157 [whatsapp]: https://www.whatsapp.com/ 158 [telegram-security-one]: https://news.ycombinator.com/item?id=6936539 159 [telegram-security-two]: https://translate.google.com/translate?hl=en&sl=ru&u=http://habrahabr.ru/post/206900/ 160 [matrix]: https://matrix.org/ 161 [element]: https://element.io/ 162 [nio]: https://nio.chat/ 163 [keybase-archive]: https://web.archive.org/web/20140322062148/https://keybase.io/ 164 [indieweb]: https://indieweb.org/ 165 [h-card]: http://microformats.org/wiki/h-card 166 [microformats]: http://microformats.org/ 167 [kev-article]: https://kevq.uk/how-to-create-an-indieweb-profile/ 168 [kev]: https://kevq.uk/ 169 [brian-article]: https://randomgeekery.org/post/2020/04/indieweb-h-cards/ 170 [brian]: https://randomgeekery.org/ 171 [invisible-metadata]: https://indieweb.org/antipatterns#invisible_metadata 172 [drive]: https://www.google.com/drive/ 173 [dropbox]: https://www.dropbox.com/ 174 [proton-drive]: https://twitter.com/ProtonMail/status/1278389663078768641 175 [syncthing]: https://syncthing.net/ 176 [sync-article]: https://tonsky.me/blog/syncthing/ 177 [zoom]: https://zoom.us/ 178 [jitsi]: https://jitsi.org/ 179 [jitsi-in-matrix]: https://matrix.org/blog/2020/04/06/running-your-own-secure-communication-service-with-matrix-and-jitsi 180 [jitsi-e2e]: https://jitsi.org/blog/e2ee/