es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo manejar un búfer de entrada grande en CryptoAPI de Linux.

Tengo archivos grandes cifrados y autenticados (de varios MB cada uno, lo que es más de 16 páginas) que quiero descifrar utilizando un acelerador de hardware incrustado en el sistema a través de Linux CryptoAPI. Estoy usando libkcapi para manejar la comunicación con el kernel.

Para poder descifrar archivos tan grandes, tuve que cambiar la definición de ALG_MAX_PAGES a 256. Funcionó perfectamente, pero no parecía lo correcto, ya que hay advertencias en todas partes de que hay un límite de 16 páginas.

Mis preguntas sobre el tema son:

  1. ¿Por qué hay tal límite?
  2. ¿Cuál es la forma correcta de manejar entradas grandes?
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Respuesta

    1. ¿Por qué existe esta limitación?

    La definición ALG_MAX_PAGES limita el número de páginas (4KB cada una) que pueden ser procesadas en una sola llamada a CryptoAPI. Esta limitación está en su lugar para evitar ataques de denegación de servicio y asegurar la estabilidad del sistema. Además, ayuda a prevenir el agotamiento y fragmentación de memoria, lo que puede afectar negativamente el rendimiento del sistema.

    2. ¿Cuál es la forma correcta de manejar entradas grandes?

    Para manejar entradas grandes, puede dividir los datos de entrada en fragmentos más pequeños y procesarlos de manera iterativa. Esto se puede hacer utilizando un bucle que lee un búfer de tamaño fijo desde el archivo de entrada hasta que se hayan procesado todos los datos. Alternativamente, puede utilizar un modelo de procesamiento asincrónico que permita el procesamiento en paralelo de varios fragmentos más pequeños.

    Otro enfoque es utilizar motores de cifrado y descifrado acelerados por hardware, que pueden manejar entradas grandes de manera más eficiente. Estos motores están diseñados para descargar el procesamiento de operaciones criptográficas de la CPU, proporcionando un impulso significativo en el rendimiento.

    En resumen, para manejar entradas grandes, debe considerar el uso de uno o más de los siguientes enfoques:

    • Dividir los datos de entrada en fragmentos más pequeños y procesarlos de manera iterativa.
    • Utilizar un modelo de procesamiento asincrónico que permita el procesamiento en paralelo de varios fragmentos más pequeños.
    • Utilizar motores de cifrado y descifrado acelerados por hardware.

Comments are closed.