Найти тему
Технологии денег

Цифры с обратной стороны карты, или CVV2

Все мы хотя бы раз оплачивали что-то через интернет. И в большинстве случаев, указывая реквизиты карты, мы вводили три цифры с обратной стороны карты. Вообще говоря, там не три, а больше :) Как на картинке, например. Там вы видите семь цифр. Просто первые четыре цифры повторяют последние четыре цифры номера (PAN) карты. Да, все просто. Это для удобства ввода и проверки.

А последние три цифры (на картинке обведены красным) - это как раз CVV2/CVC2 значение. Переводится как Card Verification Value 2 (значение проверки карты - 2) или Card Verification Code 2 (Код проверки карты - 2). Первое название используется в МПС VISA, второе название - в MasterCard. А вычисляются они одинаково абсолютно, алгоритм один, назвали почему-то по-разному. Так все через дробь и пишут.

О CVV я уже чуть-чуть рассказывал, сейчас еще раз напомню, что это. Кстати, я подумываю сделать пост, в котором красочно, возможно, с анимацией, а главное - в картинках, наглядно, и как можно менее занудно описан алгоритм шифрования 3DES, который используется в вычислении CVV, PVV, а так же во многих других местах в процессинге. Да и не только. Работа эта довольно объемная, но никакой практической ценности не имеет. Впрочем, как и многое другое в этой жизни... Поэтому я прошу вас поддержать меня в этом намерении. Если будет заметное количество лайков у этого поста и прочих серотонин-стимулирующих событий (вроде увеличения подписчиков), то решимость сделать этот материал у меня возрастет настолько, что я достану старые заготовки и действительно займусь :)

Так вот, CVV. Card Verification Value (Card Verification Code). Точнее, CVV2/CVC2. Цифра 2 говорит о том, что где-то есть и "номер один". И это действительно так, на магнитной дорожке карты, а так же на чипе микропроцессорной карты есть значение CVV, без номера. Оно играет роль как бы цифровой подписи нескольких значений, связанных с картой. А именно:

- PAN (номер карты)

- Expiration Date (срок действия карты)

- Service Code (код обслуживания), состояший из трех цифр, указывающих:

  • Тип и применимость карты (чиповая/магнитная, разрешены ли международные операции)
  • Нужно ли обрабатывать транзакции в on-line режиме
  • Ограничения на карту: нужен ли PIN, можно ли снимать деньги или только оплачивать в POS-терминалах и т.д.

Все эти значения (PAN, ExpDate и Service Code) определенным образом смешиваются и шифруются специальным секретным ключом банка. Получается длинная строка в шестнадцатеричном виде. Из нее выписывают первые три цифры (а там еще могут быть и буквы, от A до F, ведь это шестнадцатеричное число). Эти три цифры и есть CVV (CVC). Их записывают на магнитную полосу или в Track 2 Equivalent Data тэг в чипе карты. Эти данные служат для проверки данных карты при проведении операции по карте.

А CVV2/CVC2 используются в ситуации, когда карта не присутствует. Card Not Present. Странно, да? Да нет, все просто. Сидите вы за компьютером и хотите оплатить что-то. В компьютер карту не вставишь (а если и есть считыватель карт, то нет соответствующего софта и договора с банком-эквайером), поэтому данные карты вводятся руками, а не читаются с самой карты. Именно это подразумевается, когда говорят, что карта не присутствует. И кстати да, у вас эти данные могут быть на бумажечке рядышком, саму карту иметь не обязательно. Поэтому кстати, существует такая вещь, как виртуальная карта. Большинство банков предлагает такую услугу. Нужна она потому, что ее легко контроллировать: легко закрыть или ограничить, не стесняя обычную карту. Виртуальная карта существует только в БД банка и в вашем блокноте (файле).

На магнитную полосу (и в чип) эти данные (CVV2/CVC2) не записывают.

А вычисляется CVV2/CVC2 точно так же, как и CVV/CVC, но есть два отличия. Первое - код обслуживания ставится равным "000". Это бессмысленная цифра с т.зр. спецификации. Специально, чтобы никто не мог использовать это значение для записи на магнитную полосу поддельной карты. Ну и шифрование выполняется другим ключом, специально предназначенном для CVV2/CVC2.

Издатель карты (банк-эмитент) может проверить правильность ввода точно так же, как и с CVV/CVC - он повторяет вычисления, применяя ключ, который хранится у него в секрете. И если получается тот же результат - данные валидны.

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

Подписывайтесь на канал в Яндекс.Дзен и Telegram! У меня еще много интересного материала!