Pregunta

Documento interesante del Trinity College de Dublín:
Implementación y análisis de cifrado AES en unidades de procesamiento de gráficos de productos básicos

Su técnica utiliza openGL para alistar la GPU para realizar las transformaciones numéricas requeridas por AES.

¿Qué tan difícil sería exponer esta capacidad - realizar cifrado de flujo - a través de una biblioteca .NET administrada?

¿Cómo comenzaría? Consejos? Ejemplos?

EDITAR : ¿Alguien tiene experiencias para relacionarse usando CUDA o Accelerator?

¿Fue útil?

Solución

Puede utilizar la biblioteca Accelerator de Microsoft. Le da acceso a la GPU a través de .NET.

Después de investigar el trabajo que se requiere más, esto es algo bastante trivial (a menos que le guste volver a escribir algoritmos AES). Sin embargo, es posible.

Puede haber otras API de C #, pero una que encontré fue API de Bouncy Castle . Lo que debería hacer es tomar la API del Acelerador de Microsoft y usarla en cualquier lugar donde se realice una operación matemática dentro del código fuente del algoritmo AES.

Otros consejos

Sugiero crear un contenedor administrado alrededor de una implementación CUDA / (c ++ / cli) O usar cuda.net para hacer todo pero el núcleo en sí mismo en c #. Realmente no hay forma de hacer la implementación real del kernel en un lenguaje de alto nivel, con CUDA necesitas usar c, con opengl / directx necesitas usar shaders. Para comenzar, eche un vistazo a cuda.net o descargue el SDK de CUDA y ejemplos para obtener una introducción a la programación de gpgpu.

Otra opción es Brahma (el sitio web parece estar inactivo).

Cita del sitio web:

  

¿Qué es Brahma?

     

Brahma es una biblioteca de código abierto escrita para el marco .NET 3.5 (en C # 3.0), para proporcionar acceso de alto nivel a cómputos de transmisión en paralelo en una variedad de procesadores.   Tenga en cuenta que en este momento Brahma tiene un proveedor de GPU (y su enfoque es GPGPU), se puede adaptar para ejecutarse en cualquier tipo de procesador.

     

¿Qué puedo hacer con Brahma?

     

Brahma 2.0 utiliza la nueva sintaxis LINQ de C # 3.0 para especificar la transformación de transmisión de datos. ¡Usando Brahma, puede mezclar declaraciones que se ejecutan en la GPU y declaraciones que se ejecutan en la CPU dentro de un solo método! Sin absolutamente ningún código de pegamento, se puede realizar un complejo cómputo de GPU multipaso con operaciones de CPU intermedias con solo unas pocas líneas de código. Brahma genera automáticamente todo el código de pegamento y sombreador requerido. Todo lo que necesita hacer es escribir código .NET de alto nivel.

No lo he usado, pero recientemente escuché un podcast sobre eso en rocas .NET. Suena como una buena biblioteca para usar si no quieres aprender a aprender los idiomas del sombreador de GPU.

Aquí está el enlace sourceforge .

Sea lo que sea que use para integrar C # a la GPU, debe usar una implementación de CUDA de AES. Son los más rápidos que hay. Parece que la implementación más rápida proviene de los mismos tipos con los que se vinculó: Grupo Trinity . Mire la Criptografía de clave simétrica práctica en papel de hardware de gráficos moderno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top