La idea de Mega es disponer de un espacio “en la nube” para guardar archivos de forma protegida. Recuerda a aquellos paquetes de uva prensada que se vendían en EE.UU. durante la prohibición con el aviso de “no meta usted este paquete en un barril, ni le añada agua y azúcar, ni lo deje fermentar en lugar seco y fresco durante quince días, porque entonces obtendría usted una bebida alcohólica, y eso es ilegal.”
Cualquiera que sea el uso que hagan los usuarios de Mega, proporciona una buena oportunidad de ver cómo se puede garantizar la seguridad de «la Nube». En el caso que nos ocupa, la idea es que el cliente se encargue del proceso de creación de claves, algo que supuestamente beneficia a ambas partes: el usuario controla sus claves y Mega se lava las manos en caso de uso fraudulentos de su servicio.
Todo se lleva a cabo desde el propio navegador del usuario gracias a un paquete en JavaScript que se descarga desde los servidores de Mega. Al registrarse en el servicio, el usuario introduce su nombre, dirección de email y contraseña. Después de recibir un email para confirmación haciendo clic en el enlace correspondiente, su navegador crea una pareja de claves asimétricas RSA. Es decir, utiliza el sistema de criptografía de clave pública, que usa dos claves distintas para cifrar y para descifrar. La clave de cifrado es pública (cualquiera puede conocerla y usarla para cifrar archivos), pero la clave de descifrado es secreta y conocida únicamente por el usuario.
La contraseña que ha creado el usuario sirve dos propósitos: autenticarnos frente al servicio (es decir, convencer a Mega de que yo soy yo y no otro yo), y cifrar los datos gracias a la clave maestra, que servirá para activar un algoritmo de cifra AES, considerado muy seguro. La seguridad del sistema se basa en una jerarquía de claves. Si lo que dicen en Linuxnoveles es correcto, el proceso de subida de archivos es semejante a esto:
1) Generamos una clave de 128 bits para ese archivo (llamémosle Ks)
2) Ciframos el archivo con esa clave
3) Generamos otra clave para enviar el archivo (sea Ke), imagino que con nuestra clave asimétrica RSA
4) Enviamos el archivo y su clave Ks, todo protegido con la clave Ke
5) Mega guardará tu archivo y tu clave Ks
Por supuesto, en el paso 5) no se puede almacenar Ks así por las buenas. Se supone que es secreta, así que la clave ha de ser asimismo cifrada. Qué cosas, cifrar una clave de cifrado ¿no? Pero así es más seguro, así que lo que se hace es cifrar Ks con la clave maestra del usuario. Es decir, esa clave maestra cifra la clave que descifra el archivo.
Artículo completo en: Naukas