Бекдо́р (від , чорний хід) — в комп'ютерній системі (криптосистемі або алгоритмі) — метод обходу стандартних процедур автентифікації, несанкціонований віддалений доступ до комп'ютера, отримання доступу до відкритого тексту, і так далі, залишаючись при цьому непоміченим. Бекдор може мати форму встановленої програми (наприклад, Back Orifice) або проникнути в систему через руткітwired.com: «How a Crypto ‘Backdoor’ Pitted the Tech World Against the NSA» (Zetter) 24 Sep 2013 .
Як бекдори можуть діяти початкові паролі, якщо користувач їх не змінив. Деякі функції налагодження можуть також виступати як бекдори, якщо їх не видалено в остаточній версії програми.
Огляд Загрози бекдорів стали помітними з поширенням багатокористувацьких та мережевих операційних систем. 1967 року в статті, опублікованій серед праць конференції AFIPS, Пітерсен і Терн обговорювали комп'ютерні диверсії.H.E. Petersen, R. Turn. «System Implications of Information Privacy». Proceedings of the AFIPS Spring Joint Computer Conference, vol. 30, pages 291—300. AFIPS Press: 1967 Вони зазначили клас активних інфільтраційних атак, що використовують «люк» як точку входу в систему в обхід засобів захисту і дають прямий доступ до даних. Використання слова люк тут, вочевидь, збігається з пізнішими визначеннями бекдора. Тим не менш, із появою криптографії з відкритим ключем термін люк набув іншого змісту. В цілому, такі порушення безпеки обговорено детально 1970 року в доповіді цільової групи RAND Corporation, опублікованій у ARPA, яку спонсорували Д.П Андерсон і Д.Д ЕдвардсSecurity Controls for Computer Systems, Technical Report R-609, WH Ware, ed, Feb 1970, RAND Corp.
Бекдор у системі авторизації може мати форму жорстко закодованої комбінації логіна й пароля, яка дає доступ до системи. Відомий приклад: такого роду бекдор використано у фільмі 1983 року Воєнні ігри, в якому архітектор комп'ютерної системи «WOPR» увів жорстко кодований пароль (ім'я свого покійного сина), який давав користувачу доступ до системи і до незадокументованої частини системи (зокрема до режиму віртуальної реальності і прямої взаємодії зі штучним інтелектом).
Цікавим є невдалий бекдор у функції sys_wait4() в ядрі Linux (2003). Розробка велась на пропрієтарній системі керування версіями , а на ніч код викладався на загальний огляд на більш поширеній CVS. Цю CVS і зламали, додавши у функцію sys_wait4() два рядки, що перевіряють вхідні дані на некоректну комбінацію прапорців.
Хоча число бекдорів у системах, які використовують власницьке програмне забезпечення (ПЗ, де сирцевий код не є загальнодоступним), не так багато, проте вони теж часто потрапляють під атаку. Програмістам навіть удалося таємно впровадити у програми багато нешкідливого коду, як «великодні яйця»; хоча в таких випадках може мати місце поблажливість керівництва, якщо не прямий дозвіл.
Крім того, можна створити бекдор без змінення початкового коду програми, або навіть його зміни після компіляції. Це можна зробити, переписавши компілятор так, щоб він включив під час компіляції код, який у кінцевому файлі запускатиме бекдор. Коли змінений компілятор знаходить такий код, він компілює його, як звичайно, але при цьому вставляє бекдор (можливо, процедуру розпізнавання пароля). Таким чином, коли користувач надає ці данні, він отримує доступ до деяких (швидше за все, до не задокументованих) аспектів роботи програми. Інформацію про таку атаку вперше виклав Кен Томпсон у своїй праці Reflections on Trusting Trust.
Чимало комп'ютерних хробаків, такі як Sobig і Mydoom, установлюють на зараженому комп'ютері (зазвичай ПК під широкосмуговим керуванням Microsoft Windows і Microsoft Outlook) бекдор. Такі бекдори можна встановити так, що спамери зможуть відправляти із заражених машин небажані електронні листи. Інші, як-от руткіт Sony/BMG, що наприкінці 2005 року таємно розповсюджувався на мільйонах музичних компакт-дисків, призначалися для реалізації заходів DRM — і, в тому випадку, також виконували функції агентів збору даних, оскільки обидві приховані програми, які вони встановлювали, регулярно з'єднувалися з центральними серверами.
Традиційний бекдор є симетричним: будь-хто, знайшовши лазівку, може скористатися нею. Поняття «асиметричний бекдор» увели Адам Янг і у Proceedings of Advances in Cryptology: Crypto '96. Асиметричний бекдор може використати лише зловмисник, який упроваджує його, навіть якщо опублікувати повний опис бекдора. Крім того, в обчислювальному плані є нездійсненним виявлення наявності асиметричного бекдора за умов «чорного ящика» (black-box запитів). Цей клас атак був названо ; їх можна включити в програмне забезпечення, апаратні засоби (наприклад, смарт-карти), або одночасно. Теорія асиметричних бекдорів є частиною ширшої галузі — криптовірології. Примітно, що АНБ встановило клептографічний бекдор у стандарт Dual_EC_DRBG.
Основні властивості бекдора
Ідеальний бекдор
складно виявити; можна використовувати багаторазово; легко заперечувати — виглядає як помилка, і в разі виявлення розробник може послатися, що припустився цієї помилки випадково і злого наміру не мав; експлуатуємо тільки знаючи секрет — лише той, хто знає, як активується бекдор, може скористатися ним; захищений від компрометації попередніми використаннями — навіть якщо бекдор виявлено, то неможливо встановити, хто його до цього експлуатував та якою інформацією заволодів; складно повторити — навіть якщо бекдор хтось знайде, його неможливо буде використати в іншому коді або в іншому пристрої.
Поширені принципи створення бекдорів у алгоритмах
слабка стійкість алгоритму до криптоаналізу; спеціально підібрані константи — алгоритм може стати нестійким до криптоаналізу за вибору певних значень констант, які використовуються в його роботі; складність у безпечній реалізації — це означає, що безпечна реалізація алгоритму працює надто повільно, і всі використовуватимуть небезпечний варіант, що й вигідно зловмиснику.
Гіпотетичні приклади бекдорів у сучасних алгоритмах
Вразливість генератора псевдовипадкової послідовності DUAL_EC_DRBG Цей генератор розроблено в АНБ і стандартизовано як криптографічно стійкий генератор псевдовипадкових чисел у Національному інституті стандартів і технологій США 2006 року. Проте вже 2007 року незалежні дослідники висловили припущення, що в цей алгоритм міг бути вбудований бекдор.
Ілюстрація роботи алгоритму згідно зі специфікацією АНБ:John Bryson, Patrick Gallagher, Recommendation for Random Number Generation Using Deterministic Random Bit Generators , p. 60, 2012:
Цей алгоритм використовує еліптичні криві. — генератор групи точок на еліптичній кривій, — точка на еліптичній кривій — константа, визначена стандартом, як її вибрано — невідомо. Параметри кривої також задано стандартом.
Принцип роботи:
Рівняння кривої
можна переписати у вигляді і записати такі висловлювання для роботи алгоритму:
, , — внутрішній стан генератора на поточному кроці — внутрішній стан генератора на наступному кроці — вихід генератора на поточному кроці
Передбачуваний бекдор:
Оскільки — просте число, то існує таке число , що . Знаходження — обчислювально-складна задача дискретного логарифмування на еліптичній кривій, для розв'язання якої нині не існує ефективних алгоритмів. Але якщо припустити, що зловмисник знає , то можлива така атака: Якщо — черговий вихід генератора, і якщо існує таке , що , то точка , лежить на кривій і для неї виконується така рівність: . Знаючи число можна обчислити: . Таким чином, зловмисник, який знає число , може не тільки обчислити наступний вихід генератора, але й швидко перебрати всі можливі внутрішні стани генератора і відновити його початковий внутрішній стан. Згідно з незалежними дослідженнями,Евгений Сидоров, Криптографические баги и бэкдоры , Yandex security meet up, 24.07.2015Dan Shumow, Niels Ferguson, On the Possibility of a Back Door in the NIST SP800-90 Dual Ec Prng , pages 6-7, CRYPTO 2007, august 2007 за відомого достатньо всього 30 байтів вихідної послідовності генератора, щоб простим перебором значень відновити його початковий внутрішній стан. На думку дослідників, така вразливість можна розцінити як бекдор.
Помилка реалізації протоколу перевірки сертифікатів TLS від компанії Apple Дослідники компанії Яндекс виявили вразливість у реалізації протоколу TLS в одному з програмних продуктів Apple. На їхню думку, ця помилка може виявитися бекдором, який вбудував у алгоритм хтось із розробників.
Ділянка коду з помилкою: static DSStatus SSLVerifySignedServerKeyExchnge(....) { DSStatus err; .... if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail; goto fail; if ((SSHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail; .... fail: .... return err; }Як бачимо, після першого оператора if стоять два рядки goto fail, і другий рядок виконується завжди, незалежно від результату if. Таким чином, процедура перевірки сертифіката проходить не повністю. Зловмисник, який знає про цю вразливість, може підробити сертифікат та пройти автентифікацію. Це дозволить йому організувати атаку типу «людина посередині», втрутившися в захищене з'єднання між клієнтом та сервером. Дослідники, які виявили цю помилку в реалізації, не можуть точно сказати, навмисно її зроблено чи випадково. Це схоже на помилку під час злиття гілок у системі керування версіями — але міг бути й бекдор, який вбудував хтось із розробників.
Приклади методів створення бекдорів
Спеціально підібрані константи Багато сучасних криптографічних алгоритмів використовують під час роботи певний набір внутрішніх констант. Як правило, ці константи задаються стандартом і вибираються з міркувань криптографічної стійкості до відомих на поточний момент видів криптоаналізу. Але вибір констант під час стандартизації алгоритму розробники, теоретично, можуть використати зі злим наміром: наприклад, для створення певних уразливостей та бекдорів у алгоритмі.
Прикладом такого використання констант є нещодавні дослідження на тему так званого «шкідливого гешування», де авторам удалося побудувати колізії для криптографічної геш-функції SHA1, модифікувавши її раундові константи. Запропонована авторами дослідження атака не є атакою на саму геш-функцію SHA1, вона дозволяє лише знаходити колізії за умови можливості змінення раундових констант і тільки для певних типів файлів.
Короткий опис SHA1 :
SHA1 — сучасна раундова геш-функція. Алгоритм гешування такий:
Ініціалізуються 32-бітові значення Вхідне повідомлення розбивається на блоки завдовжки 512 біт Кожен блок повідомлення обробляється та доповнюється за алгоритмом, визначеним у стандарті Отриманий блок повідомлення гешується в 4 етапи по 20 раундів у кожному, причому для кожного етапу використовується своя константа або Виходом функції для кожного блоку будуть нові значення , які додаються до результату: Підсумковим результатом гешування буде 160-бітове значення, отримане конкатенацією п'яти 32-бітових значень. після опрацювання останнього блоку повідомлення.
Побудова колізій:
Метою аналізованої атаки є знаходження таких констант та таких повідомлень і , що . Ця атака модифікує лише перші 512 біт (1-й блок) повідомлень, для яких потрібно побудувати колізію. Алгоритм ґрунтується на вже відомій різницевій атаці на SHA1, запропонованій 2005 рокуWang, X., Yao, A.C., Yao, Cryptanalysis on SHA-1. NIST — First Cryptographic Hash Work-shop , 31 October 2005Wang, X., Yin, Y.L., Yu, H., Finding collisions in the full SHA1 , CRYPTO 2005 і має складність порядку операцій, що робить атаку важкоздійсненною на практиці. Тому досі жодної реальної колізії для SHA1 знайдено не було.