25 декабря 2009 г.

Что такое PVV или VISA PVV алгоритм

PVV - это PIN Verification Value, или говоря русским языком проверочное значение ПИН-а.

Значение PVV содержится в треках (1 и 2) и служит для проверки введенного пользователем значения PIN (соответственно используется только при пиновых транзакциях). Пользователь вводит PIN, который шифруется банкоматом и вместе с данными карты отправляется в процессинг, где происходит вычисление PVV на основе введенного PIN и сравнение его со значением находящемся в треке.

Из чего же состоит PVV? PVV вычисляется по следующему алгоритму: за основу берется 64-битная строка, так называемая TSP (Transformed Security Parameter) состоящая из 16 шестнадцетиричных символов (16х4=64), в которую входят (слево-направо):
- PAN - 11 цифр, отсчитываемых справа-налево, пропуская крайнюю слева цифру (которая является проверочным значением PAN), а считываемых слева-направо, есть подозрение, что это делается, чтобы избежать попадания статичного BIN-a
- 1 цифра значением от 1 до 6 выбираемую ключом шифрования (тот самый PVKI (PIN Verification Key Index), стоит заметить, что судя по статье поле PVKI иногда не выделяют отдельно, а считают частью PVV (и пишут, что PVV состоит из 5 цифр)
- собственно 4 цифры - значение PIN.

Пример:
PAN: 1234 5678 9012 3445
PVKI: 1
PIN: 9090
TSP: 5678901234419090


TSP зашифровывается алгоритмом tripleDES (в более ранних системах использовался обычный DES) ключом 128 бит (Внимательный читатель обратит внимание, что эффективный ключ будет 112 бит, т.к. на каждые 7 бит ключа присутствует 1 бит - проверочное значение)

Лирическое отступление:
Если рассмотреть, что из себя представляет 3DES, мы увидим, что это по сути 3 действия: шифрование DES на ключе1, дешифрование полученного результата на ключе2 и последующие шифрование на ключе3. В алгоритме VISA PVV, ключ1 совпадает с ключом3. Т.е. ключ1=ключ3=левой части 128 битного ключа; ключ2=правой части 128 битного ключа.


После шифрования мы получаем строку 64 бита, или 16 шестнадцетиричных символов. Далее идет процедура формирования PVV, которая состоит из 2-х этапов:

16-я строка просматривается слева направо на предмет наличия десятичных цифр, при обнаружении цифры она выписывается в значение PVV
если строка просмотрена до конца, при этом значение PVV еще не сформировалось, то строка просматривается заново, на наличие шестнадцетиричных символов (A-E), и в PVV попадают значения соответствующие номеру символа начиная с нуля (т.е. A - 0, B - 1, … , F - 5) и так пока PVV не сформируется (не накопится 4 символа)

Пример:
вывод 3DES: 0FAB9CDEFFE7DCBA
PVV: 0975 (0, 9, 7, F=5)


Ссылки по теме:
http://www.gae.ucm.es/~padilla/extrawork/stripe.html

20 комментариев:

  1. >>PAN - 11 цифр, считываемых справа-налево
    >>>PAN: 1234 5678 9012 3445
    >>>TSP: 5678901234419090
    Так справа налево, или наоборот?

    ОтветитьУдалить
  2. Спасибо, действительно слева-направо, точнее отсчитывать надо 11 справа-налево, пропуская крайнюю слева проверочную цифру, а считывать слева направо.
    Поправил.

    ОтветитьУдалить
  3. Алексей как с Вами можно связаться, у меня есть вопросы и так же предложения о сотрудничестве. Жду ответа

    ОтветитьУдалить
  4. На эту тему: http://publib.boulder.ibm.com/infocenter/zos/v1r10/topic/com.ibm.zos.r10.csfb400/csfb4z82460.htm

    ОтветитьУдалить
  5. ты хочешь сказать,что по трекам1 и 2 можно определить пин код карты?
    что-то не вериться!!!

    ОтветитьУдалить
  6. В обычных условиях нельзя, на стороне эмитента можно простым перебором.

    ОтветитьУдалить
  7. а это вообще реально?
    по моему у каждого банка свой алгос,или я ошибаюсь?

    ОтветитьУдалить
  8. Если есть доступ к ключу на котором выпускался PVV и трек, то перебрать 4 цифры PIN проблемы нет (возможно, что бывает ситуация когда высчитанный PIN не будет равен реальному, но будет обладать аналогичными свойствами)
    Что есть "алгос"?

    ОтветитьУдалить
  9. Этот комментарий был удален автором.

    ОтветитьУдалить
  10. Если есть трек 1 и 2 ,то там и pvv есть.По трекам можно подобрать?
    алгос это как алгоритм
    пример
    475824 America First Credit Union XXXXXXXXXXXXXXXX=yymm1010000007444000

    ОтветитьУдалить
    Ответы
    1. PIN по треку без ключа на котором сформировано PVV подобрать нельзя.

      Удалить
  11. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  12. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  13. "1 цифра значением от 1 до 6 выбираемую ключом шифрования"
    Хотел бы уточнить, что является ключем для 3DES? Там ведь 128 бит?

    Если я правильно понял, то в процессинг отправляется PVV с магнитной полосы и значение, вычисленное описанным алгоритмом из PAN, PIN и PVVKI, где они и сравниваются?

    ОтветитьУдалить
    Ответы
    1. "the leftmost 12th digit is a key table index to select the PVV generation key"
      Т.е. получается PVVKI это номер одного из ключей шифрования. Эти ключи есть только в процессинге или на клиентской стороне тоже?

      Удалить
    2. PGK - PVV generation key.
      Они должны быть и на клиентской стороне?

      Удалить
    3. Ключи для 3DES хранятся на стороне эмитента карты в HSM. На клиентской стороне (в криптоклавиатуре POS, ATM) есть ключ на котором производится преобразование PIN в PIN-block.

      Удалить
  14. >>
    - PAN - 11 цифр
    - 1 цифра PVKI
    - собственно 4 цифры - значение PIN.

    А где тогда формируется TSP, если из клавиатуры поступает PIN-block?

    ОтветитьУдалить