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 biometrický pas a proč si vaše otisky nemůže přečíst nikdo neoprávněný. Ve srovnání s filmem Ďáblova dílna (případně stejnojmennou 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 automatizací přišel požadavek, 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 <<<. Zkuste si následují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. Specifikaci má na starosti organizace ICAO (International Civil Aviation Organization) a dokumenty jsou, na rozdíl od ISO normy, k dispozici zdarma, viz Doc 9303. Pochopitelně definují i elektrickou verzi dokladu, t.j. eMRTD, o kterém právě bude řeč. První biometrický 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 bezkontaktní čip (technologie NFC), na kterém jsou nahrané ty samé údaje jako na grafické části (to musí souhlasit) a ještě něco navíc (otisk prstu, duhovka…). 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 odposlouchávat již navázanou komunikaci. Rovněž je potřeba zabránit úpravě údajů případně kopírování celého dokladu (respektive abychom úpravu poznali).

Struktura čipu

Pro zajímavost uvádím, že na Smart Cards běží applety napsané v Javě. Ale zpět ke specifikaci, čip má následující strukturu, viz obrázek. Nás bude zajímat soubor CardAccess, který rozhoduje o zvoleném bezpečnostním mechanismu. Dále eMRTD Application, kde jsou již samotné údaje uložené v DG (Data Group). Důležité je i SOD (Document Security Object), který obsahuje digitální podpis čipu a certifikát nutný k ověření tohoto podpisu (o certifikátech podrobněji níže).

Níže vidíte rozpis jednotlivý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ší pochopení jsem v diagramu rozdělil bezpečnostní mechanismy na tři úrovně (level), ovšem nejedná se o ICAO terminologii. 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ěryhodným a do dat se nezasahovalo. Tučně je vyznačen doporučený průchod.

BAC/SAC

BAC a SAC mají dva hlavní účely. Jednak slouží k autentizaci 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é, nastavují šifrovaný kanál čip-terminál.

BAC (Basic Access Control) kontroluje, ž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 komunikaci s terminálem se odvozuje od MRZ, které má nedostatečnou entropii, ale hlavně je statický.

Ukázka CAN

Proto je tu bezpečnější SAC (Supplemental Access Control) , který rovněž vyžaduje MRZ, případně může akceptovat 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 Authenticated Connection Establishment) naváže tzv. Secure Messaging na základě slabého hesla, ale hned potom vygeneruje silná hesla, která se používají v následné komunikaci. 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 statického v případě BAC). To zabraňuje tomu, že by někdo odposlechl komunikaci 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řejných datech je pouze veřejná část klíče, zatímco privátní je před čtením skrytá někde v nepřístupné části paměti. Active Authentication má tu nevýhodu, že při navázání spojení se podepisuje tzv. challenge, kterou karta obdrží. U elektronického podpisu platí zásada nepopiratelnosti (non-repudiation), v našem případě to může znamenat, ž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 podvrhnout nejen místo ale i čas.

Proto je k dispozici lepší mechanismus EAC (Extended Access Control), ačkoliv ten není definován specifikací ICAO ale BSI (Bundesamt für Sicherheit in der Informationstechnik), viz eMRTDs with BAC/PACEv2 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í autentizovat terminál, čímž se zkontroluje, že mu důvěřujeme a že si může přečíst z čipu citlivé údaje (otisk prstu).

Terminál má svůj certifikát, který vydal DV (Document Verifier), organizační jednotka které spravuje skupinu terminálů. Certifikát pro DV podepisují CVCA (Country Verifier Certificate Authority) jednotlivý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ímavost uvádím, že se tyto certifikáty doručují diplomatickou poštou.

CVCA je uložen na čipu a protože je jeho platnost kratší než platnost pasu, aktualizuje se během kontroly na případnou novější verzi. Platnost certifiká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 autentický. Jak se toho dosáhne? Během vydání dokladu se vytvoří hash z data group a ten se nechá podepsat komponentou, které se říká Document Signer (DS). Vznikne tak SOD s digitálním podpisem obsahu čipu (viz kapitola struktura č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 kompromitace, 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. Certifikáty pro DS vydává Document Signer Certification 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 porovnávali interoperabilitu výrobců řešení elektronických pasů. Při přípravě vzorku dokumentů udělali chybu v CSCA (Country Signer Certificate Authority). Přesto polovina ověřovacích aplikací úspěšně prošla Passive Authentication. Jde o významný problém, který byl zaznamenán i v procesu skutečných hraničních kontrol. Passive Authentication je nejdůležitější bezpečnostní mechanismus, který by měl detekovat padělání elektronického cestovního dokladu.

V roce 2018 vyšlo najevo, že v USA pasy elektronicky několik let vůbec neověřovali. Přišli tak o důležitou kontrolu, zda není doklad padělaný. Viz článek US border officials haven’t properly verified visitor passports for more than a decade.

Domácí úkol

Sice nemám Android v lásce, ale pokud vlastní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ádnete BAC/SAC a prohlédnout si fotografii, ale už ne EAC a prohlédnout si otisk prstu, protože vám Česká republika nepodepsala 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 Sevrjukovi a Jaroslavu Cibulkovi, kteří si po mně článek přečetli.