3 ms·
* No confidentiality. All communications are sent plaintext. They plan to "add support in the future when solid approaches emerge". * Non-repudiable. Everythin
by codahale 11y ago
* No confidentiality. All communications are sent plaintext. They plan to "add support in the future when solid approaches emerge".
* Non-repudiable. Everything you send is signed with the public key on your GitHub account.
* Uses SHA1. (via the ghsign NPM module)
* Uses mDNS and BlueTooth LE and a gossip topology algorithm, so I'm not sure what would prevent a random third party from eavesdropping.
I would hesitate to market this as "secure".
- n8ji 11y agoContributions welcome! This is very alpha (in fact it's about five days old). Improvements come from the community. https://github.com/moose-team/friends/issues https://github.com/moose-team/friends/issues
- 13 11y agoThen why the hell are you advertising it as "secure"? There's utterly nothing secure about it.
- barbs 11y agoFrom the home page: Messages are not end-to-end encrypted, and this is not an anonymous system. See below for more details. We use the term 'secure' here to mean that we do not use plaintext transports. Although to my admittedly meagre security knowledge, I would've assumed that "no plaintext transports" would mean it was encrypted end-to-end.
- JulianMorrison 11y agopackage main import "fmt" func main(){ fmt.Println("Hello World") // Contributions welcome! }
- codahale 11y agoI really really really don't recommend outsourcing your security architecture to interested passers-by if that's going to be a core feature of your project.
- deleted 11y ago[deleted]
- drtse4 11y agoBut, real crypto. (Seriously, what's that supposed to mean? Should that increase my confidence in how "secure" this is?)
- zmanian 11y agoAren't WebRTC data channel encrypted by default? http://www.html5rocks.com/en/tutorials/webrtc/datachannels/ http://www.html5rocks.com/en/tutorials/webrtc/datachannels/
- codahale 11y agoApparently so. It uses DTLS, but I'm not sure where the certificates for that would come from or how their authenticity is verified. If it's all self-signed, then your best solution is TOFU (trust on first use). Otherwise your confidentiality and integrity are completely dependent on your network position.
- grrowl 11y ago> When you send messages, they're signed with your SSH key It seems to me that they're encrypted with your private key and paired with "username". The client then attempts to decrypt using the public key associated with that username on github. In this system, the receiver and any MITMs (okay, so everyone) know it came from "the real grrowl according to github" — authenticated but not confidential at all.
- codahale 11y agoTwo things: First, you're describing RSA signatures. "Encrypt X with your private key" means "X^D mod N" which is how RSA signatures work. In the context of RSA-based cryptosystems, it's clearer to just say "signed". Second, the ghsign library uses the `RSA-SHA1` signer, which runs the message through SHA1 before signing it. The reason it does this is because "textbook" RSA (i.e. RSA on arbitrary messages) is vulnerable to chosen-plaintext attacks.
- grrowl 11y agoThis is an invaluable comment — thank you.