Autor
|
Tema: ¿Implementar AES en Java? (Leído 11,608 veces)
|
MinusFour
|
estoy seguro que eso no es... imprimo el binario y me da algo como esto 0 1 1 0 0 0 1 1 //0x63 0 1 1 1 1 1 0 0 //0x7c 0 1 1 1 0 1 1 1 //0x77 1 1 1 1 0 0 1 0 //0x7b 0 1 1 0 1 0 1 1 //0xf2 0 1 1 0 1 1 1 1 //0x6b 1 1 0 0 0 1 0 1 //0x6f quiso decir que de ahí se construye. Lo que tienes ahí es el resultado, la caja de substitución de AES: http://en.wikipedia.org/wiki/AES_s-box
|
|
|
En línea
|
|
|
|
engel lex
|
lo leeré luego sinceramente no lo entendí y hoy fue un dia terrible en el trabajo! gracias de todas formas por el link de la wiki
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
xv0
Desconectado
Mensajes: 1.026
|
Como dijo el usuario @MinusFour, no me refiero a eso, tu preguntaste en que se basan los bits de inicio, esos son. Cuando yo implemente el algotirmo en ASM me ayude de la documentacion del NIST, pero para la SBOX esta explicacion esta perfecta, te la paso porque es mejor que mis explicaciones de lejos. http://www.samiam.org/s-box.html Si no entiendes algo avisa, mejor ese link que no la formula del documento del NIST. b(x)a(x) + m(x)c(x) = 1 Un saludo. P.D: Mi algoritmo lo tienes mas abajo, solo es el encrypt, pero te dejara peor xD.
|
|
|
En línea
|
|
|
|
MinusFour
|
La página está bien para sacar un algoritmo rápido sin preocuparte por las matemáticas que a mi parece interesante... Nunca tuve una clase de algebra abstracta para los campos galois y nunca vi matrices de transformación pero creo que hasta ahorita les llevo entendido Lo que no entiendo es como sacan el inverso del GF(2^8), en el documento del nist sacan esa formula de: ¿Como despejas esa formula? ¿y que demonios es C(x)? Tambien me imagino que la multiplicación de las matrices la hacen usando la multiplicación y suma tipo GF(2) no?
|
|
|
En línea
|
|
|
|
xv0
Desconectado
Mensajes: 1.026
|
Si, las formulas lo complican todo, si las multiplicaciones se hacen con GF(2). Pero te recomendaria que si quieres entender todo esto, empieces por la basica. m(x) = x^8 + x^4 + x ^3+ x +1
For example, {57} • {83} = {c1}, because
(x^6 + x^4 + x^2 + x +1) (x^7 + x +1) = x^13 + x^11 + x^9 + x^8 + x^7 +
x^7 + x^5 + x^3 + x^2 + x +
x^6 + x^4 + x^2 + x +1
= x^13 + x^11 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 +1 mod (x^8 + x^4 + x^3 + x +1) == m(x) = x^7 + x^6 +1 No hace falta que te diga cual es el a(x) y b(x), cuando sepas mas o menos de que va todo esto te recomiendo que empiezes por la inversa. Puedes hacer las multiplicaciones con galois separando bits y con xors, si es como lo hice. Un saludo.
|
|
|
En línea
|
|
|
|
MinusFour
|
Puedo resolver las multiplicaciones, restas y adiciones sin ningun problema. Lo que no puedo hacer es sacar la inversa del campo de galois.
|
|
|
En línea
|
|
|
|
xv0
Desconectado
Mensajes: 1.026
|
Lo siento, como no dijiste nada pensaba que no sabias, bueno entonces sabras que el ejemplo que te copie del NIST, es este: a(x) • b(x) mod m(x) Si es cierto de que la inversa es algo mas complicada o mas "liosa", este fue una de las explicaciones que me ayudaron, como dije anteriormente mejor que mis explicaciones. http://mathforum.org/library/drmath/view/51675.html Te recuerdo de que tambien te explican las inversa utilizando las tablas, en el link que le pase a @engel lex. http://www.samiam.org/galois.html#inverse Cualquier duda ya sabes. Un saludo. P.D: Quieres hacer una implementacion de AES? O solo quieres saber y nada mas? Porque si solo quieres hacer una implementacion de AES sabiendo la formula: a(x) • b(x) mod m(x) Ya tienes suficiente para comprender MixColumns y InvMixcolumns, que son las funciones que mas problemas suelen dar.
|
|
« Última modificación: 12 Julio 2014, 19:23 pm por cpu2 »
|
En línea
|
|
|
|
MinusFour
|
No estoy buscando hacer una implementación de AES solo quiero entender las matemáticas detrás. Y creo que entiendo todo menos la inversa del campo galois. Le entendí bien al documento justo hasta que llego a la inversa... entonces puso esto: r(x)*a(x) + s(x)*f(x) = 1
Then reduce this equation modulo f(x):
r(x)*a(x) = 1 (mod f(x))
a(x) will be the multiplicative inverse of r(x).
Example: Inverse of x^4 + 1.
x^8 + x^6 + x^5 + x + 1 = (x^4+x^2+x+1)*(x^4+1) + (x^2) x^4 + 1 = (x^2)*(x^2) + 1
and, working backwards,
1 = 1*(x^4+1) + (x^2)*(x^2) = 1*(x^4+1) + (x^2)*([x^4+x^2+x+1]*[x^4+1]+[x^8+x^6+x^5+x+1]) = (x^6+x^4+x^3+x^2+1)*(x^4+1) + (x^2)*(x^8+x^6+x^5+x+1)
so, reducing modulo f(x),
1 = (x^6+x^4+x^3+x^2+1)*(x^4+1) (mod f(x))
Thus the multiplicative inverse sought is x^6 + x^4 + x^3 + x^2 + 1.
Y ahí me perdi completamente. Entiendo como funciona MixColumns, no le he dado un vistazo a la inversa pero me imagino que debe ser similar.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
PHP implementar
PHP
|
Ari Slash
|
8
|
4,797
|
11 Agosto 2009, 11:18 am
por #!drvy
|
|
|
Ayuda implementar arbol trie en java
Java
|
Cooltan
|
1
|
6,399
|
3 Abril 2011, 05:20 am
por Tryptophan
|
|
|
implementar do events en c++
Programación C/C++
|
z_ane_666
|
2
|
2,592
|
13 Diciembre 2011, 20:53 pm
por seba123neo
|
|
|
Implementar un servidor NAS
Redes
|
ramonanador
|
1
|
3,304
|
27 Marzo 2012, 21:30 pm
por virtualedu
|
|
|
Implementar Seguridad en una red lan
Seguridad
|
alex2510
|
2
|
3,269
|
23 Mayo 2012, 23:48 pm
por alex2510
|
|