PIN-код

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

PIN-код (англ. Personal Identification Number — личный опознавательный номер) — аналог пароля. В ходе авторизации операции используется одновременно как пароль доступа держателя карты к терминалу (банкомату) и как секретный ключ для цифровой подписи запроса. Предусматривается для кредитных и подобных карт (например, сим-карт), с помощью которого производится авторизация держателя карты. PIN-код должен знать только держатель карты. Обычно предусмотрено ограничение попыток правильного ввода (в основном, не больше 3 раз), после чего карта блокируется для использования.

В мобильных телефонах для разблокирования PIN-кода требуется ввести так называемый PUK-код (иногда называют PUC-код (англ.)). Соответственно, для кода PIN1 необходим код PUK1, а для кода PIN2 — код PUK2. Если PUK-код введен неправильно 10 раз, SIM-карта блокируется навсегда.

По стандарту ISO 9564-1 PIN может содержать от 4 до 12 десятичных цифр.[1]

В банковских приложениях PIN-код может генерироваться по алгоритмам IBM 3624 (детерминированный криптоалгоритм, использующий в качестве входа PAN) или проверяться по алгоритму VISA PVV. Второй алгоритм в принципе допускает ситуации, когда проверку может пройти не единственный установленный банком PIN-код, но и несколько других (в 40 % случаев). В среднем одному проверочному значению PVV может соответствовать 1,58 различных ПИН-кода, поэтому безопасность системы от этого эффекта не снижается.[1][2][3]

В 2006 году был запущен слух, что ввод пин-кода в банкомате в обратном порядке приводит к автоматическому вызову полиции. На практике подобные системы, например, ATM SafetyPIN software не применялись.[4][5][6]

История[править | править исходный текст]

PIN-код был разработан и запатентован шотландским инженером Джеймсом Гудфеллоу в 1965 году[источник не указан 83 дня]. Им был разработано устройство для автоматизированной выдачи денег путём принятия картонной карты (информация на которой представляла собой области с меткой радиоактивного углерода-14), а также имел клавиатуру для ввода PIN-кода.

Стандарт ISO 9564[править | править исходный текст]

Стандарт ISO 9564 является международным стандартом PIN-кода, который определяет основные положения его использования.

Основные принципы использования PIN:

  • Шифрование того же PIN тем же ключом, но для другого пользователя не должно давать такой же результат
  • Безопасность шифрования PIN должна зависеть от секретности ключа, а не секретности алгоритма
  • PIN должен быть аннулирован, если был скомпрометирован или находится под угрозой
  • Хранящийся зашифрованный PIN должен быть защищен от возможной подмены

Также стандарт устанавливает некоторые особенности устройства для ввода PIN:

  • Для ввода должны содержать цифры от 0 до 9. Также на них могут быть изображены буквы для удобства клиента
  • PIN не должен быть отображен на дисплее или озвучен аппаратом
  • Физическая защищенность от возможной перенастройки операций
  • Защищенность от возможного наблюдения со стороны [7]

Верификация[править | править исходный текст]

Верификация представляет собой проверку соответствия PIN-кода и номера карты. Это соответствие не является взаимно однозначным(достаточно вспомнить, что длина PIN может быть 4 цифры, в то время как количество цифр в номере карты равно 16). Также одному номеру карты могут соответствовать различные значения PIN-кода. Требование, предъявляемое к соответствию номера карты и PIN-кода следующее: для произвольного номера карты множество значений PIN-кода, соответствующего данной карте, должно быть таким, что вероятность угадать этот PIN была невысокой. Существуют два распространенных метода генерации/верификации PIN, в основе которых лежит использование алгоритмов IBM 3624 и VISA PIN Algorithms.

IBM 3624-offset[править | править исходный текст]

Алгоритм IBM 3624-Offset был создан для первого поколения ATM и таким образом получил широкое распространение.

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

Алгоритм: берется номер карты(16 цифр) и шифруется с помощью DES. После шифрования все цифры, за исключением первых четырех выбрасываются. Тем не менее они могут представлять собой значения 'A'-'F', которые не приемлемы для стандартной раскладки ATM. К этим значениям применяется таблица децимилизации. Полученное значение принято называть PIN Natural.

Таблица децимилизации:

0123456789ABCDEF

0123456789012345

Для получения значения PIN-кода цифры PIN Natural складываются по модулю 10 с соответствующими цифрами величины PIN Offset, которая является произвольной последовательностью 4-х цифр. Значение PIN-Offset может быть записано на магнитной полосе карты или храниться в базе данных эмитента.

Пример:

Номер карты 4556 2385 7753 2239

Номер карты после шифрования DES 3F7C 2201 00CA 8AB3

Согласны алгоритму оставляем первые четыре цифры 3F7C

Согласно таблице децимилизации получаем Natural PIN 3572

PIN Offset 4344

Итоговый PIN 7816

Проверка PIN-кода, введенного держателем карты, осуществляется по PIN Offset и номеру карты. Легко заметить, что значение PIN полностью определяется номером карты и величиной PIN offset. Вероятность угадать PIN с первой попытки 0.0001.[8]

VISA PVV Algorithms[править | править исходный текст]

Алгоритм VISA используется многими банковскими системами и применим не только к картам типа VISA.

Данный Алгоритм генерирует значение PVV(PIN verification value) на основании TSP(transformed security parameter). PVV аналогично PIN Offset может храниться на магнитной полосе карты или в базе данных эмитента. Пользователь вводит PIN, который шифруется ATM и с данными карты отправляется в процессинг где вычисляется PVV на основе введенного PIN и происходит сравнение его со значением на магнитной полосе.

Вычисление PVV выполняется по следующему алгоритму:

За основу идет 64-битная строка TSP, которая представляет собой 16 шестнадцатеричных символов, в которую входят(слева-направо):

PAN12 — 12 правых цифр за исключением крайней правой цифры, представляющей собой контрольное число.

Считывается PAN12 слева-направо.

PVKI (PIN Verification Key Index) — цифра от 1 до 6 выбирается ключом шифрования

PIN — 4 цифры

Пример:

PAN: 1234 5678 9012 3445 PVKI: 1 PIN: 9090 TSP: 5678901234419090

TSP шифруется алгоритмом 3Des(эффективная длина ключа 112 бит). После шифрования получаем строку длиной 64 бита, что равнозначно 16 шестнадцатеричных символов. Далее формируется PVV:

Шестнадцатеричная строка сканируется слева направо. Десятичные цифры выбираются и записываются в PVV до тех пор, пока не будут найдены 4 цифры.

Если после первого сканирования будут найдены менее четырех цифр, то при повторном сканировании выбираться будут только шестнадцатеричные цифры, которые конвертируются в десятичные вычитанием 10.

Пример:

вывод 3DES: 0FAB9CDEFFE7DCBA

PVV: 0975 (0, 9, 7, F=5)

Различие данных алгоритмов заключается в том, что алгоритм IBM является алгоритмом как генерации, так и верификации PIN-а, в то время как алгоритм PVV определяет только верификацию.[9]

Безопасность[править | править исходный текст]

При IBM 3624 каждому номеру карты соответствует единственное значение PIN.

При алгоритме VISA PVV PIN является случайной величиной и от номера карты не зависит. Нетрудно вычислить, что в случае выбора PIN для каждого номера карты по равновероятному закону, данному значению PVV соответствует не менее двух значений PIN с вероятносью 42%. При этом среднее количество PIN, соответствующих данному значению PVV, равно 1.58. То есть при использовании VISA PVV вероятность угадать PIN-код в 1.58 раза выше, чем в случае IBM 3624. Однако в смысле необходимого объема перебора возможных PIN по порядку остается тем же. 

Согласно требованиям международных платежных систем, значение PIN-кода не должно храниться(даже в защищенном виде), ни в терминалах обслуживания ни на хостинге эмитента. Рассмотрим возможности восстановления PIN-кода эмитентом по имеющимся у него данным.

В случае хранения PIN Offset/Pvv на магнитной полосе, очевидно, восстановить PIN-код у эмитента не получится. Поэтому хранение на магнитной полосе является рекомендуемым и уменьшает возможность компрометации со стороны персонала банка.

При хранении PIN Offset/Pvv в БД банка, при использовании IBM 3624 эмитент без труда вычисляет PIN-код карты. В случае алгоритма VISA эмитент может подобрать соответствующее хранящемуся в БД значению PVV значение PIN-кода перебором 10000 значений.

Уязвимости[править | править исходный текст]

В 2002 году студенты Кембриджского университета открыли decimalization table attack[8]

PIN для банковских карт генерируется путем шифрования номера карты. Зашифрованный номер представляет шестнадцатеричное значение и берутся первые четыре цифры. Таблица децимилизации используется для конвертации этого значения в десятичный вид, путем перевода A в 0, B в 1 и т.д. Эти таблицы не считаются конфиденциальными аппаратными модулями и могут быть предоставлены вместе с номером карты. Манипулируя содержимым таблицы становится возможным узнать больше о значении PIN-кода, чем исключением отдельных комбинаций. Например, если используется таблица

0123456789ABCDEF

0000000100000000

соответствие с PIN 0000 подтвердит, что PIN не содержит цифру 7, что исключает более 10% от всех возможных комбинаций. Среднее значение попыток, необходимых для угадывания PIN - 15.

SIM-карта[править | править исходный текст]

В случае неправильного введения PIN-кода в течение трех раз, SIM-карта блокируется до правильного введения PUC(Personal Unblocking Code), который предоставляет десять попыток для ввода. В случае неправильного ввода PUC, SIM-карта блокируется навсегда.

Изменение PIN-кода[править | править исходный текст]

В случае хранения PIN Offset/PVV на магнитной полосе изменить PIN-код в банкомате не получится, поскольку изменение PIN-кода повлечет изменение PIN Offset/PVV. При хранении в БД, изменить PIN-код не представляет проблемы, так как в этом случае значения Offset/PVV будут вычислены для нового PIN-кода и помещены в БД вместо предыдущих значений.

Примечания[править | править исходный текст]

Ссылки[править | править исходный текст]