elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Criptografía (Moderador: kub0x)
| | | |-+  ¿Implementar AES en Java?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Implementar AES en Java?  (Leído 11,464 veces)
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: ¿Implementar AES en Java?
« Respuesta #10 en: 12 Julio 2014, 01:15 am »

estoy seguro que eso no es... imprimo el binario y me da algo como esto

Código:
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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ¿Implementar AES en Java?
« Respuesta #11 en: 12 Julio 2014, 01:47 am »

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 Desconectado

Mensajes: 1.026



Ver Perfil
Re: ¿Implementar AES en Java?
« Respuesta #12 en: 12 Julio 2014, 01:51 am »

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.

Código:
http://www.samiam.org/s-box.html

Si no entiendes algo avisa, mejor ese link que no la formula del documento del NIST.

Citar
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
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: ¿Implementar AES en Java?
« Respuesta #13 en: 12 Julio 2014, 03:55 am »

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:

Código:
b(x)a(x) + m(x)c(x) = 1

¿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 Desconectado

Mensajes: 1.026



Ver Perfil
Re: ¿Implementar AES en Java?
« Respuesta #14 en: 12 Julio 2014, 16:56 pm »

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.

Citar
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
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: ¿Implementar AES en Java?
« Respuesta #15 en: 12 Julio 2014, 18:19 pm »

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 Desconectado

Mensajes: 1.026



Ver Perfil
Re: ¿Implementar AES en Java?
« Respuesta #16 en: 12 Julio 2014, 19:18 pm »

Lo siento, como no dijiste nada pensaba que no sabias, bueno entonces sabras que el ejemplo que te copie del NIST, es este:

Citar
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.

Código:
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.

Código:
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:

Citar
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
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: ¿Implementar AES en Java?
« Respuesta #17 en: 12 Julio 2014, 20:58 pm »

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:
Citar
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

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PHP implementar
PHP
Ari Slash 8 4,740 Último mensaje 11 Agosto 2009, 11:18 am
por #!drvy
Ayuda implementar arbol trie en java
Java
Cooltan 1 6,357 Último mensaje 3 Abril 2011, 05:20 am
por Tryptophan
implementar do events en c++
Programación C/C++
z_ane_666 2 2,538 Último mensaje 13 Diciembre 2011, 20:53 pm
por seba123neo
Implementar un servidor NAS
Redes
ramonanador 1 3,270 Último mensaje 27 Marzo 2012, 21:30 pm
por virtualedu
Implementar Seguridad en una red lan
Seguridad
alex2510 2 3,223 Último mensaje 23 Mayo 2012, 23:48 pm
por alex2510
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines