;

Statistiky kyberzločinu: většinou pouze marketingové bláboly

7. 8. 2012
Doba čtení: 5 minut

Sdílet

Autor: Fotolia © Alexandr Mitiuc
Stojí kybernetický zločin svět opravdu jeden bilion dolarů? Má fakticky na svědomí 250 miliard dolarů zbytečných nákladů amerických společností ročně? Kdo zveřejňuje taková čísla? Web Pro Publica dokazuje, že tyto často citované hodnoty jsou mimo realitu.

Šéf americké Národní bezpečnostní agentury Keith Alexander uvedl nedávno ve svém prohlášení, že kyberzločin stojí svět 1 bilion dolarů. Americký generál NSA (National Security Agency) Keith B. Alexander k tomuto tématu uvedl: „Podle mého názoru se jedná o největší přesun bohatství v historii."

Investigativní reportéři webu Pro Publica však zjistili, že takové statistiky jsou ve skutečnosti značně přehnané. Jak uvádějí Peter Maass a Megha Rajagopalan:

„Alexander citoval statistiky mimo jiné i od společností Symantec a McAfee, které obě prodávají software k ochraně počítačů před hackery. Od Symantecu měl informaci, že krádeže intelektuálního vlastnictví stojí americké společnosti 250 miliard dolarů za rok. Zmínil také odhad společnosti McAfee, že celkové globální náklady kyberzločinu jsou asi jeden bilion dolarů. Alexander se tím snažil přimět Kongres k přijetí legislativy zdokonalující obranu Spojených států v kyberprostoru.“

Číslo jeden bilion bylo již citováno mnoha lidmi z americké vlády, kteří tím argumentovali pro vyšší útraty na „kyberbyrokracii“.

Takové argumenty jsou nicméně podloženy nesmysly. A tyto nesmysly jsou zase založeny na číslech, která někomu nejspíše náhodně vyskočila z generátoru. Dinei Florencio a Cormac Herley při svém bádání zjistili, že „tyto velice rozšířené odhady škod napáchaných kyberzločinem jsou generovány za použití absurdně špatných statistických metod, což je činí zcela nedůvěryhodné.“

Zatímco Florencio a Herley a priori odsoudili většinu statistik kyberzločinu, lidé z Pro Publica chtěli být specifičtější a zkusili zjistit, odkud se vzala nejpoužívanější čísla – výše zmíněných 250 miliard a jeden bilion dolarů. Ukázalo se, že to neví ani badatelé, z jejichž práce byla pro tyto účely citována.

O 250 miliardách:

„Přestože Symantec zmínil tuto částku ve své zprávě „Indikátory rizikového chování u krádeží IP“ z roku 2011, nepochází tento odhad od Symantecu. Zpráva číslo zmiňuje v textu, u nějž je v poznámce jako zdroj uveden právní dokument, v němž, jak se později ukázalo, není číslo 250 miliard vůbec řečeno. Eric Shaw, jeden ze dvou soudních psychologů Symantecu zodpovědných za zprávu o indikátorech chování, řekl pro web Pro Publica, že tato citace byla nešťastná.

Místo toho měla odkazovat na jiný text z roku 2003, který je postaven na proslovu tehdejšího ředitele FBI Roberta S. Muellera. Stejné číslo je citováno také ve starých tiskových zprávách FBI dostupných přes Internet Archive (Archive.org). Mluvčí agentury k tomu řekla, ž věří tomu, že představitelé FBI vycházeli v tomto případě z důvěryhodného zdroj, nicméně číslo 250 miliard nepochází přímo od FBI, a agntura to ani nikdy netvrdila.“

A nyní k jednomu bilionu:

„Bilionový odhad McAfee je zpochybňován dokonce i třemi nezávislými badateli z Purdue University, které McAfee uvádí jako zdroj analýz hrubých dat, z nichž byl tento odhad vyvozen. Eugene Spafford, profesor počítačových věd z Purdue řekl, že byl konsternován tím, že se takové číslo [bilion dolarů] objevilo ve zprávách, protože dle něj bylo mnohem nižší.“

Ross Anderson, další z badatelů, řekl, že se o bilionovém odhadu dozvěděl až ve chvíli, kdy byl zvěřejněn. „Určitě bych protestoval, kdybych se o tom dozvěděl dříve. Intelektuální hodnota tohoto čísla je horší než mizerná.“

Sal Viveros, který má v McAfee na starosti vztahy s veřejností a na průběh psaní zprávy v roce 2009 dohlížel, řekl, že univerzita v Purdue výrobci bezpečnostního software nikdy neoznámila, že toto číslo nemůže být podpořeno žádnými daty z výzkumu. Nic netušící společnost zprávu nakonec vydala a, jak podotkl Viveros, bilionový odhat „začal žít svým vlastním životem.“

To se může stát každému, že.

Další skvělá věta:

„Mluvčí StrategyOne na otázku, zda mohou být odhady Symantecu označeny jako vědecké, odpověděl: 'Ano, stejně jako jakýkoliv jiný průzkum nebo dotazník, který při odhadech ztrát spotřebitelů spoléhá na paměť těchto spotřebitelů.'“

Mluvčí tedy svým „ano“ myslí „ne“.

Statistiky zločinu – ať už toho fyzického nebo kybernetického – jsou vždy problematické. Přinejlepším měří pouze nahlášené případy. Víme, že ve fyzickém světě bývají takové statistiky podhodnocené, protože oběti zločiny často nenahlašují. Připadá jim, že by jim to stejně nepomohlo, nebo (například v případě znásilnění) by to pro ně bylo příliš traumatické.

Statistiky kyberzločinu jsou ještě horší, protože jeho oběti (lidé nebo společnosti) často ani nevědí, že byli „hacknuty“, a pokud to vědí, nechtějí, aby to někdo věděl, kvůli možným důsledkům (například na jejich důvěryhodnost vůči klientům).

Shrnuto a podtrženo: dosud nikdo nepřišel na způsob, jak spočítat, kolik peněz stojí kyberzločin společnosti. Abychom si rozuměli: nikdo neříká, že kyberzločin není velkým problémem. Jistě je. Ale čísla, která se prozatím ve statistikách na toto téma objevila, jsou prostě a jednoduše pouhými marketingovými bláboly.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
OSZAR »