Comments 164
Очевидно, что отдельные карты вскоре отомрут и будут полностью заменены телефоном. Но для этого должна быть разработана система, позволяющая загружать в телефону произвольные идентификаторы. Эдакая ключница для хранения приватных ключей. На практике это может выглядеть так:
Кассир: У вас уже есть наша бонусная карта?
Покупатель: Нет, давайте оформим.
Кассир: Тогда приложите телефон к считывателю.
И в этот момент в телефон загружается подписанный магазином ключ и сертификат. И в момент идентификации покупателю достаточно приложить телефон снова. Ключи могут хранится в телефоне подобно U2F токенам и синхронизировать между устройствами через какой-нибудь iCloud. В момент считывания терминал посылает отпечаток сертификата магазина, и если в памяти есть ключ подписанный этим сертификатом, то телефон отвечает подписанных хендшейком. Управление картами происходит через встроенное в ОС приложение. Картинки и описание карт загружаются автоматически по интернету из метаданных сертификата. Полагаю, что подобная система должна скоро появится.
А так отличный проект, удачи.
Согласен насчет универсальной системы хранения токенов в телефоне. Такая система бы решила множество проблем.
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 используется исключительно для общения с SIM-картой, вся магия в ней
SIM-карта чисто формально называется «NFC», на самом деле в ней специальный софт плюс хранилище для «билетов», таких же, как на «тройке»
говорят, можно туда записывать любые билеты, в том числе безлимитные на 1-3-12 месяцев, но аккуратно, потому что хранилище крайне ограниченное, может тупо не влезть
Однако это не очень удобно, потому что нужно каждый раз запускать приложение и ждать его полного запуска, чтобы открыть дверь
Неправда, разарбатывал несколько HCE-приложений. Прелесть в том, что само приложение запускать не нужно. Достаточно, чтобы телефон был включен (не с погасшим экраном).
Как правило, в настройках системы (Беспроводные сети -> Дополнительно -> NFC -> Бесконтактной оплата) можно выбрать приложение по умолчанию.
Ну и плюс в некоторых случаях нужное приложение запустится само, видимо, через intent filter — например, если приложить к телефону билет метро, откроется Яндекс.Метро в режиме чтения билета. У меня по крайней мере так.
Может ли HCE-приложение на android эмулировать mifare classic 1k карту? Без root? Находил то, что умеет это делать при наличии root, но только номер карты. Остальные данные — не умеет.
Можете, пожалуйста, поделиться ссылкой на приложения для эмуляции пропусков?
Вы затронули больную тему с кучей «бонусных» карт всех возможных магазинов. Видел, что некоторое распространение получили мобильные приложения, которые позволяют вносить штрихкоды с таких карт, после чего предъявлять их в магазинах с телефона. В принципе, можно решать задачу доступа аналогичным образом, подключая к контроллеру оптический считыватель штрихкодов, QR-кодов и пр. Вполне рабочее решение. Особенно для разового доступа. И можно не ждать появления «правильной» технологии.
Конечно, для постоянного доступа главное, чтобы код не «сфотографировал» злоумышленник с экрана телефона. Но если есть такой доступ к телефону, думаю, у владельца телефона будут другие проблемы. Впрочем, можно пофантазировать с тем, чтобы код выдавался на телефон по геолокации при входе сотрудника в офис или что-то подобное.
Если предположить использование такой схемы в каком-нибудь рабочем офисе, то главное тогда привязать ключ к конкретному телефону (например, к фиксированному серийнику или типа того), чтобы нельзя было его легко скопировать. Дело даже не в безопасности, а в том, что СКУД часто используется для учёта рабочего времени. И возможность копирования тогда позволяет «попросить Васю отметиться за меня». Хотя «авторизация по смартфону» и такой «обман», наверное, плохо коррелируют.
А если взять типичную 2FA-авторизацию по типу гугл-аутентификатора, и вместо циферного кода выдавать QR-код с этим циферным кодом?
Мне кажется, что это маловероятная схема мошенничества. Во первых почти всегда на картах установлен лимит списания суммы без PIN кода в размере 1000 рублей. То есть атакующий должен воровать по 999 рублей каждый раз.
Во вторых, для обработки платежа нужен свой собственный эквайринг.
Нельзя просто считать данные с карты и пойти потратить их в любом магазине, так как терминал «подсаливает» запрос и карта подписывает запрос вместе со случайными данными от POS терминала. То есть обработать подписанный картой хендшейк можно только этим же терминалом.
Получается, что атакующий должен иметь договор с банком и арендовать у него платежный терминал. Если число спорных транзакций по этому терминалу будет большим, банк быстро заблокирует терминал и счет. Сомневаюсь, что до этого момент атакующий успеет вывести деньги со счета. В итоге затраты на такую атаку мне кажутся сильно бОльшими, чем возможная прибыль злоумышленника. Хотя может я что-то не знаю и заблуждаюсь.
Во первых почти всегда на картах установлен лимит списания суммы без PIN кода в размере 1000 рублей.
Откуда такая информация? Лично покупал ИБП за 39536 рублей, без всяких пин кодов, через PayPass.
Скажем так: при правильных настройках pos-терминала при любой покупке на сумму выше 1000 р должен запрашиваться пин-код для авторизации.
К сожалению, не все умеют и хотят правильно настраивать эквайринговое оборудование. С меня просили подпись при оплате покупки на сумму меньше 1000 р. Потому что так настроили криворучки из банка.
Если считаете что с ПИНом вам спится крепче — пожалуйста, пользуйтесь теми картами у которых ПИН в приоритете. Я напротив не хочу ни где и никогда палить свой ПИН потому что операции с ПИН вообще потом отбить нельзя.
надо ещё знать где карта, куда прижиматься, а карты ещё может не быть, если она в андроид/самсунг/эппл пэй, а телефон для этого должен быть разблокированным
проще и надёжнее кошелёк из заднего кармана/сумочки подрезать
С контроллера БОРЕЙ можно выгрузить базу данных пропусков, владельцев и пр. в виде бинарного файла. В случае данного объекта, где предполагаю, пропуска выдаются не так часто, наверное, проще всего периодически выгружать базу (например, за раз в неделю) через HTTP API и сохранять её в облако.
Вообще, наши потребители почти не сталкиваются с выходом SD-карт из строя. Мы контролируем нагрузку на SD-карту и используем Industrial SD карты со SMARTом — можно следить за износом карты. Чаще карты
контроллер с картой удобен тем, что может быть полностью автономным, питаться от аккумулятора и получать данные с этой карты — подошёл с ноутом, выдернул карту, залил свежий список, пошёл дальше
так умеют далеко не все, обычно требуют подключения RS-232/485 или ethernet и хранят свои данные на распаянном флэше или типа того, на серваке же лежат и изменяются данные всех контроллеров
А в чем, сосбственно, сложность?
ru.wikipedia.org/wiki/ISO/IEC_7816 + ru.wikipedia.org/wiki/ISO/IEC_14443 + www.emvco.com
Кстати, android hce уже умеет эмулировать 14443A или только 14443B?
Любой каприз за ваши деньги =)
Mifare это A как раз.
Буду признателен, если вы напишите такой эмулятор. А еще, желательно, с возможностью загрузки произвольных дампов.
Да таких полно на гитхабе. И в доках андроида написано, как эмулировать. Отвечать правильно на запрос apdu-команд нет пробелмы особой. И дампы загружать тоже. Поэтому я скептически на Ваше решение тоже смотрю. Тут работы на полдня, вся security through obscurity — пройтись сниффером один раз, чтобы понять, какие команды запрашиваются. Да даже для дуальной Java-карты можно написать простенький апплет. Хотя тас-смартфон проще для этих целей заюзать
В 1994 году французский хакер по имени Антоний Зборальски позвонил в вашингтонский офис ФБР и представился представителем этой организации, работающим в американском посольстве в Париже. Он убедил собеседника на другом конце провода, и тот объяснил ему, как подключиться к системе телеконференции ФБР. Его звонки за последующие семь месяцев стоили ФБР 250 000 долларов.
Когда в 2000 году Кевин Митник (наверное, самый известный хакер в мире) давал показания в Конгрессе США, он говорил о манипулировании людьми: «Нападения этого рода были столь успешны, что мне редко приходилось обращаться к техническим средствам. Компании способны истратить миллионы долларов на технические средства защиты, но все это будет напрасно, если можно позвонить по телефону и убедить кого-нибудь сделать на компьютере нечто, что ослабляет защиту или открывает доступ к интересующей информации».
посмотрите как маскируют карты в банковских приложениях
P.S. Выше уже об этом написали.
Ну и допустим вы атакующий и смогли похитить нашу базу данных. Напомню, в ней нет различий между идентификаторами Тройки и EMV карт. Какие ваши дальнешие действия? Что самое ужасное вы сможете сделать с этой информацией при самом удачном для вас сценарии?
Есть операции, для которых одного только номера достаточно
И что же это за операции?
Точно уже не могу сказать, но у меня был случай, когда ни имя, ни CVV не спрашивали. Нужен ли был срок действия — не помню.
Срок действия нужен был даже тогда, когда не было этих ваших интернетов, компьютеров было мало и они были очень большими. "Оффлайновые" покупки делались через ручной импринтер снятием слипов (такой многослойный бланк с копирками, под давлением на нем остаются реквизиты карты — именно поэтому они и выдавлены, и именно поэтому процесс выпуска карт называется embossing), а "онлайновые" (card not present) — бумажной почтой или по телефону.
От них не защитится иначе как не светить номером карты налево/направо. Если уж на то пошло срок действия тоже вычисляем, особенно легко если в процессинге персонализацию ведут без гаммирования, монотонным увеличением счетчика.
Запрет хранения номеров карт в PCI DSS не просто так…
Также для них никто соответствия PCI DSS не отменял. Храни, но защищай одним из способов:
* шифрование
* маскирование
* токенизация
* хэширование
Про рекуррентные платежи все так. Что касается способов защиты — это применимо к номеру карты и сроку действия, а вот CVV хранить нельзя вообще ни при каких условиях.
Отдельное шифрованое хранилище, в скоупе PCI DSS, половинки ключа шифрования вводятся разными людьми на старте сервиса, CVV не хранятся, банк-эквайрер одобряет для отдельных платежных сервисов оплату без CVV.
Upd. Сорри, про это уже написали
Вцелом чтение и манипулирования 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 в них?
Но у apple pay ещё на каждую инициализацию запроса на оплату, создается еще и сессия, которая живет около получаса.
>>Если проходить в дверь по 20 раз в сутки без выходных, получается всего 7300 проходов в год.
У андроид и эппл Срок жизни виртуального счёта дают большой, если создать его сейчас то выдадут до 2031 года :)
В случае обновления данных пользователя, происходит перевыпуск виртуальной карты ApplePay. Если я верно понял вопрос.
Коллеги высказали предположение, что данные виртуальной карты в ApplePay может меняться чаще, чем данные привязанной карты.
у apple pay ещё на каждую инициализацию запроса на оплату, создается еще и сессия, которая живет около получаса.
О какой сессии идет речь, не понимаю?
У андроид и эппл Срок жизни виртуального счёта дают большой, если создать его сейчас то выдадут до 2031 года :)
Это так, но когда привязанная к icloud аккаунту карта истечек по expire date и будет привязана новая, то виртуальная карта тоже перевыпуститься. То есть полагаю, что эта дата не может быть больше даты истечения привязанной карты.
Это интересный вопрос. Так как привязывал карту до 19, а выдало дату счёта до 31 :)
>>О какой сессии идет речь, не понимаю?
До сканирования отпечатка доходите?
Если да. То перед тем как показать попап, устройство делает запрос на сервера Apple и создаёт платёжную сессию, далее данные передаются в iТач и отрисовывается «поп-ап» с просьбой подтвердить отпечатком.
Следовательно ещё вопрос, если нет мобильного интернета, то оно будет работать?
То перед тем как показать попап, устройство делает запрос на сервера Apple и создаёт платёжную сессию, далее данные передаются в iТач и отрисовывается «поп-ап» с просьбой подтвердить отпечатком.
Следовательно ещё вопрос, если нет мобильного интернета, то оно будет работать?
Не понимаю откуда вы это взяли. ApplePay работает без интернета.
Ну я писал клиент для пея… ну и ради интереса посмотрел фидлером как оно работает при оплате с телефона. могу чуть по позже скинуть адреса куда лезет :)
Токенов под карту можно привязать сколько хочешь, но в общем случае даже привязка старой банковской карты к новому устройству породит новый токен.
должен отдельно поддерживать Apple/Android Pay, поэтому пользователи предпочитают искать на кассе специальную пиктограмму, чтобы быть уверенным, что их платежный инструмент поддерживается.
Не без основательно. Apple/Android Pay, имеют разную структуру данных в криптоновой области :), но да, данные там одинаковые.
И еще Apple Pay ecdsa-with-SHA256 1.2.840.10045.4.3.2
Android Pay prime256v1
И это технический ВУЗ, мы лекцию читали, рассказывали о том, что прочесть эмбоссированные на карте данные в торговой точке проще чем на проходной ВУЗа, причем не очень сложно вместе с CVN.
Читать же PAN это вообще за гранью правил, платежное приложение может его и не отдавать или вовсе заблокировать карту.
- Карточка — это смарт карта или смартфон
- КомплектКлючей — набор криптографических ключей для шифрования и цифровой подписи произвольных данных;
- на Карточке доступен набор изолированных Ячеек для КомплектовКлючей;
- каждая Ячейка защищена еще одним ключом (назовем его ДоменныйКлюч). не зная который, терминал не может «просить» карточку оперировать Ячейкой.
- специальный пишущий терминал способен занять ячейку, разместив или сгенерировав в ней КомплектКлючей, защищенный ДоменнымКлючом; для этого понадобится ввести pin-код Карточки или знать МастерКлюч эмитента карточки (мастер-ключ нужен для массовой прошивки карточек без ввода pin)
- чистая (не активированная) Карточка может допускать установку произвольного мастер-ключа и пин-кода;
- Терминал может «попросить» Карточку подписать, зашифровать или расшифровать что-то соответствующим ключом, к которому Терминал «знает» ДоменныйКлюч;
- каждая Ячейка может содержать дополнительный небольшой набор открытых и закрытых данных. Открытые данные доступны всем, закрытые только владельцам ДоменногоКлюча;
- ПО карточки должно поддерживать «луковое» шифрование всех запросов к своим Ячейкам, чтобы их можно было проводить в небезопасных сетях через шифрованные туннели;
Идеально, если бы в такую Карточку можно было сагрегировать себе все необходимые банковские, скидочные, бонусные и прочие смарт-карты, а также карты оплаты метро и пропуски.
С таким стандартом можно было бы иметь мастер-карту, где хранились бы зашифрованные бэкапы всех КомплектовКлючей и кучу обычных Карточек, куда слиты read-only Комплекты для операций.
Ну что, сколькиколёсный велосипед я только что «изобрёл»? Покритикуйте меня
UDP: И еще расскажите где можно достать чистые java-карты простому смертному, еще лучше бесконтактные.
У меня проблема СКУД решена более радикально — чип-импланты ;-)
Если пропусков в системе 100 — всё быстро. А если десять тысяч, то реальное время просто не достижимо даже на мощных контроллерах. А если ставить по мощному серверу на каждую дверь, то такой СКУД становится просто золотым.
Поэтому, биометрия всегда является вторым фактором к карте или пинкоду (по крайней мере, из нашей практики). Сначала считываем первый фактор, а потом уже просто «сверяем» отпечаток с данными в пропуске 1-к-1.
p.s.: ну и заводить биометрические пропуска — это не пластиковые карточки по паспорту выдавать. Обычно биометрию используют на объектах повышенного уровня ответственности, типа объектов транспортной безопасности (аэропорты и пр.).
умеет отпечатки + бесконтактные карты,
также есть ethernet и реле для исполнительного механизма замка.
Вот http://www.smartec-security.ru/news/biometric-reader.htm
У нас более старый, в стальном, псевдо вандалоустойчивом корпусе.
Если нужно могу в четверг фото сделать
Монтируются практически в любую дверь. Программировать можно любые карточки — мы использовали карточки БЦ, которые блокируют основной вход в БЦ.
У них есть модули, которые позволяют подключить замок к сети.
Мы хотим сделать Телеграм-бота с авторизацией, который будет открывать дверь, если сотрудник забыл карточку.
А у Xiaomi есть потрясный замок тоже — Aqara ZigBee Smart Door Lock
Программировать можно любые карточки — мы использовали
Ага
Чтение идентификаторов: EM-Marine, HID ProxCard II, Temic
То есть все также клонируй в любом ларьке.
Мы хотим сделать Телеграм-бота с авторизацией, который будет открывать дверь, если сотрудник забыл карточку.
Есть такое. Бот на ESP32 (ESP8266), может управлять уймой нагрузок (в том числе управление замком). Умеет рассылать состояние. Опасность видится в том, что Телеграмм могут заблокировать, поэтому сейчас доделывается собственное приложение с авторизацией однократным паролем. Хотя для большинства небольших организаций вполне достаточно простого GSM контроллера, открывающего замок если номер телефона с которого на него позвонили прописан в базе.
Есть один нюанс. В РФ не актуален. Но вот в Австралии например банк несет ответственность за воровство денег. Если кто-то украл у меня деньги с карты и банк не может доказать что я был в этом виной — банк возвращает все деньги. Вернее он сначала возвращает, потом начинает расследование и потом если только находит доказательства того, что деньги уплыли по моей вине — они требуют денег назад. Технически за это платят страховые, поэтому там какие-то смежные отделы у них существуют.
Я с этим сталкивался три раза (частое вообще явление). Один раз с оффлайна украли: украли карту, перевыпустили удаленно сим-карту, сбросили пин с помощью СМС. Два раза как-то онлайн утекли данные. Но все три раза банк вернул мне все деньги. Вот если банк/страховая найдет вашу систему и узнает что пользователь добровольно туда добавил свою карту — он не будет разбираться в деталях. Просто скажет что вы сами слили данные по карте третьей стороне и используя ИХ карту не по назначению. А карта является собственностью банка и сценарии использования карты прописаны в договоре.
Вообще-то, в РФ это работает точно так же.
В РФ нет Zero Liability Policy, банки НЕ возвращают деньги безусловно и сразу если холдер отказывается от операции. Вначале будет расследование — претензионный цикл, если в результате что то удастся отбить, то вернут. А если нет и клиент не VIP то скорее всего отправят в «сам виноват карту засветил». Но самое гадкое это подлимитные оффлайн операции по номеру карты. Особенно если денег на счете нет, ты попадаешь в теховер с неслабыми процентами. Подлимиты практически невозможно опротестовать а еще сложнее начисленные проценты за «пользование деньгами» сторнировать.
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
для потребителя одно и тоже, однако называются по разному
также у них могут быть разные механизмы обработки в процессинге, и называть их одинаково это вносить лишнюю путаницу
Правда для доступа к сдк/закрытой части документации нужно дружить с Сони.
Используем Apple Pay и карту Тройка в качестве пропуска на работу