Projekt Operačního programu Praha Adaptabilita Mezinárodní spolupráce při rozvoji magisterského a doktorského programu na ČVUT-FEL v Praze číslo projektu: CZ.2.17/3.1.00/36036 Odborný výstup ze zahraniční stáže na: Pukyong National University (Jižní Korea) 8. 7. 2014-9. 9. 2014 Jakub Staněk student studijního programu KME Mgr. Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond
1 VLC dveřní zámek Jakub STANĚK Katedra telekomunikační techniky, České vysoké učení technické, Technická 2, 166 27 Praha stanej12@fel.cvut.cz Abstrakt. V zahraničí se často vyskytují zámky dveří, které se odemykají zadáním číselného kódu, který ale lze lehce odpozorovat. Pro přenos kódu lze využít LED mobilního telefonu. Tím dosáhneme nejen lepšího zabezpečení, ale i rychlejšího a pohodlnějšího odemykání. Klíčová slova Visible light communication (VLC), dveřní zámek, Android, Diferenční pulzně polohová modulace (DPPM) 1. Úvod Visible light communication (VLC) je způsob komunikace pomocí viditelného světla o vlnové délce přibližně mezi 380 a 780 nm. Největší výhodou je bezpečnost prostor, ve kterém je informace přenášena, je okem viditelný a omezený neprůsvitnými překážkami. Ke komunikaci touto metodou lze využít zařízení, které nosíme stále u sebe mobilní telefon. Vetšina moderních mobilních telefonů s fotoaparátem má také jednu či více přisvětlovacích LED. Tohoto zdroje viditelného světla jsem v této práci využil k přenosu šestnáctibitového klíče. Po jeho ověření na přijímací straně komunikačního řetězce je možné dané zařízení identifikovat. V Korejské republice je velmi rozšířené zabezpečení dveří pomocí číselného kódu (klíče). U takového systému je v blízkosti dveří instalováno zařízení s číselníkem, pomocí kterého je klíč vložen. To s sebou nese bezpečností rizika, především snadnost odpozorování klíče při jeho zadávání. Přenos klíče pomocí mobilního telefonu je tedy bezpečnější, ale může být i pohodlnější a rychlejší. 1.1 Diferenční pulzně polohová modulace Diferenční pulzně polohová modulace (DPPM) je běžně využívána v optické komunikaci. Z důvodu náchylnosti k vnějším interferencím je její použití mimo optické systémy nevhodné. Na rozdíl od pulzně polohové modulace (PPM) nepotřebuje zdroj hodinového taktu. Rozdíl mezi jednotlivými stavy je dán rozdílnou dobou mezi jednotlivými pulzy.
2 J. STANĚK, VLC DVEŘNÍ ZÁMEK Z toho plyne jedna z vlastností této modulace doba přenosu určitého počtu bitů je závislá na jejich hodnotě. 2. Mobilní aplikace Naprogramoval jsem aplikaci pro mobilní zařízení s operačním systémem Android, kamerou a přisvětlovací LED. Aplikace využívá DPPM, ve které dibit 00 trvá dvojnásobek měnitelného času, dibit 01 trvá čtyřnásobek, dibit 10 trvá sedminásobek a dibit 11 trvá desetinásobek zmíněného času. Poměr těchto časů jsem zvolil experimentálně, jako kompromis mezi dobou přenosu celého klíče a schopností jednotlivé symboly rozeznat na přijímací straně. Úspěšnost demodulace signálu přijímačem je závislá na přesnosti časování při modulaci aplikací. Nejlepších výsledků jsem dosáhl použitím třídy Handler. 3. Potlačení viditelného blikání Uživatelé by mohli mít nedůvěru v bezpečnost používání naší aplikace, pokud by se přenos klíče projevoval viditelným blikáním. Pokud bylo k ovládání LED použito API operačního systému Android, jednotlivé stavy nesměly být kratší než 20 ms, aby byly správně identifikovány na přijímací straně. Tato doba je příliš dlouhá na to, aby blikání, způsobené rozsvěcením a zhasínáním LED, nebylo okem viditelné. Změna stavu LED je také možná zápisem do speciálního souboru kernelu. Problémem tohoto přístupu je fakt, že se soubor nachází v oddílu (partition) System, do kterého standardně uživatel nemá oprávnění zápisu. Ten je získán procesem nazývaným root. Oprávněním zápisu do tohoto oddílu uživatel získává větší kontrolu na svým zařízením, protože může měnit systémové soubory a hodnoty souborů kernelu. Pokud není zákonem nebo směrnicí řečeno jinak (jako např. směrnicí Evropského parlamentu a Rady 1999/44/ES), končí po tomto zákroku uživateli na výrobek záruční lhůta. Tento proces také nemusí být natolik jednoduchý, aby ho zvládl běžný uživatel. 4. Příjem a ověření klíče Na vstupu přijímacího řetězce je fotodioda TSL252R připojená k Arduino Uno. To je opensource deska založená na mikrokontroleru AVR ATmega328 od firmy Atmel. K indikaci úspěšného ověření vyslaného klíče je k Arduinu připojena RGB LED. Nyní popíšu program, který jsem napsal pro běh na mikrokontroleru. Po připojení desky s Arduinem k napájení proběhne základní nastavení požadovaných vlastností, vstupů a výstupů. Nejprve jsou určeny výstupní piny s připojenou RGB LED. Tyto piny jsou pouze dva, protože je připojena pouze červená a zelená LED. Poté je nastaven prescaler analogově digitálního převodníku (ADC) na hodnotu 128. To znamená, že při frekvenci mikrokontroleru 16 MHz bude frekvence cyklů ADC 16 MHz/128 = 125 khz. Jeden převod analogové hodnoty na digitální trvá 13 cyklů. Z toho vyplývá, že každý převod ADC trvá
3 104 µs. ADC je potřeba k získání úrovně osvětlení z fotodiody. V dalším kroku je výsledná hodnota z ADC zarovnána z původních 10 bitů na 8 bitů, aby se nám jednodušeji četla. To si můžeme dovolit, poněvadž nepotřebujeme vysokou přesnost stačí nám rozlišit stav zapnuté a vypnuté LED. Důležitou součástí kódu je zapnutí interruptů a jejich použití. Poté je po každém převodu analogově digitálního převodníku aktivován interrupt kód. Díky tomu se vyhodnocování úrovně osvětlení provádí pouze, když je třeba po získání nové hodnoty z ADC. Z popisu diferenční pulzně polohové modulace plyne, že k demodulaci vyslaného signálu potřebujeme měřit dobu mezi pulzy nebo dobu jednotlivých pulzů. Zvolil jsem druhou variantu, aby doba, po kterou je LED rozsvícená, byla delší než doba, po kterou je zhaslá. Díky tomu je blikání pro oko méně viditelné. Systém priorit a plánování procesů v operačním systému Android nepočítá s během aplikací v reálném čase. Z tohoto důvodu je dosažení přesnosti ovládání LED v jednotkách milisekund velmi obtížné. Proto jsem vytvořil algoritmus pro alespoň částečnou kompenzaci takto vzniklých nepřesností při demodulaci signálu. Pro funkčnost tohoto algoritmu je zapotřebí měřit dobu mezi jednotlivými pulzy. Za ideálních podmínek by tyto doby měly být stejně dlouhé. Pro každý pulz jsou tyto dvě doby (jedna před pulzem a druhá po něm) porovnávány s jejich celkovou průměrnou hodnotou. Pokud je doba před pulzem delší než průměr, je rozdíl mezi touto dobou a průměrnou dobou přičten k době pulzu. Pokud je doba za pulzem kratší než průměr, je rozdíl mezi průměrnou hodnotou a dobou odečten od doby pulzu. Po rozpoznání začátku vysílání, tj. kdy výsledná hodnota z ADC překročí definovanou hranici, se spustí dva časovače. Oba mají nastaven prescaler na hodnotu 256 a běží tedy se stejnou periodou 16 µs. Osmibitový registr prvního časovače, který měří doby mezi pulzy, je příliš malý na to, aby uchoval dobu větší než 255*16 µs = 4080 µs. Proto je implementován interrupt po jeho přetečení, který zaznamená uloženou hodnotu před její ztrátou. Druhý časovač s šestnáctibitovým registrem měří dobu pulzů. Po jeho přetečení je aktivován interrupt kód, který signalizuje, že bylo přijato méně bitů, než má očekávaný klíč (tj. časovač není zastaven přijetím posledního dibitu). Následně zastaví oba časovače, zavolá metodu pro uvedení všech proměnných do původního stavu a tuto činnost signalizuje zablikáním červené LED. Po přijetí správného počtu pulzů začíná ověření přijatého klíče. Po kompenzaci nepřesností se doby pulzů převedou do bitové reprezentace. Nejprve je určena doba nejdelšího pulzu. Díky tomuto kroku je vyhodnocování závislé pouze na poměru dob pulzů jednotlivých dibitů a ne na jejich absolutních hodnotách. Na druhou stranu je v každém vysílání potřeba přenosu dibitu 11, který je reprezentován nejdelším pulzem. Z maximální doby pulzu se určují porovnávací úrovně pro všechny dibity. Po demodulaci se přijatý klíč porovná s klíčem referenčním. Pokud se shodují, rozsvítí
4 J. STANĚK, VLC DVEŘNÍ ZÁMEK se zelená LED, pokud jsou rozdílné, rozsvítí se červená LED. 5. Závěr Použití diferenční pulzně polohové modulace je závislé na přesném časování zapnutí a vypnutí LED. Pokud chceme přenos uskutečnit bez viditelného blikání, je zapotřebí jednotlivé stavy měnit s přesností na jednotky milisekund. Taková přesnost je při použití API operačního systému Android nedosažitelná. Použitím jiného způsobu modulace, který je méně závislý na měření času, jsem byl schopen dosáhnout požadovaného výsledku. Použití VLC pro odemykání dveří vylepšuje hlavní vlastnost zámků zabezpečení. V práci jsem se zabýval nejrozšířenějším operačním systémem pro mobilní telefony. Telefony s jiným OS jsem neměl k dispozici, takže nemohu říct, jak by se na nich popsaný algoritmus choval v praxi. Jakub Staněk