PIN-код карты. Где хранится и как проверяется - Егор Мазурок | Профессиональный психолог

Для карт с магнитной полосой есть только один PIN-код, а для смарт-карт технологией предусмотрено два разных PIN (online-PIN и offline-PIN), однако на практике они всегда одинаковы.

Offline-PIN - штука немного специфичная, о нем поговорим в каком-нибудь из следующих постов. А "обычный PIN" представляет собой набор из 4-6 цифр. В азиатских платежных системах почти везде используется 6-значный PIN, а в остальной части мира PIN преимущественно 4-х значный. По легенде, жена одного из создателей карты не могла запомнить больше 4х знаков, потому оставили 4.

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

Но как же его проверяют?

Вот тут уже становится интересно.

Есть ряд алгоритмов, которые вычисляют некоторое специальное значение на основе PIN, из которого невозможно получить исходное значение. Система ниппель. Туда дуй, оттуда - великое ничто. Т.е. берем PIN, вставляем в такой алгоритм, получаем, например, значение PVV (так называется один из алгоритмов), или PIN Offset (более старый алгоритм). Из PVV обратно вычислить PIN не получится вообще никак. Как-нибудь подробно расскажу, как это устроено. Так вот благодаря такой односторонности, PVV хранить - вполне безопасная задача. Даже если оно попадет в руки злоумышленника (а, кстати, это значение в открытом виде спокойно валяется на магнитной дорожке карты), то вычислить PIN у него все равно не получится.

Более того, вся эта технология устойчива даже и против злоумышленника внутри банка по тем же причинам.

Но как проверить-то, правильно ли был введен PIN? Да все просто. Держатель карты вводит PIN в терминал, PIN передается в процессинг банка, банк повторяет вычисления на этом значении и получается какое-то значение PVV. Затем просто сравниваем с тем PVV, которое спокойно хранится в базе. Если совпало - значит, исходный PIN был введен правильно, вот и все. Технология чем-то похожа на хранение хэшей паролей в разных компьютерных системах, но тут все немного хитрее: для вычисления используется шифрование, а не хэширование. А ключи банк хранит в строгом секрете. (Кстати, напишите мне, если надо объяснить, что такое хэширование и шифрование).

Кстати говоря, когда вы вводите PIN в терминал (будь то POS-терминал в магазине или клавиатура банкомата), на самом деле вы нажимаете кнопки очень хитрого устройства. Это не просто клавиатура, а так называемый PIN-pad. От обычной клавиатуры он отличается тем, что наружу себя, дальше по проводкам он передает уже зашифрованное значение PIN. Да, это такое хитрое устройство. Чтобы оно нормально работало, в него специально загружают ключ, который затем используется для шифрования PIN. Так что даже если подключиться к проводкам PIN-pad, и перехватить сообщение, то оно для вас будет бесполезным: надо еще знать ключ для дешифровки PIN. Ну если еще точнее, то там даже не чистый PIN, а т.н. PIN-block - блок байт (8шт), получается из PIN с помощью некоторых процедур. Шифруется именно PIN-блок. В процессинге банка этот блок расшифровывается, извлекается PIN, и дальше используем так, как я уже сказал.

Т.е. посмотрите, какая интересная последовательность получается. При выпуске карты единственное место, где PIN порождается в чистом виде - это специальная машина для персонализации. Это обычно очень сложное техническое устройство, которое выполняет массу операций над картой - печать, эмбоссирование, запись дорожек, кодирование чипа и т.д. Одна из важнейших ее задач - генерация PIN и печать специальных PIN-конвертов. Так вот, эта машина генерирует PIN, печатает PIN-конверт, вычисляет значение PVV и после этого PIN в памяти уничтожается. С этого момента PIN находится только внутри запечатанного конверта. А в памяти машины остается значение PVV. Его машина записывает на карту и выгружает в банковскую программу работы с картами. Для простоты - в БД банка.

Ну и пару слов о PIN-конверте

По одной из старых и очень распространенных технологий PIN печатается... прямо внутри запечатанного конверта!

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

Но это не единственная технология. Есть более привычные нам лазерные принтеры, которые печатают PIN, склеивают конверт и выдают наружу уже заклеенный. Просто "принтер" (а это на самом деле более сложное устройство) устроен так, что снаружи к нему физический доступ ограничен, и это обеспечивает нужный уровень безопасности. Этакий черный ящик.