libtomcrypt icon indicating copy to clipboard operation
libtomcrypt copied to clipboard

Wishlist: Adding ciphers that are in other major libraries

Open DonaldTsang opened this issue 7 years ago • 14 comments

The goal of this Issue is to "price match" libtomcrypt with other cryptographic libraries in regards to functionality and variety.

reference: https://www.cryptopp.com/

  • Block Cipher
  • [x] IDEA
  • [ ] Kalyna
  • [ ] SIMON and SPECK
  • [ ] SM4
  • [ ] Threefish 256/512/1024
  • [x] Serpent
  • [ ] SHACAL 1 and 2
  • [x] TEA
  • Stream cipher
  • [x] Salsa20 and XSalsa20
  • [ ] Panama
  • [x] Sosemanuk

reference: https://botan.randombit.net/manual/

  • Block Cipher
  • [ ] DESX
  • [ ] GOST-28147-89
  • [ ] Lion
  • [ ] MISTY1
  • [x] Serpent
  • [ ] SM4
  • [ ] Threefish
  • Stream Cipher
  • [x] Salsa20
  • [x] SHAKE128
  • Block Cipher
  • Others
  • [ ] Cipher Cascades

reference: http://www.bouncycastle.org/csharp/index.html

  • [ ] CAST6
  • [ ] DESede
  • [ ] GOST28147
  • [ ] HC-128 and HC-256
  • [ ] ISAAC
  • [x] Serpent
  • [ ] TEA/XTEA
  • [ ] Threefish
  • [ ] Tnepres
  • [ ] VMPC
  • [x] XSalsa20
  • [ ] GOFB mode
  • [ ] OpenPGPCFB mode

Elliptic curves that are safe reference: https://eprint.iacr.org/2013/647

Type 224-bit 256-bit 384-bit 512-bit
Montgomery - [ ] M-221 - [ ] Curve25519 - [ ] M-383 - [ ] M-511
Edwards - [ ] E-222 - [ ] Curve1174 - [ ] E-382 - [ ] E-512

DonaldTsang avatar Feb 17 '18 14:02 DonaldTsang

I would like to note that Salsa20, XSalsa20 and ChaCha20 are all different ciphers.

DonaldTsang avatar Feb 17 '18 15:02 DonaldTsang

I would like to note that Salsa20, XSalsa20 and ChaCha20 are all different ciphers.

XSalsa20 is missing but the two others are already in the latest develop branch.

Btw. do you intend to submit PR's for all these ciphers? Or is this really just a wishlist ;)

sjaeckel avatar Feb 17 '18 16:02 sjaeckel

SIV can be ticked as soon as #319 is finished

sjaeckel avatar Feb 17 '18 16:02 sjaeckel

@sjaeckel I have some basic C skills, really want to PR when I understand pointers and OO.
I might need some guidance on copy-pasting ciphers correctly to conform with coding standards.

DonaldTsang avatar Feb 18 '18 14:02 DonaldTsang

@DonaldTsang I think we should aim at features available in modern crypto libraries like libsodium which is IMO what "cool kids" tend to use nowadays. If you have some spare time, could you please analyse what we are missing in comparison to libsodium?

From your list I agree with XSalsa20 + SIV but the rest are rarely used and IMO mostly not worth the effort (but I might be wrong; if you show me some real use-cases I may change my mind).

karel-m avatar Feb 25 '18 19:02 karel-m

@karel-m Should Salsa20 be extended to XSalsa20 (when longer IV is used) or should it be separate implementation?

LightBit avatar Mar 01 '18 18:03 LightBit

@LightBit if Salsa20 can easily be turned into XSalsa20 at runtime, so both could use the same basis, I'm pro extension. Otherwise we'd have to have a look what's best.

sjaeckel avatar Mar 01 '18 19:03 sjaeckel

ping @buggywhip ^^

karel-m avatar Mar 01 '18 19:03 karel-m

@sjaeckel Due to salsa20_ivctr64(), extension would add 64 bytes overhead in state for Salsa20 to save key and IV. It would re-setup, if IV is different and longer than 8 bytes, else only counter would change.

LightBit avatar Mar 01 '18 19:03 LightBit

Due to salsa20_ivctr64(), extension would ...

As salsa20 was not released yet (it is only in develop branch) we can still change its API if needed - e.g. incorporating salsa20_ivctr64 into salsa20_setup or/and introducing salsa20_xsetup.

karel-m avatar Mar 01 '18 22:03 karel-m

As salsa20 was not released yet (it is only in develop branch) we can still change its API if needed

yep

e.g. incorporating salsa20_ivctr64 into salsa20_setup or/and introducing salsa20_xsetup.

whoever wants to add xsalsa20 should just do it (preferably based on our salsa20) we'll then bring it in form together if required :)

sjaeckel avatar Mar 01 '18 22:03 sjaeckel

whoever wants to add xsalsa20 should just do it (preferably based on our salsa20) we'll then bring it in form together if required :)

I'm willing to take this on but need to finish my current project. ...or at least get to a good stopping point. ...perhaps in a week or two?

buggywhip avatar Mar 02 '18 00:03 buggywhip

@karel-m The reason I suggest adding legacy ciphers to the library is to allow future cryptographers to play around with it and test out new ideas.
The hashes from SPHLib is already being used in thousands of cryptocurrencies and tokens (see: X11, X13, X15)

DonaldTsang avatar Mar 02 '18 06:03 DonaldTsang

When talking about xsalsa20 it may be also a good idea to consider xchacha20 + xchacha20poly1305 (which are supported e.g. by libsodium)

karel-m avatar Mar 04 '18 19:03 karel-m