Softwarová rozmanitost - Software diversity
Softwarová rozmanitost je výzkumná oblast o porozumění a inženýrství rozmanitosti v kontextu softwaru.
Oblasti
Různé oblasti softwarové rozmanitosti jsou diskutovány v průzkumech o rozmanitosti pro odolnost proti chybám[1] nebo kvůli bezpečnosti.[2][3] Nedávný průzkum zdůrazňuje poslední pokroky v této oblasti.[4]
Hlavní oblasti jsou:
- rozmanitost designu, n-verze programování, datová rozmanitost pro odolnost proti chybám
- randomizace
- variabilita softwaru[5]
Domény
Software lze diverzifikovat ve většině domén:
Techniky
Transformace kódu
Je možné zesílit softwarovou rozmanitost prostřednictvím automatizovaných transformačních procesů, které vytvářejí syntetickou rozmanitost. „Multicompiler“ je kompilátor, který vkládá diverzifikační modul.[9] Prostředí pro provádění více variant (MVEE) je zodpovědné za výběr varianty pro provedení a porovnání výstupu.[10]
Fred Cohen byl jedním z prvních propagátorů takového přístupu. Navrhl řadu transformací přepisování a přeskupování kódů, jejichž cílem je produkovat obrovské množství různých verzí funkcí operačních systémů.[11] Tyto myšlenky byly vyvinuty v průběhu let a vedly ke konstrukci integrovaných schémat zamlžování k ochraně klíčových funkcí ve velkých softwarových systémech.[12]
Další přístup ke zvýšení softwarové rozmanitosti ochrany spočívá v přidání náhodnosti v určitých základních procesech, jako je načítání paměti. Náhodnost znamená, že všechny verze stejného programu běží navzájem odlišně, což zase vytváří rozmanitost chování programu. Tuto myšlenku původně navrhla a experimentovala Stephanie Forrest a její kolegové.[13]
Nedávná práce na automatické rozmanitosti softwaru zkoumá různé formy transformací programů, které mírně mění chování programů. Cílem je vyvinout jeden program v populaci různorodých programů, které všechny poskytují podobné služby uživatelům, ale s jiným kódem.[14][15] Tato rozmanitost kódu zvyšuje ochranu uživatelů před jediným útokem, který by mohl způsobit selhání všech programů najednou.
Mezi operátory transformace patří:[16]
- randomizace rozložení kódu: změna pořadí funkcí v kódu
- randomizace rozložení globálů: změna pořadí a vyložení globálů
- randomizace zásobníku proměnné: změnit pořadí proměnných v každém rámci zásobníku
- randomizace rozložení haldy
Protože prozkoumávání prostoru různých programů je výpočetně nákladné, je důležité najít účinné strategie pro provedení tohoto průzkumu. Za tímto účelem studuje nedávná práce plastické oblasti v softwarovém kódu[17]: plastové oblasti jsou tyto části, kód je náchylnější ke změně, aniž by došlo k narušení funkcí poskytovaných softwarem. Tyto oblasti lze specificky cílit automatickou transformací kódu, aby se vytvořila umělá rozmanitost ve stávajícím softwaru.
Přirozená rozmanitost softwaru
Je známo, že některé funkce jsou k dispozici ve více zaměnitelných implementacích, což se nazývá přirozená softwarová rozmanitost.[4] Tuto přirozenou rozmanitost lze využít, například se ukázalo jako cenné pro zvýšení bezpečnosti v cloudové systémy.[18] Přirozenou rozmanitost lze také použít ke kombinování silných stránek různých nástrojů: například pokud kombinujete mnoho dekompilátorů dohromady, výsledný metadekompilátor je efektivnější.[19]
Reference
- ^ Deswarte, Y .; Kanoun, K .; Laprie, J.-C. (Červenec 1998). Rozmanitost proti náhodným a úmyslným chybám. Sborník Zabezpečení, spolehlivost a jistota: Od potřeb k řešením (kat. Č. 98EX358). IEEE Comput. Soc. 171–181. CiteSeerX 10.1.1.27.9420. doi:10.1109 / csda.1998.798364. ISBN 978-0769503370. S2CID 5597924.
- ^ Knight, John C. (2011), „Rozmanitost“, Spolehlivé a historické výpočty, Přednášky v informatice, 6875Springer Berlin Heidelberg, str. 298–312, doi:10.1007/978-3-642-24541-1_23, ISBN 9783642245404
- ^ Jen, James E .; Cornwell, Mark (2004-10-29). Přehled a analýza syntetické rozmanitosti pro rozbíjení monokultur. ACM. 23–32. CiteSeerX 10.1.1.76.3691. doi:10.1145/1029618.1029623. ISBN 978-1581139709. S2CID 358885.
- ^ A b Baudry, Benoit; Monperrus, Martin (29.09.2015). „Více aspektů softwarové rozmanitosti: nejnovější vývoj v roce 2000 a dále“. ACM Computing Surveys. 48 (1): 16. arXiv:1409.7324. doi:10.1145/2807593. ISSN 0360-0300. S2CID 215812499.
- ^ Schaefer, Ina; Rabiser, Rick; Clarke, Dave; Bettini, Lorenzo; Benavides, David; Botterweck, Goetz; Pathak, Animesh; Trujillo, Salvador; Villela, Karina (2012-07-28). "Softwarová rozmanitost: současný stav techniky a perspektivy". International Journal on Software Tools for Technology Transfer. 14 (5): 477–495. CiteSeerX 10.1.1.645.1960. doi:10.1007 / s10009-012-0253-r. ISSN 1433-2779. S2CID 7347285.
- ^ Hosseinzadeh, Shohreh; Rauti, Sampsa; Hyrynsalmi, Sami; Leppanen, Ville (prosinec 2015). Zabezpečení na internetu věcí prostřednictvím zmatení a diverzifikace. 2015 Mezinárodní konference o výpočetní technice, komunikaci a bezpečnosti (ICCCS). s. 1–5. doi:10.1109 / cccs.2015.7374189. ISBN 978-1-4673-9354-6. S2CID 9855649.
- ^ Allier, Simon; Barais, Olivier; Baudry, Benoit; Bourcier, Johann; Daubert, Erwan; Fleurey, Franck; Monperrus, Martin; Song, Hui; Tricoire, Maxime (leden 2015). „Víceúrovňová diverzifikace ve webových softwarových aplikacích“. Software IEEE. 32 (1): 83–90. doi:10.1109 / ms.2014.150. S2CID 218184081.
- ^ Franz, Michael (21. září 2010). „E unibus pluram“. E unibus pluram: rozsáhlá softwarová rozmanitost jako obranný mechanismus. s. 7–16. doi:10.1145/1900546.1900550. ISBN 9781450304153. S2CID 7248879.
- ^ „Ochrana aplikací pomocí automatizované rozmanitosti softwaru“. Galois, Inc.. 2018-09-10. Citováno 2019-02-12.
- ^ Coppens, Bart; De Sutter, Bjorn; Volckaert, Stijn (2018-03-01), „Multi-variantní spouštěcí prostředí“, The Continuing Arms Race: Code-Reuse Attacks and Defends, ACM, s. 211–258, doi:10.1145/3129743.3129752, ISBN 9781970001839
- ^ Cohen, Frederick B. (1993). „Ochrana operačního systému prostřednictvím vývoje programu“ (PDF). Počítače a zabezpečení. 12 (6): 565–584. doi:10.1016/0167-4048(93)90054-9. ISSN 0167-4048.
- ^ Chenxi Wang; Davidson, J .; Hill, J .; Knight, J. (2001). Ochrana softwarových mechanismů přežití (PDF). Sborník mezinárodní konference o spolehlivých systémech a sítích. IEEE Comput. Soc. 193–202. CiteSeerX 10.1.1.1.7416. doi:10.1109 / dsn.2001.941405. ISBN 978-0769511016. S2CID 15860593.
- ^ Forrest, S .; Somayaji, A .; Ackley, D.H. (1997). Budování různých počítačových systémů (PDF). Řízení. Šestý seminář o aktuálních tématech v operačních systémech (kat. Č. 97TB100133). IEEE Comput. Soc. Lis. str. 67–72. CiteSeerX 10.1.1.131.3961. doi:10.1109 / hotos.1997,595185. ISBN 978-0818678349. S2CID 1332487.
- ^ Schulte, Eric; Fry, Zachary P .; Rychle, Ethane; Weimer, Westley; Forrest, Stephanie (2013-07-28). "Softwarová mutační robustnost" (PDF). Genetické programování a vyvíjející se stroje. 15 (3): 281–312. arXiv:1204.4224. doi:10.1007 / s10710-013-9195-8. ISSN 1389-2576. S2CID 11520214.
- ^ Baudry, Benoit; Allier, Simon; Monperrus, Martin (21.07.2014). Sborník z Mezinárodního sympozia 2014 o testování a analýze softwaru - ISSTA 2014. ACM. str. 149–159. arXiv:1401.7635. doi:10.1145/2610384.2610415. ISBN 9781450326452. S2CID 215812773. Shrnutí ležel.
- ^ „Automatizovaná softwarová rozmanitost: někdy více není lepší“. Galois, Inc.. 2018-09-10. Citováno 2019-02-12.
- ^ Harrand, Nicolas; Allier, Simon; Rodriguez-Cancio, Marcelino; Monperrus, Martin; Baudry, Benoit (2019-06-25). "Cesta mezi variantami neutrálního programu Java". Genetické programování a vyvíjející se stroje. 20 (4): 531–580. arXiv:1901.02533. doi:10.1007 / s10710-019-09355-3. ISSN 1389-2576. S2CID 57759345.
- ^ Gorbenko, Anatolij; Kharchenko, Vyacheslav; Tarasyuk, Olga; Romanovsky, Alexander (2011), „Využití rozmanitosti v prostředí cloudového nasazení k zabránění vniknutí“, Přednášky z informatiky, Berlín, Heidelberg: Springer Berlin Heidelberg, s. 145–155, doi:10.1007/978-3-642-24124-6_14, ISBN 978-3-642-24123-9
- ^ Harrand, Nicolas; Soto-Valero, César; Monperrus, Martin; Baudry, Benoit (2020). "Rozmanitost dekompilátoru Java a její aplikace na meta-dekompilaci". Journal of Systems and Software. 168: 110645. arXiv:2005.11315. doi:10.1016 / j.jss.2020.110645. S2CID 218870447.