[HN Gopher] Show HN: An Elliptic Curve-Based Secure Chat, Writte...
       ___________________________________________________________________
        
       Show HN: An Elliptic Curve-Based Secure Chat, Written Using Rust
       and Protobuf
        
       This is a project I made to learn more about crypto. I've also
       written a [post](https://vaktibabat.github.io/posts/ecurvechat/)
       that explains all the crypto concepts and algorithms used in the
       project, and how I implemented them. I'd be very glad for any
       feedback about both the code and the post :)
        
       Author : vaktibabat
       Score  : 54 points
       Date   : 2024-09-19 18:22 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | woodruffw wrote:
       | First of all, nice work! Learning by doing is great, especially
       | with cryptography.
       | 
       | Some observations from a very quick scan:
       | 
       | 1. You should include a disclaimer somewhere in the repo that
       | this is an educational project, not something people should
       | seriously use. This is the "escape hatch" for the "don't roll
       | your own crypto" rule.
       | 
       | 2. You're rolling your own curve math, including ECDH and ECDSA.
       | These are not easy to get right; in particular, it looks like
       | you've got a classic "attacker can send you a point not on the
       | curve" bug here[1], unless I'm missing where you validate the
       | other party's point.
       | 
       | 3. Your protocol seems to allow variance over the curve
       | parameters, which is notoriously dangerous (and is why X.509 and
       | similar protocols prefer "named curve" sets over explicit
       | parameter sets).
       | 
       | [1]:
       | https://github.com/vaktibabat/ecurvechat/blob/4a1d91bd02bbc8...
        
         | 0x457 wrote:
         | I think size of the readme covers #1
        
         | vaktibabat wrote:
         | Thank you! I'll try fixing these.
        
       | GraphEnthusiast wrote:
       | Implementing an Elliptic curve correctly is tricky, and in your
       | post a quick CTRL-F didn't turn up the phrases "constant time" or
       | "side channel". A good next step would be to look up various side
       | channel attacks on elliptic curve implementations and work
       | through mitigating them.
       | 
       | Also, your README needs a disclaimer, like others have said.
        
         | vaktibabat wrote:
         | Thanks! Mitigating side channel attacks does seem like an
         | interesting next step, I'll try doing it.
        
       | simonjgreen wrote:
       | I love the learning project :)
       | 
       | Now invite people to break it
        
         | vaktibabat wrote:
         | Thank you :)
        
       ___________________________________________________________________
       (page generated 2024-09-20 23:02 UTC)