Kvantitativní analýza kybernetických rizik a Monte Carlo simulace

Monte Carlo simulace je metoda statistického modelování, která pomocí náhodného vzorkování konfiguračního prostoru (opakované náhodné volby hodnoty pravděpodobnosti a hodnoty dopadu) generuje řadu možných scénářů daného rizika.

V kvantitativní analýze kybernetických rizik (CRQ) se běžně používá zejména pro složitější modely s více proměnnými, kdy výslednou distribuci hodnot nelze jednoduše odhadnout nebo stanovit analyticky.

Možná to zní krapet složitě, ale je to přitom strašně jednoduché. V tomto článku si to ukážeme na konkrétním příkladu. Řekněme, že máme rizikový scénář, kde známe přesnou (diskrétní) pravděpodobnost výskytu škodné události a minimální a maximální hranici této škody.

Dále víme, že škoda, která vzniká jako následek kybernetické události má lognormální rozdělení, a proto můžeme náhodnou škodu generovat podle vzorce Loss=eμ+σ*Z, kde μ (MJU) a σ (SIGMA) jsou parametry lognormálního rozdělení (tj. jsou v logaritmickém prostoru a označují se běžně jako „meanlog“ a „sdlog“) a Z∼N(0,1) je normálně distribuovaná náhodná veličina, což můžeme také zapsat jako:

Loss=EXP(MJU+SIGMA* NORM.S.INV(RAND()))

  • kde RAND() vygeneruje hodnotu z [0,1] (tj. má rovnoměrné/uniformní rozdělení) a
  • NORM.S.INV(RAND()) vrátí hodnotu Z, kde Z∼N(0,1) (tj. má normální/Gaussovo rozdělení) a
  • EXP(MJU+SIGMA*Z) má již požadované lognormální rozdělení

Řekněme, že v našem případě je (anualizovaná) pravděpodobnost vzniku škody 25 % a pro zvolený interval spolehlivosti 99,7% je dolní hranice škody (lower bound, zkr. LB) 150 000 Kč a horní hranice škody (upper bound, zkr. UB) 5 000 000 Kč.

MJU je střední hodnota logaritmu škody (logaritmus „středu“ distribuce), kterou spočteme jako logaritmický průměr (průměr logaritmů hodnot):

MJU=(LN(LB)+LN(UB))/2

SIGMA je standardní odchylka logaritmu škody a popisuje rozptyl hodnot v lognormálním rozdělení, kde většina (99,7%) hodnot spadá do 3 směrodatných odchylek od mediánu a spočteme ji jako:

SIGMA=LN(UB/LB)/6 = (LN(UB)-LN(LB))/6

Pokud se ptáte, proč je ve výše uvedeném vzorci zrovna 6, tak vězte, že ten původní vzorec je:

SIGMA=LN(UB/LB)/(2*Z-skóre)

Normálně bychom asi nemusel volit takto vysokou úroveň spolehlivosti, ale využíváme toho, že u 99,7 % spolehlivosti je Z-skóre=3.0 tedy je to krásné celé číslo, což u ostatních úrovní spolehlivosti není a jeho násobením pak opět získáme krásné celé číslo 6, s kterým se dobře dělí.

Vytvoříme si tabulku o rozměrech 2xn, kde n bude počet iterací (firmo-roků), což může být 10k stejně jako 100k nebo 1M. První sloupeček si pojmenujeme Likelihood a druhý Impact. V tomto prvním sloupečku budeme pro každý řádek (firmo-rok) generovat náhodná čísla z intervalu 0 až 1 z rovnoměrné/uniformní distribuce. Následně porovnáme v každém řádku (firmo-roku), zda je vygenerované číslo menší než referenční hodnota, v tomto případě 0,25.

Pokud vygenerované číslo bude menší než 0,25 tak to znamená, že daná škodní událost v daném firmo-roku nastala a musíme ještě vygenerovat, jak velká škoda v tomto případě vznikla. Vygenerujme opět náhodné číslo, ale tentokrát z intervalu [150.000, 5.000.000] z lognormální distribuce. Asi už tušíte, že pokud vygenerovaná pravděpodobnost je větší než 0,25, tak k události v daném firmo-roku nedošlo, žádná škoda nevznikla a tudíž ji ani nebudeme generovat.

V případě kybernetických rizik lze použít i obyčejný MS Excel nebo LibreOffice Calc a vestavěný generátor pseudo-náhodných čísel (PRNG). A pokud jste donedávna používali risk matice, tak nespekulujte nad tím, jestli jsou hodnoty z generátoru dostatečně náhodné a zda vám to bude stačit. Bude!

Takže ve sloupci likelihood použijeme klasický RAND (0,1), a Do A2 vložíme:

=RAND()

ale do sloupce impact napíšeme:

=EXP(MJU + SIGMA * NORM.S.INV(RAND()))

A ještě doplníme podmínku, ve které budeme zjišťovat, zda událost nastane, či ne, takže do B2 vložíme následující vzorec:

=IF(A2 < 0,25; EXP(MJU + SIGMA * NORM.S.INV(RAND())); 0)

Pokud bychom chtěli mít vše v jednom vzorci, tak napíšeme:

=IF(A2 < 0,25; EXP((LN(LB)+LN(UB))/2 + LN(UB/LB)/6 * NORM.S.INV(RAND())); 0)

Vzorec využívá 3σ pravidlo pro omezení rozsahu, což ve 99,73 % případů generuje hodnoty v intervalu (150k, 5M), ale teoreticky může vyprodukovat hodnoty mírně mimo tento rozsah. Perfekcionisté mohou použít tento vzorec:

=IF(A2 < 0,25; MIN(UB;MAX(LB;EXP((LN(LB) + LN(UB))/2 + LN(UB/LB)/6 * NORM.S.INV(RAND())))); 0)

V obou případech dosadíme za LB 150.000 a za UB 5.000.000 resp. se budeme odkazovat na buňku, kde budeme mít uvedenou minimální a maximální hodnotu škody. A jestliže bude splněna podmínka nerovnosti, tj. vygenerované náhodné číslo v A2 bude menší než 0,25, tak se vygeneruje lognormální škoda, jinak se doplní 0.

Ve výsledku pak budeme mít vyplněnou celou tabulku (tj. stovky a tisíce firmo-roků) a můžeme se podívat na časové a/nebo populační statistiky v našem souboru čili můžeme se na tabulku dívat jako na možnou budoucnost stovek a tisíců let v naší firmě, pokud zůstane vše při starém, nebo jako na jeden rok v populaci čítající stovky a tisíce firem našeho střihu a koukat se, komu se něco přihodilo.

Následně z této „zamrzlé budoucnosti“, „alternativních historií“ nebo „paralelních realit“ naší firmy můžeme vygenerovat LEC křivku, což je doplňková kumulativní distribuční funkce (Complementary Cumulative Distribution Function, zkr. CCDF), tj. doplněk do 100 % ke kumulativní distribuční funkci (Cumulative Distribution Function, zkr. CDF), kterážto je diskrétním součtem našich histogramů (u diskrétní distribuce hodnot) nebo spojitým součtem (u spojité distribuce hodnot). A laskavý čtenář již tuší, že budeme mohutně sčítat naše sběrné koše nebo mohutně integrovat spojitou křivku, ale o tom až příště.

Pro citování tohoto článku ve své vlastní práci můžete použít následující odkaz:
ČERMÁK, Miroslav a HANUS, Michal. Kvantitativní analýza kybernetických rizik a Monte Carlo simulace. Online. Clever and Smart. 2025. ISSN 2694-9830. Dostupné z: https://www.cleverandsmart.cz/kvantitativni-analyza-kybernetickych-rizik-a-monte-carlo-simulace/. [cit. 2025-03-26].

Pokud vás tento článek zaujal, můžete odkaz na něj sdílet.

Štítky:


K článku “Kvantitativní analýza kybernetických rizik a Monte Carlo simulace” se zde nenachází žádný komentář - buďte první.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: