Recientemente hemos estado buceando con el uso de OpenSSL para ayudar a cifrar/descifrar algunos datos que tenemos. Cada "cliente" tendrá un par de claves Pública/Privada y un Certificado X509 otorgado por una Autoridad Certificadora local. Ahora estoy buscando encriptar/descifrar datos con ese par de claves.Desglose de datos de gran tamaño para el cifrado RSA
Todo lo que he visto muestra usando los métodos RSA_public_encrypt
y RSA_private_decrypt
para encriptación RSA. Pero la cantidad de datos que puedo cifrar de una vez está limitada por RSA_size(rsa) - 41
para el tipo de relleno RSA_PKCS1_OAEP_PADDING. Así que mi pregunta es cómo cifrar grandes cantidades de datos mientras se apega a nuestro esquema RSA (sin frases clave estáticas, etc.). Estaba pensando en dividir los datos en fragmentos y luego en encriptarlos, pero parece que está derrotando el punto de relleno.
Cualquier ayuda sería apreciada.
Tiene sentido. ¿Cuál es la mejor forma de generar una clave aleatoria en C? Use arc4random() para seleccionar caracteres aleatorios de UTF8? ¿Hay una clase "Secure Random" en openssl o c's stdlib? – Staros
@Staros arc4random() parece una buena opción ya que suena como un generador de RC4 criptográficamente fuerte. Sin embargo, también echaría un vistazo a la respuesta de Erickson en esta pregunta y verificará las posibilidades de usar OpenPGP: manejaría todo por ti. –
@Staros - Lee el número requerido de bits de '/ dev/random'. No necesitan ser caracteres en ninguna codificación. – aaz