- PVSM.RU - https://www.pvsm.ru -
В связи с появлением статьи «Путешествия банковской транзакции» [1], в рамках которой стали появляться вопросы по механизму проверке PIN, хотелось бы несколько уточнить данный вопрос. В данной статье будет рассмотрен только вопрос проверки т.н. online PIN, т.е. PIN, который вводится на терминале и передается для дальнейшей проверки в систему, которая выполняет авторизацию транзакции.
Прежде чем приступать непосредственно к вопросу прокерки PIN'а карты, остановимся на некоторых теоретических вопросах.
В настоящий момент, основным алгоритмом шифрования для всех действия с банковскими картами является алгоритм DES (а не 3DES, который используется только для операций шифрования, преимущественно, транспортного уровня). Не вдаваясь в терминалогию и классификацию алгоритмов шифрования, просто скажу, что это блочный алгоритм шифрования с размером блока 8 байт и ключом в 56 бит (7 байт). На практике, ключ DES принято представлять в виде блока из 8 байт, где в каждом байте старшие 7 бит ялвются значащими, а последний бит — незначащим. Он может использоваться для контроля целостности ключа (об этом — далее).
Т.к., в настоящее время, ключ длинной 56 бит является недостаточным, с точки зрения безопасности, то вместо алгоритма DES для шифрования принять использовать алгоритм 3DES [2] в режиме EDE (здесь и далее под обозначением 3DES я буду подразумевать именно использование схемы EDE). Обычно, в банковской среде применяется алгоритм 3DES с ключом двойной длинны (112 бит, 16 байт), при которой на первом и третьем шаге (см. описание [2] алгоритма) применяется один и тот же ключ.
На данный момент, в основном, используются следующие 2 алгоритма проверки PIN: Visa PVV и IBM 3624 PIN offset.
Данный алгоритм первоначально был разработан платежной системой Visa, но, в настоящее время является рекомендованным алгоритмом проверки PIN как для карт Visa, так и для MasterCard. В основе данного алгоритма лежит значение PVV (PIN verification value), которое является криптограммой, получаемой на основе следующих величин:
Для получения PVV формируется блок из PAN (последние 11 цифр, кроме контрольного числа карты), PVKI, PIN (строго, первые 4 цифры), который зашифровывается с помощью PVK, после чего из него, с помощью специальной функции, извлекаются 4-х значное число, которое и является значением PVV [1]. Данное значение PVV является эталонным для проверки PIN кода. Т.е. при получении операции с введенным PIN для его проверки на основании PAN, PVKI, PVK формируется новое значение PVV и сравнивается с эталонным PVV для карты. Если значения совпадают, то PIN считается верным, если не совпадают — неверным.
К особенностям данного алгоритма можно отнести следующие «ограничения»:
Данный алгоритм первоначально был разработан компанией IBM для использования в банкоматах IBM 3624. Как именно планировалось его использовать, история умалчивает, а автори статьи не знает, но, в данном случае, это не принципиально. В настоящее время данный алгоритм считается устаревшим, но достаточно успешно используется по нескольким причинам:
В основе данного алгоритма лежит значение PIN offset (PIN verification value), которое является криптограммой, получаемой на основе следующих величин:
Для простоты дальнейшего описания под ключом проверки PIN в случае метода IBM 3624 PIN offset будем совокупность ключа PVK и значения таблицы децимализации DT.
Для получения PIN offset контрольное значение VD заширфовывается с помощью ключа PVK, после чего из полученного значения с помощью таблицы децимализации DT получается блок из 16 десятичных цифр.
Из полученного блока берутся первые N цифр, где N — длина PIN (метод IBM 3624 позволяет проверять PIN с длиной до 16 цифр), далее из каждой цифры PIN по модулю 10 вычитается соответствующая цифра полученного блока. Полученное значение и будет значением PIN offset.
HSM — hardware security module, программно аппаратный комплекс, предназначенный для выполнения криптографических операций в защищенной среде. Сам HSM должен иметь защиту, позволяющую предотвратить несанкционированный доступ к хранящимся в нем данным. В его функции входит выполнение различных криптографических проверок, включая проверку карты, PIN, криптографичесокой подписи сообщений (MAC [3]) и различных операций шифрования таким образом, чтобы предотвратить доступ к значимой информации (ключи, значения PIN кодов). Здесь стоит пояснить, что при использовании HSM само значение ключа, в общем случае, в открытом виде (т.е. в виде, приодном для выполнения операций в соответствии с алгоритмом DES/3DES) присутствует только внутри HSM в момент выполнения этой операции. Каким образом это достигается, зависит от конкретного HSM. Для наиболее распростаненных в карточных системах HSM (HSM производства SafeNet и Thales) используются 2 механизма:
При этом сам принцип выполнения операции на HSM не зависит от того, какой именно из способов хранения ключей используется.
Везде далее, если это не указано в явном виде, будем считать, что ключ передается в защищенном HSM виде (т.е. зашифрованный под Мастер ключом HSM или в виде идентификатора).
Для упрощения дальнейшего описания введем некоторые термины:
В части проверки PIN можно указать следующее:
Как мы уже определились ранее, для проверки PIN нам необходимы следующие данные:
С PIN все достаточно просто. Как уже указано выше, открытое значние PIN мы получить не можем ни при каких условиях. Таким образом, нам остается только зашифрованный PIN блок. В дополнение к нему нам нужен ключ для его расшифровки. Назавем этот ключ PPK (PIN protection key, термин взят из документации на HSM фирмы SafeNet).
Далее необходимо определиться с проверочным значением PIN и дополнительными данными.
Первый вариант — это хранение проверочного значения на магнитной полосе карты после поля Service Code. Модифицированную версию ISO 7813 с указанием того, где хранится PVV, можно посмотреть здесь [4]. По приведенному описанию формата треков стоит добавить, что под 5-и символьным значением PVV подразумевается следующая последовательность 1 символ PVKI и 4 символа самого PVV, а для PIN offset — значение PIN offset для PIN из 5 цифр. Если PIN имеет отличную от 5 цифр длину, то размер PIN offset, соответственно, изменится. Какие плюсы у этого метода. Безусловно — возможность проверять PIN для любого, кто будет иметь необходимые для проверки ключи. Здесь стоит заметить, что при запуске нового карточного подукта в платежную сеть, обычно, передаются ключи, на которых выпущена карта. Таким образом, при использовании данного метода возможность проверки PIN появляется как у самого эмитента карты, так и у платежной сети. К недостаткам такого метода можно отнести то, что данный вариант делает PIN карты статическим до тех пор, пока карта не будет перевыпущена.
Второй вариант — это хранение проверочного значения в некотором хранилище, обычно, БД системы, отвечающей за выполнение проверок при авторизации карты. В этом случае при проверке PIN необхоидмо извлечь проверочное значение из этого хранилища, а уже потом, выполнять проверку, используя это значение. Как следствие, при использовании данного метода, невозможно вполнять проверку PIN во внешней системе (в той же платежной системе) и она м.б. выполнена только в той системе, которая имеет доступ к хранилищу проверочных значений. Однако, такая система позволяет изменять PIN код карты без каких либо затрат на смену пластика (для чего это нужно, что при этом необходимо сделать и какие после этого м.б. проблемы, описывать не буду, т.к. это находится за рамками данной статьи).
Независимо от того, каким образом и кем (эмитент карты или платежная сеть) была получена вся необходимая информация, сама проверка PIN выполняется на HSM, который для выполнения проверки получает ключ PPK в защищенном виде, ключ проверки PIN в защищенном виде, зашифрованный PIN блок, проверочное значение PIN и дополнительные данные проверки, в ответ на что возвращается только результат проверки: верный PIN, неверный PIN, прочая ошибка. Т.е. в процессе проверки система, отвечающая за авторизацию, с самим открытым значением PIN кода никак не соприкасается.
Используемые материалы:
[1] Visa Payment Technology Standards Manual, лет 5 назад, на просторах интернета можно было найти версию данного документа за 2007 год, сейчас, при беглом происке, доступна только версия от 2004 года
Автор: HellHounD
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/platezhny-e-sistemy/64723
Ссылки в тексте:
[1] «Путешествия банковской транзакции»: http://habrahabr.ru/post/229393/
[2] 3DES : http://ru.wikipedia.org/wiki/Triple_DES
[3] MAC: http://ru.wikipedia.org/wiki/Message_authentication_code
[4] здесь: http://www.gae.ucm.es/~padilla/extrawork/tracks.html
[5] Источник: http://habrahabr.ru/post/229527/
Нажмите здесь для печати.