You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by Apache subversion Wiki <co...@subversion.apache.org> on 2012/03/26 18:36:52 UTC

[Subversion Wiki] Update of "MasterPassphrase" by PhilipMartin

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for change notification.

The "MasterPassphrase" page has been changed by PhilipMartin:
http://wiki.apache.org/subversion/MasterPassphrase?action=diff&rev1=18&rev2=19

  
  The passwords will be encrypted using [[http://en.wikipedia.org/wiki/Advanced_Encryption_Standard|AES-256]] in [[http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29|CBC mode]]. This is a block-oriented, symmetric cipher (16 byte blocks), so some padding will be added/stripped to the plaintext password (a NUL character is fine).
  
- To prevent dictionary attacks against the encrypted passwords, the plaintext password will be prefixed with 4 bytes (32 bits) of random data before encryption.
+ To prevent dictionary attacks against the encrypted passwords, the plaintext password will be prefixed with 4 bytes (32 bits) of random data before encryption.  This should mean that reusing a password on multiple realms doesn't result in the same encrypted text.
  
  The encryption algorithm requires a 16 byte key (technically, it can also be 24 or 32 bytes), and a 16 byte [[http://en.wikipedia.org/wiki/Initialization_vector|initialization vector]]. The crypt key will be constructed as a derivation of the master password (see [[http://en.wikipedia.org/wiki/PBKDF2|PBKDF2]]). PBKDF2 requires a 64 bit salt. The IV is a random 16 byte value. The salt and IV will be stored within the block of data encrypted by the master password. The master password decrypts that data block, uses the salt to generate the (de)crypt key, then pairs it with the IV to decrypt the target password.