Читать «Журнал "Компьютерра" №754» онлайн - страница 45

Компьютерра

Расскажите, как устроена инфраструктура метрополитена?

- На станциях сеть построена примерно следующим образом: есть несколько компьютеров у кассиров, у старшего кассира и компьютер ревизора. Предположительно, где-то находится и аппаратный пункт, "приземляющий" локалку на сеть RS-485, которой объединены турникеты и терминалы проверки билетов. Хотя есть также информация, что локальная сеть Ethernet и сеть устройств RS-485 не объединены (или же объединены, но не на всех станциях), а обновлением ПО и ключевой информации в турникетах и терминалах проверки занимается специальный обслуживающий персонал.

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

Однако при использовании билетов информация о них заносится в память турникетов (это нужно хотя бы для того, чтобы вести статистику) и в определенное время (возможно, по расписанию) сливается в центральную базу данных и уже там обрабатывается. Каждый раз при покупке билета его данные заносятся в локальную БД, а оттуда отправляются в ЦОД. Это подтверждают метрополитеновские программы: они могут функционировать как в режиме накопления данных, так и в онлайн-режиме, сразу отправляя информацию в центральную базу. Если несколько раз засвечивается номер, который не зафиксирован в БД, это быстро выявляется и билет попадает в стоп-лист, который закачивается в турникеты при следующем обновлении (их память, конечно, не резиновая, но даже за вычетом объема памяти, используемой микропрограммой турникета в служебных целях, ее должно хватить, чтобы занести достаточное количество записей). Так что все сгенерированные мною Mifare Ultralight в течение нескольких дней попадали в стоп-лист.

А можно ли многократно перезаписывать карточку?

- В билете есть перезаписываемая область данных (48 байт), зона однократной записи (4 байта) и зона записи блокировок. С помощью установки управляющих битов можно заблокировать запись в определенные страницы или даже запретить блокирование записи. Смысл в том, что перезаписать можно все данные, кроме зоны однократной записи (one-time programmable, OTP) и битов блокировок: в подземке зона OTP используется для постепенного "выжигания" битов в зависимости от количества использованных поездок (в процентном соотношении). И эта зона, естественно, проверяется при валидации билета турникетом. Когда количество поездок полностью исчерпано, на запись блокируются все страницы памяти и билет остается только выкинуть. Так что "вечный" Ultralight сделать не получится. С клонированным Mifare Classic (отсутствие их жесткой привязки к аппаратному серийному номеру позволяет изготовить "клон") в этом смысле проще: теоретически им можно пользоваться, пока не истечет срок действия карточки, которая была взята в качестве "донора", а потом можно просто пойти и выудить свежий дамп. На практике, правда, многие клонированные "классики" тоже попадают в стоп-лист. На данный момент я как раз пытаюсь понять, по какому принципу идет отсев "левых" карт и какую роль в этом играет аппаратный серийный номер, который собственно для защиты данных не используется.