Skip to content
forked from medsec/catena

Reference Implementation of Catena, a memory-consuming password scrambler

License

Notifications You must be signed in to change notification settings

HPSchilling/catena

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Catena

Catena is a memory-consuming password scrambler that excellently thwarts massively parallel attacks on cheap memory-constrained hardware, such as recent graphical processing units (GPUs). Furthermore, Catena provides resistance against cache-timing attacks, since its memory-access pattern is password-independent.

Academic paper: catena-v3.1.pdf

Content

  • C reference implementation of Catena-blake2b

Instances

  • Catena-Dragonfly (formerly known as Catena-BRG)
  • Catena-Butterfly (formerly known as Catena-DBG)

Options

  • When using Catena in a productive environment we recommend to activate password overwriting. The password will then be erased from memory as soon as possible and the corresponding memory will be deallocated. This requires the password to lie in a writable part of the heap. Since this conflicts with the official PHS interface, it is not available when this option is enabled. To activate password overwriting append SAFE=1 to the invocation of make:

      make all SAFE=1
    
  • A tweak that replaces the reduced hash function H' with the full hash function, can be enabled by appending FULLHASH=1 to the invocation of make:

      make all FULLHASH=1
    

Compatibility

Both instances of Catena should work fine with clang as well as gcc. In our tests clang turned out to be faster in every scenario. The biggest speedup, roughly 10%, occurred when using Catena-Butterfly with the default values. We therefore choose clang as the default compiler for this implementation. Please let us know if you encounter any compiler-related bugs. Endianess detection relies on endian.h. If you are working on a big-endian system without this header, key-generation and keyed-hashing won't work as expected. You can fix this by editing the endianess detection at the top of catena.c

Dependencies

About

Reference Implementation of Catena, a memory-consuming password scrambler

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 99.6%
  • Other 0.4%