Detail publikace
Automata with Bounded Repetition in RE2
RE2, regex
Při vývoji softwaru má nezastupitelnou roli porovnávání regulárních výrazů (regex). Jedná se o výpočetně náročný proces, který se často aplikuje na rozsáhlé texty. Předvídatelnost jeho účinnosti má v praxi významný vliv na celkovou použitelnost softwarových aplikací. Problémem je, že standardní přístupy k regexovému porovnávání trpí vysokou složitostí v nejhorším případě. Nešťastná kombinace regexu a textu může prodloužit dobu porovnávání o řády. To může být vstupní branou pro tzv. útok odepření služby regulárním výrazem (Regular Expression Denial of Service, ReDoS), při kterém útočník způsobí odepření služby zadáním speciálně vytvořeného regexu nebo textu. Zaměříme se na jeden ze zdrojů těchto útoků, kterým jsou regexy s omezeným opakováním (např. "(ab)100"). Stručnou reprezentaci a rychlé porovnávání takových regexů lze archivovat pomocí nového automatu s počítací množinou. Představujeme implementaci párovacího algoritmu založeného na automatu počítající množiny v jazyce C++. Implementace je provedena v rámci programu RE2, což je rychlý regex matcher nejnovější generace. Provádíme experimenty na skutečných regexech. Experimenty ukazují, že implementace v rámci RE2 je rychlejší než původní implementace v jazyce C#.
@INPROCEEDINGS{FITPUB13001, author = "Lenka Hol\'{i}kov\'{a} and Michal Hork\'{y} and Juraj S\'{i}\v{c}", title = "Automata with Bounded Repetition in RE2", pages = "232--239", booktitle = "Computer Aided Systems Theory - EUROCAST 2022", journal = "Lecture Notes in Computer Science", number = 13789, year = 2023, location = "Heidelberg, DE", publisher = "Springer Verlag", ISSN = "0302-9743", doi = "10.1007/978-3-031-25312-6\_27", language = "english", url = "https://www.fit.vut.cz/research/publication/13001" }