I just read this article RSA keys under 1024 bits are blocked, and in my .NET software I make extensive use of 384bit keys. Will my program still be able to generate/store/read keys from the MachineKeyStore using the RSACryptoServiceProvider? Or will I be forced to send out a patch?
I got a reply from Microsft (Kurt L Hudson), and this update should only affect chainbuilding, so it seems RSACryptoServiceProvider will continue to function with small keysizes after August 2012.
This is a suggested answer to a question that came up in the comments.
You could probably find a way to use a symmetric method to authenticate clients. I'm assuming right now youre using a typical RSA signing scheme, in which a message hash is signed by a clients private key, which can then be verified by the public key.
You could perhaps perform an exchange of a persistent key and then encrypt the message digest with that key instead of the asymmetric one. You would still be guaranteed that whoever sent the message knew the secret key, though you would have no way of verifying whether the message was sent by the client or the server (since both know the key). If the client challenged the server during authentication, that would help prevent man in the middle attacks (though the client would need to have the public key of the server embedded locally)
If minimizing signature size is critical, then RSA is poor choice to begin with. DSA and ECDSA both produce shorter signatures with much greater strength that RSA. However, neither DSA or ECDSA will come close to the speed of signature verification for RSA 384.
If, however, you must continue using the keys you have then you will have to change your code to avoid using Microsoft cryptography APIs. You can use for example the Bouncycastle C# library if you use C#. Finally, you can complain to Microsoft about this. I doubt it will do any good but you can always try.
© 2022 - 2024 — McMap. All rights reserved.