Buenas gente!
Estoy diseñando un arduino-crypto, y deseaba usar RSA, pero el SOC tipo AVR es poca cosa, poca ram y demàs. :-(
Tengo una libreria con AES, Curve25519, Ed25519, P521 y otros.
Cual me recomendais para cifrar mensajes cortos?
Muuuuchas gracias.
Sí solo es como práctica, RC4, podría ser adecuado al caso. Es muy simple y todavía potente.
Si es para algo más que práctica, haz una variante del RC4, que corrija precisamente sus vulnerabilidades...
....mmm, yo te digo de implementarlo, no de usar una librería...
Cita de: NEBIRE en 28 Enero 2020, 17:35 PM
Sí solo es como práctica, RCA, podría ser adecuado al caso. Es muy simple y todavía potente.
Si es para algo más que práctica, haz una variante del RCA, que corrija precisamente sus vulnerabilidades...
....mmm, yo te digo de implementarlo, no de usar una librería...
cual es RCA? y tambien es complicado, arduino hablamos de un procesador de 16Mhz... yo tiraría por AES-128 que está mas optimizado para eso y olvidaría basicamente cualquier cosa que tenga que ver con asimetrico, pero recomendaría comprar un procesador integrado que te haga la criptografia aparte (que puede tirar un AES en menos de 100 ciclos de reloj creo yo)
Cita de: engel lex en 28 Enero 2020, 17:46 PM
cual es RCA? y tambien es complicado, arduino hablamos de un procesador de 16Mhz...
Perdón RC4... (RSA era la empresa que lo desarrolló merced a uno de sus fundadores)
Para nada es complicado, incluso un procesador de 8 bits a 1Mhz (o menos), puede manejarlo sin problemas...
pero RC4 lo recuerdo como un algoritmo de hash
No. Es un algoritmo de cifrado.
Yo suelo usar una variante personalizada con bastante frecuencia... que luego suelo codificar...
Aquí un ejemplo. La salida se ha codificado a hexadecimal, para ver el resultado. además para un arduino también es más sencillo codificar a Hexadeciaml que por ejemplo Base64.
Cifrar:
// nota: pwd y msg por eficiencia convendría que fueran arrays de bytes, pero se muestran como cadenas, con la idea de ver su contenido...
pwd = "engel lex"
msg = "pero RC4 lo recuerdo como un algoritmo de hash"
call Rc4(pwd, msg)
cif = ToHex(msg)
print cif
Conteido de cif:
"D2B3445B5601E9FAF3DFFB06582E993AB46115096BC2DD3A264E0CE9142A53E392F28C19512007704DC5D34F2A65"
descifrar:
// si se conserva msg, usarlo tal cual, si no convertir 'cif'
msg = FromHex(cif)
call Rc4(pwd, msg)
print msg
Contenido de msg:
"pero RC4 lo recuerdo como un algoritmo de hash"
Aquí una página online para probar...
-http://rc4.online-domain-tools.com/
sorry tienes razon lo estaba confundiendo con CRC4, que se usa por lo menos en lan
Sí, RC4 está detrás de WEP...
Hay una implementación de RC4 en el foro (https://foro.elhacker.net/programacion_cc/encriptacion_rc4arc4-t210711.0.html;msg1000447#msg1000447) desde hace varios años...
B#
hmm interesante aunque super simple...sería bueno por lo menos añadir una funcion de bloque, una ronda de desplazamiento de bits y tal vez una tabla de de mezcla (robarsela a rijandel :xD), no agregaría mucho peso, pero ayudaría bastante al cifrado
Pués revisando el código, debo decir que contiene errores...
Tras el segundo bucle 'i' y 'j' deben ponerse a cero...
Cita de: NEBIRE en 28 Enero 2020, 22:33 PMPués revisando el código, debo decir que contiene errores...
Tras el segundo bucle 'i' y 'j' deben ponerse a cero...
A mí en su momento me funcionó correctamente tanto para cifrado y descifrado...
B#
Si, cifrará y descifrará lo propio que cifró, correctamente...
...pero no descifrará bien lo que se cifró en otra parte con el algoritmo adecuadamente implementado, y viceversa lo que se cifre con dicha implementación no será descifrado correctamente en las implementaciones correctas.
Wow, que alegria, cuantas respuestas!
En este caso el tiempo no es un factor importante, incluso se puede tolerar 1 segundo.
He estado realizando pruebas con AES 256 y se me come casi todos los recursos de un Atmega328P.
En primer lugar, el objetivo no es realizar pràcticas, RC4 es divertido, pero la seguridad es importante en este caso. He encontrado RSA para ESP32, pero no lo pienso usar, ya que lleva antennas que quizás puedan ser vulnerables. Y estoy evaluando hacer un port a un teensy.
Por otro lado.
Os parece buena idea usar entradas analógicas de arduino uara mejorar el generador de aletoriedad? (un micro/sensor de luz)
Opinais que merece la pena usar elipticos diffie-hellman o con AES ya basta?
Ui Ar De BeST, gracias gente! ;-)
hablas de AES y RSA/ECDH como intercambiables y no... son lios diferentes... RSA/ECDH no se usa para cifrado general, su peso es demasiado alto... se usa como medio seguro de intercambio de contraseña... lo que se usa generalmente es AES para la data
sobre usar un sensor ambiental para ayudar a la generación de aleatoriedad, hay papers y papers sobre ello, en pocas palabras está buen, pero no uses algo que alguien pueda alterar a distancia, como luz, sonido, etc, recuerda que oscuridad no es seguridad (que no digas de donde se alimenta el generador no quiere decir que nadie se vaya a enterar)
Correcto(RSA/ECDH no se usa para cifrad), por eso he dicho mensajes cortos y que se puede contemplar incluso un segundo para cifrar/descifrar.
La idea es que los mensajes(pequeños) sean de un tamaño màximo que permita cifrar RSA, de unas dimensiones parecidas al tamaño de una clave AES. Y así usar siempre eliptico, evitando cifrado de bloque.
Hehe, buen consejo para el generador de aletoriedad, pensaba en usar posicionamiento de destellos en el mar, por webcam.
Pero volviendo al tema... Como ves cifrar mini-mensajes por RSA?
Muchas gracias.
no tiene punto, lo del rsa, establece un canal seguro permanente (o semi permanente de larga duracion) y comunicate por el...
si usas rsa 2 paquetes seran iguales si sus mensajes son iguales y tendrás problemas de ataques por analisis predictivo... eso lo resuelve aes...
Cita de: Garfius1 en 29 Enero 2020, 09:28 AM
En primer lugar, el objetivo no es realizar pràcticas, RC4 es divertido, pero la seguridad es importante en este caso.
Bien, por eso señalaba que:
Cita de: NEBIRE en 28 Enero 2020, 17:35 PM
...
Si es para algo más que práctica, haz una variante del RC4, que corrija precisamente sus vulnerabilidades...