SlideShare a Scribd company logo
1 of 81
Download to read offline
SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE
FAKULTA ELEKTROTECHNIKY A INFORMATIKY
Evidenčné číslo: FEI-5410-56379
SYSTÉM IDENTIFIKÁCIE A AUTENTIZÁCIE
HOVORIACEHO
DIPLOMOVÁ PRÁCA
Študijný program: Telekomunikácie
Číslo študijného odboru: 2627
Názov študijného odboru: 5.2.15 Telekomunikácie
Školiace pracovisko: Ústav telekomunikácií
Vedúci záverečnej práce/školiteľ: Ing. Juraj Vojtko, PhD.
Bratislava 2013 Bc. Tomáš Bicko
ANOTÁCIA
Slovenská technická univerzita v Bratislave
FAKULTA ELEKTROTECHNIKY A INFORMATIKY
Študijný program: TELEKOMUNIKÁCIE
Autor: Tomáš Bicko
Diplomová práca: Systém identifikácie a autentizácie hovoriaceho
Vedúci diplomovej práce: Ing. Juraj Vojtko, PhD.
Mesiac, rok odovzdania diplomovej práce: Máj, 2013
Kľúčové slová: autentizácia, identifikácia, autentifikácia, frekvenčná verifikácia
Práca sa zaoberá problematikou autentifikácie hovoriacej osoby. Poukazuje na
nedostatočné zabezpečenie autentizácie v dnešných realizáciách systémov
autentifikácie rečníka. V práci je navrhnutý a realizovaný systém autentifikácie
rečníka, ktorý implementuje mechanizmus frekvenčnej verifikácie pre
zabezpečenie aktívnej formy autentizácie. Práca poukazuje na výhody takéhoto
systému, zhodnotí jeho výkon, pozitíva, nedostatky a potenciál v budúcnosti.
Výsledkom práce je interaktívna aplikácia, ktorá demonštruje funkcionalitu takto
navrhnutého systému.
ANNOTATION
Slovak University of Technology Bratislava
FACULTY OF ELECTRICAL ENGINEERING AND INFORMATION
TECHNOLOGY
Degree Course: TELECOMMUNICATIONS
Author: Tomáš Bicko
Diploma Thesis: System of identification and authentication of speaker
Supervisor: Ing. Juraj Vojtko, PhD.
Month, Year: May, 2013
Keywords: authentication, identification, frequency verification
The thesis analyzes the issue of authentication and identification of speaking
person. It points at inadequate assurance of authentication in today's realizations
of systems of identification and authentication of speaker. The system of
identification and authentication of speaker, is designed and realized in this thesis,
it implements mechanism of frequency verification for assurance active form of
authentication. The thesis shows advantages of such a system, it analyses its
performance, positives, weaknesses and potential in the future. The result of the
thesis is interactive application that demonstrates the functionality of proposed
system.
Čestné vyhlásenie
Podpísaný Bc. Tomáš Bicko čestne vyhlasujem, že som diplomovú prácu Systém
identifikácie a autentizácie hovoriaceho vypracoval na základe poznatkov
získaných počas štúdia a informácií z dostupnej literatúry uvedenej v práci.
Uvedenú prácu som vypracoval pod vedením Ing. Juraj Vojtko, PhD.
Bratislava, dňa 18.5.2013 .........................................................
podpis autora
6
Obsah
Zoznam použitých symbolov a skratiek............................................................................ 7
Úvod...................................................................................................................................... 8
1 Biometrické systémy a autentifikácia ........................................................................ 9
1.1 Odtlačky prstov..................................................................................................... 10
1.2 Rozpoznanie tváre................................................................................................ 11
1.3 Rozpoznanie hlasu............................................................................................... 12
1.4 Hlasová autentifikácia v súčasnosti...................................................................... 13
2 Analýza a parametrizácia ľudskej reči ..................................................................... 17
2.1 Reprezentácia akustického signálu v počítači ..................................................... 17
2.2 Frekvenčné spektrum signálu .............................................................................. 19
2.2.1 Rýchla Fourierova Transformácia................................................................... 22
2.3 Identifikácia vysloveného slova ............................................................................ 23
2.4 LPC analýza ......................................................................................................... 24
2.5 Vzdialenosť dvoch vektorov ................................................................................. 26
2.6 Algoritmus dynamického programovania ............................................................. 27
3 Návrh systému autentifikácie rečníka...................................................................... 31
3.1 Základný princíp systému..................................................................................... 32
3.2 Fáza vytvárania prístupov .................................................................................... 33
3.3 Fáza autentifikácie................................................................................................ 34
3.4 Modul znáhodnenia prístupového hesla............................................................... 35
3.4.1 Vyrezanie slova z nahrávky ............................................................................ 36
3.4.2 LPC analýza.................................................................................................... 40
3.4.3 Zhrnutie........................................................................................................... 42
4 Systém frekvenčnej verifikácie ................................................................................. 44
4.1 Vlastnosti systému frekvenčnej verifikácie........................................................... 45
4.2 Frekvenčná integrita............................................................................................. 46
4.3 Vyhodnotenie........................................................................................................ 47
5 Realizácia .................................................................................................................... 50
5.1 Všeobecné informácie.......................................................................................... 50
5.2 Balík "audio" ......................................................................................................... 51
5.3 Balík "time" ........................................................................................................... 52
5.4 Balík "test.classes" ............................................................................................... 53
5.5 Balík "random.numbers"....................................................................................... 53
5.6 Balík "storage" ...................................................................................................... 54
5.7 Balík "gui.images"................................................................................................. 55
5.8 Balík "main" .......................................................................................................... 55
5.9 Balík "action" ........................................................................................................ 56
5.10 Balík "sound.preprocessing"............................................................................. 57
5.11 Balík "sound.processing".................................................................................. 57
5.12 Balík "security".................................................................................................. 58
5.13 Balík "frequency.verification.modul" ................................................................. 59
5.14 Balík gui............................................................................................................ 60
6 Ukážka aplikácie a jej funkčných blokov ................................................................. 62
6.1 Administrátorská sekcia........................................................................................ 63
6.1.1 Administrácia .................................................................................................. 64
6.1.2 Pokročilé nastavenia....................................................................................... 66
6.2 Užívateľská sekcia................................................................................................ 68
6.3 Identifikácia slova ................................................................................................. 69
6.4 Frekvenčná verifikácia.......................................................................................... 70
Záver ................................................................................................................................... 77
Zoznam použitej literatúry................................................................................................ 79
Zoznam príloh .................................................................................................................... 81
7
Zoznam použitých symbolov a skratiek
bps bits peer second (počet bitov za sekundu)
Bps bytes peer second (počet bajtov za sekundu)
dB decibel
DFT diskrétna fourierova transformácia
DP diplomová práca
DSP digital signal processing (digitálne spracovanie signálov)
DTW dynamic time warping (dynamické programovanie)
FFT fast fourier transform (rýchla fourierova transformácia)
FV frekvenčná verifikácia
FVS frequency verification system (systém frekvenčnej verifikácie)
Fvz vzorkovacia frekvencia
GUI graphical user interface (grafické užívateľské rozhranie)
Hz hertz
IVR interactive voice response (interaktívna hlasová odpoveď)
JVM java virtual machine (virtuálny stroj Java)
kBps kilobytes peer second (počet kilobajtov za sekundu)
LPC linear predictive coding (lineárne prediktívne kódovanie)
ms milisekunda
sec sekunda
SNR signal to noise ratio (pomer úrovne signálu a šumu)
μs mikro sekunda
8
Úvod
S príchodom nového tisícročia sa ľudstvo stáva svedkom obrovských
pokrokov v oblasti vedy a techniky. Dnešnú dobu by sme mohli výstižne
charakterizovať heslom: "Čo bolo včera utópiou, je dnes realitou." Takmer na
dennej báze sa stretávame s predstavovaním nových, unikátnych a jedinečných
technológií. Žijeme v dobe, keď sa dotykové technológie stali súčasťou
každodenného života väčšiny z nás, používame mobilné telefóny, ktorých
výpočtový výkon ďaleko presahuje výkon najlepších stolových počítačov spred
niekoľkých rokov a prístup k celosvetovej dátovej sieti Internet v ľubovoľnom čase
a takmer na ľubovoľnom mieste pokladáme za samozrejmosť. Do popredia sa tlačí
aj technológia ovládania hlasom. Mnohé mobilné telefóny, televízory a iné
moderné zariadenia implementujú podporu hlasového ovládania.
Menej viditeľný, ale rovnako intenzívny technologický rozmach nastáva aj v
oblasti bezpečnosti IT technológií. Čoraz častejšie sa popri klasických metódach
zabezpečenia uplatňujú alternatívne spôsoby riadenia prístupu založené na
biometrii. Snímače odtlačkov prstov a verifikáciu tváre môžeme už dlhšie ľahko
nájsť dokonca aj na prenosných počítačoch. Napriek tomu, že každý človek má
hlas rovnako jedinečný ako aj odtlačky prstov, v oblasti bezpečnosti a riadenia
prístupu je využitie technológií na báze hlasovej autentifikácie podstatne menej
rozšírené. Ľudský hlas je stále príliš premenlivý, mnohotvarý, nestály a zložitý na
to, aby sa dal ľahko použiť ako bezpečnostný prvok. Napriek tomu je myšlienka
autorizácie bankových operácií, prístupov do zabezpečených budov alebo aj do
vlastného domu pomocou hlasu veľmi príťažlivá.
Cieľom tejto práce je preto analyzovať problémy spojené s hlasovou
autentifikáciou, navrhnúť vhodné riešenia, ktoré odstránia tieto nedostatky,
realizovať návrh do formy spustiteľnej aplikácie, vyhodnotiť úspešnosť danej
realizácie a načrtnúť potenciál, opodstatnenie a využitie novozavedených
princípov v budúcnosti hlasovej autentifikácie.
9
1 Biometrické systémy a autentifikácia
Biometrické systémy využívajú fyziologické a charakterové znaky osôb
pre účely ich rozpoznania. Tieto charakteristické rysy zahŕňajú odtlačok prstu,
geometriu ruky, tvár, hlas, dúhovku, sietnicu, chôdzu, podpis a pod.1
Biometrické
systémy sa členia na unimodálne a multimodálne. Unimodálne systémy
využívajú na rozpoznávanie osôb iba jednu zo spomínaných vlastností, zatiaľ čo
multimodálne ich rôzne kombinujú za účelom presnejšej a dokonalejšej
identifikácie. V praxi najčastejšie využívanými biometrickými parametrami na účely
autentifikácie sú odtlačky prstov a charakteristika tváre.
Autentifikácia vo všeobecnosti predstavuje množinu operácií, ktorými
vieme určiť, či autentifikovaná osoba je, alebo nie je tá, za ktorú sa vydáva.
Autentifikáciu môžeme ďalej členiť na identifikáciu a autentizáciu. Úlohou
procesov identifikácie je na základe znalosti tajného kľúča zistiť, koho je daný
tajný kľúč a či má osoba vlastniaca tento tajný kľúč oprávnenie na prístup k
vyžadovaným zdrojom. Autentizáciou rozumieme overiť, či komunikujeme s
osobou, ktorá je korektným vlastníkom tajného kľúča a odhaliť osobu, ktorá sa
snaží zneužiť kľúč, ktorý jej nepatrí.
Pre názornejšie vysvetlenie mnohých scenárov a situácií, s ktorými sa
stretneme v celej DP, budeme používať populárnu konvenciu Alica, Oskar.2
V
našich prípadoch bude Alica predstavovať korektného užívateľa, ktorý sa snaží
autentifikovať a Oskar bude predstavovať útočníka, ktorý sa snaží vydávať za
Alicu a oklamať autentifikačný systém.
Načrtnime si najjednoduchšiu situáciu. Alica získala tajný kľúč od správcu
imaginárneho bezpečnostného systému. Môže ísť napríklad o zabezpečenú
budovu. Ak sa chce Alica dostať do budovy, musí pri vstupe do budovy zadať tajný
kľúč do terminálu. Ak je kľuč správny, Alica úspešne prejde blokom identifikácie a
systém ju pustí dovnútra. Okamžite je zrejmé, že bezpečnosť systému je priamo
závislá na utajení kľúča. Ak sa Oskarovi podarí zistiť tajný kľúč, bezpečnosť bude
1
JAIN, Anil - NANDAKUMAR, Karthik - ROSS, Arun: Score normalization in multimodal
biometric systems. In: Pattern Recognition, 2005, 38, s.1.
2
Stinson D.R: Cryptography: Theory and practice. Ontario: Chapman & Hall/CRC, 2006.
s.1.
10
okamžite narušená. V dnešnej dobe stále väčšina zabezpečených systémov
(bankomaty, vstupy do budovy, pracovné stanice atď.) využíva iba takýto princíp
identifikácie.
Predstavme si teraz predchádzajúcu situáciu s pridaným blokom
autentizácie, ktorú bude zabezpečovať pracovník bezpečnostnej služby. Alica po
úspešnej identifikácii prejde k pracovníkovi, ktorý musí poznať jej tvár a vpustí ju
do budovy. Oskarovi by v tomto prípade nepomohlo, ani ak by poznal tajný kľúč
Alice. Vidíme, že zaradením prvku autentizácie sme významne zvýšili bezpečnosť
celého systému.
Predošlé prípady boli naozaj veľmi jednoduché, avšak v celej práci je
nevyhnutné správne pochopenie princípov autentifikácie.
Keďže riadenie prístupu do systémov založené iba na báze tajného hesla je
viditeľne nespoľahlivé, prebieha snaha o zavedenie alternatívnych metód, ktoré
poskytnú vyššiu úroveň bezpečnosti. K takýmto alternatívam patria aj biometrické
metódy. V praxi najčastejšie využívané sú odtlačky prstov a rozpoznanie tváre.
1.1 Odtlačky prstov
Autentifikačné systémy na tejto báze sú veľmi spoľahlivé a zabezpečujú
slušnú identifikáciu a vysokú mieru autentizácie. Niektorí výrobcovia udávajú 95%-
tnú úspešnosť správnej identifikácie pri databáze 1.8 miliónov odtlačkov s
chybovosťou 0.3% (informácia platná k mesiacu apríl v roku 2013)3
. Táto metóda
čiastočne spája identifikáciu a autentizáciu, keďže je ťažké získať odtlačok prsta
bez vedomia danej osoby. Samotná identifikácia je zabezpečená jedinečnosťou
odtlačku prsta.
Výhody:
 vysoká miera autentizácie
o pre potenciálneho útočníka je problematické získať odtlačok
prsta oprávnenej osoby
3
[online] [citované 21. február 2013] Dostupné na internete:
<http://www.nec.com/en/global/solutions/security/technologies/nist_proven_accuracy.html>
11
Nevýhody:
 v dnešnej dobe stále nedostatočná úspešnosť správnej identifikácie
oproti klasickým metódam autentifikácie (pri heslách a čipových
kartách je úspešnosť spravidla 100%)
1.2 Rozpoznanie tváre
V dnešnej dobe existuje veľké množstvo komerčne dostupných systémov,
ktoré poskytujú službu identifikácie tváre. Tieto systémy môžu pracovať v
diametrálne odlišných konfiguráciách a prostrediach v závislosti od lokálnych
požiadaviek na identifikáciu. Môžeme vyžadovať identifikáciu nežiaducich osôb na
letisku, kde je vysoká miera neznámych tvári alebo autentifikáciu pri vstupe do
budovy, kde je množina pristupujúcich osôb obmedzená na niekoľko desiatok
alebo stovák. Vo všeobecnosti dnešné algoritmy umožňujú identifikáciu tváre aj za
sťažených podmienok na úrovni úspešnosti korektnej detekcie 92-99%.4
Výhody:
 technológia rozpoznania tváre má v budúcnosti vysoký potenciál,
úspešnosť správnej identifikácie je pri malej databáze účastníkov
vysoká
Nevýhody:
 pri väčších databázach účastníkov významne klesá percento
úspešnej identifikácie
 miera autentizácie pri využití 2D rozpoznávania tvári je nízka
o systém nedokáže účinne vyhodnotiť, či je tvár, ktorú senzor
sníma, živá, alebo ide napr. o obrázok resp. fotku
o pre potenciálneho útočníka predstavuje získanie kvalitnej
snímky tváre podstatne jednoduchšiu úlohu ako získanie napr.
čipovej karty
S istotou ale môžeme usúdiť, že obidve spomínané technológie v sebe
majú veľký potenciál.
4
WRIGHT, John - YANG, Allen - GANESH, Arvind - SASTRY, Shankar - MA, Yi: Robust
Face Recognition via Sparse Representation. In: IEEE Transactions on pattern analysis and
machine intelligence, 2009, 31, s. 219.
12
1.3 Rozpoznanie hlasu
Ako už bolo uvedené, do popredia sa tlačia aj technológie, ktoré využívajú
ľudský hlas pre ovládanie a identifikáciu. Hlavnou výhodou takýchto systémov je
podstatne širšie využitie a omnoho vyšší komfort užívateľa. Ovládanie hlasom
umožňuje nový prístup k nášmu okoliu. Je pohodlné ovládať svetlá, televízor,
dvere, klimatizáciu atď. pomocou hlasu. Takéto technológie sú už bežne
komerčne dostupné. 5
Avšak, ak chceme použiť ľudský hlas na autentifikáciu
hovoriaceho, situácia sa značne skomplikuje.
Podobne ako pri rozpoznávaní tvári, od systému, ktorý spracúva a
vyhodnocuje prijatý ľudský hlas, môžeme očakávať široké spektrum služieb.
Spomeňme hlavné z nich:
 identifikácia osoby
o prijatú zvukovú vzorku musí systém spracovať a porovnať s
charakteristickými údajmi hlasu osôb v databáze
o na základe informácie z databázy systém vyhodnotí, či danú
osobu pozná a ak áno, identifikuje ju
 ovládanie hlasom
o v tomto prípade je dôležitý vypovedaný obsah, často nie je
nutné, aby systém mal dopredu k dispozícii informácie o
účastníkovi, ktorý bude využívať službu hlasového ovládania
(samozrejme, takáto informácia by vylepšila úspešnosť
ovládania)
o často je požiadavka, aby takýto systém dokázal pracovať s
ľubovoľným účastníkom
 autentifikácia osoby
o systémy umožňujúce autentifikáciu osoby sú v dnešnej dobe
komerčne dostupné, bližšie budú popísané v podkapitole 1.4.
Systémy rozpoznávania hlasu môžu pracovať v rôznorodých prostrediach:
 silne zašumené prostredie
5
[online] [citované 21. február 2013] Dostupné na internete:
<http://www.ispeech.org/apps/ispeechhome>
13
o ulica, hlučná kancelária, interiér auta v pohybe a pod.
 málo zašumené prostredie
o odhlučnená miestnosť, tichá izba a pod.
V závislosti od účelu použitia prostredia a s ním spojenej rôznorodej úrovne
šumu, ktorý degraduje kvalitu nahrávky, dnešné metódy dokážu zabezpečiť
úspešnú identifikáciu hovoriaceho v zašumenom prostredí až na úrovni 93%.6
Napriek zdĺhavému hľadaniu sa mi v žiadnej literatúre nepodarilo nájsť informáciu
o úspešnosti hlasovej autentizácie.
Jedným z hlavných cieľov tejto práce je navrhnúť a realizovať systém
rozpoznávania hlasu, ktorý bude schopný zabezpečiť autentizáciu alternatívnym
a unikátnym spôsobom pomocou novej technológie, pre ktorú som zvolil názov
Systém frekvenčnej verifikácie, skrátene FVS. Najprv si ale predstavíme riešenia
súčasných výrobcov hlasových systémov (stav v roku 2013).
1.4 Hlasová autentifikácia v súčasnosti
Na trhu existujú produkty mnohých firiem a spoločností, ktoré dokážu
zabezpečiť hlasovú autentifikáciu. Uvedieme si niektoré z nich:
Nuance7
Spoločnosť Nuance je medzinárodnou spoločnosťou, ktorá poskytuje
rôznorodé riešenia v oblasti hlasovej biometrie. Jeden z jej produktov, systém
FreeSpeech, umožňuje vzdialený, zabezpečený prístup do kontaktných centier,
zabezpečené bankové prevody, prípadne selekciu osôb z tzv. "blacklistu".
Spoločnosť uvádza, že pre autorizáciu operácií jej stačí kontextovo nezávislá
hlasová vzorka. Ak voláte napr. na kontaktné centrum, ktoré implementuje tento
produkt, počas komunikácie s IVR vás systém na pozadí identifikuje. Bohužiaľ
spoločnosť na svojich oficiálnych stránkach neuvádza úspešnosť identifikácie ani
spôsob zabezpečenia autentizácie. Nie je zrejmé, či by si ich systém bol schopný
6
WANG, Shuiping - TANG, Zhenmim - JIANG, Ye - CHEN, Ying: Robust FHPD Features
from Speech Harmonic Analysis for Speaker Identification. In: Applied Mathematics & Information
Sciences An International Journal, 2013, 4, s. 1596.
7
[online] [citované 22. február 2013] Dostupné na internete: <http://www.nuance.com/for-
business/by-solution/customer-service-solutions/solutions-services/inbound-solutions/voice-
authentication-biometrics/freespeech/index.htm>
14
poradiť napríklad s nahrávkou telefonátu, ktorú by získal útočník a neskôr
jednoducho spätne do kontaktného centra prehral. Takýto spôsob útoku je veľmi
často opomínaný a ani nikto z ďalej uvedených výrobcov neuvádza informáciu, že
by ich systém bol schopný zneškodniť ho. Na tento problém sa budem v ďalšom
texte často odvolávať aj ako na "problém neautorizovanej nahrávky".
PhoneFactor8
Táto spoločnosť ponúka prostredníctvom produktu Biometric Authentication
možnosť hlasovej autentifikácie ako nadstavbu nad štandardný spôsob
autentifikácie na báze identifikátora a hesla. K úspešnému prechodu fázou ich
autentifikácie musí užívateľ uviesť bezpečnostnú frázu, ktorú pozná iba on. Tú si
zvolil vo fáze vytvárania prístupov. Zo spoločnosťou uvedených verejne
dostupných informácií vyplýva, že ich systém nedokáže zabezpečiť autentizáciu
užívateľa, keďže opäť ako v predošlom prípade narážame na "problém
neautorizovanej nahrávky". Ak by náš útočník - Oskar tajne nahral užívateľa (aj
bezpečnostnú frázu), systém by s veľkou pravdepodobnosťou oklamal.
SpeechPro9
Americká firma SpeechPro predáva produkt s veľavravným názvom
VoiceKey. Tento produkt je určený, rovnako ako aj u predchádzajúcich výrobcov,
na bezpečnú komunikáciu s call-centrami a IVR systémami. Táto spoločnosť
predstavuje naozaj svetlú výnimku, keďže uvádza chybovosť systému i spôsob
obrany proti neautorizovanému prístupu. Spoločnosť uvádza neúspešnosť
identifikácie na úrovni 2% (pri úrovni SNR vyššej ako 15 dB). Pri autentifikácii
použili metódu tzv. dynamického hesla, čo znamená, že pri každej komunikácii so
systémom bude užívateľ vyzvaný, aby zopakoval unikátnu kombináciu slov.
Vidíme tu snahu o lepšiu úroveň autentizácie. Veľmi jednoduchá myšlienka
"znáhodnenia" prístupového hesla kladie potenciálnemu útočníkovi významnú
bariéru v pokuse o neautorizovaný prístup. Firma ale neuvádza, či by náhodné
výrazy boli z obmedzenej množiny niekoľkých desiatok výrazov, alebo obrovskej
množiny rôznorodých slov. Predpokladanú úroveň bezpečnosti systému by takáto
8
[online] [citované 22. február 2013] Dostupné na internete:
<https://www.phonefactor.com/products/biometric-authentication.shtml>
9
[online] [citované 22. február 2013] Dostupné na internete: <http://speechpro-
usa.com/product/voice_authentication/voicekey#tab2>
15
informácia mohla významne zmeniť. Napriek naozaj účinnej snahe zabrániť
neautorizovanému prístupu, opäť narážame na "problém neautorizovanej
nahrávky". Predpokladajme, že by mal inteligentný a technicky zdatný útočník
prístup ku korektnému užívateľovi a mohol by ho istú dobu bez jeho vedomia
nahrávať. Je možné, že by dokázal naprogramovať systém, ktorý bude adaptívne
reagovať na výzvu pre zadanie hesla hlasom skutočného užívateľa. Jednotlivé
heslá by získal práve dlhodobým nahrávaním užívateľa. Pri implementácii
akéhokoľvek bezpečnostného systému by sme mali brať do úvahy všetky možné
riziká a napriek naozaj vysokej úrovni autentizácie, produkt nepokrýva náš
"problém neautorizovanej nahrávky".
Trade Harbor10
Produkt "Voice Signature Service" tejto firmy je svojou funkcionalitou a
prevedením veľmi podobný predchádzajúcemu riešeniu. Opäť využíva
"znáhodnenie" prístupového hesla za účelom čo najvyššej úrovne autentickosti
nahrávky. "Problém neautorizovanej nahrávky" nie je spomínaný, pravdepodobne
takúto formu útoku nebrali pri návrhu systému do úvahy.
VoiceVault11
Riešenie hlasovej autentifikácie, ktoré firma ponúka, pracuje na princípe
prvotného nahratia frázy o dĺžke cca 10 sekúnd, ktorú bude užívateľ opakovať pri
nasledujúcej autentifikácii. Z doterajších informácií môžeme usúdiť, že tento
produkt patrí k najmenej bezpečným z vyššie spomínaných. Neposkytuje
dodatočne robustnú bezpečnosť napr. "znáhodnením" hesla, ani nerieši náš
známy problém.
Na trhu s produktmi zabezpečujúcimi hlasovú autentifikáciu nie je veľa
"hráčov", čo svedčí aj o nie jednoduchej oblasti podnikania. Z väčších firiem
možno k predchádzajúcim zaradiť aj firmy Agnitio12
a ValidSoft13
.
10
[online] [citované 22. február 2013] Dostupné na internete:
<http://www.tradeharbor.com/what-are-biometrics.html>
11
[online] [citované 22. február 2013] Dostupné na internete:
<http://www.voicevault.com/about-us/>
12
[online] [citované 22. február 2013] Dostupné na internete: <http://www.agnitio.es/>
13
[online] [citované 22. február 2013] Dostupné na internete: <http://www.validsoft.com/>
16
Systémy hlasovej autentifikácie musia byť výborne prepracované ako z
programátorského hľadiska, tak i z matematického. Musia byť čo najlepšie
optimalizované, rýchle, presné a v neposlednom rade aj komfortné na použitie. Z
dôsledného prehľadu danej sféry vyplýva niekoľko zaujímavých faktov:
 úspešnosť hlasovej verifikácie sa pohybuje na úrovni 98%
 čas potrebný na dostatočne presnú autentifikáciu sa pohybuje okolo
7 až 10 sekúnd hlasovej vzorky
 okrem samotných procesov identifikácie niekoľko firiem vo svojich
produktoch implementuje metódu "znáhodnenia" prístupového hesla,
čiže užívateľ je vyzvaný, aby zopakoval náhodnú postupnosť slov
 firmy nepočítajú s problémom neautorizovanej nahrávky
Z predchádzajúceho prehľadu vyplýva, že trh s produktmi pre hlasovú
autentifikáciu sa začína rozvíjať, čo je určite dobrou správou. Nepríjemným
prekvapením je skutočnosť, že žiadne z ponúkaných riešení nepokrýva
najintuitívnejší spôsob prelomenia bezpečnosti systému a to pomocou tajnej
nahrávky hlasu užívateľa, ktorá je zhotovená pri jeho pokusoch o autentifikáciu.
Som presvedčený, že ak by firmy našli riešenie tohto problému, určite by sa ním
pochválili pri popise funkcionality, vlastností, alebo špecifikácií produktu. Takáto
situácia môže vyplývať buď z nevedomosti o danom probléme, no s väčšou
pravdepodobnosťou môžeme konštatovať, že daný problém nebol doteraz
vyriešený. Po uvedených zisteniach som sa rozhodol, že sa v návrhu a
implementácii systému poskytujúceho autentifikáciu budem intenzívne venovať
najmä časti autentizácie, keďže problém identifikácie je intenzívne riešený
rovnako vo vedeckej sfére ako aj v súkromnom sektore. Problém autentizácie
riešený nie je alebo sa mi napriek vynaloženému úsiliu nepodarilo nájsť materiály,
ktoré by sa danej problematiky dotýkali. K pochopeniu všetkých funkcionalít môjho
riešenia je nevyhnutné uviesť informácie o spracovaní nahrávky hlasu a o jej
parametrizácii (z hľadiska určenia obsahu vysloveného slova).
17
2 Analýza a parametrizácia ľudskej reči
V tejto kapitole budú zadefinované a popísané metódy, funkcie a celé
matematické aparáty, ktoré sa využívajú na spracovanie, analýzu a parametrizáciu
ľudskej reči alebo vo všeobecnosti akustického signálu. Veľký dôraz je kladený na
popísanie iba takých informácií, ktoré sú relevantné k navrhovanému systému.
2.1 Reprezentácia akustického signálu v počítači
Ľudská reč predstavuje akustický signál, ktorý vzniká spoluprácou hlasiviek,
pľúc, úst, nosovej dutiny a jazyka. V dnešnej dobe sa na ukladanie, prenášanie a
prehrávanie takéhoto signálu využíva digitálny formát. To znamená, že pri
nahrávaní signálu digitálnym nahrávacím systémom sa v pravidelných časových
intervaloch odoberie vzorka signálu, ktorá sa uloží na pamäťové médium. Tieto
pravidelné časové intervaly sú najčastejšie charakterizované termínom
vzorkovacia frekvencia ďalej len Fvz. V praxi najčastejšie používané vzorkovacie
frekvencie sú 8000 Hz až 44100 Hz. Inými slovami, zo signálu odoberáme vzorky
každých 125 μs pri frekvencii 8000 Hz, prípadne každých 22 μs pri frekvencii
44100 Hz.
K jedným z míľnikov, ktorý problematiku DSP posunul dopredu, patrí
nepochybne slávny Nyquistov vzorkovací teorém, ktorý tento vedec spolu so
Shannonom sformuloval v roku 1940. Tento teorém hovorí o tom, že akýkoľvek
signál, ktorý chceme korektne navzorkovať a uložiť, musí byť vzorkovaný
frekvenciou dvojnásobne vyššou ako je maximálna frekvencia vyskytujúca sa
vo vzorkovanom signáli. 14
Iba takýmto spôsobom budeme schopní signál
(teoreticky) dokonale spätne rekonštruovať. Čiže ak chceme čo najkvalitnejšie
nahrať napríklad hru na orgáne, ktorého najvyšší tón je ladený na frekvenciu 7040
Hz, potrebujeme nahrávací aparát, ktorý bude tento signál vzorkovať minimálne
dvojnásobne vyššou frekvenciou, čiže frekvenciou vyššou ako 14 080 Hz. V
mojom návrhu som si zvolil vzorkovaciu frekvenciu 44100 Hz.
14
SMITH, Steven: The Scientist and Engineer's Guide to Digital Signal Processing. San
Diego: California Technical Publishing, 1997. s.40.
18
Zvuky, ktoré ľudský sluchový aparát vníma, predstavujú analógové (spojité)
signály. Pri vzorkovaní analógového signálu sa vždy dopustíme nepresnosti,
keďže nemáme k dispozícii nekonečný počet tzv. kvantovacích úrovní.
Úrovne kvantovania predstavujú hranice, ktoré sú priradené každej vzorke
signálu. Počet kvantovacích úrovní predstavuje citlivosť vzorkovania. V digitálnej
forme sa najčastejšie na kvantovanie využíva 65536 úrovní, čo predstavuje 16
bitov pamäťového priestoru na každú vzorku. Spolu so vzorkovacou frekvenciou je
počet kvantovacích úrovní druhým najdôležitejším parametrom pri vytváraní
digitálnej nahrávky. V mojom návrhu používam 16 bitov na ukladanie každej
vzorky.
Ukážky vzorkovania a kvantovania sú znázornené na Obr. 1 až Obr. 3.
Obr. 1 Vzorkovanie analógového signálu
Obr. 2 Kvantovanie akustického signálu
19
Obr. 3 Výsledné vzorky signálu
Z daných informácií môžeme ľahko vypočítať bitovú rýchlosť, ktorú
vyrátame ako súčin vzorkovacej frekvencie Fvz a počtu bitov na vzorku15
:
Rýchlosť dátového toku, ktorý musí procesor v nahrávacom zariadení
môjho programu spracovať, je 705600 bps, čo predstavuje 88,2 kBps.
Predstavili sme si základné parametre digitálneho nahrávacieho zariadenia
a reprezentáciu akustického signálu v počítači. V nasledujúcej podkapitole sa
dozvieme, ako vyrátať frekvenčnú charakteristiku signálu.
2.2 Frekvenčné spektrum signálu
Znalosť frekvenčnej charakteristiky signálu je veľmi dôležitá. Poskytne nám
množstvo informácií, ktoré z časového priebehu signálu nie sú jasne viditeľné.
Frekvenčný rozbor sa uplatňuje najmä pri filtrácii a ekvalizácii signálu, čo
korešponduje aj s naším účelom využitia. V oblasti telekomunikácií je napríklad
známym faktom, že na dostatočne kvalitný prenos hlasu cez telefónnu sieť
postačuje frekvenčný rozsah od 300 Hz do 3400 Hz. Nadbytočné frekvencie, ktoré
predstavujú redundantnú informáciu, sú odstránené a cez sieť sa prenáša iba
takáto frekvenčne oklieštená forma signálu.
Základným aparátom, ktorý slúži na vyrátanie frekvenčnej charakteristiky, je
Diskrétna Fourierova Transformácia (ďalej už len DFT).
15
[online] [citované 27. február 2013] Dostupné na internete:
<https://ccrma.stanford.edu/courses/422/projects/WaveFormat/>
20
Základné vzťahy DFT16
:
Priama:
( ) ∑ ( )
Spätná:
( ) ∑ ( )
Obr. 4 Priama DFT
Vidíme, že dosadením jednotlivých vzoriek x(n) Obr. 4 do rovnice priamej
DFT, získame komplexné koeficienty X(k), ktorých počet bude rovnaký ako počet
vzoriek signálu. Koeficienty X(k) nám zobrazujú frekvenčné spektrum signálu.
Keďže spektrum bude komplexné, pre zobrazenie frekvenčnej charakteristiky sa
najprv vyráta absolútna hodnota daného spektra a to sa následne vykreslí. Po
vykreslení získame frekvenčné spektrum ako na Obr. 5.
16
MULLER, Luděk - PSUTKA, Jozef - MATOUŠEK, Jindřich - RADOVÁ, Vlasta.: Mluvíme
s počítačem česky. Praha: Academia, 2006. s. 719.
21
Obr. 5 Frekvenčné spektrum vyrátané pomocou DFT
Veľmi dôležité je všimnúť si vzťah medzi pozíciou jednotlivých vzoriek a
frekvenciou, ktorú predstavujú. Na Obr. 5 je znázornená vzdialenosť medzi
vzorkami vo veľkosti . Táto informácia je pre nás kľúčová, keďže vďaka
pomerne jednoduchému (hoci výpočtovo náročnému) prevodu vzoriek z časovej
oblasti do frekvenčnej pomocou rovnice priamej DFT a jednoduchému prepočtu
pozície vzorky v spektre na frekvenčnú hodnotu získame ľahko čitateľnú
informáciu o frekvenciách a ich intenzite, ktoré daný signál obsahuje.
V predchádzajúcich jednoduchých ukážkach sme použili iba 8 vzoriek
signálu na výpočet frekvenčného spektra. Ukážme si teraz reálny signál, ktorý
predstavuje vyslovenie slova "spoľahlivý" a jeho frekvenčný rozbor pomocou DFT.
Obr. 6 Signál predstavujúci vyslovené slovo "spoľahlivý"
22
Obr. 7 Amplitúdové frekvenčné spektrum slova "spoľahlivý"
Na predchádzajúcich dvoch obrázkoch môžeme vidieť ukážku signálu, ktorý
predstavuje vyslovené slovo "spoľahlivý" (viď. Obr. 6) a jeho následnú
transformáciu pomocou DFT do frekvenčného spektra (viď. Obr. 7). Pokladám za
dôležité zdôrazniť zrkadlenie vo frekvenčnom spektre. Ako sme už spomínali
vzťah medzi pozíciou frekvenčnej vzorky a samotnou hodnotou frekvencie je:
teoreticky to síce znamená, že zo signálu, ktorý vzorkujeme frekvenciou napr.
44100 Hz (náš prípad), dokážeme pomocou DFT získať informáciu o frekvenciách
až do 44100 Hz. Nie je to pravda. Druhá polovica pásma (od 22050 Hz vyššie) je
iba zrkadlená a nepodáva nám žiadnu informáciu o frekvenciách v danej oblasti.
Dôsledkom tohto faktu je potvrdenie Nyquistovho kritéria. Ak chceme získať úplnú
informáciu o nejakej frekvencii z ľubovoľného signálu, musíme signál vzorkovať
minimálne dvojnásobne vyššou frekvenciou.
2.2.1 Rýchla Fourierova Transformácia
DFT je pomerne náročná na výpočtový výkon. Na vyrátanie jednej hodnoty
spektra je nutné vykonať N operácií, pričom N predstavuje počet vzoriek signálu, s
ktorým pracujeme. Z uvedeného vyplýva, že náročnosť výpočtu DFT sa s počtom
vzoriek zvyšuje kvadraticky (pre N vzoriek potrebujeme vykonať N^2 operácií).
Snaha o optimalizáciu vyústila v roku 1965, kedy páni J.W. Cooley a J.W.
Tukey uverejnili článok pod názvom An algorithm for the machine calculation of
complex Fourier Series v zborníku Mathematics Computation, v ktorom popísali
23
algoritmus, ktorý sa neskôr prijal ako algoritmus rýchlej fourierovej transformácie
alebo v skratke FFT (Fast Fourier Transform).17
Do dneška sa stále objavujú nové modifikácie, ktoré zlepšujú prípadne
urýchľujú výpočtovú náročnosť FFT. Vo všeobecnosti ale zložitosť FFT
predstavuje vykonanie operácií pre vyrátanie frekvenčných koeficientov,
čo napríklad pri hodnote N=1024 vzoriek predstavuje 50 - násobné urýchlenie
výpočtu oproti rovniciam DFT.
V návrhu systému hlasovej autentifikácie som preto zvolil využitie práve
FFT, konkrétne som pre účely mojej realizácie modifikoval algoritmus, ktorý
zverejnili autori Robert Sedgewick a Kevin Wayne z univerzity Princteon.18
2.3 Identifikácia vysloveného slova
V predchádzajúcom texte som poukázal na problémy týkajúce sa
autentifikácie rečníka. Po dôslednej analýze situácie, ktorá v danom
technologickom smere figuruje, môžeme dedukovať, že riešení identifikácie
hovoriaceho je mnoho. Univerzity aj súkromný sektor sa identifikáciou zaoberajú
intenzívne aj na úkor nedostatku pozornosti, ktorú by si zaslúžila problematika
autentizácie. Preto som sa rozhodol zamerať najmä na túto problematiku. V
návrhu implementujem doteraz najlepší spôsob zabezpečenia autentizácie z
praxe, ktorým je systém "znáhodnenia" prístupového hesla za účelom väčšej
robustnosti výslednej aplikácie. Zopakujme si, že systém "znáhodnenia"
bezpečnostného hesla znamená, že po prvotnom vytvorení prístupov (nahratie
referenčných slov a fráz) do systému hlasovej verifikácie, budeme vyzvaní na
zopakovanie náhodnej postupnosti napríklad troch slov. Týmto sa výrobcovia
snažia zvýšiť mieru autentizácie. Využitie tohto mechanizmu predpokladá systém,
ktorý je schopný identifikovať, aké slovo bolo vypovedané, teda systém, ktorý
dokáže rozpoznať kontext vyslovenej frázy alebo slova. V praxi jedným z
najčastejšie používaných mechanizmov je identifikácia kontextu spracovávaného
signálu na báze LPC koeficientov.
17
SMITH, Steven.: The Scientist and Engineer's Guide to Digital Signal Processing. San
Diego: California Technical Publishing, 1997. s.40.
18
[online] [citované 2. apríl 2013] Dostupné na internete:
<http://introcs.cs.princeton.edu/java/97data/FFT.java.html>
24
2.4 LPC analýza
Ak chceme navrhnúť systém, ktorého jednou z vlastností bude schopnosť
identifikovať vyslovené slovo, musíme sa zamerať na kontext prijatého signálu a
nie na individuálne odlišnosti, ktoré robia hlas každého jednotlivca unikátnym.
Snažíme sa popísať slovo vektorom príznakov, ktorý bude čo najviac popisovať
samotné slovo so snahou o elimináciu príspevku individuálnych charakteristík
rozprávača. V súčasnosti existujú mnohé riešenia na báze neurónových sietí,
prípadne skrytých markovovských modelov, ktoré nám dokážu takéto vektory
príznakov vytvárať prípadne adaptívne upravovať. Napriek tomu som si zvolil
metódu LPC koeficientov, keďže ich výpočet je pomerne nenáročný a dáva nám
možnosť väčšej voľnosti pri návrhu. Môžeme s nimi intenzívnejšie experimentovať
a hľadať najvhodnejšiu optimalizáciu.
"Lineárne prediktívne kódovanie (LPC) je jednou z najefektívnejších metód
analýzy akustického signálu. Je to metóda, ktorá sa snaží na krátkodobom
základe odhadnúť priamo z rečového signálu parametre modelu vytvárania reči.
Atraktívnosť metódy spočíva v jej schopnosti zabezpečiť veľmi presné odhady
daných parametrov pri prijateľnej výpočtovej záťaži.
Model vytvárania reči sa skladá zo systému s časovo premenným
prenosom a generátorom budiacich funkcií, ktorý pri vytváraní znelých zvukov
budí systém postupnosťou impulzov a pri vytváraní neznelých zvukov náhodným
šumom. Princíp metódy LPC je založený na predpoklade, že k-tú vzorku signálu
( ) je možné popísať lineárnou kombináciou predchádzajúcich vzoriek a
budenia ( ):
( ) ∑ ( ) ( )
kde je koeficient zosilnenia a je rád modelu. Prenosovú funkciu modelu ( )
je potom možné napísať v tvare:
( )
( )
( ) ( ) ∑
25
Sledovanými parametrami sú koeficienty číslicového filtra, ktoré predstavujú
práve LPC koeficienty."19
Pre túto prácu je podstatnou informáciou fakt, že pomocou koeficientov
môžeme predikovať správanie sa signálu. Za predpokladu, že budeme poznať
úsek signálu určitej dĺžky, môžeme z neho spätne vyrátať LPC koeficienty. Tie
budú potom výborne popisovať kontextový obsah danej vzorky signálu a poslúžia
nám pri identifikácii vysloveného slova. Problematika LPC je stručne a
zrozumiteľne vysvetlená vo výbornej knihe pána Jozefa Psutku Komunikace s
počítačem mluvenou řečí, v ktorej môžete nájsť podrobnejšie informácie. Pre naše
účely stačí poznať algoritmy, pomocou ktorých zo získaného úseku
navzorkovaného signálu vypočítame LPC koeficienty .
Pre získanie LPC koeficientov je najprv nutné vypočítať autokorelačnú
funkciu signálu. Získanú funkciu následne využijeme v Durbinovej metóde
výpočtu LPC.
Autokorelačná funkcia20
( ) ∑ ( ) ( )
Durbinova metóda21
( )
( )
[ ( ) ∑
( )
( )]
( )
( )
( ) ( ) ( )
( )
( )
( )
Pomocou predchádzajúcich algoritmov dokážeme jednoducho vypočítať
ľubovoľný počet LPC koeficientov. V praxi sa osvedčil počet od 7 až po 15.22
V
19
PSUTKA, Jozef.: Komunikace s počítačem mluvenou řečí. Praha: Academia, 1995. s. 57.
20
PSUTKA, ref 19, s. 58.
21
PSUTKA, ref 19, s. 59.
26
návrhu nášho systému použijeme 14 koeficientov, ale táto hodnota bude v
aplikácii ľahko modifikovateľná. V nasledujúcej podkapitole si uvedieme metódu,
akou budeme vektory LPC koeficientov medzi sebou porovnávať.
2.5 Vzdialenosť dvoch vektorov
Matematika nám ponúka rôznorodé spôsoby merania vzdialenosti dvoch
vektorov. Od jednoduchých, všeobecných, až po špeciálne, určené pre konkrétne
modelové situácie. Predpokladajme, že máme k dispozícii dva rozdielne vektory ̅
a ̅ rovnakej dĺžky. Najjednoduchšou a zároveň najznámejšou metódou pre
porovnanie dvoch vektorov je tzv. stredná kvadratická miera:23
( ) ∑ ( )
( )
Táto metóda je vhodná pre väčšinu aplikácií. Jej nevýhodou ale je, že
každému prvku vektora, ktorý pomocou nej porovnávame, prikladá rovnakú váhu a
dôležitosť. Táto vlastnosť v našom prípade nie je žiaduca.
Pre porovnanie dvoch vektorov LPC koeficientov existuje viacero špeciálne
upravených algoritmov. Jedným z nich je aj porovnávanie na základe Itakurovej
miery.
Itakurova miera
Tento algoritmus je podstatne zložitejší, avšak bol navrhnutý práve pre
vyjadrenie odlišností medzi testovaným a referenčným segmentom, ktoré sú
vyjadrené reprezentáciou LPC koeficientov.
"Vzdialenosť dvoch LPC vektorov vyrátame ako:
( ) [ ]
kde , prípadne sú LPC vektory referenčného a testovaného segmentu signálu
[ ]
22
PSUTKA, ref 19, s.61.
23
PSUTKA, ref 19, s.62.
27
[ ]
je počet LPC koeficientov a je autokorelačná Toplitzova matica rádu ( )
( ). Prvky Toplitzovej matice sú definované vzťahom:
( )
pričom
( ) ∑ ( ) ( ) 24
Na porovnávanie dvoch vektorov LPC koeficientov sme zvolili Itakurovu
mieru. Systém, ktorý navrhujem, musí úspešne identifikovať vyslovené slovo.
Keďže nikdy nevyslovíme ľubovoľné slovo dvakrát úplne rovnako, musíme vedieť
porovnávať segmenty LPC vektorov, ktoré nemajú identickú dĺžku, identický bude
iba počet LPC koeficientov. Otázka teda znie: "Ako porovnávať dva nerovnako
dlhé vektory, ktorých prvky sú vektory LPC koeficientov?". Odpoveď môžeme
nájsť v algoritme dynamického programovanie DTW.
2.6 Algoritmus dynamického programovania
Algoritmus dynamického programovania hľadá "takú nelineárnu
transformáciu časovej osi jedného z obrazov, pri ktorej dôjde k porovnaniu
obidvoch obrazov s najmenšou výslednou vzdialenosťou. Uvedený mechanizmus
vyplynul z dôkladného rozboru signálu získaného vyslovením rovnakého slova
niekoľkokrát tým istým rečníkom. Pri tomto rozbore sa zistilo, že základné
odlišnosti medzi odpovedajúcimi signálmi nie sú v spektrálnej oblasti, ale v
časovom členení, t.j. nerovnakej dĺžke slov a najmä v nepomere medzi dĺžkami
odpovedajúcich častí (fonémov, hlásiek) vo vnútri slova."25
Prvým nevyhnutným krokom pri porovnávaní dvoch slov (referenčného a
testovacieho) je vybudovať tzv. maticu lokálnych vzdialeností. Tá bude
uchovávať vzdialenosti medzi všetkými vektormi LPC koeficientov, ktoré obsahujú
obidve slová. Pre názornejšiu ukážku pozri Obr. 8. Pre jednoduchšiu predstavu
24
PSUTKA, ref 19, s. 64.
25
MULLER, ref 16, s. 196.
28
sme zvolili LPC vektory o počte iba troch koeficientov. Čísla sú vymyslené a
neodzrkadľujú reálne namerané údaje.
Obr. 8 Matica lokálnych vzdialeností
Na obrázku predpokladáme vyslovenie rovnakého slova dvakrát za sebou
pričom prvé vyslovenie trvalo o dva časové intervaly dlhšie ako druhé. Pre naše
potreby by bolo ideálne vyhodnotiť podobnosť slov zobrazených na
predchádzajúcom obrázku vo forme jedného čísla. Čím podobnejšie budú slová,
tým menšie bude výsledné číslo. Ak vyslovíme dve nerovnaké slová, číslo by malo
byť podstatne vyššie. Na obrázku je znázornená zelená čiara, ktorá prechádza
oblasťou menších lokálnych vzdialeností a dve červené čiary, ktoré, naopak,
prechádzajú oblasťou, kde sú si vektory málo podobné. Ak máme k dispozícii
maticu lokálnych vzdialeností, práve algoritmom DTW vytvoríme maticu
globálnych vzdialeností, ktorej výstupom bude nami hľadané číslo vypovedajúce o
podobnosti dvoch vyslovených slov.
Princíp vytvárania matice globálnych vzdialeností je veľmi jednoduchý,
avšak ťažšie sa vysvetľuje ako kreslí, tak si opäť pomôžeme Obr. 9.
29
Obr. 9 Matica globálnych vzdialeností
Sivé čísla na obrázku odpovedajú matici lokálnych vzdialeností. Vidíme,
že vytvorenie matice globálnych vzdialeností začína pridaním jedného riadku a
jedného stĺpca k matici lokálnych vzdialeností, ktoré sú naplnené "nekonečnami".
V ľavom dolnom rohu je číslo 1, ktoré predstavuje úvodnú hodnotu, od ktorej
budeme postupne vypĺňať celú maticu. Postup pri vypĺňaní matice je veľmi
jednoduchý. Označme si pozíciu poľa v matici lokálnych vzdialeností ako ( ) a
pozíciu poľa v matici globálnych vzdialeností ( ). Potom hodnota poľa ( ),
pričom platí, že a , bude rovná minimu z nasledujúcich troch
hodnôt:
 ( ) ( ) - hodnota zdola
 ( ) ( ) - hodnota zľava
 ( ) ( ) - hodnota z diagonály
Týmto spôsobom vyplníme celú maticu globálnych vzdialeností a výsledné
číslo v pravom hornom rohu bude predstavovať vzájomnú podobnosť slov,
ktorých vektory LPC koeficientov porovnávame. Detailne je celý proces
znázornený na Obr. 9.
Ako už bolo spomínané, vďaka algoritmu DTW eliminujeme časové rozdiely
pri vyslovení dvoch slov. Niekedy je vhodné obmedziť vlastnosti tohto algoritmu,
aby sme zabezpečili reálnejšiu kontrolu podobnosti slov. Ak by sme napríklad pri
30
vypĺňaní matice 5 krát za sebou zvolili hodnotu minima zdola, časovú os 20ms
úseku jedného slova by sme roztiahli cca na 100ms. To znamená, že pripúšťame
situáciu, kedy napríklad dvakrát vyslovíme to isté slovo a v prvom prípade by
vyslovenie hlásky "e" trvalo 20 ms, v druhom 100ms. Keďže je to zjavne
nesprávna úvaha, do algoritmu DTW sa často pridávajú rôzne obmedzenia. V
mojom návrhu som zadal nasledujúce obmedzenie: pri vypĺňaní jednotlivých polí
matice globálnych vzdialeností môžeme maximálne dvakrát za sebou vybrať
minimum zdola a maximálne dvakrát za sebou vybrať minimum zľava. Prakticky
to znamená vyplniť väčší priestor "nekonečnami", čo v konečnom dôsledku
urýchľuje dobu výpočtu a umožní spresnenie výsledku. Pre vyrátanie výslednej
hodnoty (v pravom hornom rohu) prejdeme podstatne menším počtom polí.
Názorná ukážka je na Obr. 10.
Obr. 10 Matica globálnych vzdialeností s obmedzeniami
V tejto kapitole sme získali všetky potrebné vedomosti, ktoré sú
nevyhnutné pri návrhu a realizácii môjho systému. Nasledujúca kapitola sa
zaoberá samotným návrhom.
31
3 Návrh systému autentifikácie rečníka
Pri návrhu systému bolo nevyhnutné zvoliť si platformu, na ktorej daný
návrh zrealizujeme. Od zvolenej platformy sa priamo odvíja obtiažnosť samotnej
realizácie, časové nároky, podpora, dostupná dokumentácia a mnohé iné faktory.
K dispozícii je široké spektrum produktov a platforiem ako napríklad
vedecky orientované vývojové prostredie Matlab, prípadne viac komerčne
orientované programovacie platformy na báze objektovo orientovaného
programovania, akými sú Java, C++ alebo skriptovacie jazyky ako PHP,
JavaScript a mnohé iné.
Po dôslednom zvážení som sa rozhodol realizovať návrh v jazyku Java.
Java mi ponúkla omnoho väčšiu voľnosť ako platforma Matlab, aj keď som prišiel
o možnosť využívania mnohých predprogramovaných funkcií, ktoré má Matlab k
dispozícii. Navyše aplikácia v takomto vývojovom prostredí má potenciál na
uplatnenie v praxi. Podpora a dokumentácia k jazyku Java je voľne dostupná a
naozaj rozsiahla, z čoho vyplýva široké spektrum prístupov, ktoré som mohol k
návrhu zvoliť. Použitie skriptovacích jazykov som zavrhol, keďže nie sú vhodné na
vytváranie silno matematicky orientovaných aplikácií, a teda sú aj podstatne
pomalšie.
Výsledný systém autentifikácie rečníka by mal byť vysoko prenositeľný.
Každá platforma, na ktorej je spustená JVM, musí byť schopná hostiť túto
aplikáciu. Systém musí mať príjemné a intuitívne užívateľské rozhranie, ktoré
dokáže ovládať užívateľ bez akýchkoľvek predchádzajúcich znalostí a bez
podrobného zoznamovania sa so systémom. Taktiež musíme zabezpečiť, aby
bola aplikácia konfigurovateľná v závislosti od prostredia, v ktorom bude daný
systém operovať. Po dôkladnom zvážení som sa rozhodol oddeliť užívateľskú a
administrátorskú časť, kde administrátor so znalosťou prístupových údajov do
systému bude schopný tento systém nakonfigurovať na konkrétne prostredie.
Administrátorské nastavenia musia byť taktiež implementované zrozumiteľne a
jednoznačne, aby sme sa vyhli nadbytočnej réžii vo forme zdĺhavého zaškoľovania.
Dôležité je, aby bol systém škálovateľný a umožnil v budúcnosti pridávanie,
aktualizáciu, odobratie prípadne modifikáciu nových modulov.
32
Systém by mal byť postavený na dvoch nosných bezpečnostných prvkoch:
 Modul znáhodnenia prístupového hesla
 Modul frekvenčnej verifikácie
Samozrejme, v praxi je pre úplnú funkcionalitu nevyhnutný modul
identifikácie rečníka. Tento modul v mojej aplikácii implementovaný nebude.
Dôvodov je niekoľko:
 problematika identifikácie rečníka je intenzívne študovaná a riešená
o existuje mnoho existujúcich funkčných riešení ako v
komerčnom tak aj v akademickom prostredí
 obmedzené časové hľadisko
 modul identifikácie sa môže dodatočne doprogramovať a pripojiť k
výslednej aplikácii
V celom ďalšom texte preto bude tento modul spomínaný, avšak bližšie
nekonkretizovaný.
3.1 Základný princíp systému
Napriek tomu, že aplikácia by mala byť škálovateľná a prenosná (musí byť
schopná zabezpečiť autentifikáciu alebo aj obyčajné rozpoznanie vysloveného
slova), ukážku realizácie takéhoto systému si uvedieme na konkrétnom príklade.
Budeme navrhovať bezpečnostný systém pre firmu XY, ktorý zabezpečí
riadenie prístupov do budovy na báze hlasovej autentifikácie.
Ukážka ideálneho konceptu takéhoto systému je na Obr. 11. Ako presne
sme sa v realizácii návrhu priblížili k takémuto "ideálu" sa dozviete v 6. kapitole.
Aby mohol účastník využívať takýto systém, musíme mu najprv vytvoriť
konto. Je to podobné, ako keď vám napríklad banka pri otváraní účtu nastaví
heslo, vezme vám odtlačok prsta a podobne. Ani náš navrhovaný systém sa
nezaobíde bez fázy vytvorenia prístupov.
33
Obr. 11 Systém autentifikácie rečníka
3.2 Fáza vytvárania prístupov
Užívateľ, napríklad nový zamestnanec, príde do našej fiktívnej firmy XY.
Stretne sa v nej s administrátorom pre riadenie prístupu, ktorý má na starosti
vytváranie nových prístupových účtov. Administrátor vezme nového zamestnanca
do špeciálnej miestnosti, ktorá bude dobre izolovaná od hlučného okolia a
zabezpečená proti odpočúvaniu. V danej miestnosti prebehne vytvorenie nového
užívateľského účtu v databáze, ktorý bude obsahovať nahrávky napr. 30 buď
zamestnancom zvolených slov prípadne (ak by zamestnancovi nezáležalo na
konkrétnych slovách) 30 administrátorom zvolených slov. Každé slovo bude
nahraté 3 krát z dôvodu zvýšenia presnosti spätnej identifikácie. Ku každému
slovu bude následne vytvorený súbor LPC koeficientov, ktorý sa spolu so slovom
uloží do databázy pod unikátny identifikátor (napríklad meno a priezvisko,
prípadne rodné číslo), ktorý bol priradený novému zamestnancovi. Je dôležité
upozorniť na skutočnosť, že proces nahrávania slova bude plne automatizovaný,
34
čiže systém bude vedieť sám vyhodnotiť a určiť začiatok a koniec slova z prijatej
nahrávky. Administrátor bude mať prevažne dohľadovú funkciu a do samotného
procesu nahrávania nebude zasahovať.
3.3 Fáza autentifikácie
Popis celého procesu autentifikácie rečníka, ktorý ilustruje Obr. 11:
Užívateľ pristúpi k terminálu. Systém na základe multimodálnej informácie
(otvorenie dverí, senzor merania vzdialenosti od terminálu a pod.) vyhodnotí, že
pred terminálom stojí užívateľ, ktorý sa pokúsi autentifikovať.
Užívateľ bude vyzvaný k vysloveniu ľubovoľného slova prípadne frázy napr.
"Dobrý deň".
Po nahratí tohto krátkeho úvodného pozdravu sa spustí blok identifikácie
rečníka (krok č.1), ktorý bude mať za úlohu na základe informácie z nahrávky
úvodného pozdravu určiť, či ide o známu osobu, ktorá sa v databáze nachádza,
alebo o osobu neznámu. Pochopiteľne, ak systém vyhodnotí danú osobu ako
neznámu, neumožní jej pokročiť do ďalšej fázy a proces autentifikácie sa okamžite
preruší. Ak sa osoba v tejto prvej fáze úspešne identifikuje, systém presunie
proces autentifikácie do druhej fázy.
Riadiaci a výpočtový server odošle požiadavku databázovému serveru, aby
z databázového priečinka užívateľa (vytvoreného vo fáze vytvárania prístupov)
vybral tri náhodne zvolené slová a spolu s im priradenými informáciami (LPC
koeficientmi) ich odoslal späť riadiacemu serveru (krok č. 2 a krok č.3).
V kroku č. 4 riadiaci server spustí dve paralelne bežiace funkcie. Prvá sa
postará o výzvu užívateľovi na zopakovanie vybraných troch slov prostredníctvom
výstupu na terminál, druhá funkcia spustí blok, ktorý som nazval blokom
frekvenčnej verifikácie. Tento blok bude zabezpečovať funkciu autentizácie.
Zatiaľ si vystačíme s informáciou, že blok frekvenčnej verifikácie nám
prostredníctvom reproduktora bude pseudonáhodne generovať rôznorodé
frekvencie, ktoré spolu s prijatým hlasom užívateľa priebežne nahrávame. Viac
informácií o bloku frekvenčnej verifikácie sa dočítate v kapitole 4.
35
Po získaní všetkých troch nahrávok riadiaci server vďaka informáciám z
bloku frekvenčnej verifikácie a informáciám, ktoré získal zo samotných nahrávok,
vyhodnotí, či:
 užívateľ zopakoval zadané tri slová
o o korektné vyhodnotenie sa postará modul znáhodnenia
prístupového hesla
o vyhodnotenie kontextu vyslovených slov prebehne na základe
porovnania vektora LPC koeficientov získanej nahrávky a
referenčného vektora LPC koeficientov, ktorý sme získali z
databázy (vytvorený vo fáze vytvárania prístupov)
 zadané slová vyslovil užívateľ
o opäť využijeme blok identifikácie, ktorý bude priebežne
overovať identitu užívateľa
 nahrávka obsahuje iba očakávané frekvencie, ktoré boli generované
blokom frekvenčnej verifikácie
o o korektné vyhodnotenie sa postará modul frekvenčnej
verifikácie
V nasledujúcich podkapitolách popíšeme kľúčové funkčné bloky, ktoré budú
realizovať modul znáhodnenia prístupového hesla a modul frekvenčnej verifikácie.
3.4 Modul znáhodnenia prístupového hesla
Pri návrhu modulu znáhodnenia prístupového hesla je nutné implementovať
dva základné funkčné bloky:
 blok generátora náhodných čísel
 rozpoznanie vysloveného slova
Generátor náhodných čísel
Pomocou generátora náhodných čísel budeme vyberať tri rôzne slová z
databázy napr. 30 slov, ktoré sme získali pri fáze vytvárania prístupov.
Samozrejme musíme dbať na to, aby systém nevygeneroval žiadne slovo v rámci
jednej autentifikačnej relácie viac ako jedenkrát. Keďže generátory náhodných
36
čísel sú k dispozícii takmer na každej platforme, realizácia tohto bloku by mala byť
bezproblémová.
Rozpoznanie vysloveného slova
Blok rozpoznania vysloveného slova musí účinne vyhodnotiť, či prijaté slovo
patrí do referenčnej databázy slov, alebo nie. Celý proces rozpoznania slova
predpokladá tri nevyhnutné kroky:
 vyrezanie slova z nahrávky
 LPC analýza vystrihnutého slova, ktorej výstupom budú vektory LPC
koeficientov popisujúce vyslovené slovo
 porovnanie získaných vektorov s referenčnými vektormi LPC
koeficientov z databázy
Na základe analýzy zhody/nezhody medzi vektormi rozlíšime, či ide o slovo
z databázy, alebo nie.
3.4.1 Vyrezanie slova z nahrávky
Predpokladajme, že máme k dispozícii nahrávku, ktorá obsahuje jedno
slovo a zvyšok nahrávky je biely šum prípadne krátkodobé nepredvídateľné
rušenie (zabuchnutie okna, dverí, zakašlanie a pod.). Taktiež predpokladajme, že
nemáme k dispozícii systém adaptívnej filtrácie (ak by bol implementovaný,
pochopiteľne by zvýšil kvalitu nahrávky).
Existuje mnoho spôsobov, ako účinne nájsť začiatok aj koniec slova v
takejto nahrávke. Jednotlivé spôsoby budeme demonštrovať na príklade slova
"pieseň", ktorého časový priebeh je znázornený na Obr. 12.
37
Obr. 12 Časový priebeh signálu, reprezentujúci vyslovené slovo "pieseň"
Nahrávka na Obr. 12 bola vytvorená v pokojnom prostredí bez rušivých
vplyvov. Je na nej zreteľne viditeľný úsek, kedy bolo vypovedané slovo. Ľavé a
pravé pásmo (ohraničené červenou čiarou) predstavujú iba šum, ktorého
pôvodcom je sčasti prostredie pri vytváraní nahrávky a sčasti nedokonalosť
nahrávacej techniky. Intenzita signálu na obrázku je normovaná číslom 32768, ak
si spomenieme na podkapitolu 2.1, v ktorej sme rozoberali počet bitov, ktoré
použijeme na ukladanie každej vzorky, tak nám musí byť jasné, že číslo 32768 je
(takmer) maximálna hodnota 16 bitovej zvukovej vzorky. Ak ňou predelíme všetky
zvukové vzorky, výsledná intenzita sa bude pohybovať v hraniciach od -1 do 1. V
uvedenej podkapitole som taktiež spomínal, že vo svojej práci budem používať
práve 16 bitov na ukladanie vzoriek signálu. Ak chceme z nahrávky vystrihnúť
samostatné slovo, môžeme to urobiť niektorým z nasledujúcich spôsobov.
Vyseknutie na báze priemernej hodnoty amplitúdy
Veľmi jednoduchý spôsob, no napriek tomu účinný.
Postup:
 nahráme slovo
 vyrátame priemernú amplitúdu/intenzitu
 výslednú hodnotu znížime o konkrétny počet percent, čím získame
referenčnú hodnotu
o presný počet percent, o ktorý budeme znižovať priemernú
amplitúdu, musí byť získaný testovaním
38
 referenčnú hodnotu budeme porovnávať postupne so všetkými
vzorkami, pozícia prvej vzorky, ktorá presiahne referenčnú hodnotu,
bude predstavovať začiatok slova, pozícia poslednej koniec slova
Výhody:
 jednoduchá, ľahko implementovateľná a v stálom, nemeniacom sa
prostredí spoľahlivá metóda
Nevýhody:
 silná závislosť od prostredia, so zvýšeným šumom rastie počet
nesprávne vyseknutých slov
Vyseknutie na báze maximálnej hodnoty amplitúdy
Identický spôsob ako predchádzajúci. Jediný rozdiel je v tom, že referenčná
hodnota sa vyráta z maximálnej amplitúdy a nie z priemernej.
Výhody:
 jednoduchá, ľahko implementovateľná a v stálom, nemeniacom sa
prostredí spoľahlivá metóda
Nevýhody:
 silná závislosť od prostredia, so zvýšeným šumom rastie počet
nesprávne vyseknutých slov
 táto metóda je navyše citlivá na náhle silné zvuky vzniknuté počas
vyslovenia samotného slova (zakašlanie, buchnutie dverí a pod.),
ktoré dokážu úplne znehodnotiť vysekávanie
Vyseknutie na báze porovnávania vedľa seba stojacich vzoriek
Tento spôsob predstavuje podstatne inteligentnejšiu formu vysekávania
slov z nahrávky.
Postup:
 prechádzame celý získaný signál od začiatku po vzorkách (alebo po
skupinách vzoriek) a stále porovnávame vedľa seba stojace úseky
39
o metóda sa dá vylepšiť aj tak, že nebudeme porovnávať úseky,
ktoré sa nachádzajú presne vedľa seba, ale môžeme
porovnávať napr. 1. úsek s 5. úsekom, 2.úsek so 6.úsekom
 ak presiahne ich vzájomný pomer kritickú hranicu, vyhodnotíme
pozíciu vzorky, kde takáto situácia nastala ako začiatok slova
 to isté zopakujeme od konca signálu smerom k začiatku
Výhody:
 silne flexibilná metóda, ktorá umožňuje veľmi citlivú konfiguráciu v
závislosti od individuálnych požiadaviek na vysekávanie
 odolná voči zmenám úrovne šumu aj zmenám intenzity hlasu
hovoriacej osoby
Nevýhody:
 metóda je náročnejšia na implementáciu
Vyseknutie na báze amplitúdy šumu okolia
Metóda je jednoduchá, účinná avšak trocha "neohrabaná".
Postup:
 pred samotným nahratím slova zhotovíme krátku nahrávku šumu
okolia
 vyrátame priemernú hodnotu získaného šumu
 zvýšime ju o určitý počet percent, čím získame referenčnú hodnotu
 nahráme slovo
 jednotlivé vzorky slova budeme porovnávať s vyrátanou referenčnou
hodnotou
 opäť pozícia prvej hodnoty, ktorá presiahne túto referenčnú hranicu,
bude vyhodnotená ako začiatok slova, pozícia poslednej ako koniec
slova
Výhody:
 metóda je silne odolná voči zmenám šumu okolia
40
Nevýhody:
 nutnosť priebežne vytvárať nahrávky šumu okolia (čo zvyšuje dobu
obsluhy)
o samozrejme, stačí aby nahrávka šumu bola vyhotovená iba
raz pre konkrétne a nemenné prostredie, závisí to od
implementácie
Z popísaných štyroch metód vysekávania slova z nahrávky som po
dôkladnom otestovaní všetkých možností vo svojej práci použil poslednú metódu,
vyseknutie na báze amplitúdy šumu okolia. Túto metódu som zvolil pre jej
jednoduchosť, ľahkú konfigurovateľnosť, presnosť a hlavne odolnosť voči zmenám
šumu okolia.
Navyše v návrhu implementujem blok potlačenia náhlych, nežiaducich
zvukov (buchnutie dverí, zakašlanie, piskot a podobne). Tento blok úzko
spolupracuje so systémami na vyrezávaní slova z nahrávky. Ak systém
vyrezávania slova odhadne začiatok nahrávky, pred finálnou akceptáciou tohto
začiatku, blok potlačenia nežiaducich zvukov overí okolie pri tomto kandidátovi na
začiatok slova. Preskúma okolia z hľadiska výkonu, aby zistil, či nejde iba o
krátkodobý signál a nie relatívne dlhodobý, akým je napríklad vyslovenie slova.
3.4.2 LPC analýza
V podkapitole 2.4 sme uviedli spôsob výpočtu LPC koeficientov pre signál
určitej dĺžky. Ak máme k dispozícii nahrávku, z ktorej sme úspešne a presne
vystrihli slovo, musíme k danému slovu vyrátať LPC charakteristiky. Je zrejmé, že
popis celého slova napr. 14-timi LPC koeficientmi by bol na účely identifikácie
slova veľmi nepresný. Preto použijeme úseky signálu o dĺžke cca 20ms, ku ktorým
vyrátame príslušné LPC koeficienty. Na konci by sme teda mali získať vektor
vektorov LPC koeficientov. Pre názornejšiu ukážku pozri Obr. 13.
41
Obr. 13 Slovo "pieseň" parametrizované kolekciou LPC vektorov
Každé jedno vyseknuté slovo bude teda popísané takýmto vektorom,
ktorého prvky budú opäť vektory (tie budú obsahovať LPC koeficienty pre
jednotlivé úseky cca 20ms). V realizácii je využitá možnosť prekrývania
segmentov, ktorá nám zvýši presnosť LPC analýzy (na úkor väčších výpočtových
a pamäťových nárokov). Princíp prekrývania je veľmi jednoduchý. Nebudeme
popisovať vedľa seba stojace 20ms bloky, ale po každom bloku sa posunieme iba
o 50% t.j. 10ms.
Vo fáze vytvárania prístupov, sme pochopiteľne ku všetkým získaným
nahrávkam vyrátali aj takéto LPC charakteristiky, ktoré sme uložili do databázy.
Máme k dispozícii dva typy nahrávok. Referenčnú (fáza vytvárania prístupov) a
aktuálnu (získanú pri pokuse o autentifikáciu). Musíme zvoliť vhodný spôsob, ako
porovnať LPC charakteristiky referenčnej nahrávky a LPC charakteristiky aktuálnej
nahrávky.
Je dôležité uvedomiť si skutočnosť, že žiadne dve vyslovené slová nebudú
z hľadiska časového priebehu identické. Z tohto dôvodu ani dva vektory LPC
42
charakteristík jednotlivých úsekov v nahrávke nebudú mať s vysokou
pravdepodobnosťou rovnaké koeficienty a dokonca dané vektory nebudú mať
rovnaký počet segmentov. So zvyšujúcou sa kvalitou systému vyrezávania slov z
nahrávky môžeme zmenšiť rozdiely medzi počtom segmentov, ktoré obsahujú
dané vektory, ale keďže nijako nedokážeme ovplyvniť hlasové ústrojenstvo
človeka, nedokážeme zaručiť, aby mali vektory rovnaký počet segmentov. Ak za
sebou dvakrát vyslovíme napr. slovo "pieseň", prvýkrát môže mať vyslovené slovo
o 40 ms viac ako druhé. Musíme teda použiť vhodnú metódu porovnávania
vektorov, ktorá vie vyhodnotiť podobnosť vektorov, ktoré nemajú rovnaký počet
prvkov. Takúto výhodu nám poskytuje algoritmus DTW, ktorý sme si popísali v
podkapitole 2.6.
3.4.3 Zhrnutie
Znáhodnením prístupových slov chceme zmiasť potenciálneho útočníka. Ak
by sa snažil útočník autentifikovať na základe nahrávky korektného užívateľa,
ktorú tajne získal, narazil by na náročný problém. Ako reprodukovať práve tú
trojicu slov, ku ktorej bol vyzvaný na obrazovke terminálu? Navyše má na to iba
zopár sekúnd, keďže systém nahráva každé slovo iba obmedzený, presne
stanovený počet sekúnd.
Keďže predpokladanú bezpečnosť systému musíme vyhodnotiť voči
známym útokom, uveďme si príklad veľmi inteligentného útočníka, ktorý by mohol
oklamať modul znáhodnenia prístupového hesla.
Útočník musí najprv získať nahrávky všetkých 30 slov nového zamestnanca.
To sa mu môže podariť dlhodobým tajným nahrávaním nového zamestnanca buď
pri samotnej autentifikácii, alebo aj v bežnom živote, kaviarni, na diskotéke, pri
telefonovaní a pod. Musíme taktiež predpokladať, že takto získané nahrávky budú
v dostatočne dobrej kvalite. Následne môže inteligentný útočník naprogramovať
aplikáciu na prenosnom počítači alebo telefóne s integrovanou kamerou, ktorá
bude schopná:
 prostredníctvom kamery prečítať výzvu na zopakovanie slov z
obrazovky terminálu a tým zistiť, aké slová má z databázy tajne
nahratých slov vybrať
 prehrať príslušné tri slová v požadovanom poradí
43
Pri takomto predpoklade je nutné pripustiť možnosť, že daný systém by bol
narušiteľný, ak by autentizácia spočívala iba na znáhodnení prístupového hesla.
Ak si spomenieme na podkapitolu 1.4, dnešné riešenia výrobcov ponúkajú práve
takúto formu zabezpečenia autentizácie, ktorej bezpečnosť sme spochybnili. Preto
som vymyslel a navrhol systém frekvenčnej verifikácie, ktorému je venovaná
nasledujúca kapitola.
44
4 Systém frekvenčnej verifikácie
Potreba zabezpečenia vysokej úrovne autentizácie pri systémoch
autentifikácie rečníka je nespochybniteľná. Z doterajších informácií môžeme
usúdiť, že v ponúkaných riešeniach od výrobcov buď úplne absentuje, prípadne je
zabezpečená pasívnou metódou znáhodnenia prístupového hesla. Ukázali sme si,
že táto metóda naozaj zvyšuje bezpečnosť a dokáže zabezpečiť vyššiu formu
autentizácie, avšak načrtli sme si aj spôsob, ako ju napriek tomu účinne prekonať.
Vo fáze autentizácie chýba proces, ktorý by sa aktívne podieľal na jej
zabezpečení. Takýto proces som navrhol a nazval ho systémom frekvenčnej
verifikácie, skrátene FVS.
Myšlienka frekvenčnej verifikácie by sa dala prirovnať napríklad k
vodoznaku na bankovkách prípadne k bezpečnostnému certifikátu, ktorý sa
používa pre zabezpečený prenos pomocou protokolu HTTPS.
Pre lepšie vysvetlenie princípu frekvenčnej verifikácie si opäť pomôžme
príkladom, v ktorom bude figurovať Alica, ktorá má byť autentifikovaná a Oskar,
ktorý sa snaží autentifikovať pomocou nahrávky Alicinho hlasu. Taktiež
predpokladajme, že Oskar sa dokázal vysporiadať aj so systémom znáhodnenia
prístupového hesla. V takejto modelovej situácii by aj najlepší produkt, ktorý v
súčasnosti zabezpečuje autentifikáciu rečníka, neobstal.
Základný princíp modulu frekvenčnej verifikácie spočíva vo vysielaní
pseudonáhodných akustických impulzov o presne definovaných frekvenciách
počas Alicinej hlasovej verifikácie.
Môžeme si to predstaviť tak, že Alica opakuje slová z obrazovky modulu
znáhodnenia bezpečnostného hesla a počas toho náš reproduktor vydáva tóny
presne určených frekvencií. Pointa spočíva v tom, že systém, ktorý generuje tieto
pseudonáhodné zvuky, ich bez akýchkoľvek problémov dokáže spätne z prijatého
Alicinho hlasu odstrániť. Ale čo Oskar? Oskar sa dostal do zaujímavej situácie.
Zvuky, ktorými "pískame", môžu predstavovať rôzne frekvencie. Môžu to byť
frekvencie v pásme ľudskej reči, frekvencie počuteľné alebo nepočuteľné. To nám
dáva do rúk zaujímavú zbraň, ktorú sa určite oplatí bližšie preskúmať. Opäť si
predstavme Oskara, ktorý sa snaží prelomiť tento unikátny bezpečnostný systém:
45
1. Oskar môže nahrať Alicu pri tom, ako zadáva heslá. Oskar však nahrá aj
akustické signály, ktoré generujeme.
2. Oskar sa musí postarať o to, aby z danej nahrávky odstránil nežiaduce
frekvencie, keďže náš systém bude automaticky kontrolovať, či sa v signáli, ktorý
prijíma od Alice, nenachádzajú takéto nadbytočné frekvencie.
3. Aj keby bol Oskar šikovný a dané frekvencie by odstránil, nezaobišlo by
sa to bez jemnej modifikácie nahraného hlasového signálu od Alice. Systém
frekvenčnej verifikácie sa musí vysporiadať aj s takýmito situáciami a musí byť
schopný detekovať takúto modifikáciu zvukovej nahrávky.
FVS pridáva určitú redundanciu do nahrávky, ktorú si môžeme predstaviť
ako "frekvenčný podpis". Túto redundanciu sa po prijatí signálu snažíme využiť pri
analýze nahrávky na zachytenie akýchkoľvek pokusov o neautorizovanú
reprodukciu hlasu korektného užívateľa. Frekvenčná verifikácia môže
predstavovať riešenie pre dosiaľ nevyriešený "problém neautorizovanej
nahrávky".
4.1 Vlastnosti systému frekvenčnej verifikácie
V závislosti od umiestnenia reproduktora a intenzity prehrávaných
frekvencií môžeme veľmi jednoducho posilniť pasívnu bezpečnosť nášho systému.
Ak by sa náš útočník Oskar pokúsil nahrať Alicu pri autentifikácii, zachytil by iba
silno frekvenčne zašumený hlas (Obr. 14).
46
Obr. 14 Frekvenčná verifikácia
Keďže náš systém generuje dané rôznorodé frekvencie, máme informáciu o
presných časových intervaloch, v ktorých boli frekvencie vysielané, rovnako máme
k dispozícii aj konkrétne hodnoty frekvencií, ktoré sme vysielali. Preto pre nás
nebude žiadny problém spätne dané frekvencie odfiltrovať. Tým pádom dané
frekvencie neovplyvnia po odfiltrovaní iné bloky systému napríklad blok
identifikácie rečníka alebo blok identifikácie vysloveného slova.
Pred odfiltrovaním, môžeme preskúmať nahrávku z hľadiska frekvenčnej
integrity. Od výsledku tohto výskumu bude závisieť rozhodnutie, či prijatá
nahrávka bola vyslovená v danej chvíli osobou, alebo či sa jedná iba o zvukovú
nahrávku reči.
4.2 Frekvenčná integrita
Ak by Oskar nahrával Alicu pri autentifikácii, nahral by aj jednotlivé
frekvencie. Teraz si ukážeme, akým spôsobom by sme mali zabezpečiť
frekvenčnú integritu nahrávky.
Pred samotným spustením systému v reálnej prevádzke musí administrátor
tento systém nakonfigurovať pre prostredie, v ktorom sa bude nachádzať. Je
rozdiel, či bude rozhranie systému na rušnej ulici, alebo na relatívne pokojnej
chodbe vo vnútri budovy. Predpokladajme, že frekvencie, generované blokom
47
frekvenčnej verifikácie, budú z obmedzenej množiny napr. 50 konkrétnych
frekvencií.
Pri konfigurácii systému spustíme blok automatického ladenia modulu
frekvenčnej verifikácie. Automatické ladenie pozostáva z dvoch fáz. V prvej
systém nahrá vzorku šumu okolia, ktorú analyzuje z hľadiska intenzity daných
konkrétnych 50 frekvencií. Získané informácie si zaznamená do databázy.
Následne vykoná druhú ladiacu fázu, pri ktorej bude postupne generovať
všetkých 50 frekvencií, pričom do databázy si opäť zaznamená ich intenzity
prípadne aj oneskorenia v prijímači. Je to nevyhnutné, keďže náš systém nemá
byť úzko profilovaný, naopak mal by byť použiteľný v čo najväčšom množstve
prostredí. To znamená, že pozícia reproduktora a mikrofónu sa môže v závislosti
od konkrétnej realizácie výrazne meniť. V jednej implementácii môže byť systém
spustený napríklad na prenosnom počítači, ktorý má integrovaný mikrofón aj
reproduktory v podstate na jednom mieste, v inej implementácii môžeme mať k
dispozícii prístupovú miestnosť s priestorovo oddeleným mikrofónom a
reproduktorom.
4.3 Vyhodnotenie
Potom, čo bude systém úspešne naladený, môžeme začať vyhodnocovať
nahrávky z hľadiska frekvenčnej integrity. Musím zdôrazniť, že existuje naozaj
obrovské množstvo scenárov a rôznych spôsobov vyhodnotenia, ktoré sa dajú
realizovať. Opísanie všetkých alebo aj väčšiny z nich by bolo nemožné z hľadiska
dodržania odporúčaného rozsahu tejto práce a zabralo by prinajmenšom jednu
alebo aj viacero odborných kníh. Preto sa obmedzíme iba na základné
vyhodnotenia a scenáre, ktoré načrtnú potenciál takejto technológie.
Naším vstupným signálom bude nahrávka Alicinho hlasu, ktorú získal Oskar
tajne počas Aliciných predchádzajúcich autentifikácií. Nahrávka obsahuje
nadbytočné frekvencie, vygenerované systémom frekvenčnej verifikácie pri
autentifikácii, spolu s Aliciným hlasom. Na základe informácie z databázy
vyhodnotíme postupne nasledujúce testy:
48
 zistíme intenzitu prijatých frekvencií (generovaných blokom
frekvenčnej verifikácie) v príslušných časových úsekoch (napr.
zaradom sme generovali frekvencie 500,700 a 600 Hz)
o ak sa bude ich intenzita zhodovať s intenzitou nameranou
počas druhej fázy ladenia, tento test dopadne pozitívne
o ak sa intenzita zhodovať s intenzitou nameranou počas druhej
fázy ladenia nebude, dôvodom môže byť práve Oskarova
nahrávka, pri prehrávaní ktorej došlo k náhodnému skladaniu
rovnakých frekvencií, dôsledkom čoho je zvýšená amplitúda
týchto zložených frekvencií
 zistíme intenzitu všetkých frekvencií, ktoré neboli vysielané blokom
frekvenčnej verifikácie počas aktuálnej autentifikácie
o ak sa bude intenzita zhodovať s intenzitou nameranou počas
prvej fázy ladenia, tento test dopadne pozitívne
o ak sa intenzita zhodovať s intenzitou nameranou počas prvej
fázy ladenia nebude, dôvodom môže byť opäť Oskarova
neautorizovaná nahrávka, pri prehrávaní ktorej sme zachytili
frekvencie, ktoré nepatria k aktuálnej autentifikácii
Týmito jednoduchými testami zabezpečíme autentizáciu, dokážeme
vyhodnotiť, či rozpráva Alica, alebo či Oskar prehráva nahrávku Alicinho hlasu z
predchádzajúcej relácie.
Bezpečnosť môžeme ďalej zvýšiť napríklad širokým rozsahom frekvencií,
ktoré použijeme. Tie sa môžu pohybovať od niekoľko desiatok hertzov až po
ľudským uchom nepočuteľné frekvencie. Ďalším faktorom ovplyvňujúcim
bezpečnosť môže byť rýchlosť, s akou generujeme rôznorodé frekvencie, ktorá sa
môže pohybovať od mikrosekúnd až po sekundy. Samozrejme, so zvyšujúcou sa
rýchlosťou stúpajú nároky na časovú synchronizáciu systému. Taktiež môžeme
modifikovať intenzitu generovaných frekvencií v závislosti od toho, či
uprednostníme priame rušenie protivníka vysokou intenzitou, alebo skôr
použijeme intenzitu, ktorá sa rovná intenzite, s akou vyslovuje dané frekvencie
človek. Robustnejšiu autentizáciu získame použitím viacerých frekvencií súčasne,
prípadne môžeme dokonca prejsť na "spojité frekvenčné spektrum". Znamená to,
že náš "frekvenčný podpis" by nepredstavovali jednotlivé frekvencie v za sebou
49
nasledujúcich časových intervaloch, ale mohla by to byť napríklad aj hudba. Vo
svojej podstate je možné na frekvenčnú verifikáciu použiť ľubovoľný signál s
ľubovoľným frekvenčným spektrom. Princíp zostane stále rovnaký. Ako som už
spomínal, možnosti konfigurácie takéhoto systému sú naozaj rôznorodé.
V našom návrhu z dôvodu obmedzených časových možností použijeme
najjednoduchšiu konfiguráciu. Budeme vysielať osamotené frekvencie v za sebou
nasledujúcich časových intervaloch o dĺžke cca 1 sekunda.
Mnohým čitateľom tejto práce môže napadnúť myšlienka, ako takýto
systém oklamať. Ak by bol Oskar špecialista na spracovanie signálov, vedel by
nadbytočné frekvencie, ktoré získal nahratím Alice, odfiltrovať. To je pravda, avšak
nezaobišlo by sa to bez jemných modifikácií nahrávky, ktoré by sme so systémom
zachytili. Opäť iba načrtnem spôsob. Môžeme postupovať nasledovne:
 prijmeme nahrávku
 vieme, že očakávame slovo pieseň
 z nahrávky odfiltrujeme nadbytočné frekvencie a vystrihneme iba
slovo pieseň
 porovnáme intenzitu všetkých možných frekvencií FVS v získanom
slove so slovom z databázy, kde hľadáme buď frekvenčné diery,
alebo podozrivé odchýlky
Systém frekvenčnej verifikácie nám ponúka nový spôsob, akým sa budeme
pozerať na problematiku autentizácie v systémoch hlasovej autentifikácie rečníka.
Nasledujúca kapitola popisuje realizáciu takéhoto systému vo forme spustiteľnej
aplikácie.
50
5 Realizácia
5.1 Všeobecné informácie
Návrh systému som realizoval vo vývojovom prostredí NetBeans IDE 7.2.1.
Výsledná aplikácia je písaná výlučne v jazyku Java. Rozhodol som sa, že v
aplikácii nevyužijem žiadnu z relačných databáz so zámerom umožniť väčšiu
prenositeľnosť a lepšie rozšírenie aplikácie. Pre spustenie aplikácie je nutné mať
na platforme nainštalovanú JVM 1.7, funkčný mikrofón a reproduktor. Zvukové
karty spolu s ich ovládačmi môžu mať prednastavené rôzne funkcionality,
napríklad "elimináciu šumu", "elimináciu akustickej ozveny" a mnohé iné podporné
funkcionality. Preto odporúčam pred spustením aplikácie skontrolovať nastavenie
zvukovej karty a vypnúť takéto vylepšenia.
Program pozostáva z slov kódu, čo predstavuje približne
riadkov, inými slovami rozsah samotného zdrojového kódu programu je viac ako
normostrán. Preto pochopiteľne zdrojový kód programu nebude odovzdaný v
tlačenej forme, ale vo forme elektronickej ako komprimovaný súbor FVS.zip.
Program automaticky generuje rozsiahlu Java dokumentáciu pre rýchlejšie
zoznámenie sa s funkciami a ich účelom. V tejto dokumentácii nájdete podrobne
popísané všetky balíky, triedy, funkcie a metódy, ktoré program obsahuje. Pre
spustenie aplikácie stačí extrahovať komprimovaný súbor do ľubovoľného
priečinka (odporúčam vytvoriť si vlastný priečinok) a program spustiť dvojklikom na
FVS.jar.
Aplikácia má príjemné grafické užívateľské rozhranie, pričom pri mnohých
funkčných prvkoch ponúka zrozumiteľnú nápovedu slúžiacu pre rýchlejšie
zoznámenie sa s prostredím. GUI je v slovenskom jazyku. Aplikácia si v cieľovom
priečinku automaticky vygeneruje potrebné podpriečinky.
Aplikácia je multivláknová a objektovo orientovaná. Znamená to, že
namiesto procedurálne spracovávaného programu (riadok po riadku) som sa
rozhodol využiť paralelný beh niektorých funkcií realizovaných vo forme
simultánne bežiacich vlákien.
51
Program pozostáva z 13-tich balíkov, ktoré obsahujú dokopy 35 tried. Dané
triedy využívajú služby približne 200 naprogramovaných funkcií a konštruktorov
tried. Rozčlenenie tried do balíkov je vykonané so zreteľom na čo najvýraznejšie,
najintuitívnejšie a najzrozumiteľnejšie oddelenie funkčných blokov aplikácie. V
nasledujúcich podkapitolách si popíšeme hlavné funkcie balíkov a im
prislúchajúcich tried.
5.2 Balík "audio"
Balík "audio" nám poskytuje funkcie a metódy, ktoré zabezpečujú zvukový
vstup a výstup. Pozostáva z piatich tried:
 AudioPlayer
 AudioRecorder
 PlayerForFrequencyVerification
 RecorderForFrequencyVerification
 WavCreator
AudioPlayer
Inštancie tejto triedy sa správajú ako jednoduché audio prehrávače. Trieda
podporuje prehrávanie .wav súborov všetkých PCM formátov. Je naprogramovaná
ako vlákno, keďže ju využívame pri paralelnom behu programu (napríklad ak
potrebujeme súčasne nahrávať aj prehrávať).
Trieda obsahuje niekoľko preťažených konštruktorov, ktoré umožnia
prehrávať súbor s ľubovoľným názvom lokalizovaný v ľubovoľnom priečinku na
koncovom zariadení.
AudioRecorder
Inštancie tejto triedy sa správajú ako jednoduché audio nahrávače. Nahratý
súbor bude uložený vo .wav formáte. Trieda je naprogramovaná ako vlákno,
keďže ju využívame pri paralelnom behu programu (napríklad ak potrebujeme
súčasne nahrávať aj prehrávať).
V závislosti od konštruktora, ktorý použijeme, môžeme nahrávať zvukové
vzorky ľubovoľný počet sekúnd, prípadne môžeme ukončiť nahrávanie stlačením
52
klávesnice Enter. Pre uloženie nahrávky si zvolíme meno a priečinok, prípadne ich
za nás zvolí samotný program.
PlayerForFrequencyVerification
Táto trieda zdieľa všetky charakteristiky s triedou AudioPlayer, avšak
navyše zaznamenáva systémové časy prehrávania .wav súborov. Táto
informácia je nevyhnutná pre FVS z dôvodov časovej synchronizácie.
RecorderForFrequencyVerification
Táto trieda zdieľa všetky charakteristiky s triedou AudioRecorder, avšak
navyše zaznamenáva systémové časy nahrávania .wav súborov. Táto informácia
je nevyhnutná pre FVS z dôvodov časovej synchronizácie.
WavCreator
Trieda WavCreator nám poskytuje metódy a funkcie, ktoré dokážu z
ľubovoľného vektora dátového typu short (16 bitové čísla) vytvoriť .wav súbor.
Daný súbor bude mať nastavenú vzorkovaciu frekvenciu 44100 kHz.
5.3 Balík "time"
Tento balík má na starosti meranie času a časový odpočet. Obsahuje dve
triedy:
 Timer
 CountDown
Timer
Táto trieda má funkcionalitu stopiek. Pomocou metód triedy Timer vieme
odmerať dĺžky trvania funkcií, úsekov programu alebo celého programu. Najviac
sa využíva pri testovaní a ladení programu.
CountDown
Jednoduchý časovač, ktorý na základe zadaného počtu sekúnd pozastaví
vykonávanie vlákna programu, ktoré túto triedu využilo.
53
5.4 Balík "test.classes"
Balík test.classes slúži na ukladanie tried, ktoré sú nevyhnutné pri testovaní
a programu. Aktuálne obsahuje iba jednu triedu:
 HexaFileOutput
HexaFileOutput
Táto trieda nám poskytuje metódy, ktoré dokážu akýkoľvek súbor na disku
prečítať a zapísať v štruktúrovanom hexadecimálnom tvare do textového .txt
súboru. Ak sa jedná o súbor s príponou .wav, dokážu navyše k hexadecimálnemu
výpisu pridať popis jednotlivých polí a tým zdokumentovať hlavičku protokolu .wav
konkrétneho súboru. Pre názornú ukážku pozri Obr. 15. Metódy tejto triedy som
využíval najmä pri analýze hlavičiek .wav súborov.
Obr. 15 Ukážka hexadecimálneho štruktúrovaného prepisu .wav súboru
5.5 Balík "random.numbers"
Balík random.numbers obsahuje triedu, ktorá pracuje s náhodnými číslami:
 RandomNumbersGenerator
RandomNumbersGenerator
Metódy tejto triedy nám vygenerujú zadaný počet náhodných čísel v
zadanom rozsahu. Používa sa normálové rozdelenie.
54
5.6 Balík "storage"
Každá trieda, ktorú tento balík obsahuje, slúži ako dočasné prekladisko dát.
V situácii, keď je potrebná dátová výmena väčšieho množstva informácií medzi
funkciami rozličných tried, prípadne medzi funkciami rozličných balíkov, často
potrebujeme prenášať nehomogénne informácie. Napríklad ak medzi triedami
prenášame informácie o zvukovom súbore, môže vzniknúť požiadavka na súčasný
prenos časových vzoriek signálu k ním priradených LPC koeficientov, prípadne
vzoriek frekvenčného spektra. Namiesto toho, aby sme prenášali všetky tri dátové
toky separátne, vytvoríme dátový objekt, ktorý bude obsahovať ukladací priestor
na všetky tri typy informácií. Ten potom prenesieme v rámci jedného dátového
toku. Takýto spôsob je čitateľnejší a dáta, ktoré spolu súvisia, budú uložené na
jednom mieste. Balík obsahuje štyri triedy:
 Word
 SignalFrequencyInformation
 LpcCharacteristicStorage
 FrequencyVerificationStorage
Word
Táto trieda je spomedzi predchádzajúcich štyroch tried najjednoduchšia.
Slúži na dočasné uloženie jedného vektora vzoriek signálu dátového typu short.
SignalFrequencyInformation
Toto dočasné prekladisko dát je využívané metódami systému frekvenčnej
verifikácie. Poskytuje úložný priestor pre:
 signál predstavujúci vystrihnuté slovo, ktoré obsahuje aj
nadbytočné frekvencie FVS (vektor typu short)
 predchádzajúci signál, ale už s odfiltrovanými nadbytočnými
frekvenciami (vektor typu short)
 maticu, ktorá obsahuje informáciu o energii všetkých frekvencií,
ktoré využíva FVS (aj vysielaných aj nevysielaných) (matica typu
double)
55
 maticu, ktorá obsahuje informáciu o energii všetkých frekvencií,
ktoré využíva FVS po odfiltrovaní nadbytočných frekvencií (matica
typu double)
 vektor, ktorý obsahuje informáciu o poradí vysielaných frekvencií pre
aktuálnu autentifikáciu (vektor typu int)
FrequencyVerificationStorage
Toto prekladisko dát je využívané blokom frekvenčnej verifikácie pri
filtrovaní a analýze vysielaných frekvencií. Obsahuje (okrem iného) totiž
informáciu o čase ich prehrávania a je preto nevyhnutné pre synchronizáciu.
Poskytuje úložný priestor pre:
 signál, predstavujúci nahraté slovo (nevystrihnuté) spolu s
nadbytočnými frekvenciami FVS (vektor typu short)
 záznamy systémového času v okamihoch, kedy boli prehrávané
jednotlivé frekvencie (vektor typu long)
 poradie vysielaných frekvencií (vektor typy int)
LpcCharacteristicStorage
Toto prekladisko dát využívajú metódy, ktoré vytvárajú LPC charakteristiku
signálu. Poskytuje úložný priestor pre:
 signál rozsekaný na rámce predstavujúce časové úseky 20ms
(dvojrozmerný vektor typu short)
 LPC charakteristiku každého rámca tohto signálu (dvojrozmerný
vektor typu double)
5.7 Balík "gui.images"
Tento balík obsahuje obrázky, ktoré sú používané triedami grafického
užívateľského prostredia.
5.8 Balík "main"
Tento balík obsahuje jedinú triedu Application s hlavnou funkciou main(),
ktorá sa spustí ako prvá a po jej ukončení skončí celý program. Funkcia main() v
56
našom programe spúšťa GUI, ktoré následne spúšta podľa potreby všetky ostatné
moduly.
5.9 Balík "action"
Tento balík zastáva funkciu hlavného manažéra celej aplikácie. Zoskupuje
triedy, z ktorých každá zabezpečuje korektné spustenie jej priradenému modulu.
Obsahuje triedy:
 FullSystemAnalyser
 CreateUser
 WordFinder
 FrequencyAuthentization
Triedy FullSystemAnalyser, CreateUser a FrequencyAuthentization
podporujú interoperabilitu s GUI, ale poskytujú rovnakú funkcionalitu aj pre prácu
výlučne s terminálom.
FullSystemAnalyser
Táto trieda pred každým spustením aplikácie kontroluje celistvosť
priečinkov a ciest programu. Overí, či má program vytvorené potrebné dátové
cesty a ak nie, vytvorí ich.
CreateUser
Metódy tejto triedy slúžia na vytváranie nových užívateľských účtov.
Zabezpečia konštrukciu príslušných priečinkov, nahratie prístupových slov, ich
vystrihnutie a vytvorenie príslušných LPC charakteristík.
WordFinder
Metódy tejto triedy majú za úlohu zistiť, aké slovo bolo užívateľom
vyslovené. V tejto konkrétnej realizácii programu musíme daným metódam zadať
meno užívateľa, keďže aplikácia neimplementuje samostatný blok identifikácie
užívateľa.
FrequencyAuthentization
Táto trieda predstavuje hlavného manažéra bloku frekvenčnej verifikácie.
Patrí k najkomplexnejším a najrozsiahlejším triedam programu. Spúšťa FVS,
57
zabezpečuje fázu ladenia frekvenčnej verifikácie a vyhodnocuje autentickosť
nahrávky.
5.10 Balík "sound.preprocessing"
Tento balík sa stará o predspracovanie signálu do formy vhodnej pre ďalšie
spracovanie. Obsahuje dve triedy:
 AudioExtractor
 NoiseRecordWordCutter
AudioExtractor
Táto trieda nám poskytuje metódy pre extrakciu časových vzoriek z
ľubovoľného .wav súboru uloženého na ľubovoľnom mieste na disku. Extrakciu
vykoná do vektora dátového typu short.
NoiseRecordWordCutter
Táto trieda zabezpečuje korektné vyhodnotenie začiatku a konca slova v
nahrávke spolu s následným vyrezaním slova. Algoritmus, ktorý som zvolil, je
popísaný v podkapitole 3.4.1. Trieda je odolná voči krátkodobým rušeniam, ktoré
sa počas nahrávania môžu vyskytnúť (buchnutie dverí, zakašlanie a pod.).
5.11 Balík "sound.processing"
Triedy tohto balíka zabezpečujú samotné spracovanie a transformáciu
signálu. Balík obsahuje nasledujúce triedy:
 Parametrisation
 FFT
 LPC
 CreateSignalLpcChar
Parametrisation
Táto trieda predstavuje predprípravu pre blok identifikácie rečníka.
Obsahuje metódy, ktoré na základe prijatého signálu dokážu vypočítať rôzne
parametre signálu, napríklad energiu alebo počet prechodov nulou. V budúcnosti
by do danej triedy mohli byť doprogramované charakteristiky ako kepstrálna
58
analýza, základná hlasivková perióda a podobne. Trieda nie je zatiaľ aplikáciou
využívaná.
FFT
Metódy tejto triedy zabezpečujú výpočet spektra signálu metódou rýchlej
fourierovej transformácie (FFT). Ako som už spomínal v podkapitole 2.2.1,
algoritmus, ktorý som použil, predstavuje modifikáciu algoritmu, ktorého autormi
sú Robert Sedgewick a Kevin Wayne z univerzity Princteon. Okrem prechodu do
spektra trieda implementuje aj metódu IFFT, čiže metódu inverznej FFT, ktorú
daní autori nezverejnili, tak ju bolo nutné dodatočne doprogramovať.
LPC
Metódy tejto triedy nám zabezpečia výpočet LPC koeficientov a získanie
miery podobnosti dvoch vektorov LPC koeficientov pomocou algoritmu DTW tak,
ako bol popísaný v podkapitolách 2.4 až 2.6.
CreateSignalLpcChar
Túto triedu využívame vo fáze vytvárania nového užívateľského účtu alebo
vo fáze pridávania nových slov k už existujúcemu účtu. Pomocou tejto triedy
vytvoríme objekt, ktorý zaznamená nasegmentovaný signál spolu s príslušnými
LPC koeficientmi. Tento objekt následne uložia vo forme .obj súboru na pevný disk
do priečinku užívateľského konta.
5.12 Balík "security"
Balík security sa stará o vytváranie, obsluhu, mazanie administrátorských
účtov a o bezpečné uloženie prístupových hesiel na disku. Ako sme si spomínali v
podkapitole 3.2, iba osoby, ktoré majú administrátorské oprávnenie, môžu vytvárať
nové účty, mazať existujúce účty a môžu modifikovať špecifickejšie charakteristiky
celého systému.
Princíp zaručenia bezpečnosti pri vytváraní nového hesla:
1. užívateľ zadá heslo
2. systém heslo "zahašuje" odtlačkovou funkciou SHA-256, ktorá sa
pokladá za dostatočne bezpečnú
3. výsledný odtlačok uložíme na pevný disk
59
Ak by sa aj potenciálny útočník dostal do systému, na ktorom beží naša
aplikácia a získal by prístup k administrátorským účtom, nebolo by mu to na nič
platné, keďže princíp odtlačkových funkcií, akou je aj SHA-256, nedovolí z
odtlačku spätne vyrátať pôvodné heslo. Pochopiteľne, pri verifikácii systém prijme
zadané heslo, vyráta z neho odtlačok a ten následne porovná s odtlačkom, ktorý
patrí príslušnému administrátorskému kontu. Ak sa odtlačky zhodnú, administrátor
bude prihlásený, ak nie, systém ho neprihlási. V našom systéme je prednastavený
jeden administrátorský účet pre prvotné prihlásenie s parametrami: meno "admin",
heslo "root".
Balík obsahuje nasledujúce triedy:
 HashingClass
 AdminAccounts
HashingClass
Metódy tejto triedy vyrátajú odtlačok akéhokoľvek textu pomocou algoritmu
SHA-256. Taktiež dokážu daný odtlačok odoslať na terminálový výstup vo forme
postupnosti hexadecimálnych číslic.
AdminAccounts
Táto trieda zabezpečuje vytváranie, mazanie a zobrazenie
administrátorských účtov, taktiež overuje správnosť hesla pri prihlasovaní
administrátorov.
5.13 Balík "frequency.verification.modul"
Tento balík zabezpečuje funkcionalitu systému frekvenčnej verifikácie.
Stará sa o generovanie príslušných frekvencií, súčasné nahrávanie a o ladenie
FVS. Obsahuje nasledujúce triedy:
 RecordingModul
 RecordingTrainingModul
 Frequency
RecordingModul
60
Táto trieda sa stará o generovanie frekvencií FVS, pričom dbá na to, aby sa
v rámci autentizácie neprehrali žiadne dve rovnaké frekvencie bezprostredne za
sebou. Taktiež zabezpečuje nahrávanie týchto frekvencií súčasne s nahratím
hlasu užívateľa.
RecordingTrainingModul
Táto trieda sa využíva vo fáze prvotného ladenia programu. Trieda
zabezpečí súčasné prehratie a nahratie všetkých frekvencií, ktoré používa FVS
(každú frekvenciu prehrá iba raz).
FrequencyTestingModul
Trieda sa správa ako lokálny manažér v rámci svojho balíka. Spustí a
ukončí generovanie frekvencií, analyzuje získanú nahrávku a vyhodnocuje, či je
autentická. Trieda taktiež obsahuje funkcie realizujúce spätné odfiltrovanie
nadbytočných frekvencií z nahrávky. Práve táto trieda zabezpečuje odstránenie
"problému neautorizovanej nahrávky".
5.14 Balík gui
V dnešnej dobe by mala byť každá aplikácia "user-friendly". Práve
vytvorenie grafického užívateľského prostredia umožňuje zlepšiť interakciu a
ovládateľnosť programu. GUI taktiež poskytne omnoho vyšší komfort ako
užívateľovi tak aj administrátorovi aplikácie. Preto som sa rozhodol, že vytvorím
robustné GUI s jednoduchým a intuitívnym ovládaním podporované rozsiahlou
nápovedou. Balík obsahuje nasledujúce triedy:
 GUIinitiate
 GraphicalInterface
GUIinitiate
Táto trieda má jedinú úlohu. Vytvoriť inštanciu grafického užívateľského
rozhrania a spustiť ju ako vlákno.
GraphicalInterface
GraphicalInterface vytvára celé grafické rozhranie. Popisuje všetky textové
polia, gombíky, nápovedu, obrazovky, grafiku, zaškrtávacie políčka, zabezpečuje
61
korektné naviazanie príslušných funkcií a reaguje na jednotlivé udalosti. Grafické
rozhranie je veľmi robustné, pozostáva takmer z 1500 riadkov čistého kódu.
Zabezpečuje celkovú interakciu s užívateľom.
62
6 Ukážka aplikácie a jej funkčných blokov
GUI je vytvorené v programovacom jazyku Java, používa SWING
komponenty. Po spustení programu užívateľa privíta úvodné okno, Obr. 16, so
základnými informáciami, akými sú: názov programu, autor a kontakt na autora.
Taktiež ponúka výber jazyka, ktorý sa však nepodarilo včas implementovať.
Obr. 16 Úvodná obrazovka
Po kliknutí na tlačidlo "Enter" aplikácia otvorí prihlasovacie okno, Obr. 17.
Obr. 17 Prihlasovacie okno
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP
DP

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

DP

  • 1. SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA ELEKTROTECHNIKY A INFORMATIKY Evidenčné číslo: FEI-5410-56379 SYSTÉM IDENTIFIKÁCIE A AUTENTIZÁCIE HOVORIACEHO DIPLOMOVÁ PRÁCA Študijný program: Telekomunikácie Číslo študijného odboru: 2627 Názov študijného odboru: 5.2.15 Telekomunikácie Školiace pracovisko: Ústav telekomunikácií Vedúci záverečnej práce/školiteľ: Ing. Juraj Vojtko, PhD. Bratislava 2013 Bc. Tomáš Bicko
  • 2.
  • 3. ANOTÁCIA Slovenská technická univerzita v Bratislave FAKULTA ELEKTROTECHNIKY A INFORMATIKY Študijný program: TELEKOMUNIKÁCIE Autor: Tomáš Bicko Diplomová práca: Systém identifikácie a autentizácie hovoriaceho Vedúci diplomovej práce: Ing. Juraj Vojtko, PhD. Mesiac, rok odovzdania diplomovej práce: Máj, 2013 Kľúčové slová: autentizácia, identifikácia, autentifikácia, frekvenčná verifikácia Práca sa zaoberá problematikou autentifikácie hovoriacej osoby. Poukazuje na nedostatočné zabezpečenie autentizácie v dnešných realizáciách systémov autentifikácie rečníka. V práci je navrhnutý a realizovaný systém autentifikácie rečníka, ktorý implementuje mechanizmus frekvenčnej verifikácie pre zabezpečenie aktívnej formy autentizácie. Práca poukazuje na výhody takéhoto systému, zhodnotí jeho výkon, pozitíva, nedostatky a potenciál v budúcnosti. Výsledkom práce je interaktívna aplikácia, ktorá demonštruje funkcionalitu takto navrhnutého systému.
  • 4. ANNOTATION Slovak University of Technology Bratislava FACULTY OF ELECTRICAL ENGINEERING AND INFORMATION TECHNOLOGY Degree Course: TELECOMMUNICATIONS Author: Tomáš Bicko Diploma Thesis: System of identification and authentication of speaker Supervisor: Ing. Juraj Vojtko, PhD. Month, Year: May, 2013 Keywords: authentication, identification, frequency verification The thesis analyzes the issue of authentication and identification of speaking person. It points at inadequate assurance of authentication in today's realizations of systems of identification and authentication of speaker. The system of identification and authentication of speaker, is designed and realized in this thesis, it implements mechanism of frequency verification for assurance active form of authentication. The thesis shows advantages of such a system, it analyses its performance, positives, weaknesses and potential in the future. The result of the thesis is interactive application that demonstrates the functionality of proposed system.
  • 5. Čestné vyhlásenie Podpísaný Bc. Tomáš Bicko čestne vyhlasujem, že som diplomovú prácu Systém identifikácie a autentizácie hovoriaceho vypracoval na základe poznatkov získaných počas štúdia a informácií z dostupnej literatúry uvedenej v práci. Uvedenú prácu som vypracoval pod vedením Ing. Juraj Vojtko, PhD. Bratislava, dňa 18.5.2013 ......................................................... podpis autora
  • 6. 6 Obsah Zoznam použitých symbolov a skratiek............................................................................ 7 Úvod...................................................................................................................................... 8 1 Biometrické systémy a autentifikácia ........................................................................ 9 1.1 Odtlačky prstov..................................................................................................... 10 1.2 Rozpoznanie tváre................................................................................................ 11 1.3 Rozpoznanie hlasu............................................................................................... 12 1.4 Hlasová autentifikácia v súčasnosti...................................................................... 13 2 Analýza a parametrizácia ľudskej reči ..................................................................... 17 2.1 Reprezentácia akustického signálu v počítači ..................................................... 17 2.2 Frekvenčné spektrum signálu .............................................................................. 19 2.2.1 Rýchla Fourierova Transformácia................................................................... 22 2.3 Identifikácia vysloveného slova ............................................................................ 23 2.4 LPC analýza ......................................................................................................... 24 2.5 Vzdialenosť dvoch vektorov ................................................................................. 26 2.6 Algoritmus dynamického programovania ............................................................. 27 3 Návrh systému autentifikácie rečníka...................................................................... 31 3.1 Základný princíp systému..................................................................................... 32 3.2 Fáza vytvárania prístupov .................................................................................... 33 3.3 Fáza autentifikácie................................................................................................ 34 3.4 Modul znáhodnenia prístupového hesla............................................................... 35 3.4.1 Vyrezanie slova z nahrávky ............................................................................ 36 3.4.2 LPC analýza.................................................................................................... 40 3.4.3 Zhrnutie........................................................................................................... 42 4 Systém frekvenčnej verifikácie ................................................................................. 44 4.1 Vlastnosti systému frekvenčnej verifikácie........................................................... 45 4.2 Frekvenčná integrita............................................................................................. 46 4.3 Vyhodnotenie........................................................................................................ 47 5 Realizácia .................................................................................................................... 50 5.1 Všeobecné informácie.......................................................................................... 50 5.2 Balík "audio" ......................................................................................................... 51 5.3 Balík "time" ........................................................................................................... 52 5.4 Balík "test.classes" ............................................................................................... 53 5.5 Balík "random.numbers"....................................................................................... 53 5.6 Balík "storage" ...................................................................................................... 54 5.7 Balík "gui.images"................................................................................................. 55 5.8 Balík "main" .......................................................................................................... 55 5.9 Balík "action" ........................................................................................................ 56 5.10 Balík "sound.preprocessing"............................................................................. 57 5.11 Balík "sound.processing".................................................................................. 57 5.12 Balík "security".................................................................................................. 58 5.13 Balík "frequency.verification.modul" ................................................................. 59 5.14 Balík gui............................................................................................................ 60 6 Ukážka aplikácie a jej funkčných blokov ................................................................. 62 6.1 Administrátorská sekcia........................................................................................ 63 6.1.1 Administrácia .................................................................................................. 64 6.1.2 Pokročilé nastavenia....................................................................................... 66 6.2 Užívateľská sekcia................................................................................................ 68 6.3 Identifikácia slova ................................................................................................. 69 6.4 Frekvenčná verifikácia.......................................................................................... 70 Záver ................................................................................................................................... 77 Zoznam použitej literatúry................................................................................................ 79 Zoznam príloh .................................................................................................................... 81
  • 7. 7 Zoznam použitých symbolov a skratiek bps bits peer second (počet bitov za sekundu) Bps bytes peer second (počet bajtov za sekundu) dB decibel DFT diskrétna fourierova transformácia DP diplomová práca DSP digital signal processing (digitálne spracovanie signálov) DTW dynamic time warping (dynamické programovanie) FFT fast fourier transform (rýchla fourierova transformácia) FV frekvenčná verifikácia FVS frequency verification system (systém frekvenčnej verifikácie) Fvz vzorkovacia frekvencia GUI graphical user interface (grafické užívateľské rozhranie) Hz hertz IVR interactive voice response (interaktívna hlasová odpoveď) JVM java virtual machine (virtuálny stroj Java) kBps kilobytes peer second (počet kilobajtov za sekundu) LPC linear predictive coding (lineárne prediktívne kódovanie) ms milisekunda sec sekunda SNR signal to noise ratio (pomer úrovne signálu a šumu) μs mikro sekunda
  • 8. 8 Úvod S príchodom nového tisícročia sa ľudstvo stáva svedkom obrovských pokrokov v oblasti vedy a techniky. Dnešnú dobu by sme mohli výstižne charakterizovať heslom: "Čo bolo včera utópiou, je dnes realitou." Takmer na dennej báze sa stretávame s predstavovaním nových, unikátnych a jedinečných technológií. Žijeme v dobe, keď sa dotykové technológie stali súčasťou každodenného života väčšiny z nás, používame mobilné telefóny, ktorých výpočtový výkon ďaleko presahuje výkon najlepších stolových počítačov spred niekoľkých rokov a prístup k celosvetovej dátovej sieti Internet v ľubovoľnom čase a takmer na ľubovoľnom mieste pokladáme za samozrejmosť. Do popredia sa tlačí aj technológia ovládania hlasom. Mnohé mobilné telefóny, televízory a iné moderné zariadenia implementujú podporu hlasového ovládania. Menej viditeľný, ale rovnako intenzívny technologický rozmach nastáva aj v oblasti bezpečnosti IT technológií. Čoraz častejšie sa popri klasických metódach zabezpečenia uplatňujú alternatívne spôsoby riadenia prístupu založené na biometrii. Snímače odtlačkov prstov a verifikáciu tváre môžeme už dlhšie ľahko nájsť dokonca aj na prenosných počítačoch. Napriek tomu, že každý človek má hlas rovnako jedinečný ako aj odtlačky prstov, v oblasti bezpečnosti a riadenia prístupu je využitie technológií na báze hlasovej autentifikácie podstatne menej rozšírené. Ľudský hlas je stále príliš premenlivý, mnohotvarý, nestály a zložitý na to, aby sa dal ľahko použiť ako bezpečnostný prvok. Napriek tomu je myšlienka autorizácie bankových operácií, prístupov do zabezpečených budov alebo aj do vlastného domu pomocou hlasu veľmi príťažlivá. Cieľom tejto práce je preto analyzovať problémy spojené s hlasovou autentifikáciou, navrhnúť vhodné riešenia, ktoré odstránia tieto nedostatky, realizovať návrh do formy spustiteľnej aplikácie, vyhodnotiť úspešnosť danej realizácie a načrtnúť potenciál, opodstatnenie a využitie novozavedených princípov v budúcnosti hlasovej autentifikácie.
  • 9. 9 1 Biometrické systémy a autentifikácia Biometrické systémy využívajú fyziologické a charakterové znaky osôb pre účely ich rozpoznania. Tieto charakteristické rysy zahŕňajú odtlačok prstu, geometriu ruky, tvár, hlas, dúhovku, sietnicu, chôdzu, podpis a pod.1 Biometrické systémy sa členia na unimodálne a multimodálne. Unimodálne systémy využívajú na rozpoznávanie osôb iba jednu zo spomínaných vlastností, zatiaľ čo multimodálne ich rôzne kombinujú za účelom presnejšej a dokonalejšej identifikácie. V praxi najčastejšie využívanými biometrickými parametrami na účely autentifikácie sú odtlačky prstov a charakteristika tváre. Autentifikácia vo všeobecnosti predstavuje množinu operácií, ktorými vieme určiť, či autentifikovaná osoba je, alebo nie je tá, za ktorú sa vydáva. Autentifikáciu môžeme ďalej členiť na identifikáciu a autentizáciu. Úlohou procesov identifikácie je na základe znalosti tajného kľúča zistiť, koho je daný tajný kľúč a či má osoba vlastniaca tento tajný kľúč oprávnenie na prístup k vyžadovaným zdrojom. Autentizáciou rozumieme overiť, či komunikujeme s osobou, ktorá je korektným vlastníkom tajného kľúča a odhaliť osobu, ktorá sa snaží zneužiť kľúč, ktorý jej nepatrí. Pre názornejšie vysvetlenie mnohých scenárov a situácií, s ktorými sa stretneme v celej DP, budeme používať populárnu konvenciu Alica, Oskar.2 V našich prípadoch bude Alica predstavovať korektného užívateľa, ktorý sa snaží autentifikovať a Oskar bude predstavovať útočníka, ktorý sa snaží vydávať za Alicu a oklamať autentifikačný systém. Načrtnime si najjednoduchšiu situáciu. Alica získala tajný kľúč od správcu imaginárneho bezpečnostného systému. Môže ísť napríklad o zabezpečenú budovu. Ak sa chce Alica dostať do budovy, musí pri vstupe do budovy zadať tajný kľúč do terminálu. Ak je kľuč správny, Alica úspešne prejde blokom identifikácie a systém ju pustí dovnútra. Okamžite je zrejmé, že bezpečnosť systému je priamo závislá na utajení kľúča. Ak sa Oskarovi podarí zistiť tajný kľúč, bezpečnosť bude 1 JAIN, Anil - NANDAKUMAR, Karthik - ROSS, Arun: Score normalization in multimodal biometric systems. In: Pattern Recognition, 2005, 38, s.1. 2 Stinson D.R: Cryptography: Theory and practice. Ontario: Chapman & Hall/CRC, 2006. s.1.
  • 10. 10 okamžite narušená. V dnešnej dobe stále väčšina zabezpečených systémov (bankomaty, vstupy do budovy, pracovné stanice atď.) využíva iba takýto princíp identifikácie. Predstavme si teraz predchádzajúcu situáciu s pridaným blokom autentizácie, ktorú bude zabezpečovať pracovník bezpečnostnej služby. Alica po úspešnej identifikácii prejde k pracovníkovi, ktorý musí poznať jej tvár a vpustí ju do budovy. Oskarovi by v tomto prípade nepomohlo, ani ak by poznal tajný kľúč Alice. Vidíme, že zaradením prvku autentizácie sme významne zvýšili bezpečnosť celého systému. Predošlé prípady boli naozaj veľmi jednoduché, avšak v celej práci je nevyhnutné správne pochopenie princípov autentifikácie. Keďže riadenie prístupu do systémov založené iba na báze tajného hesla je viditeľne nespoľahlivé, prebieha snaha o zavedenie alternatívnych metód, ktoré poskytnú vyššiu úroveň bezpečnosti. K takýmto alternatívam patria aj biometrické metódy. V praxi najčastejšie využívané sú odtlačky prstov a rozpoznanie tváre. 1.1 Odtlačky prstov Autentifikačné systémy na tejto báze sú veľmi spoľahlivé a zabezpečujú slušnú identifikáciu a vysokú mieru autentizácie. Niektorí výrobcovia udávajú 95%- tnú úspešnosť správnej identifikácie pri databáze 1.8 miliónov odtlačkov s chybovosťou 0.3% (informácia platná k mesiacu apríl v roku 2013)3 . Táto metóda čiastočne spája identifikáciu a autentizáciu, keďže je ťažké získať odtlačok prsta bez vedomia danej osoby. Samotná identifikácia je zabezpečená jedinečnosťou odtlačku prsta. Výhody:  vysoká miera autentizácie o pre potenciálneho útočníka je problematické získať odtlačok prsta oprávnenej osoby 3 [online] [citované 21. február 2013] Dostupné na internete: <http://www.nec.com/en/global/solutions/security/technologies/nist_proven_accuracy.html>
  • 11. 11 Nevýhody:  v dnešnej dobe stále nedostatočná úspešnosť správnej identifikácie oproti klasickým metódam autentifikácie (pri heslách a čipových kartách je úspešnosť spravidla 100%) 1.2 Rozpoznanie tváre V dnešnej dobe existuje veľké množstvo komerčne dostupných systémov, ktoré poskytujú službu identifikácie tváre. Tieto systémy môžu pracovať v diametrálne odlišných konfiguráciách a prostrediach v závislosti od lokálnych požiadaviek na identifikáciu. Môžeme vyžadovať identifikáciu nežiaducich osôb na letisku, kde je vysoká miera neznámych tvári alebo autentifikáciu pri vstupe do budovy, kde je množina pristupujúcich osôb obmedzená na niekoľko desiatok alebo stovák. Vo všeobecnosti dnešné algoritmy umožňujú identifikáciu tváre aj za sťažených podmienok na úrovni úspešnosti korektnej detekcie 92-99%.4 Výhody:  technológia rozpoznania tváre má v budúcnosti vysoký potenciál, úspešnosť správnej identifikácie je pri malej databáze účastníkov vysoká Nevýhody:  pri väčších databázach účastníkov významne klesá percento úspešnej identifikácie  miera autentizácie pri využití 2D rozpoznávania tvári je nízka o systém nedokáže účinne vyhodnotiť, či je tvár, ktorú senzor sníma, živá, alebo ide napr. o obrázok resp. fotku o pre potenciálneho útočníka predstavuje získanie kvalitnej snímky tváre podstatne jednoduchšiu úlohu ako získanie napr. čipovej karty S istotou ale môžeme usúdiť, že obidve spomínané technológie v sebe majú veľký potenciál. 4 WRIGHT, John - YANG, Allen - GANESH, Arvind - SASTRY, Shankar - MA, Yi: Robust Face Recognition via Sparse Representation. In: IEEE Transactions on pattern analysis and machine intelligence, 2009, 31, s. 219.
  • 12. 12 1.3 Rozpoznanie hlasu Ako už bolo uvedené, do popredia sa tlačia aj technológie, ktoré využívajú ľudský hlas pre ovládanie a identifikáciu. Hlavnou výhodou takýchto systémov je podstatne širšie využitie a omnoho vyšší komfort užívateľa. Ovládanie hlasom umožňuje nový prístup k nášmu okoliu. Je pohodlné ovládať svetlá, televízor, dvere, klimatizáciu atď. pomocou hlasu. Takéto technológie sú už bežne komerčne dostupné. 5 Avšak, ak chceme použiť ľudský hlas na autentifikáciu hovoriaceho, situácia sa značne skomplikuje. Podobne ako pri rozpoznávaní tvári, od systému, ktorý spracúva a vyhodnocuje prijatý ľudský hlas, môžeme očakávať široké spektrum služieb. Spomeňme hlavné z nich:  identifikácia osoby o prijatú zvukovú vzorku musí systém spracovať a porovnať s charakteristickými údajmi hlasu osôb v databáze o na základe informácie z databázy systém vyhodnotí, či danú osobu pozná a ak áno, identifikuje ju  ovládanie hlasom o v tomto prípade je dôležitý vypovedaný obsah, často nie je nutné, aby systém mal dopredu k dispozícii informácie o účastníkovi, ktorý bude využívať službu hlasového ovládania (samozrejme, takáto informácia by vylepšila úspešnosť ovládania) o často je požiadavka, aby takýto systém dokázal pracovať s ľubovoľným účastníkom  autentifikácia osoby o systémy umožňujúce autentifikáciu osoby sú v dnešnej dobe komerčne dostupné, bližšie budú popísané v podkapitole 1.4. Systémy rozpoznávania hlasu môžu pracovať v rôznorodých prostrediach:  silne zašumené prostredie 5 [online] [citované 21. február 2013] Dostupné na internete: <http://www.ispeech.org/apps/ispeechhome>
  • 13. 13 o ulica, hlučná kancelária, interiér auta v pohybe a pod.  málo zašumené prostredie o odhlučnená miestnosť, tichá izba a pod. V závislosti od účelu použitia prostredia a s ním spojenej rôznorodej úrovne šumu, ktorý degraduje kvalitu nahrávky, dnešné metódy dokážu zabezpečiť úspešnú identifikáciu hovoriaceho v zašumenom prostredí až na úrovni 93%.6 Napriek zdĺhavému hľadaniu sa mi v žiadnej literatúre nepodarilo nájsť informáciu o úspešnosti hlasovej autentizácie. Jedným z hlavných cieľov tejto práce je navrhnúť a realizovať systém rozpoznávania hlasu, ktorý bude schopný zabezpečiť autentizáciu alternatívnym a unikátnym spôsobom pomocou novej technológie, pre ktorú som zvolil názov Systém frekvenčnej verifikácie, skrátene FVS. Najprv si ale predstavíme riešenia súčasných výrobcov hlasových systémov (stav v roku 2013). 1.4 Hlasová autentifikácia v súčasnosti Na trhu existujú produkty mnohých firiem a spoločností, ktoré dokážu zabezpečiť hlasovú autentifikáciu. Uvedieme si niektoré z nich: Nuance7 Spoločnosť Nuance je medzinárodnou spoločnosťou, ktorá poskytuje rôznorodé riešenia v oblasti hlasovej biometrie. Jeden z jej produktov, systém FreeSpeech, umožňuje vzdialený, zabezpečený prístup do kontaktných centier, zabezpečené bankové prevody, prípadne selekciu osôb z tzv. "blacklistu". Spoločnosť uvádza, že pre autorizáciu operácií jej stačí kontextovo nezávislá hlasová vzorka. Ak voláte napr. na kontaktné centrum, ktoré implementuje tento produkt, počas komunikácie s IVR vás systém na pozadí identifikuje. Bohužiaľ spoločnosť na svojich oficiálnych stránkach neuvádza úspešnosť identifikácie ani spôsob zabezpečenia autentizácie. Nie je zrejmé, či by si ich systém bol schopný 6 WANG, Shuiping - TANG, Zhenmim - JIANG, Ye - CHEN, Ying: Robust FHPD Features from Speech Harmonic Analysis for Speaker Identification. In: Applied Mathematics & Information Sciences An International Journal, 2013, 4, s. 1596. 7 [online] [citované 22. február 2013] Dostupné na internete: <http://www.nuance.com/for- business/by-solution/customer-service-solutions/solutions-services/inbound-solutions/voice- authentication-biometrics/freespeech/index.htm>
  • 14. 14 poradiť napríklad s nahrávkou telefonátu, ktorú by získal útočník a neskôr jednoducho spätne do kontaktného centra prehral. Takýto spôsob útoku je veľmi často opomínaný a ani nikto z ďalej uvedených výrobcov neuvádza informáciu, že by ich systém bol schopný zneškodniť ho. Na tento problém sa budem v ďalšom texte často odvolávať aj ako na "problém neautorizovanej nahrávky". PhoneFactor8 Táto spoločnosť ponúka prostredníctvom produktu Biometric Authentication možnosť hlasovej autentifikácie ako nadstavbu nad štandardný spôsob autentifikácie na báze identifikátora a hesla. K úspešnému prechodu fázou ich autentifikácie musí užívateľ uviesť bezpečnostnú frázu, ktorú pozná iba on. Tú si zvolil vo fáze vytvárania prístupov. Zo spoločnosťou uvedených verejne dostupných informácií vyplýva, že ich systém nedokáže zabezpečiť autentizáciu užívateľa, keďže opäť ako v predošlom prípade narážame na "problém neautorizovanej nahrávky". Ak by náš útočník - Oskar tajne nahral užívateľa (aj bezpečnostnú frázu), systém by s veľkou pravdepodobnosťou oklamal. SpeechPro9 Americká firma SpeechPro predáva produkt s veľavravným názvom VoiceKey. Tento produkt je určený, rovnako ako aj u predchádzajúcich výrobcov, na bezpečnú komunikáciu s call-centrami a IVR systémami. Táto spoločnosť predstavuje naozaj svetlú výnimku, keďže uvádza chybovosť systému i spôsob obrany proti neautorizovanému prístupu. Spoločnosť uvádza neúspešnosť identifikácie na úrovni 2% (pri úrovni SNR vyššej ako 15 dB). Pri autentifikácii použili metódu tzv. dynamického hesla, čo znamená, že pri každej komunikácii so systémom bude užívateľ vyzvaný, aby zopakoval unikátnu kombináciu slov. Vidíme tu snahu o lepšiu úroveň autentizácie. Veľmi jednoduchá myšlienka "znáhodnenia" prístupového hesla kladie potenciálnemu útočníkovi významnú bariéru v pokuse o neautorizovaný prístup. Firma ale neuvádza, či by náhodné výrazy boli z obmedzenej množiny niekoľkých desiatok výrazov, alebo obrovskej množiny rôznorodých slov. Predpokladanú úroveň bezpečnosti systému by takáto 8 [online] [citované 22. február 2013] Dostupné na internete: <https://www.phonefactor.com/products/biometric-authentication.shtml> 9 [online] [citované 22. február 2013] Dostupné na internete: <http://speechpro- usa.com/product/voice_authentication/voicekey#tab2>
  • 15. 15 informácia mohla významne zmeniť. Napriek naozaj účinnej snahe zabrániť neautorizovanému prístupu, opäť narážame na "problém neautorizovanej nahrávky". Predpokladajme, že by mal inteligentný a technicky zdatný útočník prístup ku korektnému užívateľovi a mohol by ho istú dobu bez jeho vedomia nahrávať. Je možné, že by dokázal naprogramovať systém, ktorý bude adaptívne reagovať na výzvu pre zadanie hesla hlasom skutočného užívateľa. Jednotlivé heslá by získal práve dlhodobým nahrávaním užívateľa. Pri implementácii akéhokoľvek bezpečnostného systému by sme mali brať do úvahy všetky možné riziká a napriek naozaj vysokej úrovni autentizácie, produkt nepokrýva náš "problém neautorizovanej nahrávky". Trade Harbor10 Produkt "Voice Signature Service" tejto firmy je svojou funkcionalitou a prevedením veľmi podobný predchádzajúcemu riešeniu. Opäť využíva "znáhodnenie" prístupového hesla za účelom čo najvyššej úrovne autentickosti nahrávky. "Problém neautorizovanej nahrávky" nie je spomínaný, pravdepodobne takúto formu útoku nebrali pri návrhu systému do úvahy. VoiceVault11 Riešenie hlasovej autentifikácie, ktoré firma ponúka, pracuje na princípe prvotného nahratia frázy o dĺžke cca 10 sekúnd, ktorú bude užívateľ opakovať pri nasledujúcej autentifikácii. Z doterajších informácií môžeme usúdiť, že tento produkt patrí k najmenej bezpečným z vyššie spomínaných. Neposkytuje dodatočne robustnú bezpečnosť napr. "znáhodnením" hesla, ani nerieši náš známy problém. Na trhu s produktmi zabezpečujúcimi hlasovú autentifikáciu nie je veľa "hráčov", čo svedčí aj o nie jednoduchej oblasti podnikania. Z väčších firiem možno k predchádzajúcim zaradiť aj firmy Agnitio12 a ValidSoft13 . 10 [online] [citované 22. február 2013] Dostupné na internete: <http://www.tradeharbor.com/what-are-biometrics.html> 11 [online] [citované 22. február 2013] Dostupné na internete: <http://www.voicevault.com/about-us/> 12 [online] [citované 22. február 2013] Dostupné na internete: <http://www.agnitio.es/> 13 [online] [citované 22. február 2013] Dostupné na internete: <http://www.validsoft.com/>
  • 16. 16 Systémy hlasovej autentifikácie musia byť výborne prepracované ako z programátorského hľadiska, tak i z matematického. Musia byť čo najlepšie optimalizované, rýchle, presné a v neposlednom rade aj komfortné na použitie. Z dôsledného prehľadu danej sféry vyplýva niekoľko zaujímavých faktov:  úspešnosť hlasovej verifikácie sa pohybuje na úrovni 98%  čas potrebný na dostatočne presnú autentifikáciu sa pohybuje okolo 7 až 10 sekúnd hlasovej vzorky  okrem samotných procesov identifikácie niekoľko firiem vo svojich produktoch implementuje metódu "znáhodnenia" prístupového hesla, čiže užívateľ je vyzvaný, aby zopakoval náhodnú postupnosť slov  firmy nepočítajú s problémom neautorizovanej nahrávky Z predchádzajúceho prehľadu vyplýva, že trh s produktmi pre hlasovú autentifikáciu sa začína rozvíjať, čo je určite dobrou správou. Nepríjemným prekvapením je skutočnosť, že žiadne z ponúkaných riešení nepokrýva najintuitívnejší spôsob prelomenia bezpečnosti systému a to pomocou tajnej nahrávky hlasu užívateľa, ktorá je zhotovená pri jeho pokusoch o autentifikáciu. Som presvedčený, že ak by firmy našli riešenie tohto problému, určite by sa ním pochválili pri popise funkcionality, vlastností, alebo špecifikácií produktu. Takáto situácia môže vyplývať buď z nevedomosti o danom probléme, no s väčšou pravdepodobnosťou môžeme konštatovať, že daný problém nebol doteraz vyriešený. Po uvedených zisteniach som sa rozhodol, že sa v návrhu a implementácii systému poskytujúceho autentifikáciu budem intenzívne venovať najmä časti autentizácie, keďže problém identifikácie je intenzívne riešený rovnako vo vedeckej sfére ako aj v súkromnom sektore. Problém autentizácie riešený nie je alebo sa mi napriek vynaloženému úsiliu nepodarilo nájsť materiály, ktoré by sa danej problematiky dotýkali. K pochopeniu všetkých funkcionalít môjho riešenia je nevyhnutné uviesť informácie o spracovaní nahrávky hlasu a o jej parametrizácii (z hľadiska určenia obsahu vysloveného slova).
  • 17. 17 2 Analýza a parametrizácia ľudskej reči V tejto kapitole budú zadefinované a popísané metódy, funkcie a celé matematické aparáty, ktoré sa využívajú na spracovanie, analýzu a parametrizáciu ľudskej reči alebo vo všeobecnosti akustického signálu. Veľký dôraz je kladený na popísanie iba takých informácií, ktoré sú relevantné k navrhovanému systému. 2.1 Reprezentácia akustického signálu v počítači Ľudská reč predstavuje akustický signál, ktorý vzniká spoluprácou hlasiviek, pľúc, úst, nosovej dutiny a jazyka. V dnešnej dobe sa na ukladanie, prenášanie a prehrávanie takéhoto signálu využíva digitálny formát. To znamená, že pri nahrávaní signálu digitálnym nahrávacím systémom sa v pravidelných časových intervaloch odoberie vzorka signálu, ktorá sa uloží na pamäťové médium. Tieto pravidelné časové intervaly sú najčastejšie charakterizované termínom vzorkovacia frekvencia ďalej len Fvz. V praxi najčastejšie používané vzorkovacie frekvencie sú 8000 Hz až 44100 Hz. Inými slovami, zo signálu odoberáme vzorky každých 125 μs pri frekvencii 8000 Hz, prípadne každých 22 μs pri frekvencii 44100 Hz. K jedným z míľnikov, ktorý problematiku DSP posunul dopredu, patrí nepochybne slávny Nyquistov vzorkovací teorém, ktorý tento vedec spolu so Shannonom sformuloval v roku 1940. Tento teorém hovorí o tom, že akýkoľvek signál, ktorý chceme korektne navzorkovať a uložiť, musí byť vzorkovaný frekvenciou dvojnásobne vyššou ako je maximálna frekvencia vyskytujúca sa vo vzorkovanom signáli. 14 Iba takýmto spôsobom budeme schopní signál (teoreticky) dokonale spätne rekonštruovať. Čiže ak chceme čo najkvalitnejšie nahrať napríklad hru na orgáne, ktorého najvyšší tón je ladený na frekvenciu 7040 Hz, potrebujeme nahrávací aparát, ktorý bude tento signál vzorkovať minimálne dvojnásobne vyššou frekvenciou, čiže frekvenciou vyššou ako 14 080 Hz. V mojom návrhu som si zvolil vzorkovaciu frekvenciu 44100 Hz. 14 SMITH, Steven: The Scientist and Engineer's Guide to Digital Signal Processing. San Diego: California Technical Publishing, 1997. s.40.
  • 18. 18 Zvuky, ktoré ľudský sluchový aparát vníma, predstavujú analógové (spojité) signály. Pri vzorkovaní analógového signálu sa vždy dopustíme nepresnosti, keďže nemáme k dispozícii nekonečný počet tzv. kvantovacích úrovní. Úrovne kvantovania predstavujú hranice, ktoré sú priradené každej vzorke signálu. Počet kvantovacích úrovní predstavuje citlivosť vzorkovania. V digitálnej forme sa najčastejšie na kvantovanie využíva 65536 úrovní, čo predstavuje 16 bitov pamäťového priestoru na každú vzorku. Spolu so vzorkovacou frekvenciou je počet kvantovacích úrovní druhým najdôležitejším parametrom pri vytváraní digitálnej nahrávky. V mojom návrhu používam 16 bitov na ukladanie každej vzorky. Ukážky vzorkovania a kvantovania sú znázornené na Obr. 1 až Obr. 3. Obr. 1 Vzorkovanie analógového signálu Obr. 2 Kvantovanie akustického signálu
  • 19. 19 Obr. 3 Výsledné vzorky signálu Z daných informácií môžeme ľahko vypočítať bitovú rýchlosť, ktorú vyrátame ako súčin vzorkovacej frekvencie Fvz a počtu bitov na vzorku15 : Rýchlosť dátového toku, ktorý musí procesor v nahrávacom zariadení môjho programu spracovať, je 705600 bps, čo predstavuje 88,2 kBps. Predstavili sme si základné parametre digitálneho nahrávacieho zariadenia a reprezentáciu akustického signálu v počítači. V nasledujúcej podkapitole sa dozvieme, ako vyrátať frekvenčnú charakteristiku signálu. 2.2 Frekvenčné spektrum signálu Znalosť frekvenčnej charakteristiky signálu je veľmi dôležitá. Poskytne nám množstvo informácií, ktoré z časového priebehu signálu nie sú jasne viditeľné. Frekvenčný rozbor sa uplatňuje najmä pri filtrácii a ekvalizácii signálu, čo korešponduje aj s naším účelom využitia. V oblasti telekomunikácií je napríklad známym faktom, že na dostatočne kvalitný prenos hlasu cez telefónnu sieť postačuje frekvenčný rozsah od 300 Hz do 3400 Hz. Nadbytočné frekvencie, ktoré predstavujú redundantnú informáciu, sú odstránené a cez sieť sa prenáša iba takáto frekvenčne oklieštená forma signálu. Základným aparátom, ktorý slúži na vyrátanie frekvenčnej charakteristiky, je Diskrétna Fourierova Transformácia (ďalej už len DFT). 15 [online] [citované 27. február 2013] Dostupné na internete: <https://ccrma.stanford.edu/courses/422/projects/WaveFormat/>
  • 20. 20 Základné vzťahy DFT16 : Priama: ( ) ∑ ( ) Spätná: ( ) ∑ ( ) Obr. 4 Priama DFT Vidíme, že dosadením jednotlivých vzoriek x(n) Obr. 4 do rovnice priamej DFT, získame komplexné koeficienty X(k), ktorých počet bude rovnaký ako počet vzoriek signálu. Koeficienty X(k) nám zobrazujú frekvenčné spektrum signálu. Keďže spektrum bude komplexné, pre zobrazenie frekvenčnej charakteristiky sa najprv vyráta absolútna hodnota daného spektra a to sa následne vykreslí. Po vykreslení získame frekvenčné spektrum ako na Obr. 5. 16 MULLER, Luděk - PSUTKA, Jozef - MATOUŠEK, Jindřich - RADOVÁ, Vlasta.: Mluvíme s počítačem česky. Praha: Academia, 2006. s. 719.
  • 21. 21 Obr. 5 Frekvenčné spektrum vyrátané pomocou DFT Veľmi dôležité je všimnúť si vzťah medzi pozíciou jednotlivých vzoriek a frekvenciou, ktorú predstavujú. Na Obr. 5 je znázornená vzdialenosť medzi vzorkami vo veľkosti . Táto informácia je pre nás kľúčová, keďže vďaka pomerne jednoduchému (hoci výpočtovo náročnému) prevodu vzoriek z časovej oblasti do frekvenčnej pomocou rovnice priamej DFT a jednoduchému prepočtu pozície vzorky v spektre na frekvenčnú hodnotu získame ľahko čitateľnú informáciu o frekvenciách a ich intenzite, ktoré daný signál obsahuje. V predchádzajúcich jednoduchých ukážkach sme použili iba 8 vzoriek signálu na výpočet frekvenčného spektra. Ukážme si teraz reálny signál, ktorý predstavuje vyslovenie slova "spoľahlivý" a jeho frekvenčný rozbor pomocou DFT. Obr. 6 Signál predstavujúci vyslovené slovo "spoľahlivý"
  • 22. 22 Obr. 7 Amplitúdové frekvenčné spektrum slova "spoľahlivý" Na predchádzajúcich dvoch obrázkoch môžeme vidieť ukážku signálu, ktorý predstavuje vyslovené slovo "spoľahlivý" (viď. Obr. 6) a jeho následnú transformáciu pomocou DFT do frekvenčného spektra (viď. Obr. 7). Pokladám za dôležité zdôrazniť zrkadlenie vo frekvenčnom spektre. Ako sme už spomínali vzťah medzi pozíciou frekvenčnej vzorky a samotnou hodnotou frekvencie je: teoreticky to síce znamená, že zo signálu, ktorý vzorkujeme frekvenciou napr. 44100 Hz (náš prípad), dokážeme pomocou DFT získať informáciu o frekvenciách až do 44100 Hz. Nie je to pravda. Druhá polovica pásma (od 22050 Hz vyššie) je iba zrkadlená a nepodáva nám žiadnu informáciu o frekvenciách v danej oblasti. Dôsledkom tohto faktu je potvrdenie Nyquistovho kritéria. Ak chceme získať úplnú informáciu o nejakej frekvencii z ľubovoľného signálu, musíme signál vzorkovať minimálne dvojnásobne vyššou frekvenciou. 2.2.1 Rýchla Fourierova Transformácia DFT je pomerne náročná na výpočtový výkon. Na vyrátanie jednej hodnoty spektra je nutné vykonať N operácií, pričom N predstavuje počet vzoriek signálu, s ktorým pracujeme. Z uvedeného vyplýva, že náročnosť výpočtu DFT sa s počtom vzoriek zvyšuje kvadraticky (pre N vzoriek potrebujeme vykonať N^2 operácií). Snaha o optimalizáciu vyústila v roku 1965, kedy páni J.W. Cooley a J.W. Tukey uverejnili článok pod názvom An algorithm for the machine calculation of complex Fourier Series v zborníku Mathematics Computation, v ktorom popísali
  • 23. 23 algoritmus, ktorý sa neskôr prijal ako algoritmus rýchlej fourierovej transformácie alebo v skratke FFT (Fast Fourier Transform).17 Do dneška sa stále objavujú nové modifikácie, ktoré zlepšujú prípadne urýchľujú výpočtovú náročnosť FFT. Vo všeobecnosti ale zložitosť FFT predstavuje vykonanie operácií pre vyrátanie frekvenčných koeficientov, čo napríklad pri hodnote N=1024 vzoriek predstavuje 50 - násobné urýchlenie výpočtu oproti rovniciam DFT. V návrhu systému hlasovej autentifikácie som preto zvolil využitie práve FFT, konkrétne som pre účely mojej realizácie modifikoval algoritmus, ktorý zverejnili autori Robert Sedgewick a Kevin Wayne z univerzity Princteon.18 2.3 Identifikácia vysloveného slova V predchádzajúcom texte som poukázal na problémy týkajúce sa autentifikácie rečníka. Po dôslednej analýze situácie, ktorá v danom technologickom smere figuruje, môžeme dedukovať, že riešení identifikácie hovoriaceho je mnoho. Univerzity aj súkromný sektor sa identifikáciou zaoberajú intenzívne aj na úkor nedostatku pozornosti, ktorú by si zaslúžila problematika autentizácie. Preto som sa rozhodol zamerať najmä na túto problematiku. V návrhu implementujem doteraz najlepší spôsob zabezpečenia autentizácie z praxe, ktorým je systém "znáhodnenia" prístupového hesla za účelom väčšej robustnosti výslednej aplikácie. Zopakujme si, že systém "znáhodnenia" bezpečnostného hesla znamená, že po prvotnom vytvorení prístupov (nahratie referenčných slov a fráz) do systému hlasovej verifikácie, budeme vyzvaní na zopakovanie náhodnej postupnosti napríklad troch slov. Týmto sa výrobcovia snažia zvýšiť mieru autentizácie. Využitie tohto mechanizmu predpokladá systém, ktorý je schopný identifikovať, aké slovo bolo vypovedané, teda systém, ktorý dokáže rozpoznať kontext vyslovenej frázy alebo slova. V praxi jedným z najčastejšie používaných mechanizmov je identifikácia kontextu spracovávaného signálu na báze LPC koeficientov. 17 SMITH, Steven.: The Scientist and Engineer's Guide to Digital Signal Processing. San Diego: California Technical Publishing, 1997. s.40. 18 [online] [citované 2. apríl 2013] Dostupné na internete: <http://introcs.cs.princeton.edu/java/97data/FFT.java.html>
  • 24. 24 2.4 LPC analýza Ak chceme navrhnúť systém, ktorého jednou z vlastností bude schopnosť identifikovať vyslovené slovo, musíme sa zamerať na kontext prijatého signálu a nie na individuálne odlišnosti, ktoré robia hlas každého jednotlivca unikátnym. Snažíme sa popísať slovo vektorom príznakov, ktorý bude čo najviac popisovať samotné slovo so snahou o elimináciu príspevku individuálnych charakteristík rozprávača. V súčasnosti existujú mnohé riešenia na báze neurónových sietí, prípadne skrytých markovovských modelov, ktoré nám dokážu takéto vektory príznakov vytvárať prípadne adaptívne upravovať. Napriek tomu som si zvolil metódu LPC koeficientov, keďže ich výpočet je pomerne nenáročný a dáva nám možnosť väčšej voľnosti pri návrhu. Môžeme s nimi intenzívnejšie experimentovať a hľadať najvhodnejšiu optimalizáciu. "Lineárne prediktívne kódovanie (LPC) je jednou z najefektívnejších metód analýzy akustického signálu. Je to metóda, ktorá sa snaží na krátkodobom základe odhadnúť priamo z rečového signálu parametre modelu vytvárania reči. Atraktívnosť metódy spočíva v jej schopnosti zabezpečiť veľmi presné odhady daných parametrov pri prijateľnej výpočtovej záťaži. Model vytvárania reči sa skladá zo systému s časovo premenným prenosom a generátorom budiacich funkcií, ktorý pri vytváraní znelých zvukov budí systém postupnosťou impulzov a pri vytváraní neznelých zvukov náhodným šumom. Princíp metódy LPC je založený na predpoklade, že k-tú vzorku signálu ( ) je možné popísať lineárnou kombináciou predchádzajúcich vzoriek a budenia ( ): ( ) ∑ ( ) ( ) kde je koeficient zosilnenia a je rád modelu. Prenosovú funkciu modelu ( ) je potom možné napísať v tvare: ( ) ( ) ( ) ( ) ∑
  • 25. 25 Sledovanými parametrami sú koeficienty číslicového filtra, ktoré predstavujú práve LPC koeficienty."19 Pre túto prácu je podstatnou informáciou fakt, že pomocou koeficientov môžeme predikovať správanie sa signálu. Za predpokladu, že budeme poznať úsek signálu určitej dĺžky, môžeme z neho spätne vyrátať LPC koeficienty. Tie budú potom výborne popisovať kontextový obsah danej vzorky signálu a poslúžia nám pri identifikácii vysloveného slova. Problematika LPC je stručne a zrozumiteľne vysvetlená vo výbornej knihe pána Jozefa Psutku Komunikace s počítačem mluvenou řečí, v ktorej môžete nájsť podrobnejšie informácie. Pre naše účely stačí poznať algoritmy, pomocou ktorých zo získaného úseku navzorkovaného signálu vypočítame LPC koeficienty . Pre získanie LPC koeficientov je najprv nutné vypočítať autokorelačnú funkciu signálu. Získanú funkciu následne využijeme v Durbinovej metóde výpočtu LPC. Autokorelačná funkcia20 ( ) ∑ ( ) ( ) Durbinova metóda21 ( ) ( ) [ ( ) ∑ ( ) ( )] ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) Pomocou predchádzajúcich algoritmov dokážeme jednoducho vypočítať ľubovoľný počet LPC koeficientov. V praxi sa osvedčil počet od 7 až po 15.22 V 19 PSUTKA, Jozef.: Komunikace s počítačem mluvenou řečí. Praha: Academia, 1995. s. 57. 20 PSUTKA, ref 19, s. 58. 21 PSUTKA, ref 19, s. 59.
  • 26. 26 návrhu nášho systému použijeme 14 koeficientov, ale táto hodnota bude v aplikácii ľahko modifikovateľná. V nasledujúcej podkapitole si uvedieme metódu, akou budeme vektory LPC koeficientov medzi sebou porovnávať. 2.5 Vzdialenosť dvoch vektorov Matematika nám ponúka rôznorodé spôsoby merania vzdialenosti dvoch vektorov. Od jednoduchých, všeobecných, až po špeciálne, určené pre konkrétne modelové situácie. Predpokladajme, že máme k dispozícii dva rozdielne vektory ̅ a ̅ rovnakej dĺžky. Najjednoduchšou a zároveň najznámejšou metódou pre porovnanie dvoch vektorov je tzv. stredná kvadratická miera:23 ( ) ∑ ( ) ( ) Táto metóda je vhodná pre väčšinu aplikácií. Jej nevýhodou ale je, že každému prvku vektora, ktorý pomocou nej porovnávame, prikladá rovnakú váhu a dôležitosť. Táto vlastnosť v našom prípade nie je žiaduca. Pre porovnanie dvoch vektorov LPC koeficientov existuje viacero špeciálne upravených algoritmov. Jedným z nich je aj porovnávanie na základe Itakurovej miery. Itakurova miera Tento algoritmus je podstatne zložitejší, avšak bol navrhnutý práve pre vyjadrenie odlišností medzi testovaným a referenčným segmentom, ktoré sú vyjadrené reprezentáciou LPC koeficientov. "Vzdialenosť dvoch LPC vektorov vyrátame ako: ( ) [ ] kde , prípadne sú LPC vektory referenčného a testovaného segmentu signálu [ ] 22 PSUTKA, ref 19, s.61. 23 PSUTKA, ref 19, s.62.
  • 27. 27 [ ] je počet LPC koeficientov a je autokorelačná Toplitzova matica rádu ( ) ( ). Prvky Toplitzovej matice sú definované vzťahom: ( ) pričom ( ) ∑ ( ) ( ) 24 Na porovnávanie dvoch vektorov LPC koeficientov sme zvolili Itakurovu mieru. Systém, ktorý navrhujem, musí úspešne identifikovať vyslovené slovo. Keďže nikdy nevyslovíme ľubovoľné slovo dvakrát úplne rovnako, musíme vedieť porovnávať segmenty LPC vektorov, ktoré nemajú identickú dĺžku, identický bude iba počet LPC koeficientov. Otázka teda znie: "Ako porovnávať dva nerovnako dlhé vektory, ktorých prvky sú vektory LPC koeficientov?". Odpoveď môžeme nájsť v algoritme dynamického programovanie DTW. 2.6 Algoritmus dynamického programovania Algoritmus dynamického programovania hľadá "takú nelineárnu transformáciu časovej osi jedného z obrazov, pri ktorej dôjde k porovnaniu obidvoch obrazov s najmenšou výslednou vzdialenosťou. Uvedený mechanizmus vyplynul z dôkladného rozboru signálu získaného vyslovením rovnakého slova niekoľkokrát tým istým rečníkom. Pri tomto rozbore sa zistilo, že základné odlišnosti medzi odpovedajúcimi signálmi nie sú v spektrálnej oblasti, ale v časovom členení, t.j. nerovnakej dĺžke slov a najmä v nepomere medzi dĺžkami odpovedajúcich častí (fonémov, hlásiek) vo vnútri slova."25 Prvým nevyhnutným krokom pri porovnávaní dvoch slov (referenčného a testovacieho) je vybudovať tzv. maticu lokálnych vzdialeností. Tá bude uchovávať vzdialenosti medzi všetkými vektormi LPC koeficientov, ktoré obsahujú obidve slová. Pre názornejšiu ukážku pozri Obr. 8. Pre jednoduchšiu predstavu 24 PSUTKA, ref 19, s. 64. 25 MULLER, ref 16, s. 196.
  • 28. 28 sme zvolili LPC vektory o počte iba troch koeficientov. Čísla sú vymyslené a neodzrkadľujú reálne namerané údaje. Obr. 8 Matica lokálnych vzdialeností Na obrázku predpokladáme vyslovenie rovnakého slova dvakrát za sebou pričom prvé vyslovenie trvalo o dva časové intervaly dlhšie ako druhé. Pre naše potreby by bolo ideálne vyhodnotiť podobnosť slov zobrazených na predchádzajúcom obrázku vo forme jedného čísla. Čím podobnejšie budú slová, tým menšie bude výsledné číslo. Ak vyslovíme dve nerovnaké slová, číslo by malo byť podstatne vyššie. Na obrázku je znázornená zelená čiara, ktorá prechádza oblasťou menších lokálnych vzdialeností a dve červené čiary, ktoré, naopak, prechádzajú oblasťou, kde sú si vektory málo podobné. Ak máme k dispozícii maticu lokálnych vzdialeností, práve algoritmom DTW vytvoríme maticu globálnych vzdialeností, ktorej výstupom bude nami hľadané číslo vypovedajúce o podobnosti dvoch vyslovených slov. Princíp vytvárania matice globálnych vzdialeností je veľmi jednoduchý, avšak ťažšie sa vysvetľuje ako kreslí, tak si opäť pomôžeme Obr. 9.
  • 29. 29 Obr. 9 Matica globálnych vzdialeností Sivé čísla na obrázku odpovedajú matici lokálnych vzdialeností. Vidíme, že vytvorenie matice globálnych vzdialeností začína pridaním jedného riadku a jedného stĺpca k matici lokálnych vzdialeností, ktoré sú naplnené "nekonečnami". V ľavom dolnom rohu je číslo 1, ktoré predstavuje úvodnú hodnotu, od ktorej budeme postupne vypĺňať celú maticu. Postup pri vypĺňaní matice je veľmi jednoduchý. Označme si pozíciu poľa v matici lokálnych vzdialeností ako ( ) a pozíciu poľa v matici globálnych vzdialeností ( ). Potom hodnota poľa ( ), pričom platí, že a , bude rovná minimu z nasledujúcich troch hodnôt:  ( ) ( ) - hodnota zdola  ( ) ( ) - hodnota zľava  ( ) ( ) - hodnota z diagonály Týmto spôsobom vyplníme celú maticu globálnych vzdialeností a výsledné číslo v pravom hornom rohu bude predstavovať vzájomnú podobnosť slov, ktorých vektory LPC koeficientov porovnávame. Detailne je celý proces znázornený na Obr. 9. Ako už bolo spomínané, vďaka algoritmu DTW eliminujeme časové rozdiely pri vyslovení dvoch slov. Niekedy je vhodné obmedziť vlastnosti tohto algoritmu, aby sme zabezpečili reálnejšiu kontrolu podobnosti slov. Ak by sme napríklad pri
  • 30. 30 vypĺňaní matice 5 krát za sebou zvolili hodnotu minima zdola, časovú os 20ms úseku jedného slova by sme roztiahli cca na 100ms. To znamená, že pripúšťame situáciu, kedy napríklad dvakrát vyslovíme to isté slovo a v prvom prípade by vyslovenie hlásky "e" trvalo 20 ms, v druhom 100ms. Keďže je to zjavne nesprávna úvaha, do algoritmu DTW sa často pridávajú rôzne obmedzenia. V mojom návrhu som zadal nasledujúce obmedzenie: pri vypĺňaní jednotlivých polí matice globálnych vzdialeností môžeme maximálne dvakrát za sebou vybrať minimum zdola a maximálne dvakrát za sebou vybrať minimum zľava. Prakticky to znamená vyplniť väčší priestor "nekonečnami", čo v konečnom dôsledku urýchľuje dobu výpočtu a umožní spresnenie výsledku. Pre vyrátanie výslednej hodnoty (v pravom hornom rohu) prejdeme podstatne menším počtom polí. Názorná ukážka je na Obr. 10. Obr. 10 Matica globálnych vzdialeností s obmedzeniami V tejto kapitole sme získali všetky potrebné vedomosti, ktoré sú nevyhnutné pri návrhu a realizácii môjho systému. Nasledujúca kapitola sa zaoberá samotným návrhom.
  • 31. 31 3 Návrh systému autentifikácie rečníka Pri návrhu systému bolo nevyhnutné zvoliť si platformu, na ktorej daný návrh zrealizujeme. Od zvolenej platformy sa priamo odvíja obtiažnosť samotnej realizácie, časové nároky, podpora, dostupná dokumentácia a mnohé iné faktory. K dispozícii je široké spektrum produktov a platforiem ako napríklad vedecky orientované vývojové prostredie Matlab, prípadne viac komerčne orientované programovacie platformy na báze objektovo orientovaného programovania, akými sú Java, C++ alebo skriptovacie jazyky ako PHP, JavaScript a mnohé iné. Po dôslednom zvážení som sa rozhodol realizovať návrh v jazyku Java. Java mi ponúkla omnoho väčšiu voľnosť ako platforma Matlab, aj keď som prišiel o možnosť využívania mnohých predprogramovaných funkcií, ktoré má Matlab k dispozícii. Navyše aplikácia v takomto vývojovom prostredí má potenciál na uplatnenie v praxi. Podpora a dokumentácia k jazyku Java je voľne dostupná a naozaj rozsiahla, z čoho vyplýva široké spektrum prístupov, ktoré som mohol k návrhu zvoliť. Použitie skriptovacích jazykov som zavrhol, keďže nie sú vhodné na vytváranie silno matematicky orientovaných aplikácií, a teda sú aj podstatne pomalšie. Výsledný systém autentifikácie rečníka by mal byť vysoko prenositeľný. Každá platforma, na ktorej je spustená JVM, musí byť schopná hostiť túto aplikáciu. Systém musí mať príjemné a intuitívne užívateľské rozhranie, ktoré dokáže ovládať užívateľ bez akýchkoľvek predchádzajúcich znalostí a bez podrobného zoznamovania sa so systémom. Taktiež musíme zabezpečiť, aby bola aplikácia konfigurovateľná v závislosti od prostredia, v ktorom bude daný systém operovať. Po dôkladnom zvážení som sa rozhodol oddeliť užívateľskú a administrátorskú časť, kde administrátor so znalosťou prístupových údajov do systému bude schopný tento systém nakonfigurovať na konkrétne prostredie. Administrátorské nastavenia musia byť taktiež implementované zrozumiteľne a jednoznačne, aby sme sa vyhli nadbytočnej réžii vo forme zdĺhavého zaškoľovania. Dôležité je, aby bol systém škálovateľný a umožnil v budúcnosti pridávanie, aktualizáciu, odobratie prípadne modifikáciu nových modulov.
  • 32. 32 Systém by mal byť postavený na dvoch nosných bezpečnostných prvkoch:  Modul znáhodnenia prístupového hesla  Modul frekvenčnej verifikácie Samozrejme, v praxi je pre úplnú funkcionalitu nevyhnutný modul identifikácie rečníka. Tento modul v mojej aplikácii implementovaný nebude. Dôvodov je niekoľko:  problematika identifikácie rečníka je intenzívne študovaná a riešená o existuje mnoho existujúcich funkčných riešení ako v komerčnom tak aj v akademickom prostredí  obmedzené časové hľadisko  modul identifikácie sa môže dodatočne doprogramovať a pripojiť k výslednej aplikácii V celom ďalšom texte preto bude tento modul spomínaný, avšak bližšie nekonkretizovaný. 3.1 Základný princíp systému Napriek tomu, že aplikácia by mala byť škálovateľná a prenosná (musí byť schopná zabezpečiť autentifikáciu alebo aj obyčajné rozpoznanie vysloveného slova), ukážku realizácie takéhoto systému si uvedieme na konkrétnom príklade. Budeme navrhovať bezpečnostný systém pre firmu XY, ktorý zabezpečí riadenie prístupov do budovy na báze hlasovej autentifikácie. Ukážka ideálneho konceptu takéhoto systému je na Obr. 11. Ako presne sme sa v realizácii návrhu priblížili k takémuto "ideálu" sa dozviete v 6. kapitole. Aby mohol účastník využívať takýto systém, musíme mu najprv vytvoriť konto. Je to podobné, ako keď vám napríklad banka pri otváraní účtu nastaví heslo, vezme vám odtlačok prsta a podobne. Ani náš navrhovaný systém sa nezaobíde bez fázy vytvorenia prístupov.
  • 33. 33 Obr. 11 Systém autentifikácie rečníka 3.2 Fáza vytvárania prístupov Užívateľ, napríklad nový zamestnanec, príde do našej fiktívnej firmy XY. Stretne sa v nej s administrátorom pre riadenie prístupu, ktorý má na starosti vytváranie nových prístupových účtov. Administrátor vezme nového zamestnanca do špeciálnej miestnosti, ktorá bude dobre izolovaná od hlučného okolia a zabezpečená proti odpočúvaniu. V danej miestnosti prebehne vytvorenie nového užívateľského účtu v databáze, ktorý bude obsahovať nahrávky napr. 30 buď zamestnancom zvolených slov prípadne (ak by zamestnancovi nezáležalo na konkrétnych slovách) 30 administrátorom zvolených slov. Každé slovo bude nahraté 3 krát z dôvodu zvýšenia presnosti spätnej identifikácie. Ku každému slovu bude následne vytvorený súbor LPC koeficientov, ktorý sa spolu so slovom uloží do databázy pod unikátny identifikátor (napríklad meno a priezvisko, prípadne rodné číslo), ktorý bol priradený novému zamestnancovi. Je dôležité upozorniť na skutočnosť, že proces nahrávania slova bude plne automatizovaný,
  • 34. 34 čiže systém bude vedieť sám vyhodnotiť a určiť začiatok a koniec slova z prijatej nahrávky. Administrátor bude mať prevažne dohľadovú funkciu a do samotného procesu nahrávania nebude zasahovať. 3.3 Fáza autentifikácie Popis celého procesu autentifikácie rečníka, ktorý ilustruje Obr. 11: Užívateľ pristúpi k terminálu. Systém na základe multimodálnej informácie (otvorenie dverí, senzor merania vzdialenosti od terminálu a pod.) vyhodnotí, že pred terminálom stojí užívateľ, ktorý sa pokúsi autentifikovať. Užívateľ bude vyzvaný k vysloveniu ľubovoľného slova prípadne frázy napr. "Dobrý deň". Po nahratí tohto krátkeho úvodného pozdravu sa spustí blok identifikácie rečníka (krok č.1), ktorý bude mať za úlohu na základe informácie z nahrávky úvodného pozdravu určiť, či ide o známu osobu, ktorá sa v databáze nachádza, alebo o osobu neznámu. Pochopiteľne, ak systém vyhodnotí danú osobu ako neznámu, neumožní jej pokročiť do ďalšej fázy a proces autentifikácie sa okamžite preruší. Ak sa osoba v tejto prvej fáze úspešne identifikuje, systém presunie proces autentifikácie do druhej fázy. Riadiaci a výpočtový server odošle požiadavku databázovému serveru, aby z databázového priečinka užívateľa (vytvoreného vo fáze vytvárania prístupov) vybral tri náhodne zvolené slová a spolu s im priradenými informáciami (LPC koeficientmi) ich odoslal späť riadiacemu serveru (krok č. 2 a krok č.3). V kroku č. 4 riadiaci server spustí dve paralelne bežiace funkcie. Prvá sa postará o výzvu užívateľovi na zopakovanie vybraných troch slov prostredníctvom výstupu na terminál, druhá funkcia spustí blok, ktorý som nazval blokom frekvenčnej verifikácie. Tento blok bude zabezpečovať funkciu autentizácie. Zatiaľ si vystačíme s informáciou, že blok frekvenčnej verifikácie nám prostredníctvom reproduktora bude pseudonáhodne generovať rôznorodé frekvencie, ktoré spolu s prijatým hlasom užívateľa priebežne nahrávame. Viac informácií o bloku frekvenčnej verifikácie sa dočítate v kapitole 4.
  • 35. 35 Po získaní všetkých troch nahrávok riadiaci server vďaka informáciám z bloku frekvenčnej verifikácie a informáciám, ktoré získal zo samotných nahrávok, vyhodnotí, či:  užívateľ zopakoval zadané tri slová o o korektné vyhodnotenie sa postará modul znáhodnenia prístupového hesla o vyhodnotenie kontextu vyslovených slov prebehne na základe porovnania vektora LPC koeficientov získanej nahrávky a referenčného vektora LPC koeficientov, ktorý sme získali z databázy (vytvorený vo fáze vytvárania prístupov)  zadané slová vyslovil užívateľ o opäť využijeme blok identifikácie, ktorý bude priebežne overovať identitu užívateľa  nahrávka obsahuje iba očakávané frekvencie, ktoré boli generované blokom frekvenčnej verifikácie o o korektné vyhodnotenie sa postará modul frekvenčnej verifikácie V nasledujúcich podkapitolách popíšeme kľúčové funkčné bloky, ktoré budú realizovať modul znáhodnenia prístupového hesla a modul frekvenčnej verifikácie. 3.4 Modul znáhodnenia prístupového hesla Pri návrhu modulu znáhodnenia prístupového hesla je nutné implementovať dva základné funkčné bloky:  blok generátora náhodných čísel  rozpoznanie vysloveného slova Generátor náhodných čísel Pomocou generátora náhodných čísel budeme vyberať tri rôzne slová z databázy napr. 30 slov, ktoré sme získali pri fáze vytvárania prístupov. Samozrejme musíme dbať na to, aby systém nevygeneroval žiadne slovo v rámci jednej autentifikačnej relácie viac ako jedenkrát. Keďže generátory náhodných
  • 36. 36 čísel sú k dispozícii takmer na každej platforme, realizácia tohto bloku by mala byť bezproblémová. Rozpoznanie vysloveného slova Blok rozpoznania vysloveného slova musí účinne vyhodnotiť, či prijaté slovo patrí do referenčnej databázy slov, alebo nie. Celý proces rozpoznania slova predpokladá tri nevyhnutné kroky:  vyrezanie slova z nahrávky  LPC analýza vystrihnutého slova, ktorej výstupom budú vektory LPC koeficientov popisujúce vyslovené slovo  porovnanie získaných vektorov s referenčnými vektormi LPC koeficientov z databázy Na základe analýzy zhody/nezhody medzi vektormi rozlíšime, či ide o slovo z databázy, alebo nie. 3.4.1 Vyrezanie slova z nahrávky Predpokladajme, že máme k dispozícii nahrávku, ktorá obsahuje jedno slovo a zvyšok nahrávky je biely šum prípadne krátkodobé nepredvídateľné rušenie (zabuchnutie okna, dverí, zakašlanie a pod.). Taktiež predpokladajme, že nemáme k dispozícii systém adaptívnej filtrácie (ak by bol implementovaný, pochopiteľne by zvýšil kvalitu nahrávky). Existuje mnoho spôsobov, ako účinne nájsť začiatok aj koniec slova v takejto nahrávke. Jednotlivé spôsoby budeme demonštrovať na príklade slova "pieseň", ktorého časový priebeh je znázornený na Obr. 12.
  • 37. 37 Obr. 12 Časový priebeh signálu, reprezentujúci vyslovené slovo "pieseň" Nahrávka na Obr. 12 bola vytvorená v pokojnom prostredí bez rušivých vplyvov. Je na nej zreteľne viditeľný úsek, kedy bolo vypovedané slovo. Ľavé a pravé pásmo (ohraničené červenou čiarou) predstavujú iba šum, ktorého pôvodcom je sčasti prostredie pri vytváraní nahrávky a sčasti nedokonalosť nahrávacej techniky. Intenzita signálu na obrázku je normovaná číslom 32768, ak si spomenieme na podkapitolu 2.1, v ktorej sme rozoberali počet bitov, ktoré použijeme na ukladanie každej vzorky, tak nám musí byť jasné, že číslo 32768 je (takmer) maximálna hodnota 16 bitovej zvukovej vzorky. Ak ňou predelíme všetky zvukové vzorky, výsledná intenzita sa bude pohybovať v hraniciach od -1 do 1. V uvedenej podkapitole som taktiež spomínal, že vo svojej práci budem používať práve 16 bitov na ukladanie vzoriek signálu. Ak chceme z nahrávky vystrihnúť samostatné slovo, môžeme to urobiť niektorým z nasledujúcich spôsobov. Vyseknutie na báze priemernej hodnoty amplitúdy Veľmi jednoduchý spôsob, no napriek tomu účinný. Postup:  nahráme slovo  vyrátame priemernú amplitúdu/intenzitu  výslednú hodnotu znížime o konkrétny počet percent, čím získame referenčnú hodnotu o presný počet percent, o ktorý budeme znižovať priemernú amplitúdu, musí byť získaný testovaním
  • 38. 38  referenčnú hodnotu budeme porovnávať postupne so všetkými vzorkami, pozícia prvej vzorky, ktorá presiahne referenčnú hodnotu, bude predstavovať začiatok slova, pozícia poslednej koniec slova Výhody:  jednoduchá, ľahko implementovateľná a v stálom, nemeniacom sa prostredí spoľahlivá metóda Nevýhody:  silná závislosť od prostredia, so zvýšeným šumom rastie počet nesprávne vyseknutých slov Vyseknutie na báze maximálnej hodnoty amplitúdy Identický spôsob ako predchádzajúci. Jediný rozdiel je v tom, že referenčná hodnota sa vyráta z maximálnej amplitúdy a nie z priemernej. Výhody:  jednoduchá, ľahko implementovateľná a v stálom, nemeniacom sa prostredí spoľahlivá metóda Nevýhody:  silná závislosť od prostredia, so zvýšeným šumom rastie počet nesprávne vyseknutých slov  táto metóda je navyše citlivá na náhle silné zvuky vzniknuté počas vyslovenia samotného slova (zakašlanie, buchnutie dverí a pod.), ktoré dokážu úplne znehodnotiť vysekávanie Vyseknutie na báze porovnávania vedľa seba stojacich vzoriek Tento spôsob predstavuje podstatne inteligentnejšiu formu vysekávania slov z nahrávky. Postup:  prechádzame celý získaný signál od začiatku po vzorkách (alebo po skupinách vzoriek) a stále porovnávame vedľa seba stojace úseky
  • 39. 39 o metóda sa dá vylepšiť aj tak, že nebudeme porovnávať úseky, ktoré sa nachádzajú presne vedľa seba, ale môžeme porovnávať napr. 1. úsek s 5. úsekom, 2.úsek so 6.úsekom  ak presiahne ich vzájomný pomer kritickú hranicu, vyhodnotíme pozíciu vzorky, kde takáto situácia nastala ako začiatok slova  to isté zopakujeme od konca signálu smerom k začiatku Výhody:  silne flexibilná metóda, ktorá umožňuje veľmi citlivú konfiguráciu v závislosti od individuálnych požiadaviek na vysekávanie  odolná voči zmenám úrovne šumu aj zmenám intenzity hlasu hovoriacej osoby Nevýhody:  metóda je náročnejšia na implementáciu Vyseknutie na báze amplitúdy šumu okolia Metóda je jednoduchá, účinná avšak trocha "neohrabaná". Postup:  pred samotným nahratím slova zhotovíme krátku nahrávku šumu okolia  vyrátame priemernú hodnotu získaného šumu  zvýšime ju o určitý počet percent, čím získame referenčnú hodnotu  nahráme slovo  jednotlivé vzorky slova budeme porovnávať s vyrátanou referenčnou hodnotou  opäť pozícia prvej hodnoty, ktorá presiahne túto referenčnú hranicu, bude vyhodnotená ako začiatok slova, pozícia poslednej ako koniec slova Výhody:  metóda je silne odolná voči zmenám šumu okolia
  • 40. 40 Nevýhody:  nutnosť priebežne vytvárať nahrávky šumu okolia (čo zvyšuje dobu obsluhy) o samozrejme, stačí aby nahrávka šumu bola vyhotovená iba raz pre konkrétne a nemenné prostredie, závisí to od implementácie Z popísaných štyroch metód vysekávania slova z nahrávky som po dôkladnom otestovaní všetkých možností vo svojej práci použil poslednú metódu, vyseknutie na báze amplitúdy šumu okolia. Túto metódu som zvolil pre jej jednoduchosť, ľahkú konfigurovateľnosť, presnosť a hlavne odolnosť voči zmenám šumu okolia. Navyše v návrhu implementujem blok potlačenia náhlych, nežiaducich zvukov (buchnutie dverí, zakašlanie, piskot a podobne). Tento blok úzko spolupracuje so systémami na vyrezávaní slova z nahrávky. Ak systém vyrezávania slova odhadne začiatok nahrávky, pred finálnou akceptáciou tohto začiatku, blok potlačenia nežiaducich zvukov overí okolie pri tomto kandidátovi na začiatok slova. Preskúma okolia z hľadiska výkonu, aby zistil, či nejde iba o krátkodobý signál a nie relatívne dlhodobý, akým je napríklad vyslovenie slova. 3.4.2 LPC analýza V podkapitole 2.4 sme uviedli spôsob výpočtu LPC koeficientov pre signál určitej dĺžky. Ak máme k dispozícii nahrávku, z ktorej sme úspešne a presne vystrihli slovo, musíme k danému slovu vyrátať LPC charakteristiky. Je zrejmé, že popis celého slova napr. 14-timi LPC koeficientmi by bol na účely identifikácie slova veľmi nepresný. Preto použijeme úseky signálu o dĺžke cca 20ms, ku ktorým vyrátame príslušné LPC koeficienty. Na konci by sme teda mali získať vektor vektorov LPC koeficientov. Pre názornejšiu ukážku pozri Obr. 13.
  • 41. 41 Obr. 13 Slovo "pieseň" parametrizované kolekciou LPC vektorov Každé jedno vyseknuté slovo bude teda popísané takýmto vektorom, ktorého prvky budú opäť vektory (tie budú obsahovať LPC koeficienty pre jednotlivé úseky cca 20ms). V realizácii je využitá možnosť prekrývania segmentov, ktorá nám zvýši presnosť LPC analýzy (na úkor väčších výpočtových a pamäťových nárokov). Princíp prekrývania je veľmi jednoduchý. Nebudeme popisovať vedľa seba stojace 20ms bloky, ale po každom bloku sa posunieme iba o 50% t.j. 10ms. Vo fáze vytvárania prístupov, sme pochopiteľne ku všetkým získaným nahrávkam vyrátali aj takéto LPC charakteristiky, ktoré sme uložili do databázy. Máme k dispozícii dva typy nahrávok. Referenčnú (fáza vytvárania prístupov) a aktuálnu (získanú pri pokuse o autentifikáciu). Musíme zvoliť vhodný spôsob, ako porovnať LPC charakteristiky referenčnej nahrávky a LPC charakteristiky aktuálnej nahrávky. Je dôležité uvedomiť si skutočnosť, že žiadne dve vyslovené slová nebudú z hľadiska časového priebehu identické. Z tohto dôvodu ani dva vektory LPC
  • 42. 42 charakteristík jednotlivých úsekov v nahrávke nebudú mať s vysokou pravdepodobnosťou rovnaké koeficienty a dokonca dané vektory nebudú mať rovnaký počet segmentov. So zvyšujúcou sa kvalitou systému vyrezávania slov z nahrávky môžeme zmenšiť rozdiely medzi počtom segmentov, ktoré obsahujú dané vektory, ale keďže nijako nedokážeme ovplyvniť hlasové ústrojenstvo človeka, nedokážeme zaručiť, aby mali vektory rovnaký počet segmentov. Ak za sebou dvakrát vyslovíme napr. slovo "pieseň", prvýkrát môže mať vyslovené slovo o 40 ms viac ako druhé. Musíme teda použiť vhodnú metódu porovnávania vektorov, ktorá vie vyhodnotiť podobnosť vektorov, ktoré nemajú rovnaký počet prvkov. Takúto výhodu nám poskytuje algoritmus DTW, ktorý sme si popísali v podkapitole 2.6. 3.4.3 Zhrnutie Znáhodnením prístupových slov chceme zmiasť potenciálneho útočníka. Ak by sa snažil útočník autentifikovať na základe nahrávky korektného užívateľa, ktorú tajne získal, narazil by na náročný problém. Ako reprodukovať práve tú trojicu slov, ku ktorej bol vyzvaný na obrazovke terminálu? Navyše má na to iba zopár sekúnd, keďže systém nahráva každé slovo iba obmedzený, presne stanovený počet sekúnd. Keďže predpokladanú bezpečnosť systému musíme vyhodnotiť voči známym útokom, uveďme si príklad veľmi inteligentného útočníka, ktorý by mohol oklamať modul znáhodnenia prístupového hesla. Útočník musí najprv získať nahrávky všetkých 30 slov nového zamestnanca. To sa mu môže podariť dlhodobým tajným nahrávaním nového zamestnanca buď pri samotnej autentifikácii, alebo aj v bežnom živote, kaviarni, na diskotéke, pri telefonovaní a pod. Musíme taktiež predpokladať, že takto získané nahrávky budú v dostatočne dobrej kvalite. Následne môže inteligentný útočník naprogramovať aplikáciu na prenosnom počítači alebo telefóne s integrovanou kamerou, ktorá bude schopná:  prostredníctvom kamery prečítať výzvu na zopakovanie slov z obrazovky terminálu a tým zistiť, aké slová má z databázy tajne nahratých slov vybrať  prehrať príslušné tri slová v požadovanom poradí
  • 43. 43 Pri takomto predpoklade je nutné pripustiť možnosť, že daný systém by bol narušiteľný, ak by autentizácia spočívala iba na znáhodnení prístupového hesla. Ak si spomenieme na podkapitolu 1.4, dnešné riešenia výrobcov ponúkajú práve takúto formu zabezpečenia autentizácie, ktorej bezpečnosť sme spochybnili. Preto som vymyslel a navrhol systém frekvenčnej verifikácie, ktorému je venovaná nasledujúca kapitola.
  • 44. 44 4 Systém frekvenčnej verifikácie Potreba zabezpečenia vysokej úrovne autentizácie pri systémoch autentifikácie rečníka je nespochybniteľná. Z doterajších informácií môžeme usúdiť, že v ponúkaných riešeniach od výrobcov buď úplne absentuje, prípadne je zabezpečená pasívnou metódou znáhodnenia prístupového hesla. Ukázali sme si, že táto metóda naozaj zvyšuje bezpečnosť a dokáže zabezpečiť vyššiu formu autentizácie, avšak načrtli sme si aj spôsob, ako ju napriek tomu účinne prekonať. Vo fáze autentizácie chýba proces, ktorý by sa aktívne podieľal na jej zabezpečení. Takýto proces som navrhol a nazval ho systémom frekvenčnej verifikácie, skrátene FVS. Myšlienka frekvenčnej verifikácie by sa dala prirovnať napríklad k vodoznaku na bankovkách prípadne k bezpečnostnému certifikátu, ktorý sa používa pre zabezpečený prenos pomocou protokolu HTTPS. Pre lepšie vysvetlenie princípu frekvenčnej verifikácie si opäť pomôžme príkladom, v ktorom bude figurovať Alica, ktorá má byť autentifikovaná a Oskar, ktorý sa snaží autentifikovať pomocou nahrávky Alicinho hlasu. Taktiež predpokladajme, že Oskar sa dokázal vysporiadať aj so systémom znáhodnenia prístupového hesla. V takejto modelovej situácii by aj najlepší produkt, ktorý v súčasnosti zabezpečuje autentifikáciu rečníka, neobstal. Základný princíp modulu frekvenčnej verifikácie spočíva vo vysielaní pseudonáhodných akustických impulzov o presne definovaných frekvenciách počas Alicinej hlasovej verifikácie. Môžeme si to predstaviť tak, že Alica opakuje slová z obrazovky modulu znáhodnenia bezpečnostného hesla a počas toho náš reproduktor vydáva tóny presne určených frekvencií. Pointa spočíva v tom, že systém, ktorý generuje tieto pseudonáhodné zvuky, ich bez akýchkoľvek problémov dokáže spätne z prijatého Alicinho hlasu odstrániť. Ale čo Oskar? Oskar sa dostal do zaujímavej situácie. Zvuky, ktorými "pískame", môžu predstavovať rôzne frekvencie. Môžu to byť frekvencie v pásme ľudskej reči, frekvencie počuteľné alebo nepočuteľné. To nám dáva do rúk zaujímavú zbraň, ktorú sa určite oplatí bližšie preskúmať. Opäť si predstavme Oskara, ktorý sa snaží prelomiť tento unikátny bezpečnostný systém:
  • 45. 45 1. Oskar môže nahrať Alicu pri tom, ako zadáva heslá. Oskar však nahrá aj akustické signály, ktoré generujeme. 2. Oskar sa musí postarať o to, aby z danej nahrávky odstránil nežiaduce frekvencie, keďže náš systém bude automaticky kontrolovať, či sa v signáli, ktorý prijíma od Alice, nenachádzajú takéto nadbytočné frekvencie. 3. Aj keby bol Oskar šikovný a dané frekvencie by odstránil, nezaobišlo by sa to bez jemnej modifikácie nahraného hlasového signálu od Alice. Systém frekvenčnej verifikácie sa musí vysporiadať aj s takýmito situáciami a musí byť schopný detekovať takúto modifikáciu zvukovej nahrávky. FVS pridáva určitú redundanciu do nahrávky, ktorú si môžeme predstaviť ako "frekvenčný podpis". Túto redundanciu sa po prijatí signálu snažíme využiť pri analýze nahrávky na zachytenie akýchkoľvek pokusov o neautorizovanú reprodukciu hlasu korektného užívateľa. Frekvenčná verifikácia môže predstavovať riešenie pre dosiaľ nevyriešený "problém neautorizovanej nahrávky". 4.1 Vlastnosti systému frekvenčnej verifikácie V závislosti od umiestnenia reproduktora a intenzity prehrávaných frekvencií môžeme veľmi jednoducho posilniť pasívnu bezpečnosť nášho systému. Ak by sa náš útočník Oskar pokúsil nahrať Alicu pri autentifikácii, zachytil by iba silno frekvenčne zašumený hlas (Obr. 14).
  • 46. 46 Obr. 14 Frekvenčná verifikácia Keďže náš systém generuje dané rôznorodé frekvencie, máme informáciu o presných časových intervaloch, v ktorých boli frekvencie vysielané, rovnako máme k dispozícii aj konkrétne hodnoty frekvencií, ktoré sme vysielali. Preto pre nás nebude žiadny problém spätne dané frekvencie odfiltrovať. Tým pádom dané frekvencie neovplyvnia po odfiltrovaní iné bloky systému napríklad blok identifikácie rečníka alebo blok identifikácie vysloveného slova. Pred odfiltrovaním, môžeme preskúmať nahrávku z hľadiska frekvenčnej integrity. Od výsledku tohto výskumu bude závisieť rozhodnutie, či prijatá nahrávka bola vyslovená v danej chvíli osobou, alebo či sa jedná iba o zvukovú nahrávku reči. 4.2 Frekvenčná integrita Ak by Oskar nahrával Alicu pri autentifikácii, nahral by aj jednotlivé frekvencie. Teraz si ukážeme, akým spôsobom by sme mali zabezpečiť frekvenčnú integritu nahrávky. Pred samotným spustením systému v reálnej prevádzke musí administrátor tento systém nakonfigurovať pre prostredie, v ktorom sa bude nachádzať. Je rozdiel, či bude rozhranie systému na rušnej ulici, alebo na relatívne pokojnej chodbe vo vnútri budovy. Predpokladajme, že frekvencie, generované blokom
  • 47. 47 frekvenčnej verifikácie, budú z obmedzenej množiny napr. 50 konkrétnych frekvencií. Pri konfigurácii systému spustíme blok automatického ladenia modulu frekvenčnej verifikácie. Automatické ladenie pozostáva z dvoch fáz. V prvej systém nahrá vzorku šumu okolia, ktorú analyzuje z hľadiska intenzity daných konkrétnych 50 frekvencií. Získané informácie si zaznamená do databázy. Následne vykoná druhú ladiacu fázu, pri ktorej bude postupne generovať všetkých 50 frekvencií, pričom do databázy si opäť zaznamená ich intenzity prípadne aj oneskorenia v prijímači. Je to nevyhnutné, keďže náš systém nemá byť úzko profilovaný, naopak mal by byť použiteľný v čo najväčšom množstve prostredí. To znamená, že pozícia reproduktora a mikrofónu sa môže v závislosti od konkrétnej realizácie výrazne meniť. V jednej implementácii môže byť systém spustený napríklad na prenosnom počítači, ktorý má integrovaný mikrofón aj reproduktory v podstate na jednom mieste, v inej implementácii môžeme mať k dispozícii prístupovú miestnosť s priestorovo oddeleným mikrofónom a reproduktorom. 4.3 Vyhodnotenie Potom, čo bude systém úspešne naladený, môžeme začať vyhodnocovať nahrávky z hľadiska frekvenčnej integrity. Musím zdôrazniť, že existuje naozaj obrovské množstvo scenárov a rôznych spôsobov vyhodnotenia, ktoré sa dajú realizovať. Opísanie všetkých alebo aj väčšiny z nich by bolo nemožné z hľadiska dodržania odporúčaného rozsahu tejto práce a zabralo by prinajmenšom jednu alebo aj viacero odborných kníh. Preto sa obmedzíme iba na základné vyhodnotenia a scenáre, ktoré načrtnú potenciál takejto technológie. Naším vstupným signálom bude nahrávka Alicinho hlasu, ktorú získal Oskar tajne počas Aliciných predchádzajúcich autentifikácií. Nahrávka obsahuje nadbytočné frekvencie, vygenerované systémom frekvenčnej verifikácie pri autentifikácii, spolu s Aliciným hlasom. Na základe informácie z databázy vyhodnotíme postupne nasledujúce testy:
  • 48. 48  zistíme intenzitu prijatých frekvencií (generovaných blokom frekvenčnej verifikácie) v príslušných časových úsekoch (napr. zaradom sme generovali frekvencie 500,700 a 600 Hz) o ak sa bude ich intenzita zhodovať s intenzitou nameranou počas druhej fázy ladenia, tento test dopadne pozitívne o ak sa intenzita zhodovať s intenzitou nameranou počas druhej fázy ladenia nebude, dôvodom môže byť práve Oskarova nahrávka, pri prehrávaní ktorej došlo k náhodnému skladaniu rovnakých frekvencií, dôsledkom čoho je zvýšená amplitúda týchto zložených frekvencií  zistíme intenzitu všetkých frekvencií, ktoré neboli vysielané blokom frekvenčnej verifikácie počas aktuálnej autentifikácie o ak sa bude intenzita zhodovať s intenzitou nameranou počas prvej fázy ladenia, tento test dopadne pozitívne o ak sa intenzita zhodovať s intenzitou nameranou počas prvej fázy ladenia nebude, dôvodom môže byť opäť Oskarova neautorizovaná nahrávka, pri prehrávaní ktorej sme zachytili frekvencie, ktoré nepatria k aktuálnej autentifikácii Týmito jednoduchými testami zabezpečíme autentizáciu, dokážeme vyhodnotiť, či rozpráva Alica, alebo či Oskar prehráva nahrávku Alicinho hlasu z predchádzajúcej relácie. Bezpečnosť môžeme ďalej zvýšiť napríklad širokým rozsahom frekvencií, ktoré použijeme. Tie sa môžu pohybovať od niekoľko desiatok hertzov až po ľudským uchom nepočuteľné frekvencie. Ďalším faktorom ovplyvňujúcim bezpečnosť môže byť rýchlosť, s akou generujeme rôznorodé frekvencie, ktorá sa môže pohybovať od mikrosekúnd až po sekundy. Samozrejme, so zvyšujúcou sa rýchlosťou stúpajú nároky na časovú synchronizáciu systému. Taktiež môžeme modifikovať intenzitu generovaných frekvencií v závislosti od toho, či uprednostníme priame rušenie protivníka vysokou intenzitou, alebo skôr použijeme intenzitu, ktorá sa rovná intenzite, s akou vyslovuje dané frekvencie človek. Robustnejšiu autentizáciu získame použitím viacerých frekvencií súčasne, prípadne môžeme dokonca prejsť na "spojité frekvenčné spektrum". Znamená to, že náš "frekvenčný podpis" by nepredstavovali jednotlivé frekvencie v za sebou
  • 49. 49 nasledujúcich časových intervaloch, ale mohla by to byť napríklad aj hudba. Vo svojej podstate je možné na frekvenčnú verifikáciu použiť ľubovoľný signál s ľubovoľným frekvenčným spektrom. Princíp zostane stále rovnaký. Ako som už spomínal, možnosti konfigurácie takéhoto systému sú naozaj rôznorodé. V našom návrhu z dôvodu obmedzených časových možností použijeme najjednoduchšiu konfiguráciu. Budeme vysielať osamotené frekvencie v za sebou nasledujúcich časových intervaloch o dĺžke cca 1 sekunda. Mnohým čitateľom tejto práce môže napadnúť myšlienka, ako takýto systém oklamať. Ak by bol Oskar špecialista na spracovanie signálov, vedel by nadbytočné frekvencie, ktoré získal nahratím Alice, odfiltrovať. To je pravda, avšak nezaobišlo by sa to bez jemných modifikácií nahrávky, ktoré by sme so systémom zachytili. Opäť iba načrtnem spôsob. Môžeme postupovať nasledovne:  prijmeme nahrávku  vieme, že očakávame slovo pieseň  z nahrávky odfiltrujeme nadbytočné frekvencie a vystrihneme iba slovo pieseň  porovnáme intenzitu všetkých možných frekvencií FVS v získanom slove so slovom z databázy, kde hľadáme buď frekvenčné diery, alebo podozrivé odchýlky Systém frekvenčnej verifikácie nám ponúka nový spôsob, akým sa budeme pozerať na problematiku autentizácie v systémoch hlasovej autentifikácie rečníka. Nasledujúca kapitola popisuje realizáciu takéhoto systému vo forme spustiteľnej aplikácie.
  • 50. 50 5 Realizácia 5.1 Všeobecné informácie Návrh systému som realizoval vo vývojovom prostredí NetBeans IDE 7.2.1. Výsledná aplikácia je písaná výlučne v jazyku Java. Rozhodol som sa, že v aplikácii nevyužijem žiadnu z relačných databáz so zámerom umožniť väčšiu prenositeľnosť a lepšie rozšírenie aplikácie. Pre spustenie aplikácie je nutné mať na platforme nainštalovanú JVM 1.7, funkčný mikrofón a reproduktor. Zvukové karty spolu s ich ovládačmi môžu mať prednastavené rôzne funkcionality, napríklad "elimináciu šumu", "elimináciu akustickej ozveny" a mnohé iné podporné funkcionality. Preto odporúčam pred spustením aplikácie skontrolovať nastavenie zvukovej karty a vypnúť takéto vylepšenia. Program pozostáva z slov kódu, čo predstavuje približne riadkov, inými slovami rozsah samotného zdrojového kódu programu je viac ako normostrán. Preto pochopiteľne zdrojový kód programu nebude odovzdaný v tlačenej forme, ale vo forme elektronickej ako komprimovaný súbor FVS.zip. Program automaticky generuje rozsiahlu Java dokumentáciu pre rýchlejšie zoznámenie sa s funkciami a ich účelom. V tejto dokumentácii nájdete podrobne popísané všetky balíky, triedy, funkcie a metódy, ktoré program obsahuje. Pre spustenie aplikácie stačí extrahovať komprimovaný súbor do ľubovoľného priečinka (odporúčam vytvoriť si vlastný priečinok) a program spustiť dvojklikom na FVS.jar. Aplikácia má príjemné grafické užívateľské rozhranie, pričom pri mnohých funkčných prvkoch ponúka zrozumiteľnú nápovedu slúžiacu pre rýchlejšie zoznámenie sa s prostredím. GUI je v slovenskom jazyku. Aplikácia si v cieľovom priečinku automaticky vygeneruje potrebné podpriečinky. Aplikácia je multivláknová a objektovo orientovaná. Znamená to, že namiesto procedurálne spracovávaného programu (riadok po riadku) som sa rozhodol využiť paralelný beh niektorých funkcií realizovaných vo forme simultánne bežiacich vlákien.
  • 51. 51 Program pozostáva z 13-tich balíkov, ktoré obsahujú dokopy 35 tried. Dané triedy využívajú služby približne 200 naprogramovaných funkcií a konštruktorov tried. Rozčlenenie tried do balíkov je vykonané so zreteľom na čo najvýraznejšie, najintuitívnejšie a najzrozumiteľnejšie oddelenie funkčných blokov aplikácie. V nasledujúcich podkapitolách si popíšeme hlavné funkcie balíkov a im prislúchajúcich tried. 5.2 Balík "audio" Balík "audio" nám poskytuje funkcie a metódy, ktoré zabezpečujú zvukový vstup a výstup. Pozostáva z piatich tried:  AudioPlayer  AudioRecorder  PlayerForFrequencyVerification  RecorderForFrequencyVerification  WavCreator AudioPlayer Inštancie tejto triedy sa správajú ako jednoduché audio prehrávače. Trieda podporuje prehrávanie .wav súborov všetkých PCM formátov. Je naprogramovaná ako vlákno, keďže ju využívame pri paralelnom behu programu (napríklad ak potrebujeme súčasne nahrávať aj prehrávať). Trieda obsahuje niekoľko preťažených konštruktorov, ktoré umožnia prehrávať súbor s ľubovoľným názvom lokalizovaný v ľubovoľnom priečinku na koncovom zariadení. AudioRecorder Inštancie tejto triedy sa správajú ako jednoduché audio nahrávače. Nahratý súbor bude uložený vo .wav formáte. Trieda je naprogramovaná ako vlákno, keďže ju využívame pri paralelnom behu programu (napríklad ak potrebujeme súčasne nahrávať aj prehrávať). V závislosti od konštruktora, ktorý použijeme, môžeme nahrávať zvukové vzorky ľubovoľný počet sekúnd, prípadne môžeme ukončiť nahrávanie stlačením
  • 52. 52 klávesnice Enter. Pre uloženie nahrávky si zvolíme meno a priečinok, prípadne ich za nás zvolí samotný program. PlayerForFrequencyVerification Táto trieda zdieľa všetky charakteristiky s triedou AudioPlayer, avšak navyše zaznamenáva systémové časy prehrávania .wav súborov. Táto informácia je nevyhnutná pre FVS z dôvodov časovej synchronizácie. RecorderForFrequencyVerification Táto trieda zdieľa všetky charakteristiky s triedou AudioRecorder, avšak navyše zaznamenáva systémové časy nahrávania .wav súborov. Táto informácia je nevyhnutná pre FVS z dôvodov časovej synchronizácie. WavCreator Trieda WavCreator nám poskytuje metódy a funkcie, ktoré dokážu z ľubovoľného vektora dátového typu short (16 bitové čísla) vytvoriť .wav súbor. Daný súbor bude mať nastavenú vzorkovaciu frekvenciu 44100 kHz. 5.3 Balík "time" Tento balík má na starosti meranie času a časový odpočet. Obsahuje dve triedy:  Timer  CountDown Timer Táto trieda má funkcionalitu stopiek. Pomocou metód triedy Timer vieme odmerať dĺžky trvania funkcií, úsekov programu alebo celého programu. Najviac sa využíva pri testovaní a ladení programu. CountDown Jednoduchý časovač, ktorý na základe zadaného počtu sekúnd pozastaví vykonávanie vlákna programu, ktoré túto triedu využilo.
  • 53. 53 5.4 Balík "test.classes" Balík test.classes slúži na ukladanie tried, ktoré sú nevyhnutné pri testovaní a programu. Aktuálne obsahuje iba jednu triedu:  HexaFileOutput HexaFileOutput Táto trieda nám poskytuje metódy, ktoré dokážu akýkoľvek súbor na disku prečítať a zapísať v štruktúrovanom hexadecimálnom tvare do textového .txt súboru. Ak sa jedná o súbor s príponou .wav, dokážu navyše k hexadecimálnemu výpisu pridať popis jednotlivých polí a tým zdokumentovať hlavičku protokolu .wav konkrétneho súboru. Pre názornú ukážku pozri Obr. 15. Metódy tejto triedy som využíval najmä pri analýze hlavičiek .wav súborov. Obr. 15 Ukážka hexadecimálneho štruktúrovaného prepisu .wav súboru 5.5 Balík "random.numbers" Balík random.numbers obsahuje triedu, ktorá pracuje s náhodnými číslami:  RandomNumbersGenerator RandomNumbersGenerator Metódy tejto triedy nám vygenerujú zadaný počet náhodných čísel v zadanom rozsahu. Používa sa normálové rozdelenie.
  • 54. 54 5.6 Balík "storage" Každá trieda, ktorú tento balík obsahuje, slúži ako dočasné prekladisko dát. V situácii, keď je potrebná dátová výmena väčšieho množstva informácií medzi funkciami rozličných tried, prípadne medzi funkciami rozličných balíkov, často potrebujeme prenášať nehomogénne informácie. Napríklad ak medzi triedami prenášame informácie o zvukovom súbore, môže vzniknúť požiadavka na súčasný prenos časových vzoriek signálu k ním priradených LPC koeficientov, prípadne vzoriek frekvenčného spektra. Namiesto toho, aby sme prenášali všetky tri dátové toky separátne, vytvoríme dátový objekt, ktorý bude obsahovať ukladací priestor na všetky tri typy informácií. Ten potom prenesieme v rámci jedného dátového toku. Takýto spôsob je čitateľnejší a dáta, ktoré spolu súvisia, budú uložené na jednom mieste. Balík obsahuje štyri triedy:  Word  SignalFrequencyInformation  LpcCharacteristicStorage  FrequencyVerificationStorage Word Táto trieda je spomedzi predchádzajúcich štyroch tried najjednoduchšia. Slúži na dočasné uloženie jedného vektora vzoriek signálu dátového typu short. SignalFrequencyInformation Toto dočasné prekladisko dát je využívané metódami systému frekvenčnej verifikácie. Poskytuje úložný priestor pre:  signál predstavujúci vystrihnuté slovo, ktoré obsahuje aj nadbytočné frekvencie FVS (vektor typu short)  predchádzajúci signál, ale už s odfiltrovanými nadbytočnými frekvenciami (vektor typu short)  maticu, ktorá obsahuje informáciu o energii všetkých frekvencií, ktoré využíva FVS (aj vysielaných aj nevysielaných) (matica typu double)
  • 55. 55  maticu, ktorá obsahuje informáciu o energii všetkých frekvencií, ktoré využíva FVS po odfiltrovaní nadbytočných frekvencií (matica typu double)  vektor, ktorý obsahuje informáciu o poradí vysielaných frekvencií pre aktuálnu autentifikáciu (vektor typu int) FrequencyVerificationStorage Toto prekladisko dát je využívané blokom frekvenčnej verifikácie pri filtrovaní a analýze vysielaných frekvencií. Obsahuje (okrem iného) totiž informáciu o čase ich prehrávania a je preto nevyhnutné pre synchronizáciu. Poskytuje úložný priestor pre:  signál, predstavujúci nahraté slovo (nevystrihnuté) spolu s nadbytočnými frekvenciami FVS (vektor typu short)  záznamy systémového času v okamihoch, kedy boli prehrávané jednotlivé frekvencie (vektor typu long)  poradie vysielaných frekvencií (vektor typy int) LpcCharacteristicStorage Toto prekladisko dát využívajú metódy, ktoré vytvárajú LPC charakteristiku signálu. Poskytuje úložný priestor pre:  signál rozsekaný na rámce predstavujúce časové úseky 20ms (dvojrozmerný vektor typu short)  LPC charakteristiku každého rámca tohto signálu (dvojrozmerný vektor typu double) 5.7 Balík "gui.images" Tento balík obsahuje obrázky, ktoré sú používané triedami grafického užívateľského prostredia. 5.8 Balík "main" Tento balík obsahuje jedinú triedu Application s hlavnou funkciou main(), ktorá sa spustí ako prvá a po jej ukončení skončí celý program. Funkcia main() v
  • 56. 56 našom programe spúšťa GUI, ktoré následne spúšta podľa potreby všetky ostatné moduly. 5.9 Balík "action" Tento balík zastáva funkciu hlavného manažéra celej aplikácie. Zoskupuje triedy, z ktorých každá zabezpečuje korektné spustenie jej priradenému modulu. Obsahuje triedy:  FullSystemAnalyser  CreateUser  WordFinder  FrequencyAuthentization Triedy FullSystemAnalyser, CreateUser a FrequencyAuthentization podporujú interoperabilitu s GUI, ale poskytujú rovnakú funkcionalitu aj pre prácu výlučne s terminálom. FullSystemAnalyser Táto trieda pred každým spustením aplikácie kontroluje celistvosť priečinkov a ciest programu. Overí, či má program vytvorené potrebné dátové cesty a ak nie, vytvorí ich. CreateUser Metódy tejto triedy slúžia na vytváranie nových užívateľských účtov. Zabezpečia konštrukciu príslušných priečinkov, nahratie prístupových slov, ich vystrihnutie a vytvorenie príslušných LPC charakteristík. WordFinder Metódy tejto triedy majú za úlohu zistiť, aké slovo bolo užívateľom vyslovené. V tejto konkrétnej realizácii programu musíme daným metódam zadať meno užívateľa, keďže aplikácia neimplementuje samostatný blok identifikácie užívateľa. FrequencyAuthentization Táto trieda predstavuje hlavného manažéra bloku frekvenčnej verifikácie. Patrí k najkomplexnejším a najrozsiahlejším triedam programu. Spúšťa FVS,
  • 57. 57 zabezpečuje fázu ladenia frekvenčnej verifikácie a vyhodnocuje autentickosť nahrávky. 5.10 Balík "sound.preprocessing" Tento balík sa stará o predspracovanie signálu do formy vhodnej pre ďalšie spracovanie. Obsahuje dve triedy:  AudioExtractor  NoiseRecordWordCutter AudioExtractor Táto trieda nám poskytuje metódy pre extrakciu časových vzoriek z ľubovoľného .wav súboru uloženého na ľubovoľnom mieste na disku. Extrakciu vykoná do vektora dátového typu short. NoiseRecordWordCutter Táto trieda zabezpečuje korektné vyhodnotenie začiatku a konca slova v nahrávke spolu s následným vyrezaním slova. Algoritmus, ktorý som zvolil, je popísaný v podkapitole 3.4.1. Trieda je odolná voči krátkodobým rušeniam, ktoré sa počas nahrávania môžu vyskytnúť (buchnutie dverí, zakašlanie a pod.). 5.11 Balík "sound.processing" Triedy tohto balíka zabezpečujú samotné spracovanie a transformáciu signálu. Balík obsahuje nasledujúce triedy:  Parametrisation  FFT  LPC  CreateSignalLpcChar Parametrisation Táto trieda predstavuje predprípravu pre blok identifikácie rečníka. Obsahuje metódy, ktoré na základe prijatého signálu dokážu vypočítať rôzne parametre signálu, napríklad energiu alebo počet prechodov nulou. V budúcnosti by do danej triedy mohli byť doprogramované charakteristiky ako kepstrálna
  • 58. 58 analýza, základná hlasivková perióda a podobne. Trieda nie je zatiaľ aplikáciou využívaná. FFT Metódy tejto triedy zabezpečujú výpočet spektra signálu metódou rýchlej fourierovej transformácie (FFT). Ako som už spomínal v podkapitole 2.2.1, algoritmus, ktorý som použil, predstavuje modifikáciu algoritmu, ktorého autormi sú Robert Sedgewick a Kevin Wayne z univerzity Princteon. Okrem prechodu do spektra trieda implementuje aj metódu IFFT, čiže metódu inverznej FFT, ktorú daní autori nezverejnili, tak ju bolo nutné dodatočne doprogramovať. LPC Metódy tejto triedy nám zabezpečia výpočet LPC koeficientov a získanie miery podobnosti dvoch vektorov LPC koeficientov pomocou algoritmu DTW tak, ako bol popísaný v podkapitolách 2.4 až 2.6. CreateSignalLpcChar Túto triedu využívame vo fáze vytvárania nového užívateľského účtu alebo vo fáze pridávania nových slov k už existujúcemu účtu. Pomocou tejto triedy vytvoríme objekt, ktorý zaznamená nasegmentovaný signál spolu s príslušnými LPC koeficientmi. Tento objekt následne uložia vo forme .obj súboru na pevný disk do priečinku užívateľského konta. 5.12 Balík "security" Balík security sa stará o vytváranie, obsluhu, mazanie administrátorských účtov a o bezpečné uloženie prístupových hesiel na disku. Ako sme si spomínali v podkapitole 3.2, iba osoby, ktoré majú administrátorské oprávnenie, môžu vytvárať nové účty, mazať existujúce účty a môžu modifikovať špecifickejšie charakteristiky celého systému. Princíp zaručenia bezpečnosti pri vytváraní nového hesla: 1. užívateľ zadá heslo 2. systém heslo "zahašuje" odtlačkovou funkciou SHA-256, ktorá sa pokladá za dostatočne bezpečnú 3. výsledný odtlačok uložíme na pevný disk
  • 59. 59 Ak by sa aj potenciálny útočník dostal do systému, na ktorom beží naša aplikácia a získal by prístup k administrátorským účtom, nebolo by mu to na nič platné, keďže princíp odtlačkových funkcií, akou je aj SHA-256, nedovolí z odtlačku spätne vyrátať pôvodné heslo. Pochopiteľne, pri verifikácii systém prijme zadané heslo, vyráta z neho odtlačok a ten následne porovná s odtlačkom, ktorý patrí príslušnému administrátorskému kontu. Ak sa odtlačky zhodnú, administrátor bude prihlásený, ak nie, systém ho neprihlási. V našom systéme je prednastavený jeden administrátorský účet pre prvotné prihlásenie s parametrami: meno "admin", heslo "root". Balík obsahuje nasledujúce triedy:  HashingClass  AdminAccounts HashingClass Metódy tejto triedy vyrátajú odtlačok akéhokoľvek textu pomocou algoritmu SHA-256. Taktiež dokážu daný odtlačok odoslať na terminálový výstup vo forme postupnosti hexadecimálnych číslic. AdminAccounts Táto trieda zabezpečuje vytváranie, mazanie a zobrazenie administrátorských účtov, taktiež overuje správnosť hesla pri prihlasovaní administrátorov. 5.13 Balík "frequency.verification.modul" Tento balík zabezpečuje funkcionalitu systému frekvenčnej verifikácie. Stará sa o generovanie príslušných frekvencií, súčasné nahrávanie a o ladenie FVS. Obsahuje nasledujúce triedy:  RecordingModul  RecordingTrainingModul  Frequency RecordingModul
  • 60. 60 Táto trieda sa stará o generovanie frekvencií FVS, pričom dbá na to, aby sa v rámci autentizácie neprehrali žiadne dve rovnaké frekvencie bezprostredne za sebou. Taktiež zabezpečuje nahrávanie týchto frekvencií súčasne s nahratím hlasu užívateľa. RecordingTrainingModul Táto trieda sa využíva vo fáze prvotného ladenia programu. Trieda zabezpečí súčasné prehratie a nahratie všetkých frekvencií, ktoré používa FVS (každú frekvenciu prehrá iba raz). FrequencyTestingModul Trieda sa správa ako lokálny manažér v rámci svojho balíka. Spustí a ukončí generovanie frekvencií, analyzuje získanú nahrávku a vyhodnocuje, či je autentická. Trieda taktiež obsahuje funkcie realizujúce spätné odfiltrovanie nadbytočných frekvencií z nahrávky. Práve táto trieda zabezpečuje odstránenie "problému neautorizovanej nahrávky". 5.14 Balík gui V dnešnej dobe by mala byť každá aplikácia "user-friendly". Práve vytvorenie grafického užívateľského prostredia umožňuje zlepšiť interakciu a ovládateľnosť programu. GUI taktiež poskytne omnoho vyšší komfort ako užívateľovi tak aj administrátorovi aplikácie. Preto som sa rozhodol, že vytvorím robustné GUI s jednoduchým a intuitívnym ovládaním podporované rozsiahlou nápovedou. Balík obsahuje nasledujúce triedy:  GUIinitiate  GraphicalInterface GUIinitiate Táto trieda má jedinú úlohu. Vytvoriť inštanciu grafického užívateľského rozhrania a spustiť ju ako vlákno. GraphicalInterface GraphicalInterface vytvára celé grafické rozhranie. Popisuje všetky textové polia, gombíky, nápovedu, obrazovky, grafiku, zaškrtávacie políčka, zabezpečuje
  • 61. 61 korektné naviazanie príslušných funkcií a reaguje na jednotlivé udalosti. Grafické rozhranie je veľmi robustné, pozostáva takmer z 1500 riadkov čistého kódu. Zabezpečuje celkovú interakciu s užívateľom.
  • 62. 62 6 Ukážka aplikácie a jej funkčných blokov GUI je vytvorené v programovacom jazyku Java, používa SWING komponenty. Po spustení programu užívateľa privíta úvodné okno, Obr. 16, so základnými informáciami, akými sú: názov programu, autor a kontakt na autora. Taktiež ponúka výber jazyka, ktorý sa však nepodarilo včas implementovať. Obr. 16 Úvodná obrazovka Po kliknutí na tlačidlo "Enter" aplikácia otvorí prihlasovacie okno, Obr. 17. Obr. 17 Prihlasovacie okno