Psát CRUD aplikace zvládne cvičená opice, nejzajímavější a nejobtížnější bývá naučit se danou doménu. Tentokrát se pokusím přiblížit, jak funguje biomet­rický pas a proč si vaše otisky nemůže přečíst nikdo neopráv­něný. Ve srovnání s filmem Ďáblova dílna (případně stejnoj­mennou knihou), i když tam šlo jen o bankovky, se způsoby, jak zabránit padělání, posunuly díky elektrickým dokumentům dál.

Specifikace


Vlajka ICAO

S automa­ti­zací přišel požada­vek, aby dokumenty byly strojově čitelné. V roce 1980 tak vznikl pas s MRZ (Machine Readable Zone, strojově čitelná zóna), takové to se zobáčky <&l­t;<. Zkuste si násle­dující MRZ prohnat analyzátorem.

P<GBRSMITH<<CRYSTAL<<<<<<<<<<<<<<<<<<<<<<<<<
0991733606GBR9111048F1601013<<<<<<<<<<<<<<08

Tím bychom měli MRTD (Machine Readable Travel Document, strojově čitelný cestovní doklad). Ačkoliv budu mluvit o cestovním pasu, tak pod cestovním dokladem se skrývají třeba i víza. Speci­fi­kaci má na starosti organi­zace ICAO (Inter­na­tional Civil Aviation Organi­za­tion) a dokumenty jsou, na rozdíl od ISO normy, k dispo­zici zdarma, viz Doc 9303. Pocho­pi­telně definují i elektrickou verzi dokladu, t.j. eMRTD, o kterém právě bude řeč. První biomet­rický pas byl vydán v Malajsii v roce 1997, a pas splňující normu ICAO pak v roce 2004 v Belgii.

Účel čipu a požadavky na bezpečnost

Elektrický cestovní pas obsahuje bezkon­taktní čip (tech­no­logie NFC), na kterém jsou nahrané ty samé údaje jako na grafické části (to musí souhla­sit) a ještě něco navíc (otisk prstu, duhov­ka…). Z toho plyne několik požadavků na bezpeč­nost. Předně nechceme dovolit, aby si čip mohl číst kdokoliv (navíc z kapsy), případně aby nemohl odpos­louchávat již navázanou komuni­kaci. Rovněž je potřeba zabránit úpravě údajů případně kopírování celého dokladu (respek­tive abychom úpravu poznali).

Struktura čipu

Pro zajíma­vost uvádím, že na Smart Cards běží applety napsané v Javě. Ale zpět ke speci­fi­kaci, čip má násle­dující struk­turu, viz obrázek. Nás bude zajímat soubor CardAccess, který rozho­duje o zvoleném bezpeč­nostním mecha­nismu. Dále eMRTD Application, kde jsou již samotné údaje uložené v DG (Data Group). Důležité je i SOD (Docu­ment Security Object), který obsahuje digitální podpis čipu a certi­fikát nutný k ověření tohoto podpisu (o certi­fikátech podrob­něji níže).

Níže vidíte rozpis jednot­livých DG a co je v nich uloženo. Všimněme si zejména DG1, kde je uloženo MRZ. Z citlivých údajů je to například otisk prstu v DG3.

Bezpečnostní mechanismy

Pro lepší pocho­pení jsem v diagramu rozdělil bezpeč­nostní mecha­nismy na tři úrovně (level), ovšem nejedná se o ICAO termi­no­lo­gii. V první úrovni si můžete přečíst méně citlivé údaje jako jméno, fotografii…

Druhá úroveň vás opravňuje přečíst si citlivé údaje jako otisky prstů nebo duhovku. A nakonec třetí úroveň ověřuje, zda byl dokument vydán někým důvěry­hodným a do dat se nezasa­ho­valo. Tučně je vyznačen doporučený průchod.

BAC/SAC

BAC a SAC mají dva hlavní účely. Jednak slouží k auten­ti­zaci terminálu (přístroj na čtení), na základě toho, že terminál má optický přístup k dokladu. A jednak, což je neméně důležité, nasta­vují šifro­vaný kanál čip-terminál.

BAC (Basic Access Control) kontro­luje, že terminál má fyzický přístup k dokladu tak, že vyžaduje optické čtení MRZ. To zaručí, že vám nepřečtou cestovní pas z kapsy. BAC má tu nevýhodu, že klíč pro komuni­kaci s terminálem se odvozuje od MRZ, které má nedosta­tečnou entro­pii, ale hlavně je statický.

Ukázka CAN

Proto je tu bezpeč­nější SAC (Supp­le­mental Access Control) , který rovněž vyžaduje MRZ, případně může akcep­tovat CAN (Card Access Number, viz obrázek). CAN byste použili třeba v případě, když by terminál neuměl OCR a museli byste opisovat údaj ručně. CAN je totiž výrazně kratší než MRZ. Ale hlavní rozdíl je v tom, že PACE (Password Authen­ti­cated Connec­tion Estab­lishment) naváže tzv. Secure Messaging na základě slabého hesla, ale hned potom vygene­ruje silná hesla, která se používají v následné komuni­kaci. Přestože je entropie kvůli kratšímu CANu snížená, celkově je bezpeč­nost vyšší, jelikož klíč pro secure messaging je unikátní pro každou session (na rozdíl od static­kého v případě BAC). To zabraňuje tomu, že by někdo odpos­lechl komuni­kaci a hrubou silou rozlouskl pro příští použití.

Active Authentication/EAC

Hlavní smyslem Active Authentication je prevence proti klonování dat tím, že ve veřej­ných datech je pouze veřejná část klíče, zatímco privátní je před čtením skrytá někde v nepřís­tupné části paměti. Active Authentication má tu nevýhodu, že při navázání spojení se podepi­suje tzv. challenge, kterou karta obdrží. U elekt­ro­nic­kého podpisu platí zásada nepopi­ra­tel­nosti (non-repudiation), v našem případě to může zname­nat, že pas nějaký terminál neodmítne a hlavně, že to někdo použije za důkaz, že jste někde byli. Navíc čipy v sobě nemají napájení, tedy ani hodiny, řídí se podle terminálu, tudíž jim nějaký zlý terminál může hodiny upravit (sice jen dopředu) a podvrh­nout nejen místo ale i čas.

Proto je k dispo­zici lepší mecha­nismus EAC (Extended Access Control), ačkoliv ten není definován speci­fi­kací ICAO ale BSI (Bunde­samt für Sicher­heit in der Infor­ma­tion­stech­nik), viz eMRTDs with BAC/PA­CEv2 and EACv1. Pro navázání spojení se používá Chip Authentication na principu Diffie-Hellman (nikoliv podpis challenge jako u Active Authentication). Následně se musí auten­ti­zovat terminál, čímž se zkont­ro­luje, že mu důvěřu­jeme a že si může přečíst z čipu citlivé údaje (otisk prstu).

Terminál má svůj certi­fikát, který vydal DV (Docu­ment Verifier), organi­zační jednotka které spravuje skupinu terminálů. Certi­fikát pro DV podepi­sují CVCA (Country Verifier Certi­fi­cate Authority) jednot­livých zemí, které tím udělují terminálům (svým i jiných zemí) číst citlivé údaje (otisk prstu) ze svých pasů. Pro zajíma­vost uvádím, že se tyto certi­fikáty doručují diplo­ma­tickou poštou.

CVCA je uložen na čipu a protože je jeho platnost kratší než platnost pasu, aktua­li­zuje se během kontroly na případnou novější verzi. Platnost certi­fikátů se musí na chvíli překrývat, viz obrázek.

Passive Authentication

Passive Authentication slouží k ověření toho, že se obsah čipu nezměnil a že je auten­tický. Jak se toho dosáhne? Během vydání dokladu se vytvoří hash z data group a ten se nechá podepsat kompo­nen­tou, které se říká Document Signer (DS). Vznikne tak SOD s digitálním podpisem obsahu čipu (viz kapitola struk­tura čipu). Během Passive Authentication se podpis ověří.

Pro úplnost dodávám jak je to s klíči DS. Privátní klíč DS je vydáván na krátkou dobu, zhruba tři měsíce, a je rovněž omezen počtem vydaných dokumentů. To proto, aby v případě jejich kompro­mi­tace, nebylo ohroženo příliš mnoho dokumentů. Naopak veřejný klíč má platnost zhruba 10 let, aby bylo možné podpis stále ověřit. Certi­fikáty pro DS vydává Document Signer Certi­fi­ca­tion Authority (DSCA). Platnost klíčů DSCA je delší, privátní klíč 3 až 5 let, veřejný klíč 13 až 15 let.

Edit: Na SDW InterOp 2016 porov­návali inter­o­pe­ra­bi­litu výrobců řešení elekt­ro­nic­kých pasů. Při přípravě vzorku dokumentů udělali chybu v CSCA (Country Signer Certi­fi­cate Authori­ty). Přesto polovina ověřo­vacích aplikací úspěšně prošla Passive Authentication. Jde o významný problém, který byl zazna­menán i v procesu skuteč­ných hranič­ních kontrol. Passive Authentication je nejdůležitější bezpeč­nostní mecha­nis­mus, který by měl detekovat padělání elekt­ro­nic­kého cestov­ního dokladu.

Domácí úkol

Sice nemám Android v lásce, ale pokud vlast­níte přístroj s podporou NFC, můžete si za domácí úkol přečíst svůj pas pomocí aplikace Passport Reader a ověřit, že zvlád­nete BAC/SAC a prohléd­nout si fotog­ra­fii, ale už ne EAC a prohléd­nout si otisk prstu, protože vám Česká repub­lika nepode­psala certifikát.

A kdybyste chtěli vyrábět skutečné doklady, přečtěte si náborový příspěvek od sw-samuraje.

Poděkování

Chtěl bych poděkovat Alexandru Sevrju­kovi a Jaros­lavu Cibul­kovi, kteří si po mně článek přečetli.