Спустился в метро в очередной раз, купил билет на 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 как он выглядел в прошлом году баг такого же порядка. Хорошо, что люди исправляются, плохо, что так медленно.
Smart Cards
2 сент. 2008 г.
1 мар. 2008 г.
Опять Chip & PIN
Очередная атака на Chip & PIN и, видимо это уже традиция, BBC сделало на эту тему сюжет.
Это уже серьезно, так как эта сертификация как раз и должна исключать возможность таких атак!
Эффект этой атаки можно несколько уменьшить. если образ полосы на чипе будет отличаться от реального магнитного трека (iCVV)
И конечно эта атака не работает против зашифрованного offline и online PIN, что мало помогает, так как большинство карт предпочитают offline clear text PIN
На этот раз атаке подвергнуты сами чиповые терминалы, в которые встраивается миниатюрный "сниффер" - устройство прослушивающие диалог между терминалом и картой. С помощью такой "прослушки" можно узнать ПИН-код, если он отправляется на карту открытым текстом, а так же, для полноты, и считываемый с чипа образ второго трека!
Это уже серьезно, так как эта сертификация как раз и должна исключать возможность таких атак!
Эффект этой атаки можно несколько уменьшить. если образ полосы на чипе будет отличаться от реального магнитного трека (iCVV)
И конечно эта атака не работает против зашифрованного offline и online PIN, что мало помогает, так как большинство карт предпочитают offline clear text PIN
6 февр. 2008 г.
Взломан Chip & PIN? Ха!
С удовольствием посмотрел полный "дюдюктивный" сюжет BBC с живой демонстрацией relay-атаки на Chip&PIN и запись выступления одного из участников сюжета на конференции с более подробным рассказом о деталях, с вопросами из зала и с демонстрацией сокращенного сюжета BBC. Зал в восторге, аплодируют стоя!
"Атака" начинается с установки поддельного терминала (и ПИН-пада, в данном случае он встроен в терминал), который для начала перехватывает ПИН и... на этом можно было бы уже остановиться!
Проблема "фальшивых" ПИН-падов действительно существует и это простой и достаточно эффективный способ воровать ПИН-ы. Он требует предварительно сговора с кассиром (или "фальшивого" кассира или даже "фальшивого" магазина -- ведь вряд ли можно заменить настоящий терминал на фальшивый без ведома кассира, хотя... почему нет?), что наверное дороже, чем "подглядывание" ПИН с помощью камеры, но все же этот способ работает и уже даже был испытан в Турции (и еще и еще) и в Англии в 2006 году.
Что можно сделать зная ПИН чиповой карты?
Самый частый ответ -- воспользоваться украденной копией трека в любом магнитном банкомате (съездить для этого в Россию, например, или в Америку). Другая возможность -- воспользоваться той же копией в чиповом банкомате, поскольку fallback транзакции никто еще не отменял все будет работать (с большой вероятностью)! Копию магнитного трека в "фальшивом" терминале получить не сложно (в "настоящем" терминале для этого нужно чуть больше потрудиться, ведь копия трека "на чипе" может отличаться от магнитного трека).
Однако ребята, получив ПИН код, не остановились и затеяли весь это relay фактически "подключив" настоящую карту, вставленную в фальшивый терминал в кафе, к настоящему терминалу в книжном магазине. Фальшивый терминал напечатал чек на 5 фунтов, а настоящая транзакция была совершена на 50.
Что это меняет?
Мне кажется, с точки зрения жуликов -- ничего! Лишнее усложнение. Как только получили ПИН и трек деньги уже в кармане!
Почему же такое внимание?
Я думаю потому, что такая "замороченная" атака существенно меняет всю картину только для владельца карты. Судя по сюжету, для полных чиповых и ПИН-овых транзакций английские банки перекладывают всю ответственность на владельца карты! Отсюда я думаю и такой шум, ведь в остальных случаях владелец карты защищен от потерь законами. Банки же считая, что подделка чиповой карты невозможна, считают, что раз транзакция была полной чиповой и подтверждена ПИН-кодом, то в ней использовалась настоящая карта, а значит это проблема клиента -- следить мол надо за своей картой и ПИН-ом! Весь пафос сюжета похоже направлен именно на это.
Однако, вряд ли целью жуликов является украсть деньги именно у владельца карты, им все равно кто несет потери и специально стараться, чтобы насолить именно владельцу карты, а не его банку, никто не будет -- нет экономического смысла!
Так что на самом деле, в этой атаке продемонстрировано насколько уязвимым является ПИН в торговой сети, а весь relay происходит только от желание авторов куда-то применить свой протокол, который по их мнению решает проблему relay атак. (Ее то он может быть и решает, только вот есть ли сама проблема?)
Как же можно бороться с компрометацией ПИН?
"Атака" начинается с установки поддельного терминала (и ПИН-пада, в данном случае он встроен в терминал), который для начала перехватывает ПИН и... на этом можно было бы уже остановиться!
Проблема "фальшивых" ПИН-падов действительно существует и это простой и достаточно эффективный способ воровать ПИН-ы. Он требует предварительно сговора с кассиром (или "фальшивого" кассира или даже "фальшивого" магазина -- ведь вряд ли можно заменить настоящий терминал на фальшивый без ведома кассира, хотя... почему нет?), что наверное дороже, чем "подглядывание" ПИН с помощью камеры, но все же этот способ работает и уже даже был испытан в Турции (и еще и еще) и в Англии в 2006 году.
Что можно сделать зная ПИН чиповой карты?
Самый частый ответ -- воспользоваться украденной копией трека в любом магнитном банкомате (съездить для этого в Россию, например, или в Америку). Другая возможность -- воспользоваться той же копией в чиповом банкомате, поскольку fallback транзакции никто еще не отменял все будет работать (с большой вероятностью)! Копию магнитного трека в "фальшивом" терминале получить не сложно (в "настоящем" терминале для этого нужно чуть больше потрудиться, ведь копия трека "на чипе" может отличаться от магнитного трека).
Однако ребята, получив ПИН код, не остановились и затеяли весь это relay фактически "подключив" настоящую карту, вставленную в фальшивый терминал в кафе, к настоящему терминалу в книжном магазине. Фальшивый терминал напечатал чек на 5 фунтов, а настоящая транзакция была совершена на 50.
Что это меняет?
Мне кажется, с точки зрения жуликов -- ничего! Лишнее усложнение. Как только получили ПИН и трек деньги уже в кармане!
Почему же такое внимание?
Я думаю потому, что такая "замороченная" атака существенно меняет всю картину только для владельца карты. Судя по сюжету, для полных чиповых и ПИН-овых транзакций английские банки перекладывают всю ответственность на владельца карты! Отсюда я думаю и такой шум, ведь в остальных случаях владелец карты защищен от потерь законами. Банки же считая, что подделка чиповой карты невозможна, считают, что раз транзакция была полной чиповой и подтверждена ПИН-кодом, то в ней использовалась настоящая карта, а значит это проблема клиента -- следить мол надо за своей картой и ПИН-ом! Весь пафос сюжета похоже направлен именно на это.
Однако, вряд ли целью жуликов является украсть деньги именно у владельца карты, им все равно кто несет потери и специально стараться, чтобы насолить именно владельцу карты, а не его банку, никто не будет -- нет экономического смысла!
Так что на самом деле, в этой атаке продемонстрировано насколько уязвимым является ПИН в торговой сети, а весь relay происходит только от желание авторов куда-то применить свой протокол, который по их мнению решает проблему relay атак. (Ее то он может быть и решает, только вот есть ли сама проблема?)
Как же можно бороться с компрометацией ПИН?
- Сильно могло бы помочь отсутствие магнитной полосы на карте (как Visa V-Pay)
Вряд ли это возможно, чиповая миграция далека от завершения и даже от начала в некоторых странах. - Использование разных ПИН-кодов для чиповых и магнитных транзакций.
Два ПИН кода было бы кошмаром для владельцев карт! Но можно наверное просто не использовать ПИН в торговых терминалах. Нет ПИН кода, нет проблемы. - Запрет fallback.
Думаю это можно сделать хотя бы в банкоматах, но и это не спасает от жуликов, пока на рынке много не-чиповых банкоматов. Хотя от жуликов это не спасает эквайера, а банк эмитент и может быть его клиент будут защищены, если транзакция происходит в liability shift зоне.
Мне кажется это самая разумная мера. Запретить" можно либо перенеся ответственность на эквайера (он тогда сам их запретит), либо эмитентам сообща посылать отказы по таким транзакциям.
29 июл. 2007 г.
Как устроен билет Московского Метро?
Купил вчера (28.07.2007) билет метро Mifare Ultralight, номер 0024797406 на 10 проходов, "желтый ящик" говорит про него, что его надо использовать до 28.08.2007. Вот его содержимое:
04 E7 4E 25 D1 C4 02 80 97 48 00 00 00 00 00 00
41 87 50 17 A6 0D E4 16 37 1B C0 00 16 38 00 00
16 38 1E 40 0A 00 00 00 00 04 C1 43 00 00 00 00
16 38 1E 40 0A 00 00 00 00 04 C1 43 00 00 00 00
Насколько можно догадаться первый сектор
4187 -- не ясно, что это такое
5 -- бывает 5 бывает 6
0 -- может быть часть номера билета
17A60DE = 24797406 т.е. номер билета. (Не ясно начинается ли номер с 0?) Странно, если номер занимает не целое число байт.
4 -- не ясно, похоже на константу
1637 -- похоже на дату, дата изготовления билета (?)
1B C0 00 -- не ясно что такое, на всех билетах, которые я видел до сих пор -- константа
1638 -- похоже на дату, дата продажи билета (?)
00 00 -- не ясно, что такое
второй сектор (третий -- его резервная копия)
1638 -- дата первого использования, или дата начала действия билета, если билет новый
1E -- похоже на срок действия в днях (30) от даты продажи билета (?)
40 -- не ясно, что это такое, но при первом использовании превращается в 00, думаю, что "желтый" ящик именно по этому полю определяет, что билет новый и выдает другое сообщение ("использовать до ...")
0A -- количество оставшихся проходов
00 00 -- не ясно
00 -- бывает 01 на билетах 20 поездок
00 04 С1 43 -- похоже на MAC
00 00 00 00 -- не ясно
после первого использования в турникете 29.07.2007, второй сектор изменил значение на
16 39 1E 00 09 00 00 00 DB 0E F1 D5 00 00 00 00
интересно, что изменится при проходе завтра?
Превратится ли 1639 в 163A, что будет означать, что это дата прохода, или не изменится и тогда -- это дата начала действия билета и + 30 дней к ней -- срок окончания действия билета.
Новое значение "второго сектора"
16 39 1E 00 08 00 00 00 A1 46 F9 D4 00 00 00 00
что подтверждает, что дата 16 39 это дата первого прохода!
Видно так же, что кроме оставшегося количества проходов (стало 8) меняется и MAC или как там они его называют
Ясно, что билет можно "восстановить" в исходное значение, не видно что этому может помешать!
Скорее всего, система обнаружит подделку через некоторое время. Через час? Два? Сутки?
Надеюсь, что "MAC" включает в себя уникальный ID кристалла, иначе карту будет слишком легко клонировать!
Интересно так же. как система ведет себя если резервная копия трека отличается от основной... на магнитных билетах это одно время приводило к проблемам.
Надеюсь на Ultralight их нет, но с другой стороны зачем нужна копия? Что если оригинал говорит, что осталось 1 поездка, а копия, что осталось 10?
Все мои гипотезы легко проверить, одна беда -- я не пользуюсь метро! :)
Есть желающие помочь?
04 E7 4E 25 D1 C4 02 80 97 48 00 00 00 00 00 00
41 87 50 17 A6 0D E4 16 37 1B C0 00 16 38 00 00
16 38 1E 40 0A 00 00 00 00 04 C1 43 00 00 00 00
16 38 1E 40 0A 00 00 00 00 04 C1 43 00 00 00 00
Насколько можно догадаться первый сектор
4187 -- не ясно, что это такое
5 -- бывает 5 бывает 6
0 -- может быть часть номера билета
17A60DE = 24797406 т.е. номер билета. (Не ясно начинается ли номер с 0?) Странно, если номер занимает не целое число байт.
4 -- не ясно, похоже на константу
1637 -- похоже на дату, дата изготовления билета (?)
1B C0 00 -- не ясно что такое, на всех билетах, которые я видел до сих пор -- константа
1638 -- похоже на дату, дата продажи билета (?)
00 00 -- не ясно, что такое
второй сектор (третий -- его резервная копия)
1638 -- дата первого использования, или дата начала действия билета, если билет новый
1E -- похоже на срок действия в днях (30) от даты продажи билета (?)
40 -- не ясно, что это такое, но при первом использовании превращается в 00, думаю, что "желтый" ящик именно по этому полю определяет, что билет новый и выдает другое сообщение ("использовать до ...")
0A -- количество оставшихся проходов
00 00 -- не ясно
00 -- бывает 01 на билетах 20 поездок
00 04 С1 43 -- похоже на MAC
00 00 00 00 -- не ясно
после первого использования в турникете 29.07.2007, второй сектор изменил значение на
16 39 1E 00 09 00 00 00 DB 0E F1 D5 00 00 00 00
интересно, что изменится при проходе завтра?
Превратится ли 1639 в 163A, что будет означать, что это дата прохода, или не изменится и тогда -- это дата начала действия билета и + 30 дней к ней -- срок окончания действия билета.
Новое значение "второго сектора"
16 39 1E 00 08 00 00 00 A1 46 F9 D4 00 00 00 00
что подтверждает, что дата 16 39 это дата первого прохода!
Видно так же, что кроме оставшегося количества проходов (стало 8) меняется и MAC или как там они его называют
Ясно, что билет можно "восстановить" в исходное значение, не видно что этому может помешать!
Скорее всего, система обнаружит подделку через некоторое время. Через час? Два? Сутки?
Надеюсь, что "MAC" включает в себя уникальный ID кристалла, иначе карту будет слишком легко клонировать!
Интересно так же. как система ведет себя если резервная копия трека отличается от основной... на магнитных билетах это одно время приводило к проблемам.
Надеюсь на Ultralight их нет, но с другой стороны зачем нужна копия? Что если оригинал говорит, что осталось 1 поездка, а копия, что осталось 10?
Все мои гипотезы легко проверить, одна беда -- я не пользуюсь метро! :)
Есть желающие помочь?
Подписаться на:
Сообщения (Atom)