Thank you, this is very cool and helpful

вт, 22 окт. 2024 г. в 23:51, Jason E. Aten <j.e.a...@gmail.com>:
>
> I wrote this RPC package recently:
>
> https://github.com/glycerine/rpc25519
>
> `rpc25519` is a fun little RPC package that I cooked up to
> get comfortable with modern (Ed25519) rather than
> antiquated (RSA) crypto primitives.
>
> Along the way I made a very
> helpful tool called `selfy`.
> It makes generating self-signed
> certificate authorities
> and self-signed ed25519 keys easy.
> Importantly, these certs will
> work on any host. So you don't
> have to buy a domain
> name to deploy certs or this RPC system.
>
> Other cool things I discovered:
>
> 1) quic-go QUIC can get way, way more throughput
> than Go's TLS stack for lots of short messages
> and new connects. Holy cow its
> not enough close. TLS over TCP
> will start dragging
> after 100 connections in a few seconds, but
> QUIC just surges through.
> Big Kuddos to the QUIC designers
> and the quic-go implementers.
> https://github.com/quic-go/quic-go
>
> 2) QUIC is also super fun because its easy to share
> a single UDP port for your client and server. This
> can make traversing NATs easier. The rpc25519
> package does this by default, so its pretty
> easy to set up by copying what it is doing.
> See quic_server.go and quic_client.go
>
> 2.5) The only sadness to QUIC is on VPNs
> over IPv6. See the README for notes/cautions
> on this. Its nuts to me to realize that
> global IPv6 networks can be so poorly setup.
>
> 3) Setting up symmetric pre-shared keys for
> post-quantum safety is not that hard. Inspired
> by Wireguard, optionally, inside TLS, I have rpc25519
> do a quick Diffie-Hellman handshake then mix
> in the pre-shared key for forward secrecy
> over each connection. It is actually very
> little code. symmetric.go has it. The
> embedded systems guys who need pre-shared key
> support may find this a good starting
> point. TLS is an awesome beast but
> still a beast sometimes in small places.
>
> 4) The frozen net/rpc standard lib
> package is such a tight design. I
> really enjoyed reading its code.
> Since its frozen is probably not
> a great idea to build on it
> directly, so I decided to reproduce
> its interface. I glued the top layer on as a
> second API option, and its kind of fun
> to work with.
> I also added context.Context
> optionally to the server's up-calls
> so you can query your net.Conn and
> figure out who you are talking to/
> get other meta data. All
> in all, kind of delightful.
>
> Feedback welcome.
>
> Enjoy,
>
> Jason
>
> --
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/bf4411bd-c236-4ef3-8b36-35310478384en%40googlegroups.com.



-- 
Vasiliy Tolstov,
e-mail: v.tols...@selfip.ru

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CACaajQuddzW9VRMwEt7LfLAXeLPFou271JejvNOg6pmgFkphMA%40mail.gmail.com.

Reply via email to