Discussion:
Lekka biblioteka krypto?
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Maciej Sobczak
2020-01-14 20:44:32 UTC
Permalink
Zna ktoś jakąś lekką bibliotekę kryptograficzną dla C lub C++?
Czyli taką, która pozwala np. wyliczyć hash albo zaszyfrować/odszyfrować coś znanym algorytmem albo może też wygenerować klucze do tegoż.

Istotnymi parametrami są ilość kodu, jego szeroko rozumiana "hackowalność" i brak zależności od innych bibliotek.

Znam i używałem BeeCrypt. Poza licencją jest OK. Czy są jakieś alternatywy?
--
Maciej Sobczak * http://www.inspirel.com
g***@gmail.com
2020-01-14 21:45:24 UTC
Permalink
Post by Maciej Sobczak
Zna ktoś jakąś lekką bibliotekę kryptograficzną dla C lub C++?
Czyli taką, która pozwala np. wyliczyć hash albo zaszyfrować/odszyfrować coś znanym algorytmem albo może też wygenerować klucze do tegoż.
Istotnymi parametrami są ilość kodu, jego szeroko rozumiana "hackowalność" i brak zależności od innych bibliotek.
Znam i używałem BeeCrypt. Poza licencją jest OK. Czy są jakieś alternatywy?
Ja zawsze wygugliwałem sobie w sieci poszczególne algorytmy, i z reguły udawało się coś znaleźć.

Jeżeli idzie o bardziej systematyczny zbiór bibliotek, to swego czasu znalazłem gościa, który utrzymuje coś takiego dla języka Scheme:

https://github.com/weinholt/industria
https://github.com/weinholt/hashing

kod jest raczej czytelny, a w razie czego można pojechać jakimś kompilatorem Scheme->C (np. Chicken albo Gambit) i zobaczyć, czy efekt będzie zadowalający.

Szybkie zapytanie na GitHubie zwróciło mi też np. coś takiego (w C++):
https://github.com/JamisHoo/Cryptographic-Algorithms

ale nie używałem.
Maciej Sobczak
2020-01-15 08:17:37 UTC
Permalink
Post by g***@gmail.com
kod jest raczej czytelny, a w razie czego można pojechać jakimś kompilatorem Scheme->C
To jest w ogóle ciekawe zagadnienie, bo nie jest jasne, co się ma wtedy stać z licencją.

Tak czy inaczej, po pierwszym rzucie oka wygląda jakby Scheme miał wbudowaną arytmetykę dużych liczb a ta biblioteka już na tym polega. Co zrobi translator?
Post by g***@gmail.com
Szybkie zapytanie na GitHubie
Tylko widzisz - zapytanie na GitHubie to ja też umiem. Natomiast nie wiem, co o takim znalezisku myśleć. Dlatego pytam na grupie, bo opinia na podstawie doświadczenia jest cenniejsza, niż wynik z indeksu.
--
Maciej Sobczak * http://www.inspirel.com
Borneq
2020-01-14 21:52:59 UTC
Permalink
Post by Maciej Sobczak
Zna ktoś jakąś lekką bibliotekę kryptograficzną dla C lub C++?
Czyli taką, która pozwala np. wyliczyć hash albo zaszyfrować/odszyfrować coś znanym algorytmem albo może też wygenerować klucze do tegoż.
Istotnymi parametrami są ilość kodu, jego szeroko rozumiana "hackowalność" i brak zależności od innych bibliotek.
Znam i używałem BeeCrypt. Poza licencją jest OK. Czy są jakieś alternatywy?
Choćby moje tłumaczenie z Pascala: https://github.com/borneq/DCPCryptCpp
powinna działać, przy czym ma dodaną jeszcze funkcję sha3 w
implementacji , która
- jest czytelna
- działa szybko
Maciej Sobczak
2020-01-15 08:38:23 UTC
Permalink
Post by Borneq
Choćby moje tłumaczenie z Pascala: https://github.com/borneq/DCPCryptCpp
Kod wygląda na fajny, czytelny i ogólnie przyjazny.
Ale widzę, że są tylko symetryczne algorytmy. Zgadza się?

A jak generować klucze? Jakimś zewnętrznym narzędziem?
--
Maciej Sobczak * http://www.inspirel.com
Borneq
2020-01-15 12:52:41 UTC
Permalink
Post by Maciej Sobczak
Post by Borneq
Choćby moje tłumaczenie z Pascala: https://github.com/borneq/DCPCryptCpp
Kod wygląda na fajny, czytelny i ogólnie przyjazny.
Ale widzę, że są tylko symetryczne algorytmy. Zgadza się?
A jak generować klucze? Jakimś zewnętrznym narzędziem?
To bardziej skomplikowana sprawa. Może użyć bibliotek (do tej pory nie
używałem ich) SSL jak libeay32.dll czy ssleay32.dll pod Windows?
Bo tu trzeba by mieć i generator pseudolosowy i to mocny
kryptograficznie i zgodność ze standardami.
M.M.
2020-01-15 01:11:26 UTC
Permalink
Post by Maciej Sobczak
Zna ktoś jakąś lekką bibliotekę kryptograficzną dla C lub C++?
Czyli taką, która pozwala np. wyliczyć hash albo zaszyfrować/odszyfrować coś znanym algorytmem albo może też wygenerować klucze do tegoż.
Istotnymi parametrami są ilość kodu, jego szeroko rozumiana "hackowalność" i brak zależności od innych bibliotek.
Znam i używałem BeeCrypt. Poza licencją jest OK. Czy są jakieś alternatywy?
--
Maciej Sobczak * http://www.inspirel.com
A po prostu openssl?

Pozdrawiam
Maciej Sobczak
2020-01-15 08:48:48 UTC
Permalink
Post by M.M.
A po prostu openssl?
Nie kojarzy mi się z określeniem "lekka". :-)
To ma chodzić na mikrokontrolerze i ma tam nie dominować nad właściwą aplikacją. O ile w ogóle da się ją tak użyć.

Bo w szczególności to, co autor (jakiejkolwiek) biblioteki wyobrażał sobie na temat środowiska kompilacji to jest ogólnie nieprawda. Dlatego zależy mi na tym, żeby była "hackowalna", czyli jak najprostsza w rozszarpywaniu jej na kawałki i przeszczepianiu w inne miejsce. W tej kategorii najfajniej wyglądają BeeCrypt (ale ma trudną licencję) i właśnie Andrzejowe DCPCryptCpp (ale nie ma asymetrycznych algorytmów).
--
Maciej Sobczak * http://www.inspirel.com
M.M.
2020-01-15 10:30:55 UTC
Permalink
Post by Maciej Sobczak
Post by M.M.
A po prostu openssl?
Nie kojarzy mi się z określeniem "lekka". :-)
To ma chodzić na mikrokontrolerze i ma tam nie dominować nad właściwą aplikacją. O ile w ogóle da się ją tak użyć.
Bo w szczególności to, co autor (jakiejkolwiek) biblioteki wyobrażał sobie na temat środowiska kompilacji to jest ogólnie nieprawda. Dlatego zależy mi na tym, żeby była "hackowalna", czyli jak najprostsza w rozszarpywaniu jej na kawałki i przeszczepianiu w inne miejsce. W tej kategorii najfajniej wyglądają BeeCrypt (ale ma trudną licencję) i właśnie Andrzejowe DCPCryptCpp (ale nie ma asymetrycznych algorytmów).
--
Maciej Sobczak * http://www.inspirel.com
Nie wiem, ale może nie odpuszczaj tak szybko OpenSSL.

https://www.avrfreaks.net/forum/openssl

Cytat:

[
Have a quick eye-over http://avr32linux.org/twiki/bin/...

Porting OpenSSL across hopefully is as easy as adding a --host=avr32-linux on the configure command but often that isn't the case.

Once it's compiled, install it to your AVR32 root fs (SD card, NFS etc.). This is most easily done my mounting your AVR32 root fs on your build machine and specifying the prefixes for make install as being in there.

Once that's all done, you're good to go! Code using OpenSSL shouldn't be different under the AVR32 so any example code you find around will be applicable.
]

Pozdrawiam
Borneq
2020-01-15 13:00:49 UTC
Permalink
Post by Maciej Sobczak
Post by M.M.
A po prostu openssl?
Nie kojarzy mi się z określeniem "lekka". :-)
To ma chodzić na mikrokontrolerze i ma tam nie dominować nad właściwą aplikacją. O ile w ogóle da się ją tak użyć.
Bo w szczególności to, co autor (jakiejkolwiek) biblioteki wyobrażał sobie na temat środowiska kompilacji to jest ogólnie nieprawda. Dlatego zależy mi na tym, żeby była "hackowalna", czyli jak najprostsza w rozszarpywaniu jej na kawałki i przeszczepianiu w inne miejsce. W tej kategorii najfajniej wyglądają BeeCrypt (ale ma trudną licencję) i właśnie Andrzejowe DCPCryptCpp (ale nie ma asymetrycznych algorytmów).
Trzeba by jeszcze sprawdzić dokładnie licencje:
Tłumaczyłem z https://wiki.freepascal.org/DCPcrypt które ma właśnie
licencję MIT, do tego włączyłem fajną obsługę sha3 (kiedyś miałem inną,
powolną i mniej czytelną) z innego projektu i Argon2.
Może kiedyś jeszcze wezmę się aby napisać inną część biblioteki
rozbudowaną o podpisy, ale tu:
- potrzeba źródła entropii
- musi być random bezpieczne kryptograficznie
- operacje na dużych liczbach, wykonuje to Boost, ale może dla prędkości
trzeba by włączyć trochę kodu GMP, zarówno dla random jak i dla kluczy.
Dla RSA trzeba by sporo mieć kodu działąjącego na dużych liczbach, bo tu
byłoby wiele typów operacji gdy szukamy liczb pierwszych.
Nie wiem za bardzo czy kryptografia krzywych eliptycznych nie powoduje,
że kryptografia liczb pierwszych przestaje być potrzebna? Dla krzywych
eliptycznych możemy działać na o wiele krótszych liczbach i chyba ma
wszystkie właściwości asymetryczne?
M.M.
2020-01-15 13:12:44 UTC
Permalink
Post by Borneq
Post by Maciej Sobczak
Post by M.M.
A po prostu openssl?
Nie kojarzy mi się z określeniem "lekka". :-)
To ma chodzić na mikrokontrolerze i ma tam nie dominować nad właściwą aplikacją. O ile w ogóle da się ją tak użyć.
Bo w szczególności to, co autor (jakiejkolwiek) biblioteki wyobrażał sobie na temat środowiska kompilacji to jest ogólnie nieprawda. Dlatego zależy mi na tym, żeby była "hackowalna", czyli jak najprostsza w rozszarpywaniu jej na kawałki i przeszczepianiu w inne miejsce. W tej kategorii najfajniej wyglądają BeeCrypt (ale ma trudną licencję) i właśnie Andrzejowe DCPCryptCpp (ale nie ma asymetrycznych algorytmów).
Tłumaczyłem z https://wiki.freepascal.org/DCPcrypt które ma właśnie
licencję MIT, do tego włączyłem fajną obsługę sha3 (kiedyś miałem inną,
powolną i mniej czytelną) z innego projektu i Argon2.
Może kiedyś jeszcze wezmę się aby napisać inną część biblioteki
- potrzeba źródła entropii
- musi być random bezpieczne kryptograficznie
- operacje na dużych liczbach, wykonuje to Boost, ale może dla prędkości
trzeba by włączyć trochę kodu GMP, zarówno dla random jak i dla kluczy.
Dla RSA trzeba by sporo mieć kodu działąjącego na dużych liczbach, bo tu
byłoby wiele typów operacji gdy szukamy liczb pierwszych.
Nie wiem za bardzo czy kryptografia krzywych eliptycznych nie powoduje,
że kryptografia liczb pierwszych przestaje być potrzebna? Dla krzywych
eliptycznych możemy działać na o wiele krótszych liczbach i chyba ma
wszystkie właściwości asymetryczne?
I nie mogą to być byle jakie liczby pierwsze, poza oczywistym faktem że
muszą być duże, musi być  też miedzy nimi duży odstęp (są metody łamania
gdy między liczbami jest mały odstęp) i jeszcze kilka wymogów. Jakaś
pomyłka w tych szczegółach i algorytm szyfrujący jest podatny na łamanie.

Pozdrawiam

M.M.
2020-01-15 01:15:05 UTC
Permalink
Post by Maciej Sobczak
Zna ktoś jakąś lekką bibliotekę kryptograficzną dla C lub C++?
Czyli taką, która pozwala np. wyliczyć hash
Do samych hashy qt się nadaje:

https://doc.qt.io/qt-5/qcryptographichash.html

Szyfrowania w qt nie widziałem.

Pozdrawiam
Kontynuuj czytanie narkive:
Loading...