RSA test vectors, etc.
Philip Prindeville
philipp_subx at redfish-solutions.com
Wed Apr 27 16:46:01 UTC 2022
Oh, forgot one other issue:
I also need to pick apart the RSA keys into their constituent exponents, modulus, etc. as BN's that I can then compare to bit-strings.
With the old RSA_* routines this was trivial. How does one do this with the EVP_PKEY_* interface so that it works with 1.1.x and 3.0?
> On Apr 27, 2022, at 10:43 AM, Philip Prindeville <philipp_subx at redfish-solutions.com> wrote:
>
> Hi,
>
> I've been trying to rewrite the res_crypto.so support in Asterisk to use Openssl-1.1.x and the EVP_PKEY interface, rather than the AES_* and RSA_* stuff.
>
> The AES stuff uses ECB and 128 bit keys... That's a larger issue of redesigning the entire API and the client apps to support GCM and stronger keys. Yes, I'm aware... but I'm focusing on baby steps for now.
>
> To make sure I'm not breaking anything, I'm trying to add test coverage (including test vectors) for both.
>
> AES-ECB is easy, because it's 100% reproducible.
>
> RSA is turning out to be trickier, because of OAEP and PKCSv1.5 randomness.
>
> As I see it, I have two choices:
>
> (1) test RSA as an end-to-end pipeline, encrypting, then decrypting, and verifying that there's agreement on the plaintext message at both ends--this gives no visibility into the intermediate crypt text results... for all I know, the text is going through unchanged;
>
> (2) mess with the randomness/seeding of OAEP and PSS to force it to always generate the same results--this is ideal from a reproducibility point of view, but cryptographically a nightmare;
>
> As a test, I tried to generate my crypt text from the CLI to paste into my C code as:
>
> % echo -n "Mary had a littl" | openssl rsautl -inkey tests/keys/rsa_key1.pub -pubin -encrypt -oaep -rand /dev/zero | xxd --include -c 8
>
> But repeating this command gets me different output every time, so faking out the random-number generator with something that always generates the same value doesn't seem to be sufficient.
>
> How do other people deal with this?
>
> The other tests I need to do are RSA signing and verifying. Verifying is easy because I can use a canned signature (and key, of course). Signing is more problematic, because of the non-determinism/reproducibility.
>
> Same question: how do other people deal with this?
>
> Thanks,
>
> -Philip
>
>
>
More information about the openssl-users
mailing list