Whatsapp criptografia End-to-End

Iniciado por AlbertoBSD, 6 Abril 2016, 01:59 AM

0 Miembros y 3 Visitantes están viendo este tema.

AlbertoBSD

Bueno como es noticia desde hace unas horas para algunos usuarios, whatsapp en sus nueva actualizacion acaba de anunciar que implementara cifrado end-to-end.

El documento explicando todo el proceso esta disponible para su lectura en

https://s3-eu-west-1.amazonaws.com/uploads-eu.hipchat.com/83000%2F605209%2FM79CMVvVjjbGFRx%2FWhatsApp-Security-Whitepaper.pdf

En general usan un par de claves Curve25519

agregare algunos comentarios en lo que tenga mas oportunidad.

TEMA REPETIDO

LEER: https://foro.elhacker.net/noticias/whatsapp_ya_es_100_seguro_con_cifrado_end_to_end-t450517.0.html
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

iUDEX

WhatsApp... Facebook... espera. ¿Los de Facebook están implementando anonimato en la comunicación del teléfono verde?

Muy bien, carajo, ¿dónde está el truco?
Namasté, criatura.

PalitroqueZ

Al fin, un poco de seguridad para el whatsapp.

;-)
"La Economía planificada lleva de un modo gradual pero seguro a la economía dirigida, a la economía autoritaria y al totalitarismo" Ludwig Erhard

MCKSys Argentina

Para los que saben poco de crypto (como yo): Curve25519

Según lo anterior, están usando Double ratchet (ver Usage).

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


AlbertoBSD

#4
Algo que se me hizo interesante y a la vez un poco tonto fue la parte para validar las Llaves.

Dice el texto:
Citar
Verifying Keys

WhatsApp users additionally have the option to verify the keys of the other users with whom they are communicating so that they are able to confirm that an unauthorized third party (or WhatsApp) has not initiated a man-in-the-middle attack. This can be done by scanning a QR code, or by comparing a 60-digit number.

The QR code contains:

1. A version.
2. The user identifier for both parties.
3. The full 32-byte public Identity Key for both parties.

When either user scans the other's QR code, the keys are compared to ensure that what is in the QR code matches the Identity Key as retrieved from the server.

The 60-digit number is computed by concatenating the two 30-digit numeric fingerprints for each user's Identity Key

To calculate a 30-digit numeric fingerprint:
1. Iteratively SHA-512 hash the public Identity Key and user identifier 5200 times.
2. Take the first 30 bytes of the final hash output.
3. Split the 30-byte result into six 5-byte chunks.
4. Convert each 5-byte chunk into 5 digits by interpreting each 5-byte chunk as a big-endian unsigned integer and reducing it modulo 100000 .
5. Concatenate the six groups of five digits into thirty digits.

Iteratively SHA-512 hash the public Identity Key and user identifier 5200 times.

Por que 5200? Siendo que a  sha512 no le han encontrado colisiones por que ese numero incluso el sha512 de una texto unas cuantas veces digamos 5 seria suficiente en fin.

:silbar: :silbar:

Aqui dejo un codigo de como seria el calcular 5200 veces el sha512 de un texto dado usando la libreria libgcrypt

/*
Twitter @albertobsd
cc -o iterative_sha512 iterative_sha512.c `libgcrypt-config --cflags --libs`
*/

#include<stdio.h>
#include<gcrypt.h>

int main() {
unsigned char *buffer,*digest,*temp = NULL;
register int i = 0,j;
buffer = calloc(64,sizeof(unsigned char));
digest = calloc(64,sizeof(unsigned char));
memset(buffer,'A',64);
while(i < 5200) {
gcry_md_hash_buffer(GCRY_MD_SHA512,digest,buffer,64);
printf("sha512: ");
j = 0;
while(j < 64) {
printf("%.2x",digest[j++]);
}
printf("\n");
temp = buffer;
buffer = digest;
digest = temp;
i++;
}
free(buffer);
free(digest);
}



Aqui un pedacito de la salida (las ultimas lineas)


sha512: 4f86b77580f55fdb90493042738915127aaa4fa2f1302a52b647b7a179b9c49b06f3cf67d0b1cc6e50dc7519bbb30c207b87be46eb60c8c78da0a18be7ee7b7a
sha512: 08726cc621866ffce20525d3e06d369aa73efae405d452ecdb426dfa00784637b2d0287e8702c50853741c34aac4768765d2e8395188351e9c5b5c6793d4759b
sha512: 16687e52fd941f0ccd8f70ce64c6802688c135482ec01c03e16cf0bb60490774b86ffab6fc7d19b65a22519d38807ee5b88277847a875f011c05ea2f47ae7e3b
sha512: bc83d85641f7588c15a023f8fe3617baacc67a758d148829ea8e10e3123d684f710b7d085de99fea5be9913db9a67145d181de39d7b19fc664780477f5e2253b
sha512: 13bd175d39ab444f808a09dc49a823f76720a36a48bf8e1f321ba9a16303325003fb41fb80d40fd2a82cf8c2904168dc6160491e0be48ef60a6e8ed63137ee4f
sha512: 36d743bb4e26669d09c96e4f82213105f5d34e4fcbcb7e5d385bf278b30e2083d9d8dfd9516a28e5e4096078a5ee7ab160da16aff39c19062eddfce4282190d7
sha512: dee957067e6ca41113242e06e9a42532c0806a577fb665ed6d9e45a8f60762ab0c8c4511ef720a0edaf3758cf40bf6f85e10237f2821ec3213451b8aa34a3a2f
sha512: fd3172c5314f26e48a6f94d243e428be4bb28379c5536e943fa33c8a7b87564c46b23359dc113f547b21f64a6b8ca3d8b655f4f743c533aeffd84c38f10ceced
sha512: a2c5ce5e4342863ca31dfbf0ff204d94636fd2da00c539df97ab6ce193791c5dd4a4136686ef7e37ca25c547fe12cea80192f06c1e6c33450e730f73a9d170ba
sha512: 467bb8f325dcb319ebfb9f60464a4d54cf4078fc3c5ad8ee70ab214e999a2fb39873d430a51cb96e5ca2929d8c485105b3095463f4790ba4709deb425512cb2e
sha512: 82776272e658cbc37b73258da6d5283baa027f85c27ee1538c47aaccde688ee510652e2e47fb8bcfa7eb02f3797bfffa44cf20f9274f401d8668467632459928
sha512: 5387ba3de50479e2b15c466d0bec62252bccaace8a207c53d5591283fb799ef7d1480aebdefeaff30e92436633d519e9a494d3db6a578e1da84b452372aa1b71


Ahora pense que seria algo tardado pero al parecer es bastante rapido
Cita de: g3ck0 en  6 Abril 2016, 03:16 AM
WhatsApp... Facebook... espera. ¿Los de Facebook están implementando anonimato en la comunicación del teléfono verde?

Muy bien, carajo, ¿dónde está el truco?

Creo que whatsApp esta motivado por 2 cosas.

*Sus principales competidores ya implementaban cifrado end-to-end y estan perdiendo usuarios.

Telegram por ejemplo se me hace mejor que whatapp, tiene tambien autodestrucion de mensajes, stickers y una API para poder programar bots y un largo etc..

*El caso del FBI vs Apple

Aunque el FBI encontrara metodos alternos para acceder al iphone. Apple se mantuvo firmo y demostro que una Organizacion gubernamental puede terminar por no acceder a los datos cuando un buen sistema de cifrado esta implementado.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

PalitroqueZ

Citar*Sus principales competidores ya implementaban cifrado end-to-end y estan perdiendo usuarios.

hasta Line creo que empezó cifrando su mensajería.

a mi me gusta más Line que whatsapp, pero por donde vivo no es popular.


"La Economía planificada lleva de un modo gradual pero seguro a la economía dirigida, a la economía autoritaria y al totalitarismo" Ludwig Erhard

AlbertoBSD

Cita de: PalitroqueZ en  6 Abril 2016, 21:43 PM
hasta Line creo que empezó cifrando su mensajería.

a mi me gusta más Line que whatsapp, pero por donde vivo no es popular.

La verdad Whatsapp gano mucho terreno. Frente a otros que ya existian incluso ve el Google Hangouts que en su momento era Talk

Por lo que estoy leyendo del protocolo este manda el mensaje cifrado con AES256 y firmado por HMAC256 esto es y lo que manda cifrado con la llave publica, es a lo que entiendo el Message Key.

Por se se me haria inseguro por no decir otra palabra mandar el Message Key en texto plano para que en el remoto caso de alguien intercepte ese paquete tenga acceso a la clave de descifrado.

La lectura no indica este punto claramente o por lo menos yo no lo he visto o no lo entiendo al 100

Segun yo se manda lo siguiente:


<Message Key>
<CLAVE: 32 Bytes clave de decifrado AES256><HMAC: 32 Bytes firma HMAC><IV: 16 bytes Vector de Inicializacion para el modo CBC del mensaje cifrado>
</Message Key>
<Message>
Mensaje cifrado con AES256  con la clave "CLAVE" en modo CBC con el vector de de inicializacion "IV"
</Message>


Donde en teoria se manda el "Message Key" cifrado con la llave publica.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

engel lex

la llave publica es para ser pasada en plano, no tiene sentido protegerla XD para protegerla solo harías una llave publica de una llave publica...

la llave publica es como mandar un candado abierto, solo puede ser usada para cerrar el mensaje... no puede hacerse más nada con ella
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.

MinusFour

Cita de: AlbertoBSD en  6 Abril 2016, 06:02 AM
Algo que se me hizo interesante y a la vez un poco tonto fue la parte para validar las Llaves.

Dice el texto:
Iteratively SHA-512 hash the public Identity Key and user identifier 5200 times.

Por que 5200? Siendo que a  sha512 no le han encontrado colisiones por que ese numero incluso el sha512 de una texto unas cuantas veces digamos 5 seria suficiente en fin.

:silbar: :silbar:

La técnica se llama key streching:

https://en.wikipedia.org/wiki/Key_stretching

Y es algo que utiliza bastante para KDF:

https://en.wikipedia.org/wiki/Key_derivation_function

Por ejemplo, PBKDF2 o bcrypt.

elezekiel

whatsapp es de codigo abierto? que pregunta tonta pero no lo se jaja
ademas como aseguran que no hay copias de mensajes por si acaso?? no les creo nada solo pantalla  ;-)