Omezení koncového šifrování ve Velké Británii může spustit dominový efekt

3. 3. 2025

Sdílet

Autor: aloha @Fotolia.com
Společnost Signal je připravena stáhnout se ze zemí, které omezí koncové šifrování.

Generální ředitelka společnosti Signal Meredith Whittakerová oznámila, že se společnost zabývající se šifrovanými zprávami stáhne ze zemí, které nutí poskytovatele zpráv umožnit orgánům činným v trestním řízení přístup k šifrovaným údajům uživatelů. 

S prohlášením přišla v době, kdy Švédsko zvažuje legislativu, která by mohla fakticky nařídit konec end-to-end šifrování. Vláda severské země by ji mohla zavést už v březnu 2026. Mezi ovlivněnými by však nebyl jen Signal, ale také aplikace jako WhatsApp nebo iMessage.

Máme nové jméno

Po více než třech dekádách existence otvírá magazín Computerworld novou kapitolu. Tradiční průvodce světem IT, který si za 36 let existence vybudoval pověst jednoho z nejdůvěryhodnějších tuzemských zdrojů pro IT profesionály, se od nynějška jmenuje Computertrends.

Střední cesta neexistuje

„Nic takového jako zadní vrátka, ke kterým mají přístup jen dobří lidé, neexistuje,“ uvedla Whittakerová s tím, že jde-li o bezpečnost šifrování, neexistuje žádná střední cesta. „Buď se jedná o zranitelnost, která umožní přístup všem, nebo budeme nadále prosazovat silné a robustní šifrování a zajišťovat právo na soukromí pro každého. Buď to funguje pro všechny, nebo je to pro všechny nefunkční. A naše odpověď je stejná: raději opustíme trh, než abychom se podřídili něčemu, co by katastrofálně narušilo naši schopnost poskytovat soukromou komunikaci.“

Obdobný postoj společnost Signal zaujala k britskému zákonu o online bezpečnosti, který nakonec prošel s kontroverzní klauzulí o prolomení šifrování, kterou lze uplatnit, pokud je to technicky možné. 

Kybernetická bezpečnost: Podcast o tajemstvích bezpečnostních operačních centrech s Pavlem Hrabcem
Kybernetická bezpečnost: Podcast o tajemstvích bezpečnostních operačních centrech s Pavlem Hrabcem
0:00/

Téma zadních vrátek v šifrování nedávno získalo pozornost poté, co Apple ukončil svou funkci pokročilé ochrany (Advanced Data Protection) v iCloudu pro uživatele ve Velké Británii poté, co se objevily zprávy, že britské ministerstvo vnitra požadovalo právě taková zadní vrátka.

Švédské vyšetřování

Švédsko zahájilo v roce 2021 revizi svých zákonů o uchovávání údajů a přístupu k nim, které bylo dokončeno a zveřejněno v květnu 2023 pod vedením ministra spravedlnosti Gunnara Strömmera. 

Šetření doporučilo, aby služby šifrovaných zpráv uchovávaly údaje z chatu po dobu až dvou let a na požádání je zpřístupnily orgánům činným v trestním řízení, čímž v podstatě rozšířilo stávající požadavky na uchovávání telekomunikačních údajů na šifrované platformy.

zabbix_tip

Video ke kávě

Máte čas na rychlé a informativní video?

Strömmer argumentoval tím, že donucovací a zpravodajské orgány potřebují přístup k šifrovanému obsahu pro boj proti závažné trestné činnosti – stejné odůvodnění použila ve svém úsilí o obcházení koncového šifrování i britská vláda.

Podobná opatření na oslabení šifrování už přitom navrhly i další země včetně Austrálie a členských států EU, přičemž všechny čelí značné kritice.

 

Securitytrends si můžete koupit i jako klasický časopis, buď v klasické tištěné formě nebo v elektronické verzi. Věnujeme se bezpečnosti počítačových systémů, ochraně dat, informací a soukromí.  Jsme jediný titul na českém a slovenském trhu, který oslovuje širokou čtenářskou obec – od ředitelů firem, přes odborníky na bezpečnost po koncové uživatele. Naším cílem je poskytnout ucelený přehled o bezpečnostních hrozbách a zejména o tom, proč a jak se jim bránit, případně proč respektovat a dodržovat nařízení IT manažerů ve firmách.

'; 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 »