Esta sección explica cómo utilizar correctamente las llaves criptográficas proporcionadas por Milio para asegurar la información intercambiada entre nuestra plataforma y su aplicación. El proceso descrito aquí aplica de manera general, independiente del lenguaje de programación o framework que utilices.
Encriptar información
Para encriptar información que deseas enviar a Milio, utiliza la llave pública que te fue entregada. El proceso general es el siguiente:
- Obtener la llave pública: Esta llave es proporcionada por Milio y generalmente está en formato PEM (comienza con
\-----BEGIN RSA PUBLIC KEY-----
y finaliza con-----END RSA PUBLIC KEY-----
). - Preparar la información a encriptar: Convierte los datos que deseas proteger (texto o archivo) a un formato adecuado para el cifrado (generalmente texto plano o binario).
- Cifrado del mensaje:
- Usa una biblioteca o función estándar de tu lenguaje o framework que soporte RSA.
- Cifra la información con la llave pública proporcionada.
- El resultado del proceso será un mensaje encriptado, listo para ser transmitido a Milio.
Ejemplo
import {publicEncrypt} from 'crypto'
import * as constants from 'constants'
...
public encryptPublicKey = (publicKey: string, data: string) => {
try {
return crypto.publicEncrypt(
{key: publicKey, padding: constants.RSA_PKCS1_OAEP_PADDING},
Buffer.from(data, 'utf8'),
)
} catch (error) {
//catch error
}
}
Descifrar información enviada por Milio
Cuando recibas información cifrada desde Milio, debes usar tu llave privada, siguiendo estos pasos generales:
- Cargar tu llave privada: Asegúrate que esta llave esté almacenada de forma segura y únicamente accesible a tu aplicación. Esta llave debe estar en formato PEM (
-----BEGIN RSA PRIVATE KEY-----
,-----END RSA PRIVATE KEY-----
). - Desencriptar la información recibida:
- Usa una biblioteca o módulo que soporte RSA para descifrado.
- Proporciona tu llave privada a esta biblioteca para descifrar el mensaje.
- Obtendrás el texto original desencriptado.
Ejemplo
import {privateDecrypt} from 'crypto'
import * as constants from 'constants'
...
public decryptPrivateKey = (
privateKey: string,
data: Buffer<ArrayBufferLike>,
) => {
try {
return privateDecrypt(
{key: privateKey, padding: constants.RSA_PKCS1_OAEP_PADDING},
data,
).toString('utf8')
} catch (error) {
//catch error
}
}
Recomendaciones importantes:
- Seguridad: Nunca compartas tu llave privada con terceros y asegúrate de almacenarla en un lugar seguro, preferiblemente utilizando servicios o bóvedas de secretos seguras.
- Compatibilidad: Usa siempre algoritmos estándar (como RSA) para garantizar compatibilidad con los servicios de Milio.