Octavo - kryptografia done right™

9

Z racji ostatnio popularnych wybryków bibliotek(i) kryptograficznych postanowiłem napisać coś swojego od zera. Tak oto powstało:

https://github.com/libOctavo/octavo

Oczywiście praca jest w toku, ale trochę już jest zaimplementowane, a dokładniej:

  • funkcje haszujące:
  • MD4/5
  • RIPEMD160
  • SHA-1
  • SHA-2/3 224/256/384/512
  • Szyfry strumieniowe:
  • ChaCha20
  • Szyfry blokowe:
  • Blowfish
  • Asymetryczne:
  • RSA
  • MAC:
  • HMAC (dla dowolnej funkcji haszującej [yay!])
  • KDF:
  • bcrypt (jeszcze nie wylądował w odpowiedniej do tego ścieżce)

Jednakowoż (co chyba jest oczywiste), żaden z tych szyfrów aktualnie nie nadaje się do użycia w poważniejszych zastosowaniach, gdyż wymaga to jeszcze wielu testów, nt. luk w implementacji (na pewno RSA jest podatne na ataki czasowe).

TODO:

  • AES
  • Salsa20
  • GOST
  • PBKDF2
  • Whirpool
  • Tiger
  • DH
  • ECDH
  • DSA
  • potstawowa implementacja TLS 1.1 (całość SSL chcę pominąć jako niedostatecznie bezpieczną)

Wszelkich zainteresowanych współpracą przyjmę z otwartymi rękoma. Każda forma współpracy mile widziana.

0

Jednakowoż (co chyba jest oczywiste), żaden z tych szyfrów aktualnie nie nadaje się do użycia w poważniejszych zastosowaniach, gdyż wymaga to jeszcze wielu testów, nt. luk w implementacji (na pewno RSA jest podatne na ataki czasowe).

Pewnie jeszcze sporo testów zanim to będzie zdatne do produkcyjnego bezpiecznego użytku :P.

Spróbuję jej zainstalować i użyć do czegoś prostego, brzmi jak dobre wprowadzenie do rusta.

0

Masz przykłady jak użyć funkcji skrótu. Polecam użyć multirust bo pozwala szybko zainstalować wybraną wersję Rusta (aktualnie projekt kompiluj się na wszystkich wersjach, ale możliwe, że niedługo zostanie przeniesiony tymczasowo na nightly, chcę go uniezależnić od libstd a to działa na razie tylko w nightly, poza tym jest parę fajnych bajerów, które usprawnią pracę z Octavo).

0

No tak, ale te wybryki rzadko tyczyły się implementacji krypto prymitywów, przynajmniej sam nie mogę sobie teraz o takich przypadkach przypomnieć, a Ty właśnie na takich prymitywach teraz się skupiasz. Nawet uproszczone, świeże implementacje ułatwiające prace z TLS'em pod spodem często używają prymitywów z OpenSSL'a ;) Tym nie mniej powodzenia z projektem, sam Rust'a mam dość wysoko na swojej liście TODO :)

0

@several OpenSSL ma jedną zasadniczą wadę - API, które jest absurdalnie brzydkie. To jest m. in. powód, dla którego piszę Octavo. Nie kolejny wrapper, ale coś nowego.

0

@winerfresh tutaj pełna zgoda. Chociaż trochę się to ostatnio zmienia wraz z interfejsem EVP ;) OpenSSL przez długi czas był dotykany głównie przez dość wąskie grono kryptografów, dla których C jest absolutnie wystarczające do wszystkiego. Trzymam kciuki za Octavo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1