Pull to refresh

Comments 164

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

Очевидно, что отдельные карты вскоре отомрут и будут полностью заменены телефоном. Но для этого должна быть разработана система, позволяющая загружать в телефону произвольные идентификаторы. Эдакая ключница для хранения приватных ключей. На практике это может выглядеть так:

Кассир: У вас уже есть наша бонусная карта?
Покупатель: Нет, давайте оформим.
Кассир: Тогда приложите телефон к считывателю.

И в этот момент в телефон загружается подписанный магазином ключ и сертификат. И в момент идентификации покупателю достаточно приложить телефон снова. Ключи могут хранится в телефоне подобно U2F токенам и синхронизировать между устройствами через какой-нибудь iCloud. В момент считывания терминал посылает отпечаток сертификата магазина, и если в памяти есть ключ подписанный этим сертификатом, то телефон отвечает подписанных хендшейком. Управление картами происходит через встроенное в ОС приложение. Картинки и описание карт загружаются автоматически по интернету из метаданных сертификата. Полагаю, что подобная система должна скоро появится.

А так отличный проект, удачи.
Отчасти согласен. На устройствах Android сейчас можно эмулировать карты с помощью HCE (Host-based Card Emulation) и многие производители СКУД предлагают свои приложения для эмуляции карты-пропуска. Однако это не очень удобно, потому что нужно каждый раз запускать приложение и ждать его полного запуска, чтобы открыть дверь. Это непростительно долго когда проходишь по десять раз в день туда-сюда. А в случае с ApplePay достаточно достать из кармана заблокированный телефон, положить палец на кнопку считывания отпечатка пальца и поднести к считывателю. Даже не требуется разблокировать телефон. С AppleWatch это сделать так же просто.

Согласен насчет универсальной системы хранения токенов в телефоне. Такая система бы решила множество проблем.
В связи со всеобщем увлечением использования телефонов с NFC как карт, хотелось бы напомнить 2 основных преимущества карты:
1. карта не может разрядиться
2. не все телефоны поддерживают NFC
карта не может разрядиться

Существует очень крутая технология о которой почти никто не знает потому что она не имеет коммерческого названия. Суть ее в том, что SIM-карта используется как secure element через NFC модуль телефона. Работает это по протоколу SWP (Single Wire Protocol, не путать с 1-Wire). Так вот оно работает даже с выключенным телефоном!

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

Однако смысла в ней мало: симка — это про мобильную связь.

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


Перевыпустить в офисе обслуживания оператора. Сказать «хочу симку с NFC». Правда в мелких салон часто небывает таких симок и нужно искать более крупный. В москве услуга называется Мобильный билет и поддерживается всеми операторами большой тройки: МТС, Мегафон, Билайн.

формально говоря, оплата происходит с отдельного счёта «мобильный билет», который по умолчанию автоматически пополняется со счёта мобильного телефона
автопополнение можно отключить, деньги закидывать в терминалах оплаты «тройки», только терминал должен поддерживать бесконтактное взаимодействие
не исследовал этот вопрос, возможно, у этой симки даже номер «троечный» есть, который можно пополнять всеми способами, доступными для «тройки»

а способ очень удобен для людей, редко пользующихся общественным транспортом — не надо каждый раз покупать билет для поездки раз в месяц, что особенно неудобно в наземном транспорте
плюс экономия, по умолчанию включён тариф «90 минут», что позволяет за 52 рубля в течении полутора часов прокатиться на 1 раз метро и на 1 раз наземном транспорте, и за 36 рублей только на метро
В том и штука, что мне антипаттерном представляется любой вариант, когда счёт в сотовой компании используется для оплаты сторонних услуг. Это не банк, и доверия сотовым компаниям ни на грош: они легко отмазываются, что списали деньги на основании отчёта «партнёра», но не могут объяснить, почему отчёту партнёра верят в принципе.

А что они под каждый тип услуг любят делать новый счёт — это у них некая мера защиты против жалоб, мол, раз счёт у тебя отдельный, то и деньги ты положил туда сознательно. У них у всего по мобильному номеру, даже у симки в модеме (на которой услуги звонков и смс запрещены).

Я бы такую функцию привязывал к отдельному счету в банке, а не в сотовой компании. Это как раз и есть функция банков. Но банки не спешат, точнее, им не симки интереснее, а выпуск платежных карт, со всеми вытекающими.
Есть (или был?) и другой вариант как минимум у Мегафона и МТС — комплект из симки и антенны на шлейфе. Вставляется в любой бабушкофон, если место под крышкой позволяет. Никто не знает, можно ли до сих пор таким разжиться?
www.megafon.ru/download/~ural/dogovora/instrukcia.pdf
У меня есть пару штук этих антенн, могу поделиться если нужно. На сколько мне известно, купить их уже нельзя. Правда работают они не очень хорошо — в автобусах срабатывают идеально а в метро иногда «ошибка чтения». Может и в метро более строгие тайминги, не знаю.
Вышлю такую антенну тому, кто напишет статью про сим-карты с NFC и Single Wire Protocol. Эта штука устанавливается как прокладка к сим-карте и позволяет к ней обращаться по NFC на телефонах где нет NFC модуля. Вообще можно прилепить антенну к сим-карте и запитать 3.3V и будет работать вообще без телефона.
image

Устройство называется gemalto n-flex v2.2 и оно достаточно редкое. Раньше МТС продавал его для сим-карт с банковской картой внутри. Сейчас его не достать в продаже. В устройстве есть маленький безкорпусный NFC чип залитый компаундом. Доступны какие-то контакты, назначения который выяснить мне удалось. Ни UART ни JTAG я там не нашел, хотя я туповат и может у кого-то получится это лучше.
image
Скорее всего его их там и нету. Там все те меже APDU команды шлются как на обычную симкарту/чип банковской карты. По одно проводному интерфейсу.
1-wire совсем не то же самое что SWP (single wire protocol)
пользуюсь «мобильным билетом» от мегафона практически с момента появления и хочу сказать, что слабым звеном в нём является мосгортранс, который завёз новые валидаторы (с большим цветным экраном) не воспринимающие мой телефон, как билет
и дело не в телефоне, с предыдущим была такая же петрушка, хотя он аж в официальном списке совместимых был
дико бесит, мосгортранс отвечает отписками, в ТП «тройки» ещё не обращался, но, думаю, они просто молча ткнут в список поддерживаемых телефонов, в котором моего нынешнего нет

в описании функций телефона её и не будет, NFC используется исключительно для общения с SIM-картой, вся магия в ней
SIM-карта чисто формально называется «NFC», на самом деле в ней специальный софт плюс хранилище для «билетов», таких же, как на «тройке»
говорят, можно туда записывать любые билеты, в том числе безлимитные на 1-3-12 месяцев, но аккуратно, потому что хранилище крайне ограниченное, может тупо не влезть
в описании функций телефона её и не будет, NFC используется исключительно для общения с SIM-картой

Не все телефоны, имеющие NFC модуль умеют взаимодействовать с SIM-картой по SWP. Так что наличие в телефоне NFC не означает поддержку таких SIM-карт.
Грамотно написанное для Андроида приложение эмуляции карты всегда наготове, так что никаких дополнительных манипуляций не требуется, а вот банковскую карту паролем или отпечатком всегда надо активировать.
Однако это не очень удобно, потому что нужно каждый раз запускать приложение и ждать его полного запуска, чтобы открыть дверь


Неправда, разарбатывал несколько HCE-приложений. Прелесть в том, что само приложение запускать не нужно. Достаточно, чтобы телефон был включен (не с погасшим экраном).

Не понимаю как это работает. Вот у меня есть приложение Кошелек с картой Тинькофф внутри. Чтобы включить эмулирование карты нужно зайти в приложение и нажать оплатить. Или в момент поднесения телефона к ридеру появляется попап с выбором какое из HCE приложений запустить?

Как правило, в настройках системы (Беспроводные сети -> Дополнительно -> NFC -> Бесконтактной оплата) можно выбрать приложение по умолчанию.
Ну и плюс в некоторых случаях нужное приложение запустится само, видимо, через intent filter — например, если приложить к телефону билет метро, откроется Яндекс.Метро в режиме чтения билета. У меня по крайней мере так.

Может ли HCE-приложение на android эмулировать mifare classic 1k карту? Без root? Находил то, что умеет это делать при наличии root, но только номер карты. Остальные данные — не умеет.

Можете, пожалуйста, поделиться ссылкой на приложения для эмуляции пропусков?

В целом, согласен с тем, что использование платежных инструментов для доступа — антипаттерн. Но если это решение, с которым согласны обе стороны (владелец объекта и посетитель) — то почему бы и нет. Если же это объект, доступ куда может получить посетитель «со стороны» (например, через процедуру оформления разового пропуска в терминале самообслуживания), то склонять такого посетителя к использованию банковской карты — точно не вариант.

Вы затронули больную тему с кучей «бонусных» карт всех возможных магазинов. Видел, что некоторое распространение получили мобильные приложения, которые позволяют вносить штрихкоды с таких карт, после чего предъявлять их в магазинах с телефона. В принципе, можно решать задачу доступа аналогичным образом, подключая к контроллеру оптический считыватель штрихкодов, QR-кодов и пр. Вполне рабочее решение. Особенно для разового доступа. И можно не ждать появления «правильной» технологии.

Конечно, для постоянного доступа главное, чтобы код не «сфотографировал» злоумышленник с экрана телефона. Но если есть такой доступ к телефону, думаю, у владельца телефона будут другие проблемы. Впрочем, можно пофантазировать с тем, чтобы код выдавался на телефон по геолокации при входе сотрудника в офис или что-то подобное.
Разумеется использование платежных карт не является у нас вариантом по-умолчанию. Это добровольный и сознательный выбор пользователя, которому более удобно прикладывать часы или телефон. В недоверенной среде я бы и сам не стал совать везде свою банковскую карту.
Можно ведь по принципу одноразового пароля. То есть QR код на экране генерируется на основании текущего времени и приватного ключа.
Кстати, отличная идея!
Если предположить использование такой схемы в каком-нибудь рабочем офисе, то главное тогда привязать ключ к конкретному телефону (например, к фиксированному серийнику или типа того), чтобы нельзя было его легко скопировать. Дело даже не в безопасности, а в том, что СКУД часто используется для учёта рабочего времени. И возможность копирования тогда позволяет «попросить Васю отметиться за меня». Хотя «авторизация по смартфону» и такой «обман», наверное, плохо коррелируют.

А если взять типичную 2FA-авторизацию по типу гугл-аутентификатора, и вместо циферного кода выдавать QR-код с этим циферным кодом?

Представьте сколько тогда будет занимать времени открытие двери. Остановиться, разблокировать телефон, запустить программу, сгенерировать пин, поднести экран к ридеру. Уверен что после пары раз вы возненавидели бы такую систему.

А вариант использовать мини-джек/Джек с небольшим чипом памяти, внутри которого ключ, и получать этот ключ через контроллер возможен?

Зачем изобретать i-button, если уже есть смарт-карты?
И можно вход на работу платным быстро сделать ;)
UFO just landed and posted this here

В идеальном мире можно было бы не заниматься такой ерундой.

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

Мне кажется, что это маловероятная схема мошенничества. Во первых почти всегда на картах установлен лимит списания суммы без PIN кода в размере 1000 рублей. То есть атакующий должен воровать по 999 рублей каждый раз.

Во вторых, для обработки платежа нужен свой собственный эквайринг.
Нельзя просто считать данные с карты и пойти потратить их в любом магазине, так как терминал «подсаливает» запрос и карта подписывает запрос вместе со случайными данными от POS терминала. То есть обработать подписанный картой хендшейк можно только этим же терминалом.

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

Откуда такая информация? Лично покупал ИБП за 39536 рублей, без всяких пин кодов, через PayPass.
Это настраивается в вашем банке.

Скажем так: при правильных настройках pos-терминала при любой покупке на сумму выше 1000 р должен запрашиваться пин-код для авторизации.
К сожалению, не все умеют и хотят правильно настраивать эквайринговое оборудование. С меня просили подпись при оплате покупки на сумму меньше 1000 р. Потому что так настроили криворучки из банка.

PayPass, вполне физическая карта MasterCard.
Хргрмр. Я бы бояться такой банки.
и зря :) пин/подпись/ничего (CVM лист) это не только настройка карты, но и терминала, большинство банков сейчас позволяют клиенту самостоятельно выставлять приоритет пин/подпись на чипе, а холивары на тему того — что же лучше длятся уже десятилетиями на профильных форумах и победителей не видно. Но если терминал например вообще не оборудован ПИН-падом, то операция все равно пойдет по подписи/без всего.

Если считаете что с ПИНом вам спится крепче — пожалуйста, пользуйтесь теми картами у которых ПИН в приоритете. Я напротив не хочу ни где и никогда палить свой ПИН потому что операции с ПИН вообще потом отбить нельзя.
Дело не в лимите списания. Никто так не делает: эмитент с радостью получит свои 15€ сверху за каждое представление о возврате платежа, а эквайер даже не подумает его оспаривать, так как слишком дорого будет потом арбитраж оплачивать. Для борьбы с такими атаками у всех эквайеров есть служба финмониторинга, и я ни разу не слышал, чтобы кто-то реально пытался такое провернуть.
оох, только сегодня у мня на глазах взрослая встревоженная тётенька-бухгалтер смотрела этот видосик на телефоне
надо ещё знать где карта, куда прижиматься, а карты ещё может не быть, если она в андроид/самсунг/эппл пэй, а телефон для этого должен быть разблокированным
проще и надёжнее кошелёк из заднего кармана/сумочки подрезать
Как осуществляется резервирование бд? Хранить её на сд-карте — так себе решение.
На объектах, где контроллеров более одного — каждый контроллер хранит копию базы данных. И они синхронизируют все изменения между собой в реальном времени. А потому, если какой-то контроллер (или его карта) и выйдет из строя, можно восстановить базу с другого контроллера в сети. В реальности, конечно, кроме контроллеров есть ещё и «серверные» узлы, где хранятся данные.

С контроллера БОРЕЙ можно выгрузить базу данных пропусков, владельцев и пр. в виде бинарного файла. В случае данного объекта, где предполагаю, пропуска выдаются не так часто, наверное, проще всего периодически выгружать базу (например, за раз в неделю) через HTTP API и сохранять её в облако.

Вообще, наши потребители почти не сталкиваются с выходом SD-карт из строя. Мы контролируем нагрузку на SD-карту и используем Industrial SD карты со SMARTом — можно следить за износом карты. Чаще карты воруют монтажники просто пропадают на этапе пусконаладки объекта :D
каждый контроллер хранит свою БД, согласно которой управляет устройством
контроллер с картой удобен тем, что может быть полностью автономным, питаться от аккумулятора и получать данные с этой карты — подошёл с ноутом, выдернул карту, залил свежий список, пошёл дальше
так умеют далеко не все, обычно требуют подключения RS-232/485 или ethernet и хранят свои данные на распаянном флэше или типа того, на серваке же лежат и изменяются данные всех контроллеров
Чтобы избавиться от кучи разных карт, придумаем ещё одну карту!
Поскольку вы используете открытую информацию с карт, то эту информацию чрезвычайно просто скопировать/подделать. Фактически, все ваши ключи являются скомпрометироваными и использование вашей схемы позволительно лишь в случаях ПОЛНОГО пренебрежения безопасностью. Мне кажется, этот момент должен быть явно описан и выделен в тексте, дабы не вводить людей в заблуждение.
Мы используем только последние 10 цифр номера карты. С этой информацией нельзя сделать ничего. Какие ключи по-вашему это компрометирует?
Это компрометирует ключ от вашей двери, поскольку эти последние 10 цифр можеть прочитать/сэмулировать любой.
На эти вопросы я ответил в последней главе FAQ. Тем более в случае с ApplеPay, подсмотреть номер вы не сможете. Но если вы расскажите как будете эмулировать EMV карту на примере, я буду очень признателен.
То есть для атаки на нашу систему вы разработаете собственный аппаратный эмулятор карт ISO 1443a/b? Наверное проще, все же, будет пролезть в окно.
Не обязательно аппаратный, можно программный. И совершенно не обязательно эмулировать весь функционал EMV, достаточно эмулировать одну единственную функцию, которая отдает открытые данные. 10-15 строк кода, не считая бойлерплейта.
Буду признателен, если вы напишите такой эмулятор. А еще, желательно, с возможностью загрузки произвольных дампов.

Кстати, android hce уже умеет эмулировать 14443A или только 14443B?
> Буду признателен, если вы напишите такой эмулятор. А еще, желательно, с возможностью загрузки произвольных дампов.

Любой каприз за ваши деньги =)
По-моему, изначально всегда как раз A был,
Mifare это A как раз.
Буду признателен, если вы напишите такой эмулятор. А еще, желательно, с возможностью загрузки произвольных дампов.


Да таких полно на гитхабе. И в доках андроида написано, как эмулировать. Отвечать правильно на запрос apdu-команд нет пробелмы особой. И дампы загружать тоже. Поэтому я скептически на Ваше решение тоже смотрю. Тут работы на полдня, вся security through obscurity — пройтись сниффером один раз, чтобы понять, какие команды запрашиваются. Да даже для дуальной Java-карты можно написать простенький апплет. Хотя тас-смартфон проще для этих целей заюзать
Согласен. Безопасность — это всегда поиск грани между ценностью защищаемого объекта и стоимостью взлома. Кстати, с определённого момента всё вообще упирается в человеческий фактор. И с обычными mifare картами проще отобрать эту карту у сотрудника в тёмной подворотне. Об этом хорошо писал Брюс Шнайер в книге «Секреты и ложь. Безопасность данных в цифровом мире». Как-то так:
В 1994 году французский хакер по имени Антоний Зборальски позвонил в вашингтонский офис ФБР и представился представителем этой организации, работающим в американском посольстве в Париже. Он убедил собеседника на другом конце провода, и тот объяснил ему, как подключиться к системе телеконференции ФБР. Его звонки за последующие семь месяцев стоили ФБР 250 000 долларов.
Когда в 2000 году Кевин Митник (наверное, самый известный хакер в мире) давал показания в Конгрессе США, он говорил о манипулировании людьми: «Нападения этого рода были столь успешны, что мне редко приходилось обращаться к техническим средствам. Компании способны истратить миллионы долларов на технические средства защиты, но все это будет напрасно, если можно позвонить по телефону и убедить кого-нибудь сделать на компьютере нечто, что ослабляет защиту или открывает доступ к интересующей информации».
Но, если исходить из вашей логики что поскольку в большинстве случаев массовые дешевые СКУДы используют для идентификации открытый UID карты (даже если и СКУД, и карты поддерживает криптографические функции), то да, ваша система ни чем не хуже и не лучше остального гавна.
Каждой задаче — своё решение. Забивать гвозди микроскопом можно. Но для этого есть молоток. Так и тут — для простого объекта, риски проникновения на который не так высоки, подойдёт уровень «массовых дешёвых СКУД». Для аэропорта или атомной станции — нет. И в данном случае задача стоит на уровне «массового дешёвого СКУД». А предложенное решение даёт преимущество: не надо заводить отдельную пластиковую карту (как в остальных «дешёвых СКУД»).
А также, исключается необходимость ставить сервер с софтом, обслуживать то и другое, и учить кого-то этим всем пользоваться.
Тут есть одно «но». Отсутствие сервера обусловлено использованием контроллера БОРЕЙ с полноценным процессором на борту, что наверняка сильно сказывается на его стоимости по сравнению с «безмозглыми» аналогами. Если у вас 1 дверь, то это идеальный вариант. А если у вас 10 или 100 дверей, то я сильно сомневаюсь в финансовой целесообразности такого решения.
Есть масса «безмозглых» аналогов, за которые просят сопоставимые, а порой и большие деньги. Как-то же они продаются? :)
Вопрос финансовой целесообразности, как правило, это всегда не только и не столько цена контроллера.

На этих контроллерах есть системы на несколько сотен дверей.
На официальном сайте я не увидел ценника, поэтому строю свои предположения дедуктивным методом. Может быть вы подскажете его стоимость?
Сори за резкость, не успел отредактировать. Ничего личного, ни в коем случае не хотел вас обидеть. И спасибо за статью, оборудование мне понравилось настолько, что захотелось пощупать.
Последние 10? тоесть бОльшую часть значимого номера карты? напомню что первые 6 цифр это вполне общедоступный BIN
посмотрите как маскируют карты в банковских приложениях
Первые шесть цифр в номере карты одинаковы у всех карт этого типа этого банка. Фактически Вы читаете и храните полный номер карты. :(
P.S. Выше уже об этом написали.
Вот две одинаковые визы альфабанка.
image

Ну и допустим вы атакующий и смогли похитить нашу базу данных. Напомню, в ней нет различий между идентификаторами Тройки и EMV карт. Какие ваши дальнешие действия? Что самое ужасное вы сможете сделать с этой информацией при самом удачном для вас сценарии?
Это разные карты, на разных продуктах. С такими же точно BINами от сотен до десятков тысяч карт. Элементарный подбор всех BIN, выданных на Россию с контролем по коду восстановит номера карт, которые, кстати, в разных банках вовсе не обязаны быть разными (что будете делать если пришла не уникальная карта? В базу надеюсь двум разным людям один ID не запишите?). Есть операции, для которых одного только номера достаточно для подлимита, даже expiration date не нужен.
Есть операции, для которых одного только номера достаточно

И что же это за операции?
Возможно, покупка на Амазоне.
Точно уже не могу сказать, но у меня был случай, когда ни имя, ни CVV не спрашивали. Нужен ли был срок действия — не помню.
режим называется MOTO — Mail or telephone order. Дата стухания нужна :)

Срок действия нужен был даже тогда, когда не было этих ваших интернетов, компьютеров было мало и они были очень большими. "Оффлайновые" покупки делались через ручной импринтер снятием слипов (такой многослойный бланк с копирками, под давлением на нем остаются реквизиты карты — именно поэтому они и выдавлены, и именно поэтому процесс выпуска карт называется embossing), а "онлайновые" (card not present) — бумажной почтой или по телефону.

Достаточно много их. Перечислять не буду, незачем кардеров плодить и так хватает.
От них не защитится иначе как не светить номером карты налево/направо. Если уж на то пошло срок действия тоже вычисляем, особенно легко если в процессинге персонализацию ведут без гаммирования, монотонным увеличением счетчика.
Запрет хранения номеров карт в PCI DSS не просто так…
А если номера карт хранить нельзя, как все сервисы от icloud до steam хранят реквизиты кредитки и списывают деньги самостоятельно?
Для этого есть отдельные схемы проведения рекуррентных платежей, например, однажды прошедшая успешно транзакция может быть проведена повторно без ввода данных платежной карты, например, по идентификатору транзакции.
Также для них никто соответствия PCI DSS не отменял. Храни, но защищай одним из способов:
* шифрование
* маскирование
* токенизация
* хэширование

Про рекуррентные платежи все так. Что касается способов защиты — это применимо к номеру карты и сроку действия, а вот CVV хранить нельзя вообще ни при каких условиях.

Если только ты не эмитент карты и не можешь работать без CVV2 =)

А так, все верно. Просто в предыдущем комментарии речь шла именно о PAN.

Отдельное шифрованое хранилище, в скоупе PCI DSS, половинки ключа шифрования вводятся разными людьми на старте сервиса, CVV не хранятся, банк-эквайрер одобряет для отдельных платежных сервисов оплату без CVV.

У iCloud и Steam обычные рекурренты (новый платёж с привязкой к старому). У Стима нет своего PCI DSS, подозреваю, у Эппл тоже, все пользуются услугами сторонних PSP.
В PCI DSS как раз номера можно хранить в зашифрованном виде, нельзя хранить CSC (опять же с некоторыми оговорками). Но можно хранить т. н. синонимы карт.
Все операции, которые антифрод эквайера посчитал безопасными. Критерии могут быть разными, вот примерный список: MCC (merchant category code) продавца, сумма, «похожесть» операции на предыдущие, история платежей с устройства, с которого совершается платёж, геопозиция, оборот продавца. Для крупных ритейлеров а-ля 6pm.com ваш chargeback на 50$ никто не заметит и спишет в чистый убыток.
Учитывая, что первые 6 цифр — это код банка, подавляющее большинство карточек выпущено всего несколькими банками, а в числе последних 10 цифр имеется ещё и контрольная сумма, зная последние 10 цифр, вы знаете все 16 цифр с вероятностью, близкой к 100%.

Upd. Сорри, про это уже написали
Подобрать первые шесть цифр номера очень легко перебором и проверкой по алгоритму Луна, PAN достаточно для оплаты в некоторых магазинах.
Приведите пример, пожалуйста. А то все говорят, что такие есть, но их никто не видел.
Магазины? Навскидку 6pm.com, многие партнеры Амазона, торгующиеся на его площадке, с низкофродовыми товарами (обычный ритейл в первую очередь).
Тоже обратил внимание, что безопасность от клонирования карт в предлагаемом решении не высока. Хотя с другой стороны на российском рынке все плохо с решением которые защищены от клонирования. Чтобы найти тех производителей которые работают с mifare plus в sl3 нужно нехило времени потратить.
А как же HiD iClass? Вроде как это самое доступное решение из достаточно безопасных. Хотя писали что он тоже сломан, вроде бы. Сам не пользовался.
По вызову комманды GET PROCESSING OPTIONS карта инкрементирует Application Transaction Counter, который по достижению лимита 0xFFFF или 0x7FFF безвозвратно заблокирует приложение… т.е. уничтожит карту. В итоге получаем нецелевое использование платежного приложения которое уменьшает срок жизни карты.

Вцелом чтение и манипулирования PAN или TRACK в открытом виде и не в платежном терминале (и не следуя инструкциям PCI/PA-DSS) компроментирует важные платежные реквизиты владельца карты. Заодно вызывая повышенный интерес взломать данное решение.

APDU-команды (что они значат вообще? Хз, нужно прочитать)

Это комманды ReadRecord. GET PROCESSING OPTIONS в ответе возвращает AIP и AFL. ALF (Application File Locator) содержит данные о рекордах, которые находятся на карте.
По вызову комманды GET PROCESSING OPTIONS карта инкрементирует Application Transaction Counter, который по достижению лимита 0xFFFF или 0x7FFF безвозвратно заблокирует приложение


Спасибо, не знал об этом. Впрочем, полагаю что 65 или 32 тысячи хватит всем и карта истечет раньше чем этот лимит исчерпается. Если проходить в дверь по 20 раз в сутки без выходных, получается всего 7300 проходов в год.

Вы, кстати, не знаете как часто обновляются данные в токенах ApplePay и прочих? Присходит ли это чаще чем expire date в них?
В случае обновления данных пользователя, происходит перевыпуск виртуальной карты ApplePay. Если я верно понял вопрос.
Но у apple pay ещё на каждую инициализацию запроса на оплату, создается еще и сессия, которая живет около получаса.

>>Если проходить в дверь по 20 раз в сутки без выходных, получается всего 7300 проходов в год.
У андроид и эппл Срок жизни виртуального счёта дают большой, если создать его сейчас то выдадут до 2031 года :)
В случае обновления данных пользователя, происходит перевыпуск виртуальной карты ApplePay. Если я верно понял вопрос.

Коллеги высказали предположение, что данные виртуальной карты в ApplePay может меняться чаще, чем данные привязанной карты.

у apple pay ещё на каждую инициализацию запроса на оплату, создается еще и сессия, которая живет около получаса.

О какой сессии идет речь, не понимаю?

У андроид и эппл Срок жизни виртуального счёта дают большой, если создать его сейчас то выдадут до 2031 года :)

Это так, но когда привязанная к icloud аккаунту карта истечек по expire date и будет привязана новая, то виртуальная карта тоже перевыпуститься. То есть полагаю, что эта дата не может быть больше даты истечения привязанной карты.
>>не может быть больше даты истечения привязанной карты.
Это интересный вопрос. Так как привязывал карту до 19, а выдало дату счёта до 31 :)
>>О какой сессии идет речь, не понимаю?
До сканирования отпечатка доходите?
Если да. То перед тем как показать попап, устройство делает запрос на сервера Apple и создаёт платёжную сессию, далее данные передаются в iТач и отрисовывается «поп-ап» с просьбой подтвердить отпечатком.
Следовательно ещё вопрос, если нет мобильного интернета, то оно будет работать?
UFO just landed and posted this here
То перед тем как показать попап, устройство делает запрос на сервера Apple и создаёт платёжную сессию, далее данные передаются в iТач и отрисовывается «поп-ап» с просьбой подтвердить отпечатком.
Следовательно ещё вопрос, если нет мобильного интернета, то оно будет работать?

Не понимаю откуда вы это взяли. ApplePay работает без интернета.
Ух ты. Значит он лезет только если есть инет. а если нет, то есть какое то защищенное хранилище которое время от времени синхронизируется :)
Ну я писал клиент для пея… ну и ради интереса посмотрел фидлером как оно работает при оплате с телефона. могу чуть по позже скинуть адреса куда лезет :)
Ничего не синхронизируется: Apple Pay в оффлайне генерирует криптограмму, которую и отправляет. Авторизацией является ваш отпечаток пальца, которому МастерКард (и только МастерКард) доверяет как введенному пин-коду. Про ApplePay и Visa отдельный разговор.
Расскажите лучше, всегда один и тот же ли номер карты вам показывает Apple Pay? Вроде там на каждую транзакцию сгенерируется новый PAN из определённого пула номеров.
За все время тестирования показывало один. Номер сменился только истечения карты к которой был привязан ApplePay. Помониторю этот вопрос и сообщу.
не гарантированно один — токен генерируется на уровне платежной системы (визы/мастера), к нему создаются Limited Usage Keys — ограничители активности токена, которыми опять же таки управляет платежная система.
Токенов под карту можно привязать сколько хочешь, но в общем случае даже привязка старой банковской карты к новому устройству породит новый токен.
должен отдельно поддерживать Apple/Android Pay, поэтому пользователи предпочитают искать на кассе специальную пиктограмму, чтобы быть уверенным, что их платежный инструмент поддерживается.

Не без основательно. Apple/Android Pay, имеют разную структуру данных в криптоновой области :), но да, данные там одинаковые.
И еще Apple Pay ecdsa-with-SHA256 1.2.840.10045.4.3.2
Android Pay prime256v1
Но насколько реальна ситуация, когда POS-терминал работает с PayPass/PayWave но не работает с ApplePay?
в магазине в нашем доме терминалы принимают PayPass/PayWave и ApplePay, на GooglePay вопросительно пищат и ничего не делают
вполне реальна, это зависит от процессинга, а не от терминала
Был у нас в банке «кампусный» проект — использование банковской карты в качестве пропуска, читательского и даже в перспективе электронной зачетки. Не взлетел. Не хотят люди свою банковскую карту прикладывать, вплоть до полного отказа от нее. Даже не смотря на то, что там был не NFC а MIFARE эмуляция полноценной 1К карты.
И это технический ВУЗ, мы лекцию читали, рассказывали о том, что прочесть эмбоссированные на карте данные в торговой точке проще чем на проходной ВУЗа, причем не очень сложно вместе с CVN.
Читать же PAN это вообще за гранью правил, платежное приложение может его и не отдавать или вовсе заблокировать карту.
Прелесть нашей системы в возможности выбора. Хотите используйте карту которую вам выдали, хотите Тройку, хотите ApplePay.
Проект безусловно интересный, но немного запоздал, ИМХО. Сейчас если уж ввязываться на серьезную аутентификацию то с защитой от клонирования статики NFC карт. А это прилично глубже чем просто статику прочитать, в чужое приложение не влезть со своими данными.
Если бы я проектировал стандарты таких вот смарт-карт, я бы сделал что-то вроде:
  • Карточка — это смарт карта или смартфон
  • КомплектКлючей — набор криптографических ключей для шифрования и цифровой подписи произвольных данных;
  • на Карточке доступен набор изолированных Ячеек для КомплектовКлючей;
  • каждая Ячейка защищена еще одним ключом (назовем его ДоменныйКлюч). не зная который, терминал не может «просить» карточку оперировать Ячейкой.
  • специальный пишущий терминал способен занять ячейку, разместив или сгенерировав в ней КомплектКлючей, защищенный ДоменнымКлючом; для этого понадобится ввести pin-код Карточки или знать МастерКлюч эмитента карточки (мастер-ключ нужен для массовой прошивки карточек без ввода pin)
  • чистая (не активированная) Карточка может допускать установку произвольного мастер-ключа и пин-кода;
  • Терминал может «попросить» Карточку подписать, зашифровать или расшифровать что-то соответствующим ключом, к которому Терминал «знает» ДоменныйКлюч;
  • каждая Ячейка может содержать дополнительный небольшой набор открытых и закрытых данных. Открытые данные доступны всем, закрытые только владельцам ДоменногоКлюча;
  • ПО карточки должно поддерживать «луковое» шифрование всех запросов к своим Ячейкам, чтобы их можно было проводить в небезопасных сетях через шифрованные туннели;

Идеально, если бы в такую Карточку можно было сагрегировать себе все необходимые банковские, скидочные, бонусные и прочие смарт-карты, а также карты оплаты метро и пропуски.

С таким стандартом можно было бы иметь мастер-карту, где хранились бы зашифрованные бэкапы всех КомплектовКлючей и кучу обычных Карточек, куда слиты read-only Комплекты для операций.

Ну что, сколькиколёсный велосипед я только что «изобрёл»? Покритикуйте меня
Добро пожаловать в мир JavaCard ;-)
Javacard бывает бесконтактной? А еще свою джавакарту не получится забекапить в какой-нибудь icloud и синхронизировать с новым телефоном.
А по-вашему банковские бесконтактные карты это что такое? Да, есть нативные реализации, но чаще грузится Java-апплет на Java-карту
В современных картах с чипом практически всегда (или всегда) есть Java-апплет от ПС, плюс один или более апплетов от эмитента. Например, могут быть кобрендовые карты, где вместе с апплетом эмитента стоит апплет партнёра (типа карт РосБанка для Окея).
Вы это мне зачем рассказываете? И не обязательно java-карты. О чем я выше написал
А где эти аплеты видны? Это какой-то отдельный идентификатор отличный от AID?

UDP: И еще расскажите где можно достать чистые java-карты простому смертному, еще лучше бесконтактные.
практически у любых производителей банковских карт можно заказать — Новакард, Алиот, Розан, Ситроникс и т.д.
На сколько я знаю, там везде: цена по запросу, мы вышлем вам коммерческое предложение, с физлицами не работаем, заключите договор, подпишите NDA, минимальная сумма заказа сто тыщ милионов рублей.
На счет работы с физ лицами не скажу, но маленькие партии на пробу лет 7-9 назад продавали. но это карточные топы в рф, вероятно должны быть и ребята поменьше (тот же Ситроникс раньше сам ходил искал — кому бы карты свои продать)
Бывает, конечно! Бесконтактные банковские карты, например. И можно забекапить. Но с поправкой: СВОЮ джавакарту. Которую вы лично преперсонализировали. И сами писали апплеты и генерировали ключи. Хотя есть такие вещи как Fidesmo и сколько лет уже находящийся на последней стадии VivoKey.
У меня проблема СКУД решена более радикально — чип-импланты ;-)
Считыватели em-Marine также считывают определенные домофонные ключи (proximity). Я некоторым коллегам прописывал в системе второй ключ (от дома) по той же причине: не носить дополнительные карточки.

Картинка
image
Я давно мечтаю чтобы офисы открывались пальцем или глазом… Это так сильно дорого?
Биометрические СКУД-ы не такая редкость. Но они не так удобны из-за бОльшего времени считывания. Иногда отпечатки пальца считываются не с первого раза и нужно долго теребить считыватель прежде чем он успешно прочтет палец. Еще они пачкаются и их нужно регулярно протерать. Карта же считыватется всегда однозначно и быстро.
Если говорить про отпечатки пальцев, то цена подобного считывателя российского производителя — примерно два-три десятка тысяч рублей (то, что я нашёл сейчас в сети). Несколько дороже, чем считыватель карт. Но на самом деле, ограничения обычно в другом. Во-первых, не уверен, что биометрия допускается как единственный фактор (точно не знаю). Во-вторых (реальная техническая проблема) — поиск по базе отпечатков намного более трудоёмкий, чем поиск по номеру карты. Каждое считывание пальца (или руки) даёт уникальную свёртку, которую надо сопоставить с образцами. Причём не по точному совпадению, а по некоторому порогу «близости». И такие алгоритмы — это совсем не O(logN).

Если пропусков в системе 100 — всё быстро. А если десять тысяч, то реальное время просто не достижимо даже на мощных контроллерах. А если ставить по мощному серверу на каждую дверь, то такой СКУД становится просто золотым.

Поэтому, биометрия всегда является вторым фактором к карте или пинкоду (по крайней мере, из нашей практики). Сначала считываем первый фактор, а потом уже просто «сверяем» отпечаток с данными в пропуске 1-к-1.

p.s.: ну и заводить биометрические пропуска — это не пластиковые карточки по паспорту выдавать. Обычно биометрию используют на объектах повышенного уровня ответственности, типа объектов транспортной безопасности (аэропорты и пр.).
Используем для входа в офис контроллер Smartес — разумная цена, в пределах 150$
умеет отпечатки + бесконтактные карты,
также есть ethernet и реле для исполнительного механизма замка.
Что-то не гуглится. Можно ссылку?
биометрия не должна использоваться для аутентификации в качестве секрета, только как ID
На скрине Telegram бота по команде "/add 2340672342 Герман СухофруКТов" заводится пропуск на Германа СухофруТКова. На втором конце человек?
Это нарисованный скриншот а не реальные данные, видимо ошиблись.
У нас в офисе такой замок — ironlogic.ru/il.nsf/htm/ru_eurolockeht
Монтируются практически в любую дверь. Программировать можно любые карточки — мы использовали карточки БЦ, которые блокируют основной вход в БЦ.

У них есть модули, которые позволяют подключить замок к сети.

Мы хотим сделать Телеграм-бота с авторизацией, который будет открывать дверь, если сотрудник забыл карточку.

А у Xiaomi есть потрясный замок тоже — Aqara ZigBee Smart Door Lock
Программировать можно любые карточки — мы использовали

Ага
Чтение идентификаторов: EM-Marine, HID ProxCard II, Temic

То есть все также клонируй в любом ларьке.
Мы хотим сделать Телеграм-бота с авторизацией, который будет открывать дверь, если сотрудник забыл карточку.

Есть такое. Бот на ESP32 (ESP8266), может управлять уймой нагрузок (в том числе управление замком). Умеет рассылать состояние. Опасность видится в том, что Телеграмм могут заблокировать, поэтому сейчас доделывается собственное приложение с авторизацией однократным паролем. Хотя для большинства небольших организаций вполне достаточно простого GSM контроллера, открывающего замок если номер телефона с которого на него позвонили прописан в базе.
Прям очень круто решение с точки зрения UX, вот молодцы вообще.

Есть один нюанс. В РФ не актуален. Но вот в Австралии например банк несет ответственность за воровство денег. Если кто-то украл у меня деньги с карты и банк не может доказать что я был в этом виной — банк возвращает все деньги. Вернее он сначала возвращает, потом начинает расследование и потом если только находит доказательства того, что деньги уплыли по моей вине — они требуют денег назад. Технически за это платят страховые, поэтому там какие-то смежные отделы у них существуют.

Я с этим сталкивался три раза (частое вообще явление). Один раз с оффлайна украли: украли карту, перевыпустили удаленно сим-карту, сбросили пин с помощью СМС. Два раза как-то онлайн утекли данные. Но все три раза банк вернул мне все деньги. Вот если банк/страховая найдет вашу систему и узнает что пользователь добровольно туда добавил свою карту — он не будет разбираться в деталях. Просто скажет что вы сами слили данные по карте третьей стороне и используя ИХ карту не по назначению. А карта является собственностью банка и сценарии использования карты прописаны в договоре.
Вообще-то, в РФ это работает точно так же.
Вообще-то, в РФ это работает точно так же.

В РФ нет Zero Liability Policy, банки НЕ возвращают деньги безусловно и сразу если холдер отказывается от операции. Вначале будет расследование — претензионный цикл, если в результате что то удастся отбить, то вернут. А если нет и клиент не VIP то скорее всего отправят в «сам виноват карту засветил». Но самое гадкое это подлимитные оффлайн операции по номеру карты. Особенно если денег на счете нет, ты попадаешь в теховер с неслабыми процентами. Подлимиты практически невозможно опротестовать а еще сложнее начисленные проценты за «пользование деньгами» сторнировать.
Не, у меня тоже не раз бывали и фроды, и ошибочные операции по карте (ресторан повторно списал ту же сумму спустя месяц), банк немедленно откатывал операцию, возвращал деньги, и после этого разбирался уже сам. Я не VIP, обычная зарплатная виза.
Обычный ресторан не может повторно списать спустя месяц. У него данных карты физически, а были бы все равно у ресторанов нет права на CNP (card not present) операции. Банк-эквайер мог финдоки повторно выгрузить, такое бывает к сожалению, но в этом случае банкам немедленно отправляется уведомление «повторное представление» и они откатывают операцию. А вот если прокатная контора спустя месяц пришлет списание, там никакой автоматики не будет. Или платная дорога где нибудь в США тоже без разборок скорее всего не обойтись. Ну или банк работает себе в минус.
Не знаю, кто именно там был виноват, просто пришло смс, как будто я в ресторане расплатился, и сумма была до копейки как за месяц до того. Как и с фродами, пришлось прийти пешком в банк и заполнить заявление, после чего сотрудники банка мне сказали, что дальше это их проблемы, и попрощались.
Подлимиты на то они и подлимиты, что их сумма меньше минимальной суммы для опротестовывания.
CVV2 (англ. card verification value 2) — трёхзначный код проверки подлинности карты платёжной системы Visa. Другие платёжные системы имеют схожие технологии, к примеру аналогичный защитный код для карт MasterCard носит название card validation code 2 (CVC2), защитный код для платежной системы НСПК МИР получил название card verification parameter 2 (CVP2). Наносится на полосе для подписи держателя после номера карты либо после последних 4 цифр номера карты способом индент-печати.
Цифра 2 в названии кода вызвана тем, что есть и «первый» защитный код, используемый для верификации в транзакциях с физическим использованием карты. CVV/CVC-код записывается на магнитную полосу.
Взято с https://ru.wikipedia.org/wiki/CVV2.
Таким образом, CVV или CVC — зависит от платёжной системы.
На карте CVC-код указывается, а не CVV.

Это разные названия одного и того же у разных карточных систем.
У MasterCard CVC (Card Verification Code). У Visa CVV (Card Verification Value). И т.д. Поэтому без указания платежных систем принято указывать CVN
Вот они дурачьё… Наплодили терминологии.
потому что там все вдоль и поперек запатентовано или является торговой маркой (как например PayPass, PayWave, PayExpress, QuickPass и еще не помню как у JCB называется и у МИР тоже какаято своя будет
для потребителя одно и тоже, однако называются по разному
также у них могут быть разные механизмы обработки в процессинге, и называть их одинаково это вносить лишнюю путаницу
Вот куда мы деньги платим, чтобы они патентовали свои буквоблудия.
С NFC точки зрения Фелика (NFC-F, проприетарный стандарт от Сони) довольно крутая штука имхо. Там на одной карте может висеть большое количество сервисов, причём каждый со своей аутентификацией. Поддерживается яблофонами начиная с 7 и андродиами с непонятно каких времён, правда железка (секюрный юнит) на андроидах есть только в японских моделях, увы. С секюрным юнитом не нужно не включать телефон, ни разблокировать его.

Правда для доступа к сдк/закрытой части документации нужно дружить с Сони.
Так вот почему у меня трубка 2013-го, а ощущение актуального железа до сих пор есть… понятно. Вот же не зря взял её. При этом первые 4-ре года понятия не имел «куда заюзать NFC». А потом пришли новые терминалы в масс-магазины волной — теперь даже в подворотне шаурму мобильником оплачиваю.
Больше удивил не кейс, а иллюстрации. Круто! Кто так заморочился? Есть дизайнер в штате? или селфмейд?
А ValdikSS крут безусловно — и тут «отметился». Вот же у мужика производительность/мотивированность хорошая, мой поклон.

P.S. Моя благодарность за W.I.T.C.H — хорошая раздача.
Вы уже реализовали свою идею или она всё ещё в доработке? Очень понравилась ваша идея, хотелось бы реализовать её в своей компании. Ваш поставщик писал для вас ПО индивидуально?
Система состоит из нескольких компонентов разных компаний. Прошивку для считывателя писала комания Parsec совместно с нами.
В прошивке на считыватель вся соль проекта на мой взгляд. Используя его и любой контроллер с touch_memory, wiegand получаем доступ по «EMV-картам»(телефонам, часам, банковским картам и т.д.). В связи с чем вопросы: у кого права на прошивку? Будет ли parsec продавать считыватели с ней?
Можно ли в Apple Pay/Google Pay добавить свою карту (=«свой пропуск»)? Например, как банковские карты добавляются, но только лишь с id, без дополнительных данных.
Пока что нельзя, но скоро, уверен, будет можно. По слухам Apple работает с HID Global, и наверняка добавят что-то подобное.
Sign up to leave a comment.

Articles