Pregunta

He usado un buen dominio público. Implementación de C++DES antes, pero ahora necesito algo de criptografía simple, básica y rápida para un sistema integrado.

No es necesario que sea irrompible, pero sí debe frustrar al hacker ocasional (es decir, nada que pueda usarse para obtener dinero o robo de identidad, pero sí otra información personal transferida en tarjetas de memoria que podría perderse o caer en las manos equivocadas). ).

Debido a la memoria limitada de este procesador, preferiría algo que pueda codificar en fragmentos discretos (512 bytes o menos).

El proyecto no es de código abierto y no utilizará bibliotecas, lo que sé que restringe aún más las opciones: el dominio público es lo mejor, pero BSD/Apache/etc probablemente sea aceptable...

Dudo en lanzar el mío (como debería ser todo el mundo).

-Adán

¿Fue útil?

Solución

Si solo está buscando ofuscación, XOR con una constante secreta es la implementación más pequeña que encontrará.También sería trivial romperlo, ya que es vulnerable al análisis de frecuencia para buscar las letras inglesas más comunes.

Si necesita un algoritmo más potente, le recomiendo mirar el pez globo, que tiende a ser pequeño y rápido.Todavía requiere memoria para las tablas, pero con suerte funcionará para su aplicación.

Bruce Schneier colocó explícitamente el algoritmo Blowfish en el dominio público, rechazando las patentes.Puede obtener su implementación en C (y otras implementaciones también) desde su sitio.Esta fuente no incluye ningún aviso de derechos de autor.Sospecho que el código fuente también es de dominio público, pero puede que sea necesario comprobarlo un poco más.

Otros consejos

RC4 es simple y rápido.

La misma persona que publicó la implementación C++ DES también publicó un Algoritmo de cifrado C Rijndael - Debería haber husmeado un poco más en su sitio web, The Pequeño algoritmo de cifrado (artículo académico aquí) también tiene una huella de implementación de C muy pequeña.

pez globo Se ve bien y probablemente sea el mejor de estos tres en cuanto a seguridad.

Comenzaré con TEA (código pequeño y huella de memoria), pero lo ajustaré para poder pasar a otro algoritmo más adelante si es necesario.Tiene debilidades notables en sus implementaciones anteriores, pero para este proyecto podría incluso ser excesivo.

-Adán

Podrías usar un Generador de números pseudoaleatorios (PRNG) para generar una secuencia repetible de palabras, que luego realiza XOR con la palabra correspondiente en su flujo de datos.(El transmisor y el receptor necesitan conocer de antemano los parámetros utilizados para generar la secuencia pseudoaleatoria).

Este enfoque no es inquebrantable, pero es un paso adelante respecto al uso de una constante para el XOR, y los PRNG son muy simples de implementar y generalmente consisten en una operación de multiplicación y módulo para cada palabra.

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