адреса ОУФМС
оформить загранпаспорт
ФМС Москва - как проехать
федеральная миграционная служба
Нормативные документы
Перечень документов
Посольства РФ
УФМС Москвы

Читаем биометрический загранпаспорт

 

 

Автор Дмитрий Трунин   

03.03.2009 г.

Примечание: считывание данных с паспорта в присутствии и с согласия владельца не запрещено законом.

Это нормальная операция, предусмотренная стандартом на электронно-считываемые документы. Паспорт не может быть таким образом поврежден, подделан или иным образом незаконно использован.

 

удаленно читаем биометрический загранпаспортРоссийский загранпаспорт нового образца, или биометричекий паспорт, выдается в России с
2006 года и является электронно-считываемым документом.

В этой заметке мы попробуем получить доступ к данным, записанным в паспорте,
из Java приложения на персональном компьютере.

Биометрический паспорт похож на обычный загранпаспорт, но есть заметные отличия: на обложке
появился новый символ, говорящий о том, что данный паспорт содержит электронный носитель с
биометрическими данными и соответствует стандарту на электронно-считываемые
документы, установленный Международной Организацией Гражданской Авиации - ИКАО (ICAO 9303-2)


Второе важное отличие:
главная страница паспорта сделана из пластика, внутри нее и находится электронный чип с радиоинтерфейсом.

 

В этот чип записаны данные, содержащиеся в паспорте: это данные с главной страницы (номер документа, имя и фамилия владельца, дата рождения,
дата окончания срока действия и т.д.), а также фотография в формате JPEG. Чип является смарт-картой, и доступ к данным осуществляется
посредством команд APDU, описанных стандартом ISO 7816-4.


Российский биометрический паспорт
поддерживает механизм ограничения доступа Basic Access Control (BAC), ключом к которому является
комбинация из номера паспорта, даты окончания срока действия и даты рождения владельца.

Этот механизм гарантирует, что данные невозможно считать дистанционно без ведома владельца.

Для того, чтобы прочитать паспорт, необходимо ввести в систему данные, напечатанные, на его главной странице.
На практике это делается  человеком, проверяющим паспорт, автоматически при помощи сканера или вручную.

В нашем коротком эксперименте мы внесем эти данные в исходный код программы.

По стандарту, этот механизм ограничения доступа не является обязательным, но у нас он есть :) В прессе много критиковали биометрические паспорта, за то, что их обладатель может легко стать жертвой злоумышленников, вооруженных специальной аппаратурой, позволяющих считывать информацию на расстоянии.

Так вот, эта критика беспочвенна -- наши паспорта надежно защищены.

После выполнения протокола BAC все данные передаются зашифрованными с использованием ключа, установленного в процессе выполнения
протокола (подробнее см. ICAO 9303-2).


Необходимое оборудование и библиотеки


Для считывания информации с паспорта нам понадобится устройство для чтения смарт-карт, поддерживающее стандарт ISO 14443.

Например подойдет Omnikey Cardman 5321, использованный в процессе написания данной статьи. В вашей операционной системе должен быть
установлен PC/SC драйвер для этого устройства.

В Java SE есть опциональный пакет Smart Card I/O API (javax.smartcardio) для работы со смарт-картами.
Этот пакет включен в JDK начиная с версии 1.6. Проверьте, что у вас установлена свежая версия JDK.

В нашем примере мы будем использовать библиотеку для чтения электронных документов JMRTD.
Эта библиотека реализует протокол обмена данными с паспортом (включая механизм Basic Access Control). Скачайте и установите библиотеку.

Для работы библиотеки JMRTD также потребуется крипто-провайдер, предоставляющий реализации специфических алгоритмов.
Информация по установке рекомендуемого крипто-провайдера есть в инструкциях по установке библиотеки JMRTD.

Код из этой статьи должен компилироваться и запускаться с использованием JDK 1.6 и с библиотекой JMRTD (и крипто-провайдером) в class-path. 

 

 

Код

Откройте файл ReadPassport.java в текстовом редакторе, и введите значения переменных, соответсвующие данным из биометрического паспорта,
который вы собираетесь прочитать: номер паспорта, дата рождения и дата окончания срока действия.

 

Например:

String DOC_NUMBER = "701234567";
Date DATE_OF_BIRTH = new GregorianCalendar(1970, Calendar.JANUARY, 1).getTime();
Date DATE_OF_EXPIRE = new GregorianCalendar(2013, Calendar.DECEMBER, 10).getTime();

Эти значения нам понадобятся для выполнения авторизации (BAC), без которой считывание данных с паспорта невозможно.
Если эти значения неправильные или соответствуют другому паспорту, данные не считаются.
Скомпилируйте и запустите класс ReadPassport (библиотека JMRT и крипто-провайдер дожны быть в class-path, крипто-провайдер должен быть
зарегистрирован в JDK версии 1.6, устройство для считывания смарт-карт должно быть подключено, и драйвер установлен).

Теперь положите паспорт на считыватель, и если все выполнено правильно, то приблизительно через 5 секунд (столько длится обмен
данными с паспортом),в консоли будет напечатано следующее:

Passport inserted.
Basic authentication completed.
LDS version: 01.07
Unicode version: 04.00.00
Tags: [97, 117]

P<RUSPUPKIN<<VASILY<<<<<<<<<<<<<<<<<<<<<<<<<
7012345675RUS7001012M1312069<<<<<<<<<<<<<<06

Document number: 701825967
Personal number:
Primary identifier: PUPKIN
Date of birth: 1970-01-01
Date of expire: 2013-12-10
Document type: 3
Gender: MALE
Issuing state: RU
Nationality: RU
Secondary identifiers: [VASILY]

После сообщения о том, что паспорт обнаружен, и авторизация выполнена, мы видим следующие данные из файла COM:

–    Используемая версия Logical Data Structure (LDS) — формата данных: 01.07
–    Используемая версия Unicode: 04.00.00
–    Тэги файлов, которые можно прочитать из данного паспорта: 97 и 117

Здесь интересной для нас информацией являеются тэги доступных файлов: 97 – данные с главной страницы паспорта (номер, имя, фамилия, и т.д.), и 117 –  фотография владельца. Эти два файла являются обязательными в соответсвии со стандартом ICAO 9303-2. Никаких других опциональных данных (например, отпечатков пальцев или скана сетчатки глаза) в российском биометрическом паспорте не содержится.
(С вас ведь не снимали эти данные, когда вы получали паспорт?)

Затем идут данные из файла DF1,  напечатанные в том же виде, что и на главной странице паспорта, внизу страницы в так называемой зоне
для автоматического распознавания Machine Readable Zone (MRZ). Сравните – все должно совпадать с паспортом с точностью до символа.

Затем идут те же данные в более читаемом виде. Обратите внимание – поле Personal number (личный номер) пустое.

 

Возможность введения личного идентификационного номера в связи с выдачей биометрических паспортов вызвала в России критику и неприятие общественности. Как мы смогли убедиться с помощью Java технологии, информации о личном номере в российском биометрическом паспорте отсутсвтвует.

Более подробную информацию о считывании данных с биометрического паспорта можно узнать на сайте JMRTD, а также в стандарте на
электронно-считываемые документы ICAO 9303-2, ссылка на который имеется на том же сайте.

 

 

Ссылки

Последняя версия JDK: http://java.sun.com/javase/6
Smart Card I/O API: http://java.sun.com/javase/6/docs/jre/api/security/smartcardio/spec
Проект JMRTD: http://jmrtd.org
Международная Организация Гражданской Авиации, информация о стандартах на электрнно-считываемые документах: http://www2.icao.int/en/MRTD

 


Как подделали биометрический загранпаспорт ;
биометрический паспорт документы ; Какие биоданные могут появиться в паспортах будущего

 

 

сайт загранпаспорт нового образца в социальной сети ВКонтакте Мы в одноклассниках

 

 

Rambler's Top100 | бронирование гостиниц и билетов | госуслуги.ру - личный кабинет | ФМС России по регионам | Отделы ФМС Москвы | заполнение анкеты на загранпаспорт