Содержание статьи
- Номер карты
- Магнитная полоса
- Чип/EMV
- Аутентификация карты
- Верификация плательщика
- Авторизация транзакции
- Бесконтактные платежи
- Выводы
В твоем кошельке наверняка есть несколько карт международных платежных систем, таких как Visa или MasterCard. Задумывался ли ты, какие алгоритмы используются в этих картах? Насколько платежи безопасны? Мы расплачиваемся картами каждый день, но знаем о них крайне мало. Еще больше мифов сопровождает карточные платежи. Чтобы понять, какие есть способы похитить деньги с карты, нужно сначала понять, как происходит оплата. Давай разбираться вместе.
Номер карты
Оплата по номеру карты исторически — самая старшая. Раньше на картах не было ничего, кроме этого номера. Номер был «эмбоссирован» — выдавлен на карте. При оплате карта «прокатывалась» на специальном устройстве, что позволяло продавцу быстро внести номер в древнюю замену базы данных, то есть отпечатать на листе бумаги.
В конце рабочего дня или недели эти данные собирались и передавались в банк‑эквайер. Далее банк отправлял запросы на списание этих денег у владельцев карт через банки‑эмитенты. Это было так давно, что немного людей знают, откуда появился трехзначный код верификации платежей, записанный на обратной стороне карты, так называемый CVV2/CVC2. До нас дошла информация, что этот код использовался скорее как контрольная сумма, нужная, чтобы владелец карты не ошибся и корректно ввел всю информацию при оплате. Похоже на правду, если учесть, насколько короткий этот код.
Сейчас физическая карта может и вовсе не участвовать в оплате. Это называется card not present и чаще всего используется при оплате в интернете. Если номер карты вводится при оплате в платежном терминале, а это характерно для отелей, бизнесов, ведущих дела по телефону, а также для большинства терминалов в США, такой подтип платежей называется PAN Key Entry.
Многие до сих пор считают, что поле Cardholder name с лицевой стороны карты нужно вводить корректно и что оно проверяется. Это не так — ни один банк не проверяет это поле.
Магнитная полоса
Операции с магнитной полосой — один из самых простых методов. Он ассоциируются у людей с определенными типами мошенничества. Скимминг в банкоматах, двойные снятия в ресторанах — все это возможно благодаря недостаткам магнитной полосы. Магнитную полосу легко скопировать — для этого необходим только специальный ридер/энкодер магнитной полосы. Дальше клонированной магнитной полосы достаточно для того, чтобы расплачиваться в большинстве супермаркетов мира. Для верификации владельца карты предполагалось использовать подпись на чеке, которую кассир должен сверить с подписью на обратной стороне карты.
На картинке выше ты видишь пример записанной на карту информации. Черные полоски — это единицы, белые — нули. Существуют open source решения для декодирования этих данных — к примеру, magstripe.
На самом деле по изображению видно, что на карте не одна, а целых две магнитные полосы разной плотности (Track1 и Track2). Какие данные содержатся на магнитной полосе?
- Номер карты, дата окончания действия, имя владельца карты — все, что физически отпечатано на лицевой стороне карты.
- Сервисный код — три цифры, которые помогают взаимодействующему с картой устройству (терминал или банкомат) понять, какие функции есть у карты, а каких нет. Можно ли использовать эту карту в банкомате, оснащена ли карта чипом.
- Код верификации (CVV, CVC, CID — терминология зависит от платежной системы) — код, аналогичный тому, что написан на обратной стороне карты. Он рассчитывается по алгоритму криптографической чек‑суммы (MDK MAC) с помощью 128-битного ключа от информации, записанной на магнитной полосе. Использование вычисляемого CVV вместо случайного помогает от атак, когда, например, злоумышленник подменяет сервисный код и пытается убедить платежный терминал, что карта не оснащена чипом. Банк‑эмитент получит данные магнитной полосы, сверит их, и контрольная сумма не сойдется с переданным значением в поле CVV. Сверки проходят в защищенном хранилище ключей — так называемом HSM (Hardware Secure Module).
Чип/EMV
На смену магнитной полосе в девяностых пришли смарт‑карты, для популяризации которых создали консорциум EMV (Europay, MasterCard, Visa). Продвигаемая консорциумом идея была проста: используя особенности смарт‑карт, симметричную криптографию и криптографию с открытым ключом, решить все проблемы, связанные с магнитной полосой. Операции со смарт‑картой обеспечивают три степени защиты:
- Аутентификация карты. Проверка платежным терминалом того, что карта подлинная и действительно была выпущена банком N, а не была создана злоумышленниками в домашних условиях.
- Верификация плательщика. Проверка того, что эта карта принадлежит покупателю, стоящему перед платежным терминалом.
- Авторизация транзакции. От карты до банка‑эмитента путь долгий. Банк должен убедиться, что данные операции нигде не были искажены злоумышленниками. Что сумма осталась неизменной, что дата операции корректная, что эта операция уникальна, а не была уже проведена в прошлом месяце.
Давай пройдемся по используемым методам.
Аутентификация карты
Для аутентификации карты используется криптография с открытым ключом по протоколу RSA. Текущие минимальные требования по длине ключа — 1024 бита. Ограниченное число центров сертификации выпускают ключи для банков, а банки их уже привязывают к самим картам. Приватный ключ хранится на самой смарт‑карте в области, недоступной для чтения. Корневые сертификаты устанавливаются на терминал при его настройке. Во время транзакции карта предоставляет публичные ключи платежному терминалу вместе с информацией, зашифрованной приватным ключом в режиме цифровой подписи. Если публичный ключ доверенный и информация, переданная картой, успешно расшифровывается этим ключом, то терминал считает карту аутентичной, выпущенной именно тем банком, который подписал приватный ключ, выданный центром сертификации.
Всего существует три режима аутентификации карты:
- SDA — static data authentication;
- DDA — dynamic data authentication;
- CDA — combined dynamic data authentication.
В первом методе использовалось только одно статическое поле, хранящееся на карте. Оно подписывалось приватным ключом и проверялось терминалом. Это было EMV-поле AIP (application interchange profile). Но консорциум EMV быстро понял, что для популярных в то время офлайновых терминалов (они не выходили в онлайн для сверки криптограммы) этого было явно недостаточно — любой мог клонировать публичный ключ и подписанную статическую строку, чтобы создать подделку.
Следующий метод полагался на динамические данные, приходящие от терминала. Терминал генерирует поле UN — Unique Number, которое подписывается приватным ключом карты. Энтропия этого поля — 232, чего достаточно для защиты от первой атаки.
Однако в 2009 году исследователи из Кембриджского университета представили работу, описывающую так называемую атаку PIN OK (PDF). Специальное устройство, располагающееся между картой и терминалом, совершало атаку «человек посередине» и подменяло одно из полей, которые отправляла карта. Эту подмену нельзя было обнаружить на терминале с помощью описанных выше методов. Для защиты от таких атак консорциум EMV еще до находки исследователей предусмотрел новый механизм защиты — схему CDA. Во время нее терминал может проверить целостность большинства полей, которые передает карта и которые участвуют в фазе под названием «риск‑менеджмент».
Офлайновая аутентификация создавалась в первую очередь для защиты офлайновых платежей, когда терминал не подключен к интернету постоянно. Именно поэтому, если результат работы режимов DDA или CDA не заканчивается успехом, в современных терминалах, подключенных к интернету, это не приведет к отказу транзакции в 99% случаев, так как банк‑эмитент авторизует ее с помощью криптограммы, как описано ниже. Однако некоторые платежные системы рекомендуют обращать внимание на постоянные неуспешные аутентификации, особенно если они происходят в разных терминалах.
Верификация плательщика
Есть два основных способа верификация плательщика: ПИН‑код и подпись. На самом деле их немного больше — ПИН‑код может проверяться в офлайне (на самой карте) и онлайн. Он может быть зашифрован (с помощью симметричного ключа 3DES) или передаваться в открытом виде.
Еще возможен способ верификации NoCVM — то есть отсутствие верификации. Хороший пример таких операций — те, которые не превышают лимиты 3000 рублей и не требуют ввода ПИН‑кода. Их иногда называют Tap & Go.
Другой способ, который в зависимости от платежной системы называется CDCVM или On-Device CVM, делает возможной верификацию на мобильном телефоне владельца карты. Как ты уже догадался, он используется в Google Pay и Apple Pay.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
1 год7690 р. |
1 месяц720 р. |
Я уже участник «Xakep.ru»