Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cpu2

#1
Criptografía / Re: GCM tablas M
21 Julio 2021, 22:42 PM
Hola

Cuanto tiempo ha pasado ya, disculpas por abandonar el tema pero he tenido que ocuparme de otras cosas.

Aqui dejo el codigo, lo he testeado a mano siguiendo el algoritmo del PDF del NIST el 1. Testeado con 1 byte.

Se que se puede mejorar, pero no he encontrado un TEST VECTOR para este algoritmo, como los que hay en el PDF de AES al final de todo.

He pensado en contruir todo el PAPER del NIST y luego retomar esto de las las tablas, no se o ire tirando.

Código (asm) [Seleccionar]
.section .text
.globl _start
.align 16

_start:

pxor %xmm0, %xmm0                        # xmm0 | Z
movdqu %xmm1, (%rsp)                     # rsp  | x
movdqu %xmm1, -16(%rsp)                  # rsp  | V

_l02:

movq $-16, %rax                           # contador byte

_l01:

xorq %r8, %r8                          # contador bit
movq $-8, %r9

_l0:

btq %r8, 16(%rsp, %rax)                 # compruebo el bit  de el primer byte
jnc _l1                                  # si el bit es 0,  paso a LSB

movdqu -16(%rsp), %xmm3
pxor %xmm3, %xmm0                        # si el bit es 1, Z xor V, paso a LSB

_l1:

btq $63, -8(%rsp)                        # compruebo el ultimo bit 127 LSB 1 (V)
jc _l2

movq -8(%rsp), %rbx
shlq $63, %rbx
shrq $1, -8(%rsp)
shrq $1, -16(%rsp)                       # LSB(V)=0
orq %rbx, -16(%rsp)

jmp _l3

_l2:

movq -8(%rsp), %rbx
shlq $63, %rbx
shrq $1, -8(%rsp)                        #LSB(V)=1
shrq $1, -16(%rsp)
orq %rbx, -16(%rsp)
xorq $0x00000000000000e1, -16(%rsp)

_l3:

incq %r8
incq %r9
js _l0

incq %rax
js _l01


El codigo en realidad no es muy bueno, comparandolo con las tablas GCM, y ni hablar del paso de parametros. Y todas las operaciones las realizo en memoria.

Me gustaria encontrar un test vector de este algoritmo, si alguien sabe algo por favor que me lo diga, o que me confirme que el codigo opera bien.

Saludos.
#2
Cita de: sudogat en  3 Septiembre 2020, 09:17 AM
hablas de una pequeña o una gran empresa?

yo de mi actividad laboral me he encontrado de todo ya sea en una gran empresa o pequeña!

Saludos.

Mediana-Grande empresa, es un maldito caos, llegaba a los sitios desinformado, en plan buscate la vida...

Cita de: el-brujo en  3 Septiembre 2020, 09:49 AM
Ya no me extraña nada. Por desgracia hay de todo.

Que una empresa haya tenido un incidente de ransomware, no es nada raro, ahora mismo es lo más habitual. Es casi imposible educar a todos los usuarios para que sigan buenas prácticas de seguridad.

Otro tema son la copias de seguridad. Si sólo han perdido, de 18 al 31 de agosto, aún han tenido suerte, otras empresas han perdido meses de trabajo. Porque a veces la política de copias de seguridad deja mucho que desear.

He visto "empresas" que hacían la copia de seguridad por la noche en un ordenador que dejaban apagado, de forma que la copia de seguridad nunca se hizo xD

Y otro tema sería intentar averiguar el vector de infección, si fue navegando, por un e-mail adjunto, un archivo de word con macros, un RDP, etc Más que nada para que no les vuelva a pasar lo mismo de aquí un tiempo.

Utilizar un antivirus tampoco soluciona gran parte del problema del ransomware, no van detectar nada.

¿Cómo evitar o prevenir infección de cualquier Ransomware?

- Habilitar el acceso controlado a las carpetas con Windows Defender
- Herramientas específicas Anti-ransomware
- Desactivar Windows Script Host
- Desactivar macros Microsoft Office
- Evitar que los usuarios ejecuten Powershell a través de GPO

Estaria bien "educar" a los usuarios, el ejemplo del usuario @Reent esta bien.

Increible eso que dices, de las copias de seguridad con los ordenadores apagados...

A saber de donde se han infectado, tal y como estaba la cosa montada de bien, exactamente los AV no sirven practicamente para nada, en la maqueta que puse tenia el ATP, pero todo lo demas nada de nada.

Gracias a todos por los comentarios, ya veo que no ha sido una malinterpretacion mala por mi parte del trabajo y era un autentico desastre.

Saludos.
#3
Foro Libre / Vuestra opinion acerca de este trabajo.
3 Septiembre 2020, 00:40 AM
Hola

He estado una temporada trabajando para una empresa que mantenia unas sedes de una aseguradora, haciendo el mantenimiento de equipos etc...

El otro dia nos enviaron a X sede para, para maquetar los PC, ya que como no era de extrañar estaban infectados por un ransomware y tenian los archivos cifrados.

El primer problema que veo, es que tenian una copia de seguridad del 18 de agosto y ellos fueron infectados a finales de agosto, eso significa que entre el 18 y el 31, han perdido todo esos datos por no tener respaldo.

Es lo que me dice la oficinista, yo en plan "que quieres que te diga", la seguridad brilla por su ausencia, almacenan los archivos en los mismos pc con los que trabajan, abren cualquier mail desde esos pc, y se extrañan de que pasen esas cosas??? Estaban navegando con el IE9 si señores con el IE9.

Aparte que las maquetas eran una *****, pero eso es otra historia.

Pero no es mejor tener un server dedicado para los mail? Hacer copias de seguridad de los archivos cada dia o hora, a un equipo externo dedicado a ello? Directamente se podrian usar Jails de FreeBSD para arreglar esos problemas, o con una politica de permisos adecuada. Por que coño no hacen eso?

Es eso normal en las empresas? Estoy flipando con todo lo que he visto, y creo que me quedo corto con todo lo que he dicho. Hoy he dejado el trabajo, estaba cansado aun que no sea el momento adecuado para esas cosas.

Si eso es una empresa seria, no se como seran las otras. Pensais que lo mismo que yo, o creeis que esta todo bien?

Saludos.

P.D: El unico sistema de seguridad, era MCafee, que se evade con unas cuantas lineas de codigo, tener solo eso no es seguridad.
#4
Criptografía / Re: GCM tablas M
17 Junio 2020, 21:51 PM
Hola

Agradezco el apoyo, ya tengo algo terminado, cuando tenga todo listo lo subire, yo tambien hace tiempo que no digo nada por el echo que ahora mismo estoy haciendo otra cosa, como arreglarme la moto xD, no es broma.

A el codigo que subi esta mal, en casi todo, no se que me fumaria aquel dia, ya pondre el bueno.

Saludos.
#5
Hola

Está bien, creo que lo has entendido mal. En los dos primeros printf muestra el valor de la variable y su dirección. En los dos segundos el primer printf muestra el valor de la variable ya que está apuntando a esta (almacena su dirección), el por qué no te muestra la dirección de la variable es por qué el mismo puntero tiene su dirección, es una dirección que almacena otra.

Saludos.
#6
Criptografía / Re: GCM tablas M
21 Mayo 2020, 00:45 AM
Voy a dejar mis avances, creo que ya casi lo tengo, el algoritmo numero 3 el de la creacion de la tabla M0 es de la siguiente manera:

Citarwhile 1
-----------------

M[128] =  H
M[64]  =  M[128]· P
M[32]  =  M[64] · P
M[16]  =  M[32] · P
M[8]   =  M[16] · P
M[4]   =  M[8]  · P
M[2]   =  M[4]  · P
M[1]   =  M[2]  · P

     while 2 and for
-----------------

for i = 2 

M[3]   =  M[2] XOR M[1]

i = 4   

M[5]   =  M[4] XOR M[1]
M[6]   =  M[4] XOR M[2]
M[7]   =  M[4] XOR M[3]

i = 8   

M[9]   =  M[8] XOR M[1]
M[10]  =  M[8] XOR M[2]
M[11]  =  M[8] XOR M[3]
M[12]  =  M[8] XOR M[4]
M[13]  =  M[8] XOR M[5]
M[14]  =  M[8] XOR M[6]
M[15]  =  M[8] XOR M[7]

i = 16   

M[17]  =  M[16] XOR M[1]
M[18]  =  M[16] XOR M[2]


to i =  .......128

M[0]  =  0^128

end
ret M

Eso crearia la tabla M0 de 4096 bytes a partir de H, pero tengo la siguente duda, ya que me quedaria por crear la tabla de R que son 1024 bytes. Supongo que se refiere a esto:

CitarThe index 192 (decimal)has a binary decomposition of 11000000, so M0[192] = H ⊕ H · P = M0[64] ⊕ M0[128].

Otra cosa que aun no he entendido es en el algoritmo 2 a la hora de usar las tablas M0, en la directiva byte(X,i), no la he encontrado documentada en el paper, pero supongo que tomara el byte de X segun el valor de i, pero no entiendo lo siguiente, en el caso de ser el valor de X "0xff" se haria un XOR a Z con esa tabla, pero como estan las tablas enumeradas? No se si me explico.

Saludos.
#7
Criptografía / Re: GCM tablas M
18 Mayo 2020, 02:47 AM
Hola

Parace que voy entendiendo mas el paper, voy a explicarlo:

Cuando tengo que multiplicar por la variable P no es mas que un shift a los indices (creo que eso ya me lo has explicado @kub0x). Arriba de la pag 10 tengo el ejemplo de la multiplicacion por X · P y supongo que le de abajo es para multiplicar dos elementos.

CitarZ ← 0, V ← X
for i =0 to 127 do
if Yi =1 then
Z ← Z ⊕ V
end if
V ← V · P
end for
return Z

Practicamente es lo mismo que el algoritmo 1, que explique en mi anterior duda de la sintaxis, si no me equivoco:

CitarZ ← 0, V ← X
for i =0 to 127 do
if Yi =1 then Z ← Z ⊕ V
end if
if V127 =0
then V ← rightshift(V )
else
V ← rightshift(V ) ⊕ R
end if
end for return Z

Por lo que entiendo:

CitarV ← V · P

Es igual a

if V127 =0 then
V ← rightshift(V )
else
V ← rightshift(V ) ⊕ R

Segun los ejemplos de la pag 9 en las formulas (3) (5), serian lo mismo no?

Bien ya en la pag 11 en el ejemplo de la desconposicion de X (7), xi hace referencia a 1 byte de X, pero mi duda esta en P^8i, en el primer for 8·i daria cero y al final cuando i es 15 daria 120. Esa parte no la entiendo mucho la verdad.

Creo que la respuesta esta en estos parrafos:

CitarNote that i loops from 15 down to zero so that the rightmost byte is associated with the lowest power of P8. In order to use this method, we need an efficient way to compute X · P8 for an arbitrary element X.


The expression x · P8(i+1), for x ∈S and 0 ≤ i< 15, corresponds to a simple bit-rotation of the element x totherightbyeightbits.Thusthefirst15termsonthe right-handsideofEquation 9can be computed with only a rotation. The expression x · P128 is not so simple, but can be computed usinga table,aswedid above.

Pasando al algorimo 3 y a su explicacion arriba, vale creo que entiendo la funcion, en la explicacion cuando dice esto:

CitarThe table can be computed using Algorithm 3, which makes a single pass over the data, using only 247 field additions and eight 'mutliply by P' operations

Citarwhile i> 0 do
M ← M[2i] · P
i ←li/2J

Partiendo de que el valor de i es 64, Ese ciclo multiplicaria por P ocho veces si no me equivoco.

Bien y en la parte de la multiplicacion por P:

CitarM ← M[2i] · P

Es igual a

if  M[2i]127 =0 then
M ← rightshift(M[2i])
else
M ← rightshift(M[2i]) ⊕ R
end if

Y las 247 adiciones seria:

CitarM[i + j]= M ⊕M[j]

Estoy en lo cierto?

Creo que con eso ya bastaria para crear la tabla M0, pero no entiendo lo de las elevacion a P a 8, 128 o i.

Saludos y gracias.
#8
Criptografía / Re: GCM tablas M
15 Mayo 2020, 08:55 AM
Cita de: kub0x en 12 Mayo 2020, 13:14 PM
Realmente lo que estás haciendo es díficil, ya que entender un proyecto entero, por fases y algoritmos lleva semanas, pues tienes que entender bien cada parte. No te fustres, sigue el camino. Las dudas estarían bien acumularlas y cuando no puedas avanzar más, estudiar y responder tus propias preguntas. Te puedo decir que hace un año me inicié en una rama de la crypto de la cual no tenía ni idea, y a día de hoy, me veo con un nivel fuertísimo y leyendo lo que los expertos suben sin problema. Si lo tienes por hobby y te gusta, en poco tiempo veras grandes resultados.

Tengo que hacer lo que me acabas de decir, una recopilacion de todos los problemas que veo, y de hay sacar una conclusion, ya que no he avanzado mucho desde mi anterior mensaje, he buscado mas informacion tampoco es que haya mucha...

https://crypto.stackexchange.com/questions/57785/gcm-cipher-m0-tables-semantic-questions-on-how-to-implement-gcm?rq=1

https://crypto.stackexchange.com/questions/67642/gcm-optimisation-using-m-0-and-r-tables-calculation-of-r?rq=1

Ya veo que no soy el unico con problemas xD.

Si, todo lo que ago es por hobby pero con un proposito, tengo mas cosas por hacer, cosas que ni siquiera he planteado, y ahora mismo lo que siento es una perdida de tiempo, ya que no puedo estar profundizando tanto en las cosas, cuando te topas con este tipo de problemas te das cuenta de que no sabes nada...

Cita de: kub0x en 12 Mayo 2020, 13:14 PM
En mi rutina utilizo Sage y Wolfram Mathematica. Traen métodos para reducir modulo f(x) y un sinfín más. Si no en C++ utilizo NTL que es una librería que es un All in 1. Trae lo básico de number theory y aritmética en GL(n,p), GL(n,p^e), GF(p), GF(p^n), creo que es incluso mejor utilizar éstas que rollear tus propios métodos aritméticos para la crypto.

Si, depende de como se mire estoy inventando la rueda de nuevo, seria mucho mas facil usar la libreria de openssl o cualquier otra, y hacer llamadas, pero no me gusta programar de esa forma me gusta crear mis propias funciones (no me gusta que mis programas solo haya call call call call xD), todos sabemos pasar parametros a funciones y llamarlas (no quiero ofender a nadie) a parte para el proposito que tengo es mejor asi.

Ahora mismo tengo esta rutina para hacer las multiplicaciones:

Código (asm) [Seleccionar]
section .data

_R: .quad 0x0000000000000000,0xe100000000000000

section .text
globl _mulbl

_mulbl:


pushq %rax
movdqa $-127, %rax         ; rax  == i
pxor %xmm0, %xmm0          ; xmm0 == Z


_C.0:

andq $1, 127(%rax,%r10)    ; %r10 == x
jz _C.1
pxor (%r11), %xmm0         ; %r11 == V

_C.1:

movdqa (%r11), %xmm1
andq $1, 127(%r11)
jz _C.2

psrldq $1, %xmm1
pxor _R, %xmm1
movdqa %xmm1, (%r11)
jmp _C.3

_C.2:

psrldq $1, %xmm1
movdqa %xmm1, (%r11)

_C.3:

incq %rax
js _C.0

popq %rax
retq


Bueno haciendo mis calculos a base de los del paper, sale mas o menos a unos 80-90 OPS por byte, sin tablas. En la pag 12 del documento sale la tabla, 119 OPS en la implementacion del paper.

Si miramos la tabla, con el metodo Shoup's, mejora notablemente el rendimiento, comparando mi funcion con el Shoup's de 4-bit, hay mas o menos un 30% de rendimiento superior a la mia.
Pero dudo que mi funcion cause overhead no?

Lo dicho dicho, voy a leer un pelin mas.

Saludos.
#9
Criptografía / Re: GCM tablas M
11 Mayo 2020, 19:03 PM
Hola

El de metodos generales, me recuerdo que ya lo lei en su dia, por el tema de AES. Voy a leer con calma los dos restantes.

Creo que ya cada vez lo tengo mas claro, tambien me preocupa mucho el peso de 64K que tienen las tablas, y cada vez que quiera cambiar el codigo volver a calcular y el espacio en memoria, pero eso ya es otra historia.

He visto que se pueden hacer tablas de 4-bit, y ocuparia unos 8,192 bytes, y solo consumiria un pelin mas de recursos, pero el espacio baja mucho.

Pero ya tengo bastante lio de momento, gracias por el apoyo.

Saludos.
#10
Criptografía / GCM tablas M
11 Mayo 2020, 03:23 AM
Hola

La duda que tengo esta en este paper, punto 4.1 Software:

https://luca-giuzzi.unibs.it/corsi/Support/papers-cryptography/gcm-spec.pdf

Segun lo que puedo entender la variable P es una representacion de un elemento primitivo en gf(2), el modulo f es la variable R.

La x es un byte, tiene unas 256 conbinaciones, las tablas M son de 256 elementos.

Mas o menos todo esto lo llevo bien, si vamos a la pag 9, en (3) se puede observar la variable P que es el polinomio α.

En la pag 14 tenemos el algoritmo numero 3, con este podriamos computar las tablas M, los 65,535 bytes/key si no me equivoco. Doy por sentado de que con el algortimo 3, ya podria crear todas las tablas, cifrando la cadena de de 128 bits de 0s con el codigo.

Pero no acabo de entender del todo la variable P del algritmo 3.

Perdon si no se me entiende bien, estoy algo liado.

Saludos.