- PVSM.RU - https://www.pvsm.ru -

Удивительный мир транспортных карт Японии

Удивительный мир транспортных карт Японии - 1

Когда я был зимой в Японии, одним из самых удивительных для меня явлений этой страны оказалась невероятная система общественного транспорта. Она не только была эффективной и надёжной, но и турникеты на станциях работали подозрительно быстро. Турникеты лондонской подземки не сравнятся с ними по скорости работы с Google Pay и другими моими бесконтактными картами. В чём же причина? Я решил изучить, почему японская система транспортных карт (IC-карт [1]) так уникальна по сравнению с западными, и в процессе этого исследования узнал пару любопытных фактов.

Основы NFC

Near-field communication (NFC) — это набор протоколов, позволяющий двум устройствам общаться друг с другом без физического контакта посредством радиоволн с частотой 13,56 МГц (она определена в ISO/IEC 14443 [2]). Эта технология применяется во множестве сфер:

Постойте... разве защита MIFARE Classic не ужасна? Кто-то уже мог клонировать мой ключ-карту или забраться куда-нибудь даже без него?

Да, и ситуация хуже, чем вы думаете [12]. Именно поэтому эта технология считается устаревшей, и можно лишь надеяться, что MIFARE Classic не применяется в критичных с точки зрения безопасности местах.

Япония (и Азия в целом) любопытна тем, что у неё есть собственный тип NFC, по сути, на Западе не существующий: FeliCa [13] — это разработанный Sony стандарт, официально классифицируемый как NFC type F (MIFARE — это type A). На самом деле, FeliCa появился первым [14], его разработали ещё в 1988 году; MIFARE компании Philips (ныне NXP) появился в 1994 году [15]. Изначально FeliCa широко распространялся не в Японии, а в Гонконге, где его применяли в транспортных картах Octopus [16] уже в 1997 году. И только в ноябре 2001 года JR East начала применять FeliCa в своих транспортных картах Suica [17], а Rakuten — в своих картах Edy [18] (это название мне кое-что напоминает... [19]) После этого стандарт распространился во многих странах Азии [20], например, во Вьетнаме и Бангладеш. В этих странах они занимают ту же нишу, что и в Японии: используются в качестве бесконтактных карт с предоплатой и транспортных билетов.

В местах наподобие Гонконга и Токио пригородным сообщением пользуется множество людей, поэтому на турникетах станций возникают большие очереди. Поэтому Sony сильно вложилась в повышение пропускной способности своей технологии — карты FeliCa могут похвастаться скоростью передачи до 424 Кбит/с [21], благодаря чему скорость обработки на турникетах значительно выше [22], чем на Западе. Можно сравнить скорость прохождения через турникет в Лондоне [23] и в Токио [24] (см. обсуждение на HackerNews [25]) — в последнем случае пассажир буквально пробегает через турникет. Частично это связано с тем, что для транзакции достаточно лишь карты и самого считывателя — для выполнения транзакции считыватель не связывается с внешним сервером. IC — это карты с хранимой стоимостью [26], то есть стоимость хранится внутри них, а не в бэкенде, полностью контролируемом оператором. Кроме того, в карте хранится история последних транзакций, для считывания которой можно воспользоваться любым считывателем NFC, в том числе и в смартфоне [27]. Но эта модель хранения стоимости поднимает интересные вопросы о безопасности... к которым мы вернёмся чуть позже.

Также у этих карт есть функции, повышающие удобство пользования, например, устранение конфликтов — считыватель может распознавать, что одновременно считывает несколько карт FeliCa, и в этом случае предотвращает считывание:

Можно лишь недоумевать, как Philips, имея фору в 8 лет, умудрилась спроектировать карту, которая и медленнее, и менее защищённая, чем FeliCa? Не знаю, халатность ли это, экономия или что-то ещё, но это привело к реальным проблемам с безопасностью [28]Security through obscurity не работает. [29]

Osaifu-Keitai

Osaifu-Keitai [30] (saifu — «кошелёк», keitai — «мобильный») — это система, позволяющая использовать в качестве IC-карты телефон, имитируя Suica, Pasmo или любые другие карты. Похоже, уже люди давно путаются в FeliCa, IC-картах, Osaifu-Keitai и их связи с телефонами Apple и Google. Когда я начал изучать эту тему, во всём этом мне тоже было сложно разобраться, но я вёл заметки о своих находках. Кучу полезной информации я получил от FelicaDude (Reddit [31]Twitter [32]) — пропавшего несколько лет назад анонимного Интернет-незнакомца, похоже, обладавшего знаниями о работе FeliCa. Я не могу подтвердить эту информацию, но она кажется мне логичной; к тому же, вряд ли кто-то будет врать в Интернете, правда?

В современных смартфонах есть оборудование NFC. Чтобы телефон можно было сертифицировать, как поддерживающий NFC, он должен поддерживать NFC-A, NFC-B и NFC-F (FeliCa). Все поддерживающие NFC телефоны поддерживают и FeliCa. Благодаря NFC-F телефон может взаимодействовать с физической IC-картой. В этом можно убедиться при помощи приложения, например, Suikakeibo [27] — ниже показан скриншот с моего Xiaomi Redmi Note 13 Pro: я приложил к нему свою карту PASMO и считал хранимую стоимость и историю транзакций:

Screenshot of the Suikakeibo app on a phone, showing card value and recent transaction history

Однако поддержки NFC-F недостаточно для того, чтобы использовать телефон в качестве IC-карты. Для этого ещё требуется и поддержка Osaifu-Keitai. Изначально Osaifu-Keitai разрабатывалась NTT Docomo как функция фичерфонов [33] компании, позволявшая звонить по телефону и применять его как IC-карту. Позже её интегрировали в смартфоны благодаря использованию secure element [34], уже существующих в телефоне для других функций, требующих безопасного хранения криптографических ключей (Apple Pay, Google Pay, биометрической разблокировки). В современных телефонах есть всё необходимое для того, чтобы применять их в качестве IC-карт, но, вероятно, в secure element отсутствуют необходимые для этого ключи. Изготовители телефонов (Apple, Google), скорее всего, платят FeliCa Networks за каждый генерируемый и записываемый в устройство ключ (лицензирование или что-то подобное). Так как нет смысла генерировать ключи для устройства, которое не будет использоваться в Японии, в неяпонских моделях нет функций Osaifu-Keitai. Поэтому если даже активировать рут в телефоне и получить полный доступ к secure element, если в secure element телефона нет ключа, то вы не сможете использовать его в качестве IC-карты.

Уточнение: предложение о неяпонских моделях относится к Android; Apple встроила затраты на ключи в свои телефоны, поэтому во всех них есть функциональность Osaifu-Keitai. Система Osaifu-Keitai работает на всех современных iPhone, вне зависимости от рута и страны продаж.

Возможно, наряду с отсутствием ключей есть и другие причины недоступности функций Osaifu-Keitai в устройствах Android. Предполагаю, здесь есть ещё и проблем с лицензированием или патентами, но мне не удалось найти никакой публичной информации об этом, поэтому свои подозрения я ничем подтвердить не могу. Комментатор на HN [35] упомянул репозиторий GitHub [36], в котором, похоже, есть больше подробностей об этом.

Защита

Когда я узнал о том, что карта сама хранит свою стоимость, то сразу подумал, что это не может обеспечить полной защиты. Изучив вопрос, я пришёл к выводу, что на самом деле эти карты невероятно защищены, и меня поразило то, насколько хорошо они прошли проверку временем (с 1988 года, напомню!). Это свидетельство того, насколько качественно можно реализовать систему, если всё спланировать правильно изначально, а не притворяться, что скрытность — это безопасность [8] и не пытаться засудить тех, кто укажет, насколько ужасна такая система [37]. Мне не удалось найти никакой информации об успешных атаках на FeliCa, за исключением единственной статьи [38] с подробным описанием бага, использованного кассиром; впрочем, его всё равно поймали благодаря логам аудита и системе клиринговой компании гонконгских карт Octopus. Единственная реальная проблема — это проприетарность криптографии, вероятно, сокрытой под горой NDA, из-за чего её независимый аудит невозможен.

В целом, можно сказать, что IC-карты защищены от:

  • клонирования (ключи считать невозможно),

  • успешной атаки на другую карту (у каждой карты есть собственные ключи),

  • атак воспроизведением (в запросе-ответе генерируются уникальные для каждой сессии ключи).

Возможным вектором атаки мог бы стать эксплойт реализации IC-карт Apple. Если iPhone может имитировать IC-карту, то где-то в системе должен быть код, способный выполнять все необходимые процедуры handshake, ведь так? Однако ключи для этого handshake хранятся в Secure Enclave. Добраться до SE вы сможете, только если вы Моссад [39]NGO Group [40] или какая-то другая пугающая трёхбуквенная организация; а если вам это удастся, то:

  • вы сможете гораздо больше, чем просто подделать японскую транспортную карту,

  • вы, вероятно, заработаете миллионы в любой приятной вам валюте, нанявшись или продав уязвимость нулевого дня,

  • срок вашей жизни существенно снизится.

Единственный дополнительный вектор атаки — это сам считыватель. Записывающие на карты стоимость автоматы и турникеты, возможно, подвержены подобным атакам, но даже если провернуть её, то они (вероятно) отправляют логи транзакций на какой-нибудь центральный сервер аудита, и ваши шалости легко можно будет выявить, как аномалии. Именно так и произошло в статье, о которой я говорил выше. Как только вашу карту пометят, её ID, вероятно, добавляется в список подозрений, который синхронизируется между всеми терминалами считывателей под управлением оператора, а если считыватель обнаружит карту из списка, он сразу же отклонит транзакцию. Если вы особенно удачливы, то он может и вызывать полицию. Память под этот список у считывателей ограничена, поэтому, вероятно, можно сгенерировать миллионы карт, переполнить списки, а позже использовать одну из старых/новых карт без блокировок? Я просто предполагаю; понятия не имею, как это всё работает. Но идея всё равно интересная.

С офлайн-терминалами история другая: например, вендинговые автоматы обычно обслуживаются не операторами карт, а третьей стороной, использующей считыватель IC-карт оператора. Подобные автоматы, вероятно, не подключены к сети, не синхронизируют списки подозрительных карт и не отправляют логи аудита — вполне возможный вектор атак! К сожалению, из-за геометрических проблем [41] я не смог привезти домой вендинговый автомат, поэтому изучить это не могу.

Идеи на будущее

Поизучав FeliCa какое-то время, я придумал несколько идей на будущее.

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

Кроме того, можно изучить, почему конкретно FeliCa настолько быстрее. В чём заключаются физические основы? Есть ли возможность повысить скорость, чтобы для прохода через турникет требовалось меньше 100 мс? Это крайне далеко от сферы моего опыта, но если кто-то, обладающий подобными знаниями, сможет поделиться информацией или написать пост, то статья определённо выйдет интересной!

Я очень доволен тем, что узнал про FeliCa. Я даже близко не специалист в NFC, системах мобильных платежей, криптографии или кибербезопасности, но мне хотя бы одним глазком удалось заглянуть в этот необычный мир. Интересно, смогу ли я когда-нибудь применить эти знания где-то ещё?

Автор: interpres

Источник [42]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/nfc/425790

Ссылки в тексте:

[1] IC-карт: https://www.japan-guide.com/e/e2359_003.html

[2] ISO/IEC 14443: https://archive.ph/o/V8H5s/https://en.wikipedia.org/wiki/ISO/IEC_14443

[3] EMV: https://en.wikipedia.org/wiki/EMV

[4] Europay, Mastercard, Visa: https://www.nytimes.com/2015/09/24/business/smallbusiness/coming-soon-to-checkouts-microchip-card-payment-systems.html

[5] архив статьи: https://archive.is/0CEDX

[6] MIFARE DESFire: https://en.wikipedia.org/wiki/MIFARE%23MIFARE_DESFire_family

[7] изначально применялись MIFARE Classic: https://archive.ph/o/V8H5s/https://www.theguardian.com/technology/2008/jun/26/hitechcrime.oystercards

[8] «их защита... ужасна»: https://www.schneier.com/blog/archives/2008/08/hacking_mifare.html

[9] архив статьи: https://archive.is/GXBT

[10] системах контроля доступа: https://www.cdvi.co.uk/learn-about-access-control/what-is-access-control/understanding-mifare-credentials

[11] архив статьи: https://archive.is/TBCHL

[12] хуже, чем вы думаете: https://www.keysight.com/blogs/en/tech/nwvs/2024/08/27/security-highlight-backdoor-key-found-in-mifare-classic-cards

[13] FeliCa: https://archive.ph/o/V8H5s/https://en.wikipedia.org/wiki/FeliCa

[14] FeliCa появился первым: https://ja.wikipedia.org/wiki/FeliCa%23%E6%AD%B4%E5%8F%B2

[15] в 1994 году: https://www.sciencedirect.com/science/article/abs/pii/S1363412710000348

[16] Octopus: https://en.wikipedia.org/wiki/Octopus_card%23History

[17] JR East начала применять FeliCa в своих транспортных картах Suica: https://www.ejrcf.or.jp/jrtr/jrtr32/f20_shi.html

[18] Edy: https://archive.ph/o/V8H5s/https://en.wikipedia.org/wiki/Edy

[19] мне кое-что напоминает...: https://cyberpunk.fandom.com/wiki/Eurodollar

[20] стандарт распространился во многих странах Азии: https://www.sony.co.jp/en/Products/felica/business/data/FeliCa_E.pdf

[21] скоростью передачи до 424 Кбит/с: https://www.sony.co.jp/en/Products/felica/business/information/120405.html

[22] скорость обработки на турникетах значительно выше: https://atadistance.net/2020/06/13/transit-gate-evolution-why-gate-speed-matters

[23] прохождения через турникет в Лондоне: https://youtu.be/9TXkKDw3WWU

[24] в Токио: https://youtu.be/W6GrIQT58ak

[25] обсуждение на HackerNews: https://news.ycombinator.com/item?id=38710174

[26] карты с хранимой стоимостью: https://en.wikipedia.org/wiki/Stored-value_card

[27] в том числе и в смартфоне: https://suikakeibo.jp/

[28] реальным проблемам с безопасностью: https://www.wired.com/2010/12/unsmart-investments-in-smart-cards/

[29] Security through obscurity не работает.: https://www.cs.virginia.edu/~evans/pubs/usenix08/mifare.html

[30] Osaifu-Keitai: https://en.wikipedia.org/wiki/Osaifu-Keitai

[31] Reddit: https://www.reddit.com/u/felicadude

[32] Twitter: https://twitter.com/felicadude

[33] фичерфонов: https://en.wikipedia.org/wiki/Feature_phone#Japan

[34] secure element: https://en.wikipedia.org/wiki/Secure_element

[35] Комментатор на HN: https://news.ycombinator.com/item?id=44014573

[36] репозиторий GitHub: https://github.com/kormax/osaifu-keitai-google-pixel

[37] не пытаться засудить тех, кто укажет, насколько ужасна такая система: https://web.archive.org/web/20081006211233/http://news.cnet.com/8301-10784_3-9985886-7.html

[38] единственной статьи: https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=7dc1ba2595f961bb71d8a761554dd9143ac8606c

[39] Моссад: https://www.usenix.org/system/files/1401_08-12_mickens.pdf

[40] NGO Group: https://en.wikipedia.org/wiki/Pegasus_(spyware)

[41] геометрических проблем: https://en.wikipedia.org/wiki/Euclidean_space

[42] Источник: https://habr.com/ru/companies/ruvds/articles/929032/?utm_campaign=929032&utm_source=habrahabr&utm_medium=rss