SMS 007 - kryptografie ve Vašich službách

Systém SMS007 využívá k ochraně Vašich dat všech výše zmíněných výdobytků moderní kryptografie. Jeho návrh se drží Kerckhoffova principu, podle nějž znalost samotného postupu nesmí ohrozit bezpečnost systému. Proto Vám zde můžeme popsat samotný způsob šifrování.

Hlavní heslo aplikace

Základem Vaší bezpečnosti je „hlavní heslo“, které si zvolíte při prvním startu. Je to jediné heslo, které si musíte pamatovat pro práci se systémem. Systém SMS007 vyžaduje, aby toto heslo bylo dlouhé minimálně 8 znaků.

Na kvalitní volbě tohoto hesla záleží Vaše bezpečnost. Jestliže si zvolíte snadno uhodnutelné heslo (například běžné slovo, nebo datum narozenin), Váš protivník by se mohl pokusit toto heslo uhodnout. V případě, že toto „hádání“ bude prováděno počítačem, může být snadno vyzkoušeno několik milionů slov. Volte tedy heslo tak, aby obsahovalo zároveň velká a malá písmena, a rovněž číslice.

Jelikož „hlavní heslo“ budete používat při každém startu systému, nehrozí přílišné nebezpečí, že byste jej zapomněli. Pokud jej však zapomenete, Vaše zašifrovaná data jsou navždy ztracena! Bez znalosti „hlavního hesla“ neexistuje žádný postup, jakým by bylo možno je přečíst.

Z „hlavního hesla“ je pomocí funkce SHA-2 odvozen klíč, který se použije pro zašifrování všech dat ukládaných do telefonu (např. přijaté zprávy či seznamy kontaktů). K tomuto šifrování se používá již zmíněná šifra AES, běžící v tzv. CBC-módu. Inicializační vektor pro CBC-mód je rovněž odvozen z hesla - viz níže.

Praktické použití hlavního hesla

V okamžiku, kdy aplikace startuje, dotáže se Vás na „hlavní heslo“. Jakmile zadáte do políčka pro heslo nějaký text a stisknete OK, převede aplikace tento text pomocí funkce SHA-2 na klíč a s tímto klíčem se pokusí rozšifrovat data uložená šifrovaně v telefonu. Pokud se jí to podaří, šlo o správné heslo. Pokud se jí to nepodaří, bylo heslo zadáno špatně, a Vy budete varován, že není možno pokračovat dále.

Změna hlavního hesla

V případě, že usoudíte, že si přejete svoje hlavní heslo změnit, můžete tak učinit v nabídce Nastavení aplikace. Ke změně hesla je zapotřebí jednou zadat heslo staré a dvakrát heslo nové (abyste neudělali neúmyslný překlep), a stisknout OK. Všechna data uložená v telefonu se přešifrují pomocí nového hesla, a od té chvíle musíte používat heslo nové.

Šifrování SMS zpráv

K tomu, aby si dva lidé vlastnící systém SMS007 mohli psát šifrované zprávy, musejí si nejprve domluvit další společné heslo, které nesmějí nikomu dalšímu prozradit. Toto heslo se ukládá do telefonu, kde je bezpečně chráněno před přečtením nepovolanou osobou tím, že je zašifrováno pomocí „hlavního hesla“ aplikace.

Čím složitější a komplikovanější společné heslo si dva lidé dohodnou, tím lépe. Jelikož společné heslo si uloží jen jednou, a pak si jej už nemusejí pamatovat, může být opravdu velmi dlouhé a komplikované. Vhodným způsobem, jak vytvářet dlouhá a komplikovaná hesla, je například vzít nějakou větu, a použít první písmena všech slov. Například tato věta by takto vytvořila následující heslo:

Ntvbtvnh

Počet možných vět v jakémkoliv lidském jazyce je astronomický, takže tímto způsobem se dají vytvářet poměrně dobrá hesla. Čím delší heslo, tím samozřejmě lépe. Úplně nejlepší je ovšem používat hesla zcela náhodná. Viz manuál, sekce "Doporučená délka hesel".

Zpráva SMS, kterou chce jeden člověk odeslat druhému, je zašifrována standardem AES za pomoci klíče odvozeného pomocí funkce SHA-2 ze společného hesla - viz dále.

Detaily použitých postupů

V případě, že má být text T zašifrován pomocí hesla, postupuje systém SMS007 následovně:

  1. Z hesla odvodí pomocí SHA-2 128-bitový klíč K a 128-bitový inicializační vektor IV.
  2. Následně zjistí, jaký je aktuální čas C, spočítá SHA-2 hash z textu T a zkombinuje jej s časem C. Tento kód, označíme jej H, bude sloužit k ochraně zprávy před pozměněním.
  3. Umístí do jednoho bloku bajtů B ochranný kód H (32 bajtů), čas C (8 bajtů), několik dalších informací (8 bajtů) a text T. Doplní blok B na celočíselný násobek blokové délky šifry AES (padding), tj. na nejbližší větší násobek 16-ti bajtů. Tím se každý blok prodlouží o 48 až 63 bajtů proti původnímu textu.
  4. Výsledný blok B zašifruje pomocí klíče K a inicializačního vektoru IV šifrou AES v módu CBC (Cipher Block Chaining). Vznikne zašifrovaný text Z, který se může bezpečně uložit či odeslat.
  5. Inicializační vektor IV není odesílán v otevřené podobě, při odšifrování se odvodí stejně jako při zašifrování z hesla.

Přítomnost kódu H v zašifrovaném textu, společně s důkladnou kontrolou formátu zprávy při rozšifrování, zajištuje ochranu tohoto textu před pozměněním „zvenčí“. Skutečnost, že kód H se počítá nejen z textu T, ale i z času C, zajišťuje, že dokonce i tentýž text T zašifrovaný tímtéž klíčem K dá při dvou různých příležitostech vzniknout dvěma různým zašifrovaným textům Z_1 a Z_2.

Bezpečnost, heslo a klíče

AES je velmi bezpečná šifra, při níž ani znalost zároveň textu T a zašifrovaného textu Z nepomůže protivníkovi odhalit klíč K. Je však velmi důležité volit kvalitní klíč K (respektive heslo, z nějž je odvozen). Jelikož „společné heslo“ pro komunikaci si lidé nemusejí pamatovat, silně doporučujeme, aby bylo voleno co nejdelší, nejkomplikovanější a nejpodivnější. Protivník se pravděpodobně bude snažit vyzkoušet co nejvíce běžných českých slov. Je zapotřebí nedat mu v tomto směru šanci. Nezapomeňte: bezpečnost Vaší komunikace záleží na kvalitě „společných hesel“, která si se svými partnery domluvíte!

Předešlá kapitola:Hashovací funkce SHA-2