2 сент. 2008 г.

Как устроен билет Московского Метро, часть 2

Спустился в метро в очередной раз, купил билет на 5 поездок и обнаружил, что кое-что поменялось на билете и он теперь более защищен от чем было раньше

Например, lock bytes теперь имеют значение F0 99, а не 00 00, что привело к изменению формата "трека":


17 C9 2D 00 00 05 00 00 27 AB 28 41 00 00 00 00

+0 Len 2 ro Дата покупки билета (может быть дата + 1 день?)
+2 Len 1 ro Срок действия билета в днях (от дня покупки!)
+3 Len 1 ro 00 ?
+4 Len 1 rw 00 ?
+5 Len 1 rw оставшиеся поездки
+6 Len 2 rw на новом билете 00 00
+8 Len 4 rw MAC
+С len 4 read-only всегда 00 00 00 00 ?

Раньше после первого прохода дата по смещению +0 менялась на дату первого прохода, теперь нет (этот блок read-only), т.е. билеты стали работать дольше, нет правила "билет работает X дней со дня первого прохода". Это хорошая новость. Плохая новость для желающих ездить бесплатно это то, что теперь валидаторы "портят" OTP, то есть состояние карты нельзя восстановить полностью и она в конце концов протухает!

Все это правильные меры, но смущает то, что оставлена возможность заблокировать запись в OTP, зачем? Казалось бы байты блокировки должны быть F199, а не F099... иначе можно поменять их на F899 и... интересно, что валидатор делает если не может поменять биты OTP? Это очень легко проверить, что я бы и сделал, если бы ездил на метро :)

Так же немного подозрительно, что авторы блокируют запись в некоторые блоки "трека"... если это сделано из соображений "зачем давать писать куда писать не надо", то все в порядке... это правильно... но вдруг это значит, что MAC не включает в себя UID, как я думал должно было бы быть, чтобы исключить клонирование. Вдруг защита от записи это на самом деле всего лишь защита от использования б/у карт метрополитена для изготовления новых клонов?! Тогда клоны можно делать, но использовать "чистые" карты...

Это то же легко проверить...

И еще, хорошо бы догадаться, что пишется по смещению +6...

Хорошо бы посмотреть на билет в 10 проходов или какое-то там максимальное?

Видимо все же придется спуститься в метро.

Все будет еще веселее, когда таки опубликуют алгоритм Crypto1 и желающие смогут наконец узнать ключ mifare московского метро и заглянуть внутрь... там нас могут ждать еще большие чудеса.

Сколько еще итераций потребуется авторам этого "приложения", чтобы наконец максимально затруднить жизнь мошейников и окончательно защитить билеты от подделки? Почему-то у них не получается с первого раза, помните смешную историю со скотчем и магнитными билетами? Это конечно был баг, но это была не опечатка! Mifare Ultralight как он выглядел в прошлом году баг такого же порядка. Хорошо, что люди исправляются, плохо, что так медленно.

Комментариев нет: