Princip zabezpečení zpráv a hovorů ClinkMe

Úvod

Aplikace ClinkMe umožňuje snadno, rychle a intuitivně vyhledávat a volat kontakty z adresáře na zařízení, plánovat hovory a spravovat oblíbené kontakty. Další významnou součástí aplikace je možnost výměny zpráv nebo uskutečňování hovorů mezi uživateli aplikace.

Aby si uživatelé mohli vyměňovat zprávy nebo si volat, musí mít každý uživatel registrovaný účet ClinkID, který slouží pro přihlášení ke službám ClinkMe. Při registraci nového účtu nebo při přihlášení a správě účtu existujícího účtu ClinkID komunikuje aplikace se serverem zabezpečeně pomocí protokolu HTTPS s tím, že jsou data bezpečně uložena na serveru i na zařízení uživatele, více viz. ochrana osobních údajů.

ClinkMe zprávy

Veškerá komunikace mezi aplikací ClinkMe a serverem zabezpečujícím výměnu zpráv probíhá zabepečeně pomocí protokolu TLS, který zabraňuje odposlouchávání nebo falšování zpráv. Pro výměnu zpráv aplikace ClinkMe využívá standardního protokolu Extensible Messaging and Presence Protocol (XMPP) s tím, že obsahuje řadu rozšíření, která uživatelům přinášejí výhody, například informace o tom, že byla odeslaná zpráva přečtena příjemcem.

Standardní zabezpečení zpráv

Již v základu, který je dostupný všem uživatelům, nabízí aplikace velice robustní řešení pro zabezpečenou výměnu zpráv mezi odesílatelem a příjemcem. Všechny zprávy, které si uživatel vymění s ostatními uživateli jsou automaticky šifrovány pomocí asymetrické kryptografie a principu Pretty Good Privacy (PGP). Aby uživatel mohl odeslat zprávu přes aplikaci ClinkMe, musí mít vygenerovaný soukromý a veřejný klíč. O to se automaticky postará aplikace při prvním spuštění a tyto údaje nemůže uživatel změnit. Při odesílání zprávy aplikace automaticky generuje unikátní náhodný klíč, pomocí kterého je zašifrován obsah zprávy (používá se algoristmus AES s velikostí klíče 256 bitů). Poté je tento náhodný klíč zašifrován veřejným klíčem příjemce pomocí algoritmu RSA se schématem doplnění (padding) PKCS#1. Šifrovaný obsah zprávy a šifrovaný klíč jsou následně odeslány příjemci, který je jako jedinný (pomocí svého soukromého klíče) schopen dešifrovat příchozí zprávu, resp. nejdříve dojde k dešifrování unikátního náhodného klíče a poté k dešifrování zprávy.

Rozšířené zabezpečení zpráv

Uživatelé, kteří si zakoupí produkt ClinkMe Secure (dostupný jako nákup v aplikaci), si mohou zvýšit úroveň zabezpečení zpráv tím, že si mohou vygenerovat vlastní klíč, pomocí kterého jsou následně šifrovány zprávy mezi odesílatelem a příjemcem, tzv. bezpečný klíč pro komunikaci. Tento klíč má odesílatel zprávy pro každý kontakt jiný, takže zprávy odesílané na jednoho příjemce jsou šifrovány jiným klíčem než zprávy odeslané na  jiného příjemce. Navíc je u každé takto šifrované zprávy použit jiný inicializační vektor, takže zašifrovaný obsah je pokaždé jiný, i přesto že nešifrovaný obsah zprávy zasílaný stejnému příjemci je stejný. Všechny bezpečné klíče pro komunikaci, které má uživatel vytvořené pro jednotlivé kontakty jsou bezpečně uloženy pouze na zařízení uživatele (nejsou ukládány na straně serveru). Pro šifrování obsahu zpráv se používá algoritmus AES s velikostí klíče 256 bitů.

Časově omezené zprávy

Uživatelé, kteří si zakoupí produkt ClinkMe Secure (dostupný jako nákup v aplikaci), mohou u odesílaných zpráv nastavit časovou platnost zprávy a tím zajistit to, že po určité době bude zpráva smazána na straně příjemce. Zároveň jsou takto odeslané zprávy smazány ze zařízení odesílatele. Všechny časově omezené zprávy jsou fyzicky smazány u odesílatele a příjemce a nejsou ukládány ani na straně serveru. Časově omezené zprávy přinášejí další rozšíření bezpečnosti v tom, že si odesílat může být jistý, že takto odeslané zprávy budou po určité době smazány a nebudou již dostupné v konverzaci.

Synchronizace zabezpečení mezi zařízeními

Protože jedním z cílů aplikace ClinkMe je poskytnout uživateli maximální zabezpečení, tak nejsou žádné informace, které aplikace využívá pro zabezpečení zpráv, synchronizovány na další zařízení uživatele přes iCloud nebo jinou cloudovou službu. Mezi tyto důležité informace se řadí privátní a veřejný klíč (standardní zabezpečení zprá), kterým jsou zabezpečeny všechny odchozí a příchozí zprávy a bezpečné klíče pro komunikaci, které mají uživatelé s kontakty pro rozšířené zabezpečení zpráv.

Na druhou stranu, aby si každý uživatel mohl přenést tyto informace z jednoho zařízení na druhé, umožňuje aplikace ClinkMe synchronizovat tyto informace vlastním synchronizačním řešením, které nevyužívá žádný server. Synchronizace je dostupná v nabídce aplikace s tím, že se provádí pomocí Bluetooth nebo sítě Wi-Fi a je možné ji provést pouze mezi dvěma zařízeními, na kterých je uživatel přihlášen pod stejným účtem ClinkID. Synchronizace mezi zařízeními přes Bluetooth nebo síť Wi-Fi je vždy šifrována pomocí unikátního klíče, který se generuje při každé synchronizaci. Pro šifrování dat při synchronizaci se používá algoritmus AES s velikostí klíče 256 bitů.

Jak dosáhnout maximálního zabezpečení?

Uživatel může dosáhnout maximálního zabezpeční zpráv tím, že zakoupí produkt ClinkMe Secure, vytvoří bezpečný klíč pro komunikaci s vybraným uživatelem. V případě, že si chce uživatel být jistý, že zpráva nebude příjemci po určité době přístupná, je vhodné využít časového omezení zprávy, kdy takto odeslaná zpráva bude po určité době smazána jak u příjemce, tak i odesílatele.

ClinkMe hovory

Pro zabezpečení hovorů se používá Secure Real-time Transport Protocol (SRTP), kde je každý hovor šifrován unikátním, náhodně generovaným klíčem, který je znám pouze volajícímu a volanému. Aplikace se automaticky snaží všechny hovory navázat napřímo mezi oběma uživateli bez použití serveru, tzv. “peer-to-peer”. V případě, že se toto nepodaří (například z důvodu technických omezení v infrastruktuře jednoho z uživatelů), pak je hovor přenášen přes TURN server, který je součástí infrastruktury serverové části aplikace ClinkMe. Aby bylo možné navázat spojení mezi oběma uživateli, využívá se STUN server, který umožňuje zjistit veřejné IP adresy obou zařízení.

Diagnostika ClinkMe hovoru

Každý uživatel si může snadno, rychle a přehledně ověřit, jak je ClinkMe hovor zabezpečen v obrazovce odchozího nebo příchozího hovoru. V této obrazovce jsou uvedeny informace o typu zabezpečení (například TLS), zda hovor probíhá napřímo mezi uživateli nebo přes server TURN a celkové úrovni zabezpečení.

Odkazy

Následující seznam obsahuje odkazy na technologie a protokoly, které jsou zmíněné v textu:

HTTP Secure (HTTPS)
Extensible Messaging and Presence Protocol (XMPP)
Transport Layer Security (TLS)
Public-key cryptography (Asymmetric key cryptography)
Pretty Good Privacy (PGP)
Advanced Encryption Standard (AES)
Secure Real-time Transport Protocol (SRTP)
Session Traversal Utilities for NAT (STUN)
Traversal Using Relays around NAT (TURN)
Initialization vector (in cryptography)
Bluetooth
Wi-Fi
RSA (cryptography algorithm)
Peer-to-peer (P2P)