decrypt error junk

Mark Waddingham mark at livecode.com
Thu Nov 2 02:20:01 EDT 2023


On 2023-11-02 02:06, Tom Glod via use-livecode wrote:
> I have found a "wrong decryption key" that does not return a bad 
> decrypt
> error, but returns garbage into "the result".
> Every other wrong key correctly gives the usual error.
> The right key works to decrypt.

What exact error do you get with a wrong key vs the not-so-wrong key?

> the length of the encryption/decryption key is always 64 characters
> it is always alphanumeric, because its a hash derivative, no weird
> characters, always the correct length.
> and the salt is the same for every key i tried.
> 
> I can program around it, but its unsettling.
> I will report it, but in the meantime has anyone ever come across this
> garbage in "the result" as a result of an incorrect. decryption key?

So I don't think this is a bug, but expected behavior.

The encrypt/decrypt operations are very low-level they 'simply' apply 
the specified
algorithm to the data.

Encryption/decryption is 'just' a mathematical function which uses the 
'key bytes'
and 'input data' to derive an output - in particular, decryption does 
not include
any validation checks to ensure the provided decryption key is what was 
used to
encrypt in the first place - that's something you have to do yourself.

There's a huge variety of ways to do this - but perhaps the simplest is 
to add your
favorite (simple) hash of the encryption key before the data being 
encrypted:

----

(pseudo encryption code - I don't know exactly what form of encrypt you 
are using!):

   local tKey, tHash
   put deriveMyEncryptionKey(tPassword) into tKey
   put md5Digest(tKey) into tHash

   encrypt tHash & tData using ... with password tKey

(pseudo decryption code - I don't know exactly what form of encrypt you 
are using!):

   decrypt tEncryptedData using ... with password tKey

   if byte 1 to 16 of tData is not md5Digest(tKey) then
     throw "incorrect password"
   end if

----

Of course I'm now slightly intrigued as to what checks OpenSSL *can* 
actually do to
be able to generate a 'bad decrypt' message - so by all means file a 
bug/send a test
stack to support and we can at least advise on that (and potentially 
update the
docs).

Warmest Regards,

Mark.

-- 
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Build Amazing Things



More information about the use-livecode mailing list