Метро: кишки наружу. Копаемся во внутренностях валидатораАлександр «dark simpson» Симонов / http://dark-simpson.livejournal.ru / Большинство из нас ежедневно пользуются услугами метро, и, наверное, каждому хотя бы раз приходила в голову мысль заглянуть внутрь одного из устройств, которые днем и ночью неподкупно охраняют вход в подземку. Мечты сбываются! Разбирать мы будем не какую-нибудь мелочь, а самый что ни есть настоящий терминал проверки бесконтактных карточек. Подопытный девайсВзглянув на фотографии, ты сразу поймешь, о чем речь. Да, это тот самый аппарат, который висит на стене в каждом вестибюле метро. Именно к нему мы подходим с карточкой после неудачной попытки пройти через турникет — и наблюдаем беспристрастное: «ПОВТ. ПРОХОД 7 МИН.». Конечно, это не головка валидатора турникета, но скажу по секрету, ее устройство мало чем отличается от нашего подопытного. Внешне это просто пластиковый ящик. Интерфейсы связи с пользователем — бесконтактный считыватель карт, спрятанный за передней частью корпуса, и оригинальный дисплей на красных светодиодах: визитная карточка всех систем метро и «МосГорТранса.» На задней части аппарата «растет» разъем, с помощью которого терминал присоединяется к локальной сети вестибюля, и рычаг замка, которым устройство крепится к установочному кронштейну. Сам замок расположен в нижней части устройства и, в отличие от многих приборов подобного класса, это — единственная защита от посягательства с применением грубой силы. С другой стороны, оно и понятно: валидатор висит не абы где, и при любой попытке посягнуть на казенное имущество за спиной нерадивого нарушителя моментально окажется парочка милиционеров, и песенка злодея будет спета (не спрашивай, откуда у нас подопытный образец, — Прим. ред). Что ж, с экстерьером терминала все более-менее понятно, поэтому приступим к самому интересному. Берем в руки отвертку и... Платформа слева — платформа справаВывинтив четыре винта, находящиеся сзади устройства, и разделив его корпус на две половинки (как скорлупу грецкого ореха), извлекаем содержимое. Все внутренности терминала размещены на двух с половиной платах. Что осталось на «половинке», понятно — это дисплей и несколько светодиодных индикаторов красного и зеленого цветов. Рассмотрим внимательнее оставшиеся две. На одной из них сразу бросается в глаза огромное количество всевозможных микросхем, МИКРОСХЕМИЩ и микросхемочек, куча рассыпухи и еще много всего интересного. Стало быть, это главная плата устройства. Поглядим, что она собой представляет. Самый большой «камень» на этой плате — Motorola MC68332 (это центральный процессор).
Точнее говоря, это серьезный 32-битный микроконтроллер (именно микроконтроллер, так как он несет на борту определенное количество периферии типа UART и Watchdog-таймера). Платформа получилась старенькая, но проверенная временем. Так как у этого МК нет встроенной памяти программ, а память данных ничтожно мала, то рядом с камнем прописаны четыре микросхемы ОЗУ (всего 512 Кб) и одна флешка (тоже на 512 Кб). Во флеш-памяти пролегает управляющая программа, а в оперативе — служебка и логи. Автомат сохраняет всю информацию о приложенных к нему картах до тех пор, пока не отдаст ее по сети центральному узлу. Здесь же, в ОЗУ, лежат и стоп-листы (касается только турникетных валидаторов) и криптографические ключи для проверки валидности билетов ультралайт (ключи доступа к секторам карточек Mifare Classic зашиты во флеш-памяти). На случай потери магистрального питания оперативка «забатареена» достаточно вместительным элементом на 3 вольта. При отсутствии питания он позволит хранить данные в оперативной памяти более 3-хмесяцев. Этот же элемент «бэкапит» и часы реального времени. В общем-то, это была самая главная часть аппарата. Все остальное на плате относится к блоку питания (кстати, устройство питается от 24 вольт), обвесу камней, интерфейсам с внешним миром (только поглядите на этот милый разъем с обозначением «Network») и оставшейся периферией — считывателем и дисплеем. Контакт бесконтактаБесконтактный считыватель, установленный на другой плате, — это «второе сердце» терминала. Именно ради него, можно сказать, и создавалась вся система. Сам считыватель — это отдельный модуль производства компании Gemplus.
Для справки: контора занимается контактными и бесконтактными технологиями в банковской сфере и в сфере платежных систем. Считыватель работает по известной беспроводной технологии Mifare (MIkron FARE-collection System), которая была разработана и поддерживалась маленькой австрийской фирмой Mikron. Затем, в 1998 году, технологию с потрохами выкупила Philips semiconductors (ныне NXP), которая и по сей день ее продвигает. Так как на считывателе не было ни единого упоминания о Philips, а на всех микросхемах красовалось гордое «Mikron», можно предположить, что этот образец очень старый, возможно, середины 90-х. На мысли о древности также наводит здоровенный экранированный радиоблок и куча микросхем в крупных корпусах. Сейчас такие штуки реализуются на одной МС от Philips в незатейливом корпусе SO-20. И ведь, смотри-ка, все это до сих пор работает :). Из оставшегося на плате железа — программируемая логика, которая управляет работой считывателя и дисплея; несколько интерфейсных микросхем (расширители портов), да небольшой преобразователь питания для нужд считывателя. О совместимости видовЯ больше чем уверен, что у тебя промелькнула мысль, как же похожи эти терминалы на аппараты, которые стоят за передней дверью автобусов, троллейбусов и трамваев. Я скажу даже больше. Они похожи не только внешне, но и внутренне. Те же контуры плат, та же платформа, почти идентичное расположение элементов... Платы с дисплеем и считывателем отлично взаимозаменяются. Дисплей показывает все верно, ну, правда, считыватель «чуть-чуть не работает» (что и не мудрено — в метрошном варианте стоит такой мастодонт, а в автобусном — вполне современный MFRC531). И, разумеется, в автобусном терминале присутствует, помимо прочего, считыватель магнитных билетов. Он составляет где-то 70% всего веса автобусного валидатора. Этим считывателем управляет отдельный небольшой 8-битный микроконтроллер (тоже Motorola), который на плате терминала метро просто не распаян (как и разъем «Maghead» для подключения головок и датчиков магнитного считывателя, а также разъем и электроника управления термопринтером). Это наводит на мысль об унифицированной аппаратной платформе, которая разрабатывалась еще давно, с расчетом на долгое существование и разумное обрастание новым функционалом. Вот и получается, что от поколения к поколению платформа не меняется и несет с собой вечным грузом как все прелести, так и все фундаментальные оплошности, которые совершили разработчики. осторожно, двери закрываются...
Конечно, от этих ошибок уже никуда не убежать, если в корне не изменить всю конструкцию. С нынешними представлениями мы можем сказать, что «надо было делать все на нормальных 8-битных МК, — тогда устройство получилось бы проще и в разы безопаснее». По крайней мере, нельзя было бы просто выпаять микросхему флеш-памяти и считать ее на программаторе, без проблем посмотрев в дампе ключи A и B для карт Mifare Classic (студенческие, социальные и проездные). По сути, ключи — единственная защита на пути подделки этих документов... Но не стоит забывать, что в то время у разработчиков не было такого широкого выбора удобных, функциональных, быстрых и безопасных микроконтроллеров, какой есть сегодня. Бедолагам приходилось разрабатывать на тех платформах, какие были доступны. Вывод: на текущий момент вся платформа потенциально уязвима. Это означает, что почти любой подкованный в электронике хакер сможет выудить из такого терминала строго конфиденциальную информацию, и, возможно, даже использовать ее в незаконных целях. Конечно, определенные программные ухищрения могут усложнить жизнь взломщикам, но не так, как усложнила бы полная невозможность считать программу и дамп оперативки из устройства. Поэтому я желаю и «Метрополитену», и «МосГорТрансу» скорейшей смены платформы на современную и более безопасную. А всех хакеров, стремящихся попробовать силы на этих системах, предостерегу: подобные «попытки» строго преследуются по закону! |