Разнообразие программного обеспечения
Разнообразие программного обеспечения — это область исследований, посвященная пониманию и разработке разнообразия в контексте программного обеспечения.
Области
[ редактировать ]Различные области разнообразия программного обеспечения обсуждаются в обзорах разнообразия для обеспечения отказоустойчивости. [1] или для безопасности. [2] [3]
Основными направлениями являются:
- разнообразие дизайна, программирование n-версий , разнообразие данных для отказоустойчивости
- рандомизация
- изменчивость программного обеспечения [4]
Техники
[ редактировать ]Преобразования кода
[ редактировать ]Увеличить разнообразие программного обеспечения можно за счет автоматизированных процессов преобразования, которые создают синтетическое разнообразие. «Мультикомпилятор» — это компилятор, в который встроен механизм диверсификации. [5] Многовариантная среда выполнения (MVEE) отвечает за выбор варианта для выполнения и сравнение выходных данных. [6]
Фред Коэн был одним из первых сторонников такого подхода. Он предложил серию преобразований по переписыванию и переупорядочению кода, направленных на создание огромного количества различных версий функций операционных систем. [7] Эти идеи развивались на протяжении многих лет и привели к созданию интегрированных схем обфускации для защиты ключевых функций в больших программных системах. [8]
Другой подход к увеличению разнообразия программной защиты заключается в добавлении случайности в определенные основные процессы, например загрузку памяти. Случайность подразумевает, что все версии одной и той же программы работают по-разному, что, в свою очередь, создает разнообразие поведения программы. Первоначально эта идея была предложена и опробована Стефани Форрест и ее коллегами. [9]
Недавняя работа по автоматическому разнообразию программного обеспечения исследует различные формы преобразований программ, которые слегка меняют поведение программ. Цель состоит в том, чтобы превратить одну программу в совокупность различных программ, которые предоставляют пользователям одинаковые услуги, но с разным кодом. [10] Такое разнообразие кода повышает защиту пользователей от одной-единственной атаки, которая может привести к одновременному сбою всех программ.
Операторы преобразования включают в себя: [11]
- рандомизация макета кода: переупорядочение функций в коде
- Рандомизация макета глобальных переменных: изменение порядка и дополнение глобальных переменных
- Рандомизация переменных стека: переупорядочение переменных в каждом кадре стека.
- рандомизация макета кучи
Естественное разнообразие программного обеспечения
[ редактировать ]Известно, что некоторые функциональные возможности доступны в нескольких взаимозаменяемых реализациях. Это естественное разнообразие можно использовать, например, было показано, что оно полезно для повышения безопасности облачных систем . [12]
Ссылки
[ редактировать ]- ^ Десварте, Ю.; Канун, К.; Лапри, Ж.-К. (июль 1998 г.). «Разнообразие против случайных и преднамеренных ошибок». Труды Компьютерная безопасность, надежность и гарантия: от потребностей к решениям (кат. № 98EX358) . IEEE Компьютер. Соц. стр. 171–181. CiteSeerX 10.1.1.27.9420 . дои : 10.1109/csda.1998.798364 . ISBN 978-0769503370 . S2CID 5597924 .
- ^ Найт, Джон К. (2011), «Разнообразие», Надежные и исторические вычисления , Конспекты лекций по информатике, том. 6875, Springer Berlin Heidelberg, стр. 298–312, doi : 10.1007/978-3-642-24541-1_23 , ISBN 9783642245404
- ^ Просто, Джеймс Э.; Корнуэлл, Марк (29 октября 2004 г.). «Обзор и анализ синтетического разнообразия для разрушения монокультур». Материалы семинара ACM 2004 года по вредоносному коду Rapid . АКМ. стр. 23–32. CiteSeerX 10.1.1.76.3691 . дои : 10.1145/1029618.1029623 . ISBN 978-1581139709 . S2CID 358885 .
- ^ Шефер, Ина; Рабисер, Рик; Кларк, Дэйв; Беттини, Лоренцо; Бенавидес, Дэвид; Ботервек, Гетц; Патхак, Анимеш; Трухильо, Сальвадор; Виллела, Карина (28 июля 2012 г.). «Многообразие программного обеспечения: современное состояние и перспективы». Международный журнал по программным инструментам для трансфера технологий . 14 (5): 477–495. CiteSeerX 10.1.1.645.1960 . дои : 10.1007/s10009-012-0253-y . ISSN 1433-2779 . S2CID 7347285 .
- ^ «Защита приложений с помощью автоматизированного разнообразия программного обеспечения» . Галуа, Инк . 10 сентября 2018 г. Проверено 12 февраля 2019 г.
- ^ Коппенс, Барт; Де Саттер, Бьорн; Волкарт, Стейн (01 марта 2018 г.), «Многовариантные среды выполнения», Продолжающаяся гонка вооружений: атаки и защита с повторным использованием кода , ACM, стр. 211–258, doi : 10.1145/3129743.3129752 , ISBN 9781970001839 , S2CID 189007860
- ^ Коэн, Фредерик Б. (1993). «Защита операционной системы посредством эволюции программы» (PDF) . Компьютеры и безопасность . 12 (6): 565–584. дои : 10.1016/0167-4048(93)90054-9 . ISSN 0167-4048 .
- ^ Чэньси Ван; Дэвидсон, Дж.; Хилл, Дж.; Найт, Дж. (2001). «Защита программных механизмов живучести». Материалы Международной конференции по надежным системам и сетям (PDF) . IEEE Компьютер. Соц. стр. 193–202. CiteSeerX 10.1.1.1.7416 . дои : 10.1109/dsn.2001.941405 . ISBN 978-0769511016 . S2CID 15860593 . Архивировано (PDF) из оригинала 30 апреля 2017 г.
- ^ Форрест, С.; Сомаяджи, А.; Экли, Д.Х. (1997). «Создание разнообразных компьютерных систем». Слушания. Шестой семинар по актуальным темам операционных систем (кат. № 97TB100133) (PDF) . IEEE Компьютер. Соц. Нажимать. стр. 67–72. CiteSeerX 10.1.1.131.3961 . дои : 10.1109/hotos.1997.595185 . ISBN 978-0818678349 . S2CID 1332487 .
- ^ Шульте, Эрик; Фрай, Закари П.; Быстро, Итан; Веймер, Уэстли; Форрест, Стефани (28 июля 2013 г.). «Мутационная устойчивость программного обеспечения» (PDF) . Генетическое программирование и развивающиеся машины . 15 (3): 281–312. arXiv : 1204.4224 . дои : 10.1007/s10710-013-9195-8 . ISSN 1389-2576 . S2CID 11520214 .
- ^ «Разнообразие автоматизированного программного обеспечения: иногда больше не значит лучше» . Галуа, Инк . 10 сентября 2018 г. Проверено 12 февраля 2019 г.
- ^ Горбенко Анатолий; Харченко Вячеслав; Тарасюк, Ольга; Романовский, Александр (2011), Использование разнообразия в облачной среде развертывания для предотвращения вторжений , Конспекты лекций по информатике, том. 6968, Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 145–155, doi : 10.1007/978-3-642-24124-6_14 , ISBN 978-3-642-24123-9