Randomnes in LibreOffice Encryption

Michael Stahl mst at libreoffice.org
Tue Dec 10 15:56:42 UTC 2019


On 10.12.19 14:57, Steve Martin wrote:
> Hi,
> 
> At 
> "http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part3.html#__RefHeading__752859_826425813" 
> I read:
> 
>> The defined values for the manifest:key-derivation-name attribute are:
>>
>>   •PBKDF2: The PBKDF2 key derivation method with HMAC-SHA-1 for the 
>> Pseudo-Random Function(PRF). See [RFC2898] sections 5.2 and B.1.1.
> 
> HMAC-SHA-1 for the Pseudo-Random Function(PRF)? HMAC-SHA-1 is a 
> deterministic function. That means I enter a value and get a value out. 
> And no matter how many times I call the function with the input value, I 
> always get the same output value. So, with HMAC-SHA-1 is no randomnes 
> possible. So PRFs exists when PRNG (Pseudo Random Number Generator)s 
> exists.

of course, but if you use an *actual* random function to derive the key 
from the salt and the password then you'll have trouble decrypting the 
resulting ciphertext...

> I looked at the referenced RFC 2898: "PKCS #5: Password-Based 
> Cryptography Specification Version 2.0" 
> (https://www.ietf.org/rfc/rfc2898.txt) how this will be made. In RFC 
> 2898 at the end of page 6 and start of page 7 is written the following:
> 
>> If a random number generator or pseudorandom generator is not 
>> available,

LibreOffice requires one.

>> available, a deterministic alternative for generating the salt (or the 
>> random part of it) is to apply a password-based key derivation 
>> function to the password and the message M to be processed. For 
>> instance, the salt could be computed with a key derivation function as 
>> S = KDF (P, M). This approach is not recommended if the message M is 
>> known to belong to a small message space (e.g., "Yes" or "No"), 
>> however, since then there will only be a small number of possible salts.

> My question: Which method is implemented in LibreOffice? Does 
> LibreOffice use a PRNG or the method specified in the ODF standard with 
> the HMAC-SHA-1() function over the plaintext and (password)/(hash of the 
> password))? The second one is a little bit insecure.

both: the method specified in ODF applies the HMAC-SHA1 function to 
generate the key from the salt, not to generate the salt.


More information about the LibreOffice mailing list