I've just come across the large variety of encryption ciphers available in the UWP WinRT API, both symmetric and asymmetric. I'm trying to figure out which are commonly seen as the most favourable from the choices available for UWT (obviously this is very context specific, but surprisingly many seem to be outdated or clearly just "worse").
With symmetric, I've seen that AES is usually a good go-to algorithm of choice (this post for example), and this site says AES_GCM is pretty much the best variant.
With asymmetric the two main options presented in UWP's API are ECDSA and RSA. I was sceptical if ECDSA was actually an encryption algorithm, but this answer certainly made it seem so, even if the name says "digital signature". Now all of these names include a hash, and their descriptions state that there is signing involved with this hash, which confused me. Why is this explicit encryption algorithm signing this stuff too?
Anyway, this post, and this article both suggest that OAEP is better than PKCS#1, which then leaves us with the following options for asymmetric encryption:
ECDSA_P256_SHA256
ECDSA_P384_SHA384
ECDSA_P521_SHA512
ECDSA_SHA256
ECDSA_SHA384
ECDSA_SHA512
RSA_OAEP_SHA1
RSA_OAEP_SHA256
RSA_OAEP_SHA384
RSA_OAEP_SHA512
Given that P256
, P384
and P521
are the public key size for ECDSA, then that raises the question of what the difference is with the ECDSA without P256, P384 or P521? What applicable difference do these differences make?
Okay, cheers for reading so far! I've summarised my questions below:
- Is the assumption that AES is "best" a valid one, alongside the assumption for AES_GCM?
- Is ECDSA actually an encryption algorithm, given the name?
- Why do the UWP API asymmetric encryption algorithms all reference signing with hashes in their descriptions? Is this really the case, and if so why? Surely if they wanted authentication through signing it would be a separate process?
- Is OAEP generally considered better than PKCS#1?
- What is the difference between the ECDSA algorithms which do and don't specify public key size (eg
ECDSA_SHA256
vsECDSA_P256_SHA256
)? - What difference do the hash sizes (and public key sizes for ECDSA if relevant) make, and what about if authentication isn't needed (which I guess would be why they're hashing and signing in the first place)
Any and all help is greatly appreciated, thank you for your time! :D