Inmiddels is Mega online. Ik ben alvast in de broncode gaan kijken hoe ze het aanpakken.
Een paar observaties:Ze gebruiken de open-source Stanford Javascript Crypto Library voor het versleutelen van bestanden in de browser. (Site:
https://crypto.stanford.edu/sjcl/). Deze gebruikt AES versleuteling, SHA256 hashing en PBKDF2 met HMAC voor het versterken van het wachtwoord tegen rainbow tables.
De Ext JS library van Sencha wordt gebruikt voor (
https://eu.static.mega.co.nz/extjs/ext-all.js) de interface (
http://www.sencha.com/products/extjs). Er wordt ook gebruik gemaakt van jQuery (
https://eu.static.mega.co.nz/jquery.min.js,
http://jquery.com).
In de FAQ wordt verder ingegaan op de gebruikte versleuteling:
What encryption algorithms does MEGA use internally? (https://mega.co.nz/#help_security:)For bulk transfers, AES-128 (we believe that the higher CPU utilization of AES-192 and AES-256 outweighs the theoretical security benefit, at least until the advent of quantum computers). Post-download integrity checking is done through a chunked variation of CCM, which is less efficient than OCB, but not encumbered by patents.
For establishing shared secrets between users and dropping files into your inbox, RSA-2048 (the key length was chosen as middle grounds between "too insecure" and "too slow"). All encryption, decryption and key generation is implemented in Javascript, which limits throughput to a few MB/s and causes significant CPU load. We are looking forward to the implementation of the proposed HTML5 WebCrypto API in all major browsers, which will eliminate this bottleneck.
Javascript's random number generator is augmented by a mouse/keyboard timing-driven RC4 entropy pool.
Al met al lijkt het me redelijk veilig. Zo lang je tenminste de wachtwoorden goed bewaart.