2008-09-06 12 views
9

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

No necesita ser irrompible, pero sí necesita frustrar al pirata informático casual (es decir, nada que pueda usarse para robar dinero o identidad, pero otra información personal transferida a tarjetas de memoria que podrían perderse o caerse en las manos equivocadas).

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

el proyecto no es de código abierto, y no va a utilizar las bibliotecas, que sé que restringe las opciones más - dominio público que son mejores, pero BSD/Apache/etc ... probablemente sea aceptable

estoy indeciso para rodar el mío (como todos deberían ser).

-Adam

Respuesta

7

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

Si necesita un algoritmo más fuerte, recomendaría mirar blowfish, 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, desautorizando las patentes. Puede obtener su implementación en C (y otras implementaciones también) desde his site. Esta fuente no tiene un aviso de copyright. Sospecho que el código fuente también es de dominio público, pero puede ser necesario un poco más de verificación.

2

La misma persona que lanzó la implementación en C++ DES también dio a conocer un C Rijndael Encryption Algorithm - Debería haber empujado alrededor de su página web un bocado más, El Tiny Encryption Algorithm (academic paper here) también tiene una huella muy pequeña aplicación C.

Blowfish se ve bien, y es probablemente el mejor de estos tres en cuanto a seguridad.

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

-Adam

3

RC4 es sencillo y rápido.

1

Puede usar un Pseudorandom number generator (PRNG) para generar una secuencia repetible de palabras, que luego XOR con la palabra correspondiente en su flujo de datos. (El transmisor y el receptor deben conocer de antemano los parámetros utilizados para generar la secuencia pseudoaleatoria).

Este enfoque no es irrompible, pero es un paso adelante con el uso de una constante para el XOR-ing, y los PRNG son muy Es simple de implementar, típicamente consiste de una operación de multiplicación y módulo para cada palabra.