348
edits
Adm.Wiggin (talk | contribs) m (getting rid of the funny-looking extra periods on the numbered list) |
No edit summary |
||
| Line 1: | Line 1: | ||
= Super-short summary for experienced Crypto developers: = | |||
The Weave client creates a 2048-bit RSA keypair and a salt value, and derives a symmetric key from the passphrase and salt with PBKDF2. The private key is encrypted with that key and uploaded to the server, along with the salt. | |||
For each collection, a 256-bit bulk key and an IV are generated on the client. The bulk key is encrypted with the RSA public key and uploaded, with the IV, to the server. | |||
Each object is encrypted with the bulk key for its collection. In theory, we could have multiple bulk keys for each collection, but we do not do that right now. In theory, we could encrypt each bulk key with multiple public keys to create a key-chain; we discuss this at [[Labs/Weave/Developer/SecureDataSharing]]. | |||
= Longer explanation = | |||
First, let’s get some basic definitions out of the way. Symmetric cryptography means you have one key that can perform both encryption and decryption, and they are complementary operations. For Weave, we use [http://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES] with a 256 bit key, and we use it in a mode that requires an ‘initialization vector’ for every decryption. Asymmetric cryptography means there’s a pair of keys (usually called ‘public’ and ‘private’ keys). A piece of text “encrypted” by one key can only be “decrypted” by the other key. Here, we use [http://en.wikipedia.org/wiki/RSA RSA] with a 2048 bit private key. | First, let’s get some basic definitions out of the way. Symmetric cryptography means you have one key that can perform both encryption and decryption, and they are complementary operations. For Weave, we use [http://en.wikipedia.org/wiki/Advanced_Encryption_Standard AES] with a 256 bit key, and we use it in a mode that requires an ‘initialization vector’ for every decryption. Asymmetric cryptography means there’s a pair of keys (usually called ‘public’ and ‘private’ keys). A piece of text “encrypted” by one key can only be “decrypted” by the other key. Here, we use [http://en.wikipedia.org/wiki/RSA RSA] with a 2048 bit private key. | ||
edits