[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CALW8-7KhaNodR6CtT7Lc4yrF7JRUcwZ1tfF1kAaSpWQe-_wwiQ@mail.gmail.com>
Date: Fri, 28 Aug 2015 11:34:09 +0200
From: Dmitry Khovratovich <khovratovich@...il.com>
To: "discussions@...sword-hashing.net" <discussions@...sword-hashing.net>
Subject: Re: [PHC] Argon2 using memset still
Thanks all for suggestions, I have implemented these variants in a new
branch https://github.com/khovratovich/Argon2/tree/clear_mem , feel free to
propose better ones.
On Fri, Aug 28, 2015 at 11:07 AM, Sascha Schmidt <
sascha.schmidt@...-weimar.de> wrote:
> Maybe it would be wise to additionally add compiler attributes that
> prevent the optimization of a function:
> __attribute__((optnone)) for clang
> __attribute__((optimize("O0"))) for gcc
> They are available for clang 3.5 or newer and gcc 4.4 or newer. You can
> combine them to something like this:
>
> #if defined(__clang__)
> #if __has_attribute(optnone)
> __attribute__((optnone))
> #endif
> #elif defined(__GNUC__)
> #define GCC_VERSION (__GNUC__ * 10000 \
> + __GNUC_MINOR__ * 100 \
> + __GNUC_PATCHLEVEL__)
> #if GCC_VERSION >= 40400
> __attribute__((optimize("O0")))
> #endif
> #endif
>
> On Thu, Aug 27, 2015 at 6:58 PM Bill Cox <waywardgeek@...il.com> wrote:
>
>> On Thu, Aug 27, 2015 at 9:43 AM, Daniel Franke <dfoxfranke@...il.com>
>> wrote:
>>
>>> On 8/27/15, Bill Cox <waywardgeek@...il.com> wrote:
>>> > g++ has a habit of optimizing calls to memset away. I doubt that
>>> Argon2
>>> > succeed in it's attempts to clear memory. I copied this function from
>>> > Blake2:
>>> >
>>> > /* prevents compiler optimizing out memset() */
>>> > static inline void secure_zero_memory( void *v, size_t n )
>>> > {
>>> > volatile uint8_t *p = ( volatile uint8_t * )v;
>>> > while( n-- ) *p++ = 0;
>>> > }
>>>
>>> This is an improvement over memset, but note the comment above
>>> secure_wipe() in
>>> https://github.com/dfoxfranke/earworm/blob/master/util-ref.h.
>>>
>>
>> True, but using secure_zero_memory is an improvement :)
>>
>> I prefer to call the core hashing function a few times with small, but
>> exponentially increasing memory sizes. This will overwrite just about
>> everything, providing slightly improved garbage-collector attack resistance
>> without much performance loss. However, it increases complexity, and I
>> think I was the only one who felt the additional security against
>> garbage-collection attacks was worth it.
>>
>>
--
Best regards,
Dmitry Khovratovich
Content of type "text/html" skipped
Powered by blists - more mailing lists