OpenSSL

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
OpenSSL
OpenSSL logo.svg
Тип програмна бібліотека
Розробники The OpenSSL Project
Стабільний випуск 1.1 (25 серпня 2016; 6 років тому (2016-08-25))
Репозиторій git.openssl.org/openssl.git
Операційна система багато-платформова
Мова програмування C
Ліцензія Apache License 1.0 та 4 твердження BSD License
Вебсайт www.openssl.org

CMNS: OpenSSL у Вікісховищі

OpenSSL — відкритий програмний продукт, розроблений як універсальна бібліотека для криптографії, що використовує протоколи Secure Sockets Layer і Transport Layer Security. Використовується, зокрема, в бібліотеці cUrl для реалізації роботи за протоколом https. Доступна для більшості UNIX-подібних операційних систем (включаючи Solaris/OpenSolaris, Linux, Mac OS X, QNX4[1], QNX6 і чотирьох операційних систем BSD з відкритим початковим кодом), а також для OpenVMS і Microsoft Windows.

Історія[ред. | ред. код]

OpenSSL заснований на SSLeay, написаної Еріком Янгом (Eric A. Young) і Тімом Гадсоном (Tim Hudson), які неофіційно закінчили працювати над ним в грудні 1998 року, коли вони почали працювати в проєкті RSA Security.

Влітку 2012 проєкт OpenSSL отримав для версії бібліотеки 1.0 сертифікат відповідності стандарту безпеки FIPS 140-2, що визначає вимоги до криптографічних модулів, необхідні для їхнього використання в державних установах США.[2][3] Сертифікат виданий Американським інститутом стандартів і технологій (NIST) після проведення відповідного аудиту коду проєкту. Виданий сертифікат примітний тим, що він виданий на початковий код продукту, а не конкретну бінарну збірку, що розширює область використання OpenSSL в державних проєктах.

В січні 2018 року проєкт отримав нагороду Макса Левчіна (англ. The Levchin Prize) за істотне покращення якості початкового коду бібліотеки[4].

Дати виходу основних релізів[ред. | ред. код]

Версії, що більше не підтримуються[ред. | ред. код]

  • OpenSSL 0.9.1c став доступним 23 грудня 1998.
  • OpenSSL 0.9.2b став доступним 22 квітня 1999.
  • OpenSSL 0.9.3 став доступним 25 травня 1999.
  • OpenSSL 0.9.4 став доступним 9 вересня 1999.
  • OpenSSL 0.9.5 став доступним 28 лютого 2000.
  • OpenSSL 0.9.6 став доступним 25 вересня 2000.
  • OpenSSL 0.9.7 став доступним 31 грудня 2002.
  • OpenSSL 0.9.8 став доступним 5 липня 2005.
  • OpenSSL 1.0.0 став доступним 29 березня 2010.[5]
  • OpenSSL 1.0.1 став доступним 14 березня 2012.

Поточні версії[ред. | ред. код]

  • OpenSSL 1.0.2 став доступним 22 січня 2015.
  • OpenSSL 1.1.0 став доступним 25 серпня 2016.
  • OpenSSL 1.1.1 має прев'ю релізи, опубліковані 29 травня та 19 червня 2018.[6]

Алгоритми[ред. | ред. код]

Реалізує наступні алгоритми шифрування:

Шифри
AES, Blowfish, Camellia, SEED, CAST-128, DES, IDEA, RC2, RC4, RC5, Triple DES, GOST 28147-89
Криптографічні хеш-функції
MD5, MD2, SHA-1, SHA-2, RIPEMD-160, MDC-2, GOST R 34.11-94
Асиметричні алгоритми шифрування
RSA, DSA, Протокол Діффі-Геллмана, Еліптична криптографія, GOST R 34.10-2001

Інциденти[ред. | ред. код]

Heartbbleed[ред. | ред. код]

Докладніше: Heartbleed

У квітні 2014 дослідниками компаній Google і Codenomicon в OpenSSL була виявлена ​​одна з найсерйозніших вразливостей (CVE-2014-0160)[7] в історії проєкту, яка зачіпає величезне число сайтів, серверних систем і клієнтських застосунків, що застосовують OpenSSL 1.0.1 для організації обміну даними через захищене з'єднання. Суть проблеми проявляється в можливості доступу до 64Кб пам'яті клієнтського або серверного процесу, з яким встановлено шифроване з'єднання.

Практична небезпека вразливості пов'язана з тим, що у схильній до витоку області пам'яті можуть розміщуватися закриті ключі або паролі доступу, які потенційно можуть бути отримані віддаленим зловмисником. У разі особливої атаки зловмисник може отримати вміст серверного ключа, що застосовується для організації шифрованого доступу до сервера, і потім організувати перехоплення захищеного трафіку (на транзитному вузлі). Також не виключений витік паролів, ідентифікаторів сесій і інших закритих даних клієнтських застосунків при спробі їх з'єднання з підконтрольними зловмисникам серверними системами.

Причиною проблеми є відсутність перевірки виходу за допустимі межі в коді реалізації TLS-розширення heartbeat (RFC 6520), що дозволяє віддаленій стороні ініціювати відправлення до 64Кб даних з області за межею поточного буфера. За деякими оцінками проблема охоплювала до половини серверних систем, які підтримували захищене з'єднання в Мережі, включаючи зібрані з OpenSSL 1.0.1 вебсервери (Apache httpd, nginx), поштові сервери, XMPP-сервери, VPN-системи, шлюзи і приховані сервіси анонімної мережі Tor.[8] Пов'язана з атакою активність не фіксується в серверних логах, що утруднює виявлення фактів експлуатації уразливості.

На думку Брюса Шнаєра,[9] відомого експерта в області комп'ютерної безпеки, Heartbeat-уразливість в OpenSSL слід зарахувати до категорії катастрофічних вразливостей, рівень небезпеки якої становить 11 балів, якщо розглядати існуючу 10-бальну шкалу ступенів небезпеки з урахуванням того, що OpenSSL є найпоширенішою криптографічного бібліотекою в Мережі.

Завдяки широкому висвітленню проблеми за два дні з моменту її оприлюднення близько 1/3 всіх серверів встигли застосували оновлення з усуненням уразливості. Проте, за попередніми даними в Мережі ще залишалися уразливими близько 600 тисяч серверів. Але проблема далека від свого вирішення — незрозуміло, що робити з вбудованими та мобільними продуктами, схильними до вразливості, але такі що не передбачають можливість автоматичного оновлення прошивки.

В умовах можливості непомітного проведення атаки, без залишення слідів в балці, також чекає тривалий процес зміни SSL-сертифікатів, ключів шифрування і звичайних паролів, відсутність витоку яких неможливо гарантувати. Потенційно будь-який пароль і сертифікат міг потрапити в руки зловмисників, і незрозуміло, коли й де подібні витоки можуть проявитися.[10]

Примітки[ред. | ред. код]

  1. OpenSSL для QNX4 (російською). СВД Встраиваемые Системы. Архів оригіналу за 10 лютого 2012. 
  2. OpenSSL and FIPS 140-2. Архів оригіналу за 2 липня 2012. Процитовано 3 липня 2012. 
  3. OpenSSL 1.0 получил сертификат безопасности FIPS 140-2. Архів оригіналу за 6 липня 2012. Процитовано 3 липня 2012. 
  4. MATT CASWELL (10 січня 2018). OpenSSL Wins the Levchin Prize. OpenSSL Blog. Архів оригіналу за 12 січня 2018. Процитовано 12 січня 2018. 
  5. OpenSSL version 1.0.0 released. Архів оригіналу за 12 червня 2018. Процитовано 3 липня 2012. 
  6. Changes between 1.1.0h and 1.1.1. Архів оригіналу за 13 вересня 2016. Процитовано 6 липня 2018. 
  7. TLS heartbeat read overrun (CVE-2014-0160). Архів оригіналу за 8 квітня 2014. Процитовано 23 квітня 2014. 
  8. В OpenSSL обнаружена критическая уязвимость, которая может привести к утечке закрытых ключей [Архівовано 15 квітня 2014 у Wayback Machine.] // opennet.ru 08.04.2014
  9. Heartbleed. Архів оригіналу за 23 грудня 2017. Процитовано 23 квітня 2014. 
  10. Heartbleed-уязвимость в OpenSSL могла эксплуатироваться с ноября прошлого года. Архів оригіналу за 12 квітня 2014. Процитовано 23 квітня 2014. 

Посилання[ред. | ред. код]