API Reference

Uso de llaves criptográficas en Milio

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:

  1. 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-----).
  2. 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).
  3. 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:

  1. 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-----).
  2. 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.