-
Notifications
You must be signed in to change notification settings - Fork 101
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
Implement full TLS1.3 OQS signature support #9
Comments
email input by @anhu:
Here's what my plan is (in terms of github issues and in order of resolving): #2, #6, #7, #8, #3 and concluding with #9. From the work on the KEM provider I fully expect upstream changes to be(come) necessary well before concluding #9/openssl/openssl#10512. Thus, depending on how fast we progress on the issues above relative to the OSSL3 release timeline, we may either do upstream PRs or a fork of upstream master. For either option to work out, please be aware that you (probably your employer) need to sign up to this: From my own corporate history I have the hunch that getting this signed may take "longish", so why no get started on this now, @anhu? If you agree with all of this, I'd suggest technical work to begin by looking at this and then "diving into" #2: After we'll have a standalone SIG-capable provider (e.g., doing CMS), I'd expect the TLS parts to be relatively straightforward. |
Hi Michael , Thanks! I have already signed up for the OpenSSL Contributors Agreement since we wanted to make 2 minor contributions to the OpenSSL code base:
It likely comes as no surprise to you that we are implementing our own closed source provider. I am actually currently looking into #2, but for our provider. Of course, our provider will be different from oqs-proivder's internals. As such, the code that I will have will be distinctly different than what you will need and will obviously not patch in cleanly. However, I would be happy to give pointers, helpful hints and warnings about potential dead ends. For example, you won't need to write encoder import methods because there are no other implementations of these algorithms to import from. When I first started looking at the provider encoder documentation I spent a lot of time trying to figure what I needed to do for the encoder's import API and finally figured out that it was not necessary. Hopefully, I've prevented you from wasting that time like I did. |
Quite possibly: I have spent a lot of time scratching my head about the encoder/decoder concepts and how they'd need to use the X509 APIs -- and still do :-( so anything I don't need to wonder about helps. |
Same here!! It does not help that encode_key2any.c is hard to read (for me) due to macro defines.
For me TIP: You'll also need to get openssl's |
I'd like to propose a direction for this issue: Providers that supply new and unknown sigalgs for TLS 1.3 signature verification should be able to do so via a fully pluggable mechanism called the capabilities query. OpenSSL will query the provider asking it what kind of sigalgs it supports. During this call, the provider will register the name and the TLS 1.3 code point of the sigalgs it supports. That name can be referenced in .conf files or command line parameters to specify supported sigalgs. This would be similar to the way it currently works for supported groups in TLS 1.3. Something that needs to also be considered is the OIDs for the signature and public key of the registered sigalgs. Do the OIDs need to be associated with the codepoint and name as well? |
Fully agree: All this "registration" (or reference) information (at the very least name and OID) needs to be accessible to OpenSSL. |
Yes. Name+OID are automatically associated already. But much like groups, you need to associate the sigalg code points with the name as well. Perhaps the term "code point" is obscure so I'll just explicitly paste the relevant section from the TLS 1.3 spec here:
As I'm sure you'll remember with your work with groups, you had to return your code points during a capabilities query. The same thing would have to happen with signature algorithms. OpenSSL would have to do a capabilities query for signatures and it would pass the name of a signature algorithm and then the provider would respond with the code point that corresponds to that name if it supports that algorithm. Hopefully, this makes things clearer? |
Fixed by openssl/openssl#19312 |
Warning: This is a big issue. Anyone willing to tackle it should consider this requires substantial OpenSSL3 support (see for example openssl/openssl#10512). Also helpful to get started may be discussions documented here.
The text was updated successfully, but these errors were encountered: