Mandraki Mandraki
Začít
Zpět na blog
encryption e2ee security mls sframe

End-to-End Šifrování bez Kompromisů

Jak Mandraki implementuje end-to-end šifrování pomocí protokolu MLS pro messaging a SFrame pro média, aniž by obětoval použitelnost.

Mandraki Team ·

Poznámka: Tento článek popisuje architekturu a design Mandraki. Některé zde diskutované funkce se zavádějí postupně a nemusí být ještě k dispozici ve všech plánech.

End-to-end šifrování je jedna z těch funkcí, které je snadné slíbit a obtížné správně dodělat. Mnoho platforem pro spolupráci tvrdí, že nabízejí E2EE, ale podrobnosti jejich implementací se značně liší — a detaily jsou místo, kde bezpečnost žije nebo padá.

Tento příspěvek vysvětluje, jak Mandraki implementuje end-to-end šifrování, volby protokolu, které jsme učinili, a kompromisy, které jsme ochotni přiznat.

Co end-to-end šifrování opravdu znamená

V systému s end-to-end šifrováním jsou zprávy a média šifrována na zařízení odesílatele a mohou být dešifrována pouze na zařízeních příjemců. Server, který data přeposílá, vidí pouze ciphertext. Nemůže číst obsah, i když by byl nucen to dělat soudním příkazem, nezvěstným zaměstnancem nebo narušením bezpečnosti.

To je fundamentálně odlišné od šifrování přenosu (TLS), které chrání data během přenosu mezi klientem a serverem, ale ponechává server s přístupem k otevřenému textu. Je to také odlišné od šifrování v klidu, které chrání data na disku, ale ponechává aplikační vrstvu s přístupem k otevřenému textu během zpracování.

Skutečné E2EE znamená, že server je podle návrhu nedůvěryhodný. Je to relay, ne čtenář.

Protokol MLS pro messaging

Pro šifrované messaging používáme protokol Messaging Layer Security (MLS), standardizovaný jako RFC 9420 Ústavu IETF. MLS byl navržen speciálně pro scénáře skupinového messagingu a nabízí několik výhod oproti starším přístupům.

MLS používá strukturu dohody klíčů založenou na stromě nazvanou TreeKEM, která umožňuje skupině účastníků efektivně vytvořit sdílené tajemství. Když se člen připojí nebo opustí skupinu, klíčový materiál se aktualizuje prostřednictvím zprávy Commit, která postoupí epochu skupiny. To poskytuje forward secrecy — ohrození klíčů člena v jednom bodě času neodhálí zprávy z dřívějších epoch — a post-compromise security — skupinu se obnoví bezpečnost po kompromisu, jakmile se klíčový materiál ovlivněného člena otočí.

Každé zařízení uživatele nahraje MLS klíče balíčky na server. Jedná se o jednodenní kryptografické svazky, které umožňují jiným zařízením přidat je do skupiny bez vyžadování, aby bylo zařízení online v daný čas. Když je klíčový balíček spotřebován, musí zařízení nahrát nové. Server ukládá a distribuuje tyto balíčky, ale nikdy nemá přístup k privátnímu klíčovému materiálu, který obsahují.

Skupiny MLS v Mandraki mapují kanály a vlákna přímých zpráv. Když pošlete zprávu v zašifrovaném kanálu, váš klient ji zašifruje pomocí aktuální epochy skupiny. Server přijímá ciphertext, ukládá jej a distribuuje členům skupiny. Jejich klienti jej dešifrují místně.

SFrame pro šifrování médií

Šifrování mediálních dat v reálném čase — audio a video ve skupinovém hovoru — představuje jiné výzvy než messaging. Tolerance latence se měří v milisekundách, ne sekundách. Datové sazby jsou řádově vyšší. A média procházejí Selective Forwarding Unit (SFU), která potřebuje směrovat pakety správným účastníkům bez schopnosti vidět obsah.

Používáme SFrame (RFC 9605) pro šifrování médií, aplikované prostřednictvím WebRTC Encoded Transform API. Toto API umožňuje kódu JavaScript zachytit kódovaná mediální snímky po kódování, ale před packetizací, zašifrovat je a předat ciphertext přenosové vrstvě. Na přijímací straně se snímky dešifrují po změně montáže, ale před dekódováním.

Klíčová výhoda SFrame v architektuře SFU je, že SFU stále může provádět svou funkci směrování — přeposílání paketů od jednoho účastníka ostatním, provádění rozhodnutí o přizpůsobení šířky pásma, které vrstvy přeposílat — bez toho, aby měl přístup k mediálním datům v otevřeném textu. SFU vidí šifrované snímky a přeposílá je jako neprůhledné bloby.

Kompromisy, které přiznáváme

End-to-end šifrování není zdarma. Zavádí skutečná omezení, která věříme, že stojí za to přiznat.

Vyhledávání na straně serveru není možné na obsahu E2EE. Pokud jsou zprávy šifrované klíči, které server nemá, server je nemůže indexovat pro vyhledávání. Mandraki to řeší udržováním místního šifrovaného rejstříku vyhledávání na klientovi pomocí IndexedDB. To poskytuje vyhledávání jednotlivého zařízení, ale nepodporuje vyhledávání historie na více zařízeních pro zprávy přijaté před přidáním zařízení do skupiny.

Funkce AI na straně serveru jsou vzájemně se vylučující s E2EE. Naše funkce přepisu a shrnutí AI vyžadují přístup serveru k otevřenému textu zvuku. Hovor nebo kanál nemůže mít současně povoleny funkce E2EE a AI. To je vynuceno architektonicky, ne jen zásadou. Organizace si v každém hovoru nebo kanálu vyberou, který model preferují.

Nová zařízení vidí zprávy pouze od bodu připojení kupředu. Když přidáte nové zařízení do svého účtu, může dešifrovat zprávy od chvíle, kdy se připojí do skupiny MLS dále. Historické zprávy šifrované pod předchozími epochami nejsou přístupné na novém zařízení. To je základní vlastnost forward secrecy. Zkoumáme bezpečné mechanismy zálohování, které by umožnily uživatelům exportovat historii šifrovaných zpráv do nového zařízení, ale to zůstává v práci.

Správa klíčů zvyšuje složitost. Každé zařízení musí udržovat klíčový materiál, nahrávat čerstvé klíče balíčky a zpracovávat aktualizace stavu skupiny. Investujeme významné úsilí inženýrství, aby to bylo pro uživatele neviditelné. Cílem je, aby šifrování nebylo něco, co konfigurujete nebo o čem přemýšlíte — to prostě se stane.

E2EE a šifrování na straně serveru se souexistují

Stojí za zmínku, že vrstva E2EE Mandraki a naše server-side obálky šifrování (hierarchie třívrstvého klíče popsaná v naší bezpečnostní architektuře) slouží vzájemně doplňujícím se účelům. Šifrování na straně serveru chrání data v klidu na naší infrastruktuře — pokud je disk украden nebo záloha databáze ohrožena, data jsou nečitelná bez šifrovacích klíčů. E2EE jde dále tím, že zajišťuje, že server nikdy nevidí otevřený text na prvním místě.

Pro organizace, které povolí E2EE, jsou obě vrstvy aktivní současně. Data jsou šifrována end-to-end klienty a také šifrována v klidu na serveru. Bezpečnost z obou stran.

Věříme, že end-to-end šifrování by mělo být výchozí nastavení pro citlivé komunikace, ne prémium doplněk nebo políčko, které většina uživatelů nikdy nenajde. Mandraki to dělá přímočaré povolení, transparentní v jeho omezeních a robustní v jeho implementaci.