Отговори на тема  [ 56 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща
TLS/SSL библитечки 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10369
Местоположение: Добрич
Мнение TLS/SSL библитечки
Сигурно ще се наложи да сглобим нещо по-пълно, че досега имаме само отделни криптирания и парченца. Гледам в нета вече има готови библиотечки и сега почвам една по една да свалям и да разглеждам. Даже са повече отколкото си мислех и ще ми се наложи да отделя повече време за проучване. Освен ако някой вече не ги е преслушал и да ми спести част от ровенето? :-)


Пон Юли 18, 2016 8:44 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Вто Окт 25, 2005 9:54 am
Мнения: 865
Мнение Re: TLS/SSL библитечки
PolarSSL съм ползвал, нямах особено проблеми, сега се подвизава под името mbed TLS...


Пон Юли 18, 2016 9:21 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10369
Местоположение: Добрич
Мнение Re: TLS/SSL библитечки
Мда те са едни от първите, даже съм ползвал техния AES но алгоритмите им са таблични и не особено подходящи за АРМ. Аз отдавна не ги ползвам и не бих ги ползвал, въпреки че по ирония на съдбата сега се предлагат от АРМ :?

Иначе за протокола ето първите дето излизат в гугъл:
(някои са само криптирания, но пък добре написани)

==================================================================================================
ACL - ARM cryptographic library
==================================================================================================
https://github.com/medvid/acl
A cryptographic library optimized for the ARM7TDMI architecture. The library includes the AES, SHA, RSA, some PRNGs and ECC (ECDSA) over all the SECG-recommended curves. The library is written in GNU assembler and C, the testing is done in Keil uVision3.


==================================================================================================
wolfSSL (formerly CyaSSL)
==================================================================================================
https://wolfssl.com/wolfSSL/wolfssl-stm32.html
The wolfSSL embedded SSL/TLS library (formerly CyaSSL) has support for the hardware-based cryptography and random number generator offered by the STM32F2/F4 through the STM32 Standard Peripheral Library.
Supported cryptographic algorithms accelerated in hardware include AES (CBC, CTR), DES (ECB, CBC), 3DES, MD5, and SHA1. For details regarding the STM32 cryptography and hash processors, please see the STM32Fxx Standard Peripheral Library document:


==================================================================================================
CycloneSSL
==================================================================================================
http://www.oryx-embedded.com/cyclone_ssl.html

CycloneSSL is a lightweight SSL/TLS implementation targeted for use by embedded application developers. It provides the ability to secure communications over the Internet (e.g. electronic mail, web server, file transfer, VoIP). CycloneSSL implements all the necessary cryptographic features to make your application safe and secure. The stack is distributed as a full ANSI C and highly maintainable source code.


Server and/or client operation
Supports SSL 3.0 as well as TLS 1.0, TLS 1.1 and TLS 1.2 protocols
Robust and efficient implementation
Supports ECC (Elliptic Curve Cryptography)
Rich set of TLS cipher suites (including Suite B profile)
RSA, Diffie-Hellman and ECDH key exchange algorithms
DSA and ECDSA signature schemes
Supports stream ciphers, CBC block ciphers as well as AEAD ciphers (CCM and GCM)
Cryptographic library for common encryption algorithms (RC4, IDEA, DES, 3DES, AES, Camellia, SEED and ARIA)
Supports MD5, SHA-1, SHA-256 and SHA-384 hash algorithms
SSL/TLS session resumption
PKIX path validation
Compliant with BSD socket API
Supports hardware accelerated encryption engines (when available)
Flexible memory footprint. Built-time configurathttps://www.linkedin.com/groups/85447ion to embed only the necessary features
Consistent application programming interface (API)
Portable architecture (no processor dependencies)


==================================================================================================
mbed TLS (formerly known as PolarSSL)
==================================================================================================
https://tls.mbed.org/
https://en.wikipedia.org/wiki/Mbed_TLS

mbed TLS supports a number of different cryptographic algorithms:
Ciphers
AES, Camellia, DES, RC4, RC5, Triple DES, XTEA, Blowfish
Cryptographic hash functions
MD5, MD2, MD4, SHA-1, SHA-2
Public-key cryptography
RSA, Diffie-Hellman key exchange, Elliptic curve cryptography (ECC), Elliptic curve Diffie–Hellman (ECDH), Elliptic Curve DSA (ECDSA)


==================================================================================================
Botan: Crypto and TLS for C++11
==================================================================================================
https://botan.randombit.net/

Botan (Japanese for peony) is a cryptography library written in C++11 and released under the permissive Simplified BSD license.

It contains TLS client and server implementation, X.509 certificates, ECDSA, AES, GCM, ChaCha20Poly1305, McEliece, bcrypt and other useful tools.


==================================================================================================
OpenSSL
==================================================================================================
https://www.openssl.org/

OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library. For more information about the team and community around the project, or to start making your own contributions...



==================================================================================================
GnuTLS
==================================================================================================
http://www.gnutls.org/

Overview
GnuTLS is a secure communications library implementing the SSL, TLS and DTLS protocols and technologies around them. It provides a simple C language application programming interface (API) to access the secure communications protocols as well as APIs to parse and write X.509, PKCS #12, OpenPGP and other required structures. It is aimed to be portable and efficient with focus on security and interoperability.
Features
Support for TLS 1.2, TLS 1.1, TLS 1.0, and SSL 3.0 protocols
Support for DTLS 1.2, and DTLS 1.0, protocols
Support for certificate path validation, as well as DANE and trust on first use.
Support for the Online Certificate Status Protocol (OCSP).
Support for multiple certificate types including X.509 and OpenPGP certificates.
Support for public key methods, including RSA and Elliptic curves, as well as password and key authentication methods such as SRP and PSK protocols.
Support for all the strong encryption algorithms, including AES and Camellia.
Support for CPU-assisted cryptography with VIA padlock and AES-NI instruction sets.
Support for cryptographic accelerator drivers via /dev/crypto.
Supports natively HSMs and cryptographic tokens, via PKCS #11 and the Trusted Platform Module (TPM).
Runs on most Unix platforms and Windows.

==================================================================================================
MatrixSSL
==================================================================================================

MatrixSSL stack is a modular source code SDK ideally suited for IoT usage due to its low memory footprint (<50KB, even down to 10kB for MatrixSSL Tiny) and efficient RAM utilization (4KB per connection, even less than 1kB for MatrixSSL Tiny). It even runs on platforms without filesystem, memory allocation or multi-threading

Features
TLS 1.0, 1.1 and 1.2 server and client support (SSL 3.0 optional)
DTLS 1.0 and 1.2 server and client support
Included crypto library - RSA, ECC (including Brainpool curves), AES, 3DES, ARC4, SHA1, SHA256, MD5, ChaCha20-Poly1305
Session re-keying and cipher renegotiation
Session resumption/caching, Stateless Session Tickets
Extensions: Server Name Indication, max fragment length, trusted CA keys, truncated HMAC, Status Request (OCSP)
RFC7301 Application Protocol Negotiation
Server and client X.509 certificate chain authentication
Parsing of X.509 .pem and ASN.1 DER certificate formats
PKCS#1.5, PKCS#5, PKCS#8 and PKCS#12 key formatting
RSASSA-PSS Signature Algorithm support
Online Certificate Status Protocol (OCSP)
Certificate Revocation List (CRL)
CMS and PKCS#10 support
SSH command line support (commercial option)
FIPS140-2 validated SafeZone crypto (commercial option)
OpenSSL APIs wrapper to ease transition from OpenSSL


==================================================================================================
micro-ecc
==================================================================================================
https://github.com/kmackay/micro-ecc


A small and fast ECDH and ECDSA implementation for 8-bit, 32-bit, and 64-bit processors.

The static version of micro-ecc (ie, where the curve was selected at compile-time) can be found in the "static" branch.
Features
Resistant to known side-channel attacks.
Written in C, with optional GCC inline assembly for AVR, ARM and Thumb platforms.
Supports 8, 32, and 64-bit architectures.
Small code size.
No dynamic memory allocation.
Support for 5 standard curves: secp160r1, secp192r1, secp224r1, secp256r1, and secp256k1.
BSD 2-clause license.


Пон Юли 18, 2016 4:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 11:21 am
Мнения: 1029
Мнение Re: TLS/SSL библитечки
miro_atc написа:
wolfSSL (formerly CyaSSL)


Не си споменал изисквания за лиценза. Тази изглежда доста пълна и много се рекламират по разни конференции, но е под GPL. Тоест ако не си готов да пуснеш и твоя код под същия лиценз ще трябва да си закупиш от тях комерсиален - според сайта им струва $5К на устройство. Ако не те устройва комерсиален лиценз трябва да се търси нещо под LGPL/BSD или подобен.


Вто Юли 19, 2016 9:24 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10369
Местоположение: Добрич
Мнение Re: TLS/SSL библитечки
бр... вдигам темата че нещо пак ми е болезнено актуална :evil:

Някой да е срещнал нещо по-олекотено през последната година?

Аз почнах да пиша, ама за две седмици съм направил едва едно client hello и още колко има направо не ми се мисли...


Съб Юни 10, 2017 1:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 10:53 pm
Мнения: 4194
Местоположение: Brussels / Пловдив
Мнение Re: TLS/SSL библитечки
Виж тука дали няма нещо да ти свърши работа:

https://www.facebook.com/groups/devbg/p ... cation=ufi

https://github.com/svetoslavenchev/open ... 6-cbc-cmac

_________________
Мразя да мразя ...


Съб Юни 10, 2017 1:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10369
Местоположение: Добрич
Мнение Re: TLS/SSL библитечки
това е само един чипър... мъката е в протокола (TLS по ново му и SSL по старо му).

Една от причините да седна да пиша протоколи е че някои от чипърите вече ги имам разписани (тоя конкретно на асемблер) и се надявах че един тъп протокол бързо ще го смеля... ама нещо съм се надценил :oops:


Съб Юни 10, 2017 2:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: TLS/SSL библитечки
Из дебрите на IoT много ползват mbedtls. Гледах скоро че в OpenWrt има възможност из конфига да се избере mbedtls вместо openssl. Не че е индикация на лекота, но е за портабилност.
В esp-тата пак май някъде го ползваха.


Пон Юни 12, 2017 8:43 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10369
Местоположение: Добрич
Мнение Re: TLS/SSL библитечки
mbedtls е една от базовите библиотечки. Тя, както и другите са писани ако не от нула, то почти от нула. И тъй като материалът е доста обемист, съвсем естествено следват логиката на протоколите мо-та-мо...
За съжаление обаче протоколите са малко тъпичко направени. Самите съобщения са с променлива дължина и докато не генерираш съобщението не е ясно колко ще е голямо. След генериране в зависимост от текущия чипър може преди данните са вмъкват инициализационни вектори, може да се подравнява, може да се добавят сигнатури отзад. Изобщо има един куп операции, които променят дължините и позициите на данните. А първото нещо което се изпраща са разни дължини.
За да се справят с всичко това базовите библиотечки просто изискват по един голям буфер на входа и един на изхода, местят напред-назад докато не изджуркат съобщението и чак като всичко е готово пращат всичко на куп. За съжаление обаче аз нямам толкова свободна памет. Хайде embdeda малко са го опитимизирали и буферите му са "само" около 35-40К на сесия. За една сесия може и да успея, но втора не мога да вдигна. Но ембдеда по принцип е тежичък и има по-леки, ама те пък искат двойно повече на сесия. Та с две думи нито една от базовите библиотечки не ми пасва...
От друга страна е възможно с малко реорганизация логиката може да се спести. На един пас се пускат обработките на сухо, без да се генерират съобщения, само се вадят нужните дължини и данни. И след като ги имаш вече на следващ пас може да генерираш данните без буфери или с далеч по-малки буфери. Пести се памет, пести се и от многото memcpy напред-назад...
Въпросът е, че подобни оптимизации е много по-лесно да се направят след като имаш вече работещ код. А тези, които имат работещ код писан с години рядко тръгват да го преработват и да му сменят логиката. Поне аз не видях оптимизирана библиотечка сред основните. По-скоро някой идиот като мен може да е седнал да опитимизира... ама заради лицензите едва ли много ще се афишира. То и аз се чудя как точно да го направя, щото малко или много крада чужд код, макар и да го преработвам доста ;-)


Пон Юни 12, 2017 9:52 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: TLS/SSL библитечки
Съгласен съм с това, няма да е лесно. Гледах че май за axtls даваха около 35К на сесия апетит за РАМ. Това с по 15К входен и изходен буфер.


Пон Юни 12, 2017 2:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10369
Местоположение: Добрич
Мнение Re: TLS/SSL библитечки
Не го знаех тоя...
По принцип record size-а е 16К плюс овърхеда от чипърите отива към 17+К. Тоя е смлял посоките, демек ползва общ буфер, което за хендшейка става, ама после ограничава и лузера с еднопосочна комуникация...
Както и да е, видях че си е играл повече с чипърите (макар да поддържа малко на брой). Ще го преслушам като стигна до тях...


Пон Юни 12, 2017 3:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10369
Местоположение: Добрич
Мнение Re: TLS/SSL библитечки
И до чипърите стигнах... и при тях е голяма каша:-(
Всеки го има в няколко варианта и не е ясно кой е по-по-най...


Вто Юни 13, 2017 8:12 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 1:45 am
Мнения: 260
Мнение Re: TLS/SSL библитечки
// Offtopic
Чипър == Cipher/"Сайфър"/Шифър ?


Вто Юни 13, 2017 9:40 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10369
Местоположение: Добрич
Мнение Re: TLS/SSL библитечки
Chipher е шифър/кодиране, но не пиша тълковен речник ;-)

най-известните са AES, RSA и разните елиптични и други криви... Но аз по инерция често викам чипъри и на хешове, дайгести и т.н. (ша-та, ма-та, хашмакове, MD5 и т.н.)


Вто Юни 13, 2017 10:17 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9645
Мнение Re: TLS/SSL библитечки
миро,
на твоите чипчета няма ли крипто-акселератори, поне за популярните 'чипъри'?
ако няма... защо изобщо се занимаваш с тях


Вто Юни 13, 2017 10:21 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 56 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни