Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unclear note #539

Open
doublex opened this issue Aug 12, 2024 · 3 comments
Open

Unclear note #539

doublex opened this issue Aug 12, 2024 · 3 comments

Comments

@doublex
Copy link

doublex commented Aug 12, 2024

This note:
Note 1: Minicrypto binding is capable of signing a handshake using the certificate's key, but cannot verify a signature sent by the peer.

Question:
Does this mean that picotls is vulnerable to man-in-the-middle attacks when used as a client?

@huitema
Copy link
Collaborator

huitema commented Aug 16, 2024

A client using picotls with the minicrypto backend is indeed vulnerable to MITM attacks. A client using picotls with the openssl backend is not. The MbedTLS work in progress would fix that, but using picotls with the MbedTLS backend is currently only supported when using the picoquic implementation of QUIC.

Servers using picotls and either backend are OK.

@doublex
Copy link
Author

doublex commented Aug 21, 2024

@huitema
Do you think it would be complicated to implement signature verification in minicrypto?

@huitema
Copy link
Collaborator

huitema commented Aug 23, 2024

It depends. If you want to support HTTP, for example, you must be able to verify the certificates commonly used on the web, and that means having implementations of RSA, ECDSA, etc. This means finding a package that implements them and can be used by picotls. Then, you will need to write the certificate chain verifier, with all its complexity. And you will have to deal with managing the error cases, decide whether to bypass them, etc. It can be a big job, and any bug translates into a security issue for the application.

An alternative would be, write that as a separate package, outside of picotls, and provide the certificate verification function that can be used by the application.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants