Menu Zavřít

Česká Wultra bude chránit finanční instituce před kvantovými hrozbami. Získala na to investici ve výši tří milionů eur

15. 1. 2025
Doba čtení: 3 minuty
Petr Dvořák, zakladatel firmy Wultra
Autor: Wultra
  • Kvantové počítače sice přinesou technologickou revoluci, ale pro finanční instituce představují významné bezpečnostní riziko. Budou totiž brzy schopné prolomit kryptografii, která chrání miliardy finančních transakcí denně
  • Český startup Wultra nyní získal tři miliony eur od Tensor Ventures, Elevator Ventures a J&T Ventures právě na urychlení vývoje své unikátní technologie postkvantové autentizace
  • Firma, která svými produkty cílí na klíčové bankovní trhy a finanční huby, má v plánu expandovat do západní Evropy a jihovýchodní Asie. Letos otevře pobočku v Singapuru. 

Během příštích pěti let nastane takzvaný „den Q“, což má být okamžik, kdy se současné autentizační systémy stanou bezbranné vůči útokům kvantových počítačů. Ty sice přinesou technologickou revoluci, ale pro finanční instituce budou představovat významné bezpečnostní riziko. Do budoucna tak může být v ohrožení celá IT infrastruktura či e-government.

Český startup v oblasti kybernetické bezpečnosti Wultra nyní získal tři miliony eur od investičních fondů Tensor Ventures, Elevator Ventures a J&T Ventures (za dvěma z nich stojí finanční skupiny) na urychlení vývoje své unikátní technologie postkvantové autentizace. Vedení firmy věří, že právě její řešení by mělo nejen banky a fintechy před budoucí vlnou těchto kvantových hrozeb ochránit.

Tradiční bezpečnostní metody nebudou stačit

Uvedená investice přichází v době, kdy v celém světě rostou obavy ze zranitelnosti tradičních bezpečnostních metod. Kvantové počítače totiž umí řešit sice jen malou část problémů, ale zato velmi efektivně. Budou tak brzy schopné prolomit kryptografii, která chrání miliardy finančních transakcí denně.

Outstream Placeholder

Česká Wultra patří v oblasti vývoje bezpečnostních autentizačních řešení, jež jsou schopná odolat právě kvantovým útokům, ke špičce. Aktuálně má přibližně 50 zákazníků, a to nejen z Česka, ale i z celé Evropy, přičemž další tři jsou z Asie. Mezi jejími klienty najdeme třeba Českou národní banku, Monetu, Partners Banku, dále Raiffeisen Bank International, Erste Digital, OTP Bank nebo Global Payments.

„Finanční instituce budou muset jednat velmi rychle, aby ochránily svoji infrastrukturu. Zmíněná investice nám umožní vyvíjet autentizační řešení nové generace a expandovat na klíčové bankovní trhy, které si uvědomují naléhavost těchto postkvantových hrozeb,“ říká Petr Dvořák, šéf a zakladatel Wultry.

Oblast inovací není Dvořákovi rozhodně cizí. Hrál například klíčovou roli při budování firmy Inmite vyvíjející mobilní aplikace, kterou v roce 2014 koupila společnost Avast. Na základě těchto zkušeností pak založil Wultru, jež se zaměřuje na finanční bezpečnost a nabízí softwarové i hardwarové autentizační zařízení pro mobilní zařízení, jimž důvěřují i velké banky.

Výroba výhradně v Evropské unii

Většina prodejů Wultry pochází ze softwarového řešení pro ověřování přes mobilní telefony, velký zájem je ale také o její hardwarový autentizátor Talisman. Po celém světě byly zatím dodány tisíce kusů a další desítky tisíc jsou objednány.

Qubity: Velký pokrok čínského čipu, lepší chlazení pro kvantové počítače, praktické kvantové AI
Přečtěte si také:

Qubity: Velký pokrok čínského čipu, lepší chlazení pro kvantové počítače, praktické kvantové AI

Pro zajištění bezpečnosti a shody s přísnými regulacemi se všechna zařízení Talisman vyrábějí a montují v Evropské unii. Finální výroba pak probíhá v Česku. Firma tak má vše pod kontrolou, což je podle Dvořákových slov výhodné i z logistického hlediska. Navíc se podařilo udržet konkurenceschopnou cenu. 

Náš hardwarový autentizátor reaguje na potřeby firemních a prémiových bankovních klientů. Je také v souladu s novými předpisy PSD3, které nařizují alternativní metody autentizace nad rámec autentizace přes chytré mobilní telefony,“ dodává Dvořák.

Globální expanze i další investiční kolo

Aktuální finanční injekce umožní Wultře vývoj postkvantových autentizačních řešení a také expanzi do západní Evropy a jihovýchodní Asie. Firma letos plánuje otevřít pobočku v Singapuru, aby mohla uspokojit tamní rostoucí poptávku. Finanční sektor se v tomto regionu rychle vyvíjí a postkvantová autentizace se stává prioritou.

Dvořákův startup také cílí na celou EU, především na region DACH (Německo, Rakousko a Švýcarsko), Francii či Velkou Británii. Do budoucna, zhruba za dalších pět let, by pak chtěl zamířit do velkých finančních hubů, jako jsou New York, Londýn či Sydney.

CIF25

Největším bolehlavem českých startupů jsou zaměstnanecké akcie. Zbytečně jedeme se zataženou ruční brzdou, říká Pavlečka z Czech Founders VC
Přečtěte si také:

Největším bolehlavem českých startupů jsou zaměstnanecké akcie. Zbytečně jedeme se zataženou ruční brzdou, říká Pavlečka z Czech Founders VC

Aktuální investiční kolo Seed+ vedl již zmíněný česko-lucemburský deep tech fond Tensor Ventures Romana Smoly, Martina Drdula a Petra Ulvra. „K jejich řešení neexistuje alternativa, kterou by bylo možné nasadit tak rychle. Líbí se nám také, že jde o další český startup, který ukazuje, že z Česka lze úspěšně vyvážet velmi pokročilé technologie do celého světa,“ uvádí k tomu Ondrej Lipold, jenž měl v Tensor Ventures investici na starosti. Další investiční kolo by mělo proběhnout do dvou let.

Na investičním kole se spolupodílel také fond Elevator Ventures, odnož rizikového kapitálu Raiffeisen Bank International. Zapojili se rovněž J&T Ventures, za nimiž stojí finanční skupina J&T a kteří Wultru poprvé podpořili již v roce 2022. 

  • Našli jste v článku chybu?
'; 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'; } }