Рубрика «openssl» - 3

Как выпустить самоподписанный SSL сертификат и заставить ваш браузер доверять ему - 1

Все крупные сайты давно перешли на протокол https. Тенденция продолжается, и многие наши клиенты хотят, чтобы их сайт работал по защищенному протоколу. А если разрабатывается backend для мобильного приложения, то https обязателен. Например, Apple требует, чтобы обмен данными сервера с приложением велся по безопасному протоколу. Это требование введено с конца 2016 года.

На production нет проблем с сертификатами. Обычно хостинг провайдер предоставляет удобный интерфейс для подключения сертификата. Выпуск сертификата тоже дело не сложное. Но во время работы над проектом каждый разработчик должен позаботиться о сертификате сам.
В этой статье я расскажу, как выпустить самоподписанный SSL сертификат и заставить браузер доверять ему.
Читать полностью »

В рамках одного из своих проектов я решил сделать сделать асинхронное шифрование.

Вся работа была разбита не несколько этапов:

  1. Генерация ключей
  2. Чтение и загрузка ключей
  3. Шифрование одной строки
  4. Расшифровывания одной строки
  5. Шифрование текста произвольной длинны
  6. Расшифровывание данных произвольной длинны

image
Читать полностью »

image

Мотивация

В русскоязычном интернете трудно найти информацию об API-библиотеке OpenSSL. Большое внимание уделяется использованию консольных команд для манипуляции с самоподписанными сертификатами для веб-серверов или OpenVPN-серверов.

Такой подход хорош, когда нужно сделать пару сертификатов в час. А если потребуется создать сразу пару сотен за минуту? Или писать скрипт и разбирать вывод из консоли? А если в процессе произошла ошибка?

При использовании API генерация сертификатов, проверка валидности и подпись выполняются гораздо проще. Появляется возможность контролировать и обрабатывать ошибки на всех этапах работы, а также указывать дополнительные параметры сертификата (поскольку не все параметры можно задавать из консоли) и производить тонкую настройку.

Отдельно стоит отметить сетевую составляющую. Если сертификат есть и просто лежит на диске, он бесполезен.

К сожалению, очень мало русской документации по вопросу организации SSL-сервера, по тому, как организовать SSL-клиент для получения данных. Официальная документация не настолько полна и хороша, чтобы можно было сразу включиться в работу с библиотекой. Не все функции описаны подробно, приходится экспериментировать с параметрами, с тем, в какой последовательности и что именно нужно очищать, а что библиотека удалит самостоятельно.

Данная статья — компиляция моего опыта по работе с библиотекой OpenSSL при реализации клиент-серверного приложения. Описанные в ней функции будут работать как на десктопе, так и на Android-устройствах. К статье прилагается репозиторий с кодом на C/C++ для того, чтобы вы могли увидеть работу описываемых функций.

Цель Читать полностью »

Padding Oracle Attack: криптография по-прежнему пугает - 1

Эту уязвимость чинят уже пятнадцать лет

В хабрапереводе текста четырёхгодовалой давности «Padding Oracle Attack или почему криптография пугает» была подробно описана атака на режим шифрования CBC. В этом режиме каждый очередной блок открытого текста xor-ится с предыдущим блоком шифротекста: в результате каждый блок шифротекста зависит от каждого блока открытого текста, который был обработан к тому моменту.

Padding Oracle Attack: криптография по-прежнему пугает - 2

Чтобы пропустить исходное сообщение (произвольной длины) через CBC-шифр, к нему дописывается MAC (хеш для проверки целостности, обычно 20-байтный SHA-1) и затем padding, чтобы дополнить открытый текст до целого числа блоков (обычно 16-байтных):

Padding Oracle Attack: криптография по-прежнему пугает - 3

Padding («набивка») состоит из одинаковых байтов, на единицу меньших своей длины: (0) или (1,1) или (2,2,2) или т.п.
Таким образом, получатель шифротекста должен

  1. расшифровать все его блоки;
  2. прочитать последний байт последнего блока, чтобы определить длину набивки и, соответственно, позицию MAC в открытом тексте;
  3. проверить корректность набивки и MAC.

В 2002 г. французский криптограф Серж Воденэ обнаружил в CBC уязвимость к атакам типа «padding oracle»: Читать полностью »

Пакет Network Security Services (NSS) представляет собой набор библиотек, используемых при кроссплатформенной разработке защищенных клиентских и серверных приложений.
Читать полностью »

Здравствуйте, уважаемыее! По мере моего посильного занятия криптографией для своих скромных нужд, в попытках поддержать достойный уровень безопасности данных (я ориентируюсь на уровни, указанные в разделе ecrypt тут) меня начало беспокоить падение производительности при использовании криптоалгоритма RSA.

К сожалению, этот алгоритм оказался единственным в openssl, который допускает шифрование/дешифровку маленьких блоков данных (предполагается по смыслу статьи — ключей для алгоритмов симметричного шифрования) с помощью асимметричных криптоалгоритмов.

Прогулявшись по просторам интернета, удалось выяснить, что:

1. El-Gamal может успешно шифровать/расшифровывать, но эти операции не реализованы в openssl (есть реализация в libgcrypt). В плане быстродействия El-Gamal раза в 3 быстрее RSA
при той-же длине ключа и той-же криптостойкости на 1 бит ключа.

2. Elliptic Curve cryptosystem (ECC) приятно удивили скоростью и криптостойкостью на 1 бит ключа, но операции шифрования/дешифрования на основе ECC не реализованы в openssl.
Реализация ECC шифрования в libgcrypt есть, но очень специфична. Если коротко, то шифруемое сообщение m отображается на точку эллиптической кривой mG, из которой исходное сообщение m не может быть получено иначе, как взломом ECC или перебором всех возможных значений m.

3. В литературе [1] описана Menezes-Vanstone ECC, но есть уведомления о ее «уязвимости» [2]
Разберем этот вопрос подробнее.
Читать полностью »

В наше время HTTPS обязателен для каждого веб-сайта: пользователи ищут замочек в адресной строке, когда передают личные данные; Chrome и Firefox недвусмысленно помечают как небезопасные веб-сайты с формами на страницах без HTTPS; это влияет на позиции в поисковой выдаче и оказывает серьёзное влияние на приватность в целом. Кроме того, сейчас имеется несколько вариантов получить бесплатный сертификат, так что переход на HTTPS — всего лишь вопрос желания.

Установка HTTPS может немного пугать неподготовленного пользователя — она требует многих шагов с участием различных сторон, а также специфических знаний криптографии и серверных конфигураций, да и вообще в целом кажется сложной.

В этом руководстве я объясню отдельные компоненты и шаги и ясно изложу каждый этап установки. У вас должно всё пройти гладко, особенно если ваш хостер сам предоставляет сертификаты HTTPS — тогда высока вероятность, что вы быстро и просто всё сделаете не выходя из панели управления.

Сюда включены детальные инструкции для владельцев виртуального хостинга на cPanel, администраторов серверов Apache HTTP и nginx под Linux и Unix, а также Internet Information Server под Windows.
Читать полностью »

GoTo MeetUp: Security by Default - 1

Информационная безопасность — это важно; впрочем, это знание мало кому помогает. Количество соединенных general-purpose компьютеров (==сложность) растёт каждый день, происходят очень реальные инциденты от Heart или Cloudbleed до Stuxnet или проблем с бортовым компьютером Toyota (когда машина не останавливается), и ситуация не становится лучше сама по себе. Становится хуже, потому что "интернет вещей" — это стартапы, делающие физическую инфраструктуру типа лампочек или дверных замков (разработчики SCADA плачут кровавыми слезами). Потому что огромное количество кода пишется на memory-unsafe языках. Потому что образование разработчиков — это, как правило, либо про фичи (проекты / этожпрототип), либо про фундаментальные алгоритмы (что не помогает пониманию того, что система работает не в вакууме).

Кажется, что основных корней проблемы два: это небезопасный инструментарий — например, ЯП (C/C++) и библиотеки (OpenSSL), и люди. Люди забывают про ИБ, думают "выпустим что-нибудь, а потом разберёмся", не понимают tradeoff'ы своих инструментов (то, что "C — это быстро", знают все, а вот про memory unsafety и масштаб UB — немногие), etc. Первая проблема сейчас решается сообществом: разрабатываются безопасные языки типа Rust и простые, понятные библиотеки типа TweetNaCl. Остаётся вторая (ведь хорошим инструментам надо ещё научить, как и соответствующему мышлению).

Поэтому мы проводим митап по информационной безопасности Security by Default.

Читать полностью »

Эллиптическая криптография, обладая высокой стойкостью и широкой распространенностью, всегда вызывала много споров и спекуляций на предмет возможных закладок для разных кривых и схем подписи. При этом никто не смог привести пример подобной закладки или же доказать их отсутствие. Потому, в отличие от симметричной криптографии, где лидерство безоговорочно принадлежит AES, асимметричная криптография используется разных видов, в зависимости от предпочтений, технических или законодательных требований. Дополнительные типы подписей адресов в I2P предоставляют больший выбор и гибкость для приложений. ГОСТ поддерживается в openssl через EVP интерфейс, однако в версии 1.1 он исключен из стандартной поставки, кроме того существующая реализация предполагает хранение и передачу публичных ключей и подписей в формате DER, а I2P работает непосредственно с числами, определяя необходимые параметры из типа подписи.
Читать полностью »

I think noone ever looked at the code as deeply as you did.
(Я думаю, что еще никто так глубоко не заглядывал в мой код, как вы.)

Christian Hohnstädt

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js