Что такое пин блок
Обеспечение безопасности pin-based операций с банковскими картами
«Расчеты и операционная работа в коммерческом банке», 2012, N 2
Получая наличные в банкомате, мало кто из клиентов задумывается, какие процессы при этом происходят, зачем и куда вводится ПИН, как и где он хранится, как защищается от компрометации, как, куда, в каком виде и по каким каналам передается, какие алгоритмы и методы при этом используются, насколько они надежны и устойчивы к взлому потенциальными злоумышленниками. В статье дается краткий обзор принципов сохранения ПИН в надлежащей секретности, приводятся некоторые численные аналитические данные о стойкости используемых алгоритмов.
Основные методы подтверждения пользователем операций с картами
При совершении операций с банковскими картами принято разделять режимы проведения транзакций на несколько категорий в зависимости от того, сколько человек участвует в процессе, как вводятся номер и прочие реквизиты карты, какой тип оборудования используется, как клиент подтверждает свое согласие со списанием средств с его счета и пр.
Если клиент предъявляет карту к оплате в магазине при расчете за товар и все действия с картой осуществляет продавец, такие условия называются Card Present Environment («Карта присутствует») в отличие, например, от операций, совершаемых через Интернет (Card Not Present, CNP), когда карта физически отсутствует в ТСП и используются только ее реквизиты (номер, срок действия, код безопасности CVC2/CVV2).
В ходе совершения операций по карте с магнитной полосой у клиента есть два варианта подтверждения своего согласия на предстоящее списание средств с его счета в банке (Cardholder Verification Method, CVM), а именно:
В торговой сети в подавляющем большинстве случаев клиент подтверждает свое согласие на оплату покупки, подписывая чек электронного терминала. Эта копия чека остается в магазине (торгово-сервисном предприятии) на случай возможных споров по данной транзакции. Такие операции принято называть Face-to-Face (буквально «Лицом к лицу»), и на сотрудника ТСП возлагается ответственность за проведение первичной проверки подлинности карты и сравнение подписи клиента на чеке с ее образцом на оборотной стороне карты.
Устройства самообслуживания и их разделение на уровни
Кроме операций Face-to-Face, существует возможность оплаты некоторых видов услуг (например, получения наличных денег) в специальных устройствах, именуемых банкоматами или ATM (Automated Teller Machine). Согласно спецификациям МПС MasterCard такие устройства обобщенно именуют CAT (Cardholder Activated Terminals, терминалы, активируемые держателем карты). МПС делят CAT на несколько уровней в зависимости от типа операций, способов ввода реквизитов карты и пр.:
Например, CAT L3 могут осуществлять операции в ТСП следующих типов (по МСС):
А для устройств CAT L4 предусмотрены значения МСС:
Персональный идентификационный номер
При совершении операций получения наличных денежных средств или оплаты услуг операторов сотовой связи, ЖКХ, доступа в Интернет в банкоматах клиент полностью самостоятельно контролирует ход течения процесса и подтверждает свое согласие, вводя персональный идентификационный номер (ПИН). При проведении транзакций такого рода определенные поля авторизационного запроса содержат фрагмент, называемый ПИН-блоком (PIN block).
Само понятие «ПИН» и методы его хранения, обработки и передачи при использовании в банковских системах подробно регламентированы в международном стандарте ISO 9564.
Ниже приводятся базовые требования этого стандарта:
Алгоритм шифрования DES
Алгоритм шифрования данных DES является симметричным и блочным. Симметричность означает, что один и тот же ключ (пароль) используется как для шифрования, так и для расшифровывания данных. Блочность подразумевает, что информация (исходный текст) разбивается на фрагменты (блоки), каждый из которых последовательно шифруется. То есть если необходимо зашифровать сообщение (файл) длиной 500 кбайт, он будет разбит на блоки по 64 бит (8 байт по 8 бит).
Поскольку эффективная длина криптографического ключа DES составляет 56 бит (в каждом байте ключа последний бит используется для контроля четности), адресное пространство (возможные варианты) всех возможных значений ключей составляет не 264, а 256 единиц. Это число в десятичном виде записывается как 72057594037927936. Несложный расчет показывает, что при попытке подобрать ключ методом «грубой силы» (т.е. просто последовательно перебирая все возможные значения искомого ключа подряд от 0000 0000 0000 0000 до FFFF FFFF FFFF FFFF) со скоростью 1 млн ключей в секунду (!) получается, что необходимое время составит чуть более 2283 лет (из расчета 86 400 секунд в сутках, 365,25 суток в году).
На рис. 1 представлена условная общая схема работы алгоритма шифрования DES.
Общая схема работы алгоритма шифрования DES
Если рассматривать более детально, то шифрование каждого блока исходного текста внутри DES выглядит следующим образом (рис. 2).
Схема преобразования информации внутри DES
См., напр.: http://ru.wikipedia.org/wiki/DES.
Устойчивость алгоритмов DES и 3DES к взлому методом «грубой силы»
Криптографические ключи DES/3DES
При использовании 3DES используется та же схема, что и в обычном (single) DES, но в следующем оригинальном порядке:
То есть используются два ключа и три этапа шифровки/расшифровки по алгоритму обычного (single) DES.
Как видно из вышеизложенного, алгоритмы DES и тем более 3DES с достаточно высокой степенью надежности защищают передаваемые данные. Даже в случае перехвата злоумышленниками информационного сообщения (авторизационного запроса или ответа на него), ПИН-блок расшифровать не удастся. Следовательно, надежность хранения зашифрованного ПИН-блока целиком и полностью зависит от того, насколько безопасно и надежно хранятся ключи, используемые для шифрования по алгоритму DES/3DES.
Такие ключи называются криптографическими. С точки зрения математики они представляют собой произвольные наборы нулей и единиц, или битов. Поскольку алгоритм шифрует информацию поблочно и размер блока составляет 64 бит (или 8 байт, т.к. 1 байт = 8 бит), то и длина ключа составляет 64 бит. Для удобства записей двоичных величин принято использовать так называемую шестнадцатеричную систему счисления, содержащую цифры от 0 до F:
Проверка PIN кода банковских карт
В связи с появлением статьи «Путешествия банковской транзакции», в рамках которой стали появляться вопросы по механизму проверке PIN, хотелось бы несколько уточнить данный вопрос. В данной статье будет рассмотрен только вопрос проверки т.н. online PIN, т.е. PIN, который вводится на терминале и передается для дальнейшей проверки в систему, которая выполняет авторизацию транзакции.
Прежде чем приступать непосредственно к вопросу прокерки PIN’а карты, остановимся на некоторых теоретических вопросах.
Прикладная криптография
Алгоритм DES
В настоящий момент, основным алгоритмом шифрования для всех действия с банковскими картами является алгоритм DES (а не 3DES, который используется только для операций шифрования, преимущественно, транспортного уровня). Не вдаваясь в терминологию и классификацию алгоритмов шифрования, просто скажу, что это блочный алгоритм шифрования с размером блока 8 байт и ключом в 56 бит (7 байт). На практике, ключ DES принято представлять в виде блока из 8 байт, где в каждом байте старшие 7 бит ялвются значащими, а последний бит — незначащим. Он может использоваться для контроля целостности ключа (об этом — далее).
Т.к., в настоящее время, ключ длинной 56 бит является недостаточным, с точки зрения безопасности, то вместо алгоритма DES для шифрования принять использовать алгоритм 3DES в режиме EDE (здесь и далее под обозначением 3DES я буду подразумевать именно использование схемы EDE). Обычно, в банковской среде применяется алгоритм 3DES с ключом двойной длинны (112 бит, 16 байт), при которой на первом и третьем шаге (см. описание алгоритма) применяется один и тот же ключ.
Алгоритмы проверки PIN
На данный момент, в основном, используются следующие 2 алгоритма проверки PIN: Visa PVV и IBM 3624 PIN offset.
Visa PVV
Данный алгоритм первоначально был разработан платежной системой Visa, но, в настоящее время является рекомендованным алгоритмом проверки PIN как для карт Visa, так и для MasterCard. В основе данного алгоритма лежит значение PVV (PIN verification value), которое является криптограммой, получаемой на основе следующих величин:
IBM 3624 PIN offset
Данный алгоритм первоначально был разработан компанией IBM для использования в банкоматах IBM 3624. Как именно планировалось его использовать, история умалчивает, а автори статьи не знает, но, в данном случае, это не принципиально. В настоящее время данный алгоритм считается устаревшим, но достаточно успешно используется по нескольким причинам:
В основе данного алгоритма лежит значение PIN offset (PIN verification value), которое является криптограммой, получаемой на основе следующих величин:
HSM — hardware security module, программно аппаратный комплекс, предназначенный для выполнения криптографических операций в защищенной среде. Сам HSM должен иметь защиту, позволяющую предотвратить несанкционированный доступ к хранящимся в нем данным. В его функции входит выполнение различных криптографических проверок, включая проверку карты, PIN, криптографичесокой подписи сообщений (MAC) и различных операций шифрования таким образом, чтобы предотвратить доступ к значимой информации (ключи, значения PIN кодов). Здесь стоит пояснить, что при использовании HSM само значение ключа, в общем случае, в открытом виде (т.е. в виде, приодном для выполнения операций в соответствии с алгоритмом DES/3DES) присутствует только внутри HSM в момент выполнения этой операции. Каким образом это достигается, зависит от конкретного HSM. Для наиболее распростаненных в карточных системах HSM (HSM производства SafeNet и Thales) используются 2 механизма:
Проверка PIN
Терминология
Требования платежных систем
Проверка PIN
Далее необходимо определиться с проверочным значением PIN и дополнительными данными.
Первый вариант — это хранение проверочного значения на магнитной полосе карты после поля Service Code. Модифицированную версию ISO 7813 с указанием того, где хранится PVV, можно посмотреть здесь. По приведенному описанию формата треков стоит добавить, что под 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 года
Русские Блоги
Алгоритм блокировки PIN
Справочник статей
предисловие
Лист регистраций изменений
номер версии | Дата проверки | Редакция |
---|---|---|
V0.1 | 2018/09/07 | Первый черновик |
V1.0 | 2018/09/20 | релиз |
Ссылки
Аббревиатура персонального идентификационного номера, определенного в ISO 9564: строка числовых цифр, установленная как общий секрет между держателем карты и эмитентом, для последующего использования для подтверждения использования авторизованной карты.
Персональный идентификационный номер, цифровая строка символов, установленная в качестве общего секрета между владельцем карты и эмитентом, используется для последующей проверки использования карты авторизации. Понять из определения Держатель карты Пароль, как и другие пароли, например пароль вашей электронной почты, строго говоря, не может называться PIN-кодом.
PIN-код указывается в виде 4
12 цифр, чем длиннее, тем безопаснее, но с точки зрения простоты использования он не должен превышать 6 цифр, поэтому текущий пароль банковской карты составляет 6 цифр. Но 6 цифр не являются уникальными, и пароль банковской карты может полностью поддерживать меньше или больше цифр.
О длине PIN-кода Вики рассказывает нам короткую историю: Джон Шепард-Баррон, изобретатель банкомата, изначально предполагал использовать 6-значный пароль, но его жена может запомнить только 4 цифры, поэтому многие места за границей Используйте 4-значный PIN-код. Председатель Мао учил нас, что женщины могут удерживать до половины неба. Женщины прекрасны, женщины всегда непреднамеренно меняют историю.
Аббревиатура для основного номера счета, определенного в ISO 9564: присвоенный номер, состоящий из идентификационного номера эмитента, индивидуального идентификационного номера счета и сопровождающей контрольной цифры, как указано в ИСО / МЭК 7812-1, которая идентифицирует эмитента и владельца карты.
Номер основного счета, номер, присвоенный эмитентом, состоит из идентификационного номера эмитента, идентификатора личного счета и проверочных цифр, указанных в ИСО / МЭК 7812-1, и используется для идентификации эмитента карты и держателя карты. Узнать большеПравила кодирования и проверки номеров банковских карт。
PIN block
Пять форматов определены в стандарте ISO 9564, формате 0, формате 1, формате 2, формате 3 и формате 4.
Format 0 PIN block
Получается с помощью XOR домена PIN и домена PAN.
8 бит): длина PIN, диапазон значений 0x4 (0100)
64 бит): PAN, после удаления самой правой контрольной цифры, отсчитывается 12 бит справа, осталось менее 12 бит для заполнения 0x0 (0000)
По номеру банковской карты6225760008219524,пароль123456Например:
Серийный номер | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ПИН-код домена | 0 | 6 | 1 | 2 | 3 | 4 | 5 | 6 | F | F | F | F | F | F | F | F |
Домен PAN | 0 | 0 | 0 | 0 | 5 | 7 | 6 | 0 | 0 | 0 | 8 | 2 | 1 | 9 | 5 | 2 |
PIN block | 0 | 6 | 1 | 2 | 6 | 3 | 3 | 6 | F | F | 7 | D | E | 6 | A | D |
Format 1 PIN block
Он используется в сценариях, где PAN недоступен. Он получается путем сшивания домена транзакции с доменом PIN. Домен транзакции должен быть уникальным каждый раз, когда блок PIN выводится из серийного номера транзакции, отметки времени, случайного числа или других аналогичных условий. Диапазон значений 0x0 (0000)
0xF (1111). Когда блокировка ПИН отправляется, домен транзакции отправлять не нужно, так как длина ПИН уже известна.
8 бит): длина PIN, диапазон значений 0x4 (0100)
По паролю123456Например, домен транзакции использует случайные числа:
Серийный номер | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PIN block | 1 | 6 | 1 | 2 | 3 | 4 | 5 | 6 | E | E | C | F | 1 | 9 | D | F |
Format 2 PIN block
Назначение использования IC-карты, только для автономной среды, а не для онлайн проверки PIN.
8 бит): длина PIN, диапазон значений 0x4 (0100)
Серийный номер | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PIN block | 0 | 6 | 1 | 2 | 3 | 4 | 5 | 6 | F | F | F | F | F | F | F | F |
Format 3 PIN block
Получается с помощью XOR домена PIN и домена PAN.
8 бит): длина PIN, диапазон значений 0x4 (0100)
64 бит): PAN, после удаления самой правой контрольной цифры, отсчитывается 12 бит справа, осталось менее 12 бит для заполнения 0x0 (0000)
По номеру банковской карты6225760008219524,пароль123456Например:
Серийный номер | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ПИН-код домена | 0 | 6 | 1 | 2 | 3 | 4 | 5 | 6 | E | A | C | B | E | C | B | E |
Домен PAN | 0 | 0 | 0 | 0 | 5 | 7 | 6 | 0 | 0 | 0 | 8 | 2 | 1 | 9 | 5 | 2 |
PIN block | 3 | 6 | 1 | 2 | 6 | 3 | 3 | 6 | E | A | 4 | 9 | F | 5 | E | C |
Format 4 PIN block
8 бит): длина PIN, диапазон значений 0x4 (0100)
128 бит): случайное число, диапазон значений 0x0 (0000)
4 бита): длина PAN минус 12, поскольку PAN имеет максимум 19 битов, поэтому диапазон значений составляет 0x0 (0000)
По номеру банковской карты6225760008219524,пароль123456Например:
Серийный номер | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ПИН-код домена | 0 | 6 | 1 | 2 | 3 | 4 | 5 | 6 | A | A | A | A | A | A | A | A |
Домен PAN | 4 | 6 | 2 | 2 | 5 | 7 | 6 | 0 | 0 | 0 | 8 | 2 | 1 | 9 | 5 | 2 |
Серийный номер | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ПИН-код домена | 2 | 3 | 4 | 5 | 2 | 3 | 4 | 5 | 2 | 3 | 4 | 5 | 2 | 3 | 4 | 5 |
Домен PAN | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Формат 4 отличается от 0/1/2/3. Вместо того, чтобы сначала получать блок PIN, а затем шифровать его, домен PIN и домен PAN включаются в процесс шифрования, и, наконец, получается зашифрованный блок PIN.
Поскольку блокировка PIN-кода формата 4 включает в себя процесс шифрования и дешифрования ключа, примеры кодов здесь не приводятся. Домен PIN, домен PAN, XOR, см. Примеры кодов других блоков PIN-кода формата.
ANSI X9.8 Format
ANSI-Американский национальный институт стандартов, Американский национальный институт стандартов
ANS-американские национальные стандарты, американские национальные стандарты
ANS X9.8 сформирован путем добавления нескольких примечаний на основе стандарта ISO 9564-1, и его содержание можно считать согласованным.
В ANS X9.8 указывалось, что в соответствии с этим стандартом рекомендуется использовать только формат 0 и 3 блока PIN-кода. Формат 3 следует использовать, когда один и тот же ключ шифрования PIN-кода используется для нескольких шифрований PIN-кода.
Q/CUP 006.4
Стандарт предприятия China UnionPay Co., Ltd., Q означает предприятие, CUP означает China UnionPay
В Q / CUP 006.4 указано, что в блоке PIN используется формат ANSI X9.8 (с информацией об основной учетной записи). С помощью стандартного сравнения можно определить, что это формат 0 в ANS X9.8, то есть формат 0 в ISO 9564-1.
Однако автор не нашел определения формата ANSI X9.8 (без информации об основной учетной записи). Однако из апрельской версии 2016 года «Технических спецификаций системы обмена банковских карт China UnionPay» можно определить, что формат генерации ПИН-кода формата ANSI X9.8 (без информации об основной учетной записи) и формат ANSI X9.8 (с Основная информация об учетной записи генерируется так же, как и поле ПИН-кода, поэтому у автора есть основания предполагать, что формат ANSI X9.8 (без основной информации об учетной записи), определенный стандартом UnionPay, является упрощением формата ANSI X9.8 (с основной информацией об учетной записи), но Невозможно угадать сценарии его применения, друзья, которые знают об этом, могут оставить сообщение для информирования.
В то же время стандарт UnionPay также определяет метод расчета блока PIN для паролей оплаты через Интернет.
20 символов, каждый символ занимает 1 байт, меньше, чем право на заполнение 0xFF.
Оплатить пароль через интернетHello!123Например:
Простой текст | H | e | l | l | o | ! | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|
Код ASCII | 72 | 101 | 108 | 108 | 111 | 33 | 49 | 50 | 51 |
наговор | 0x48 | 0x65 | 0x6C | 0x6C | 0x6F | 0x21 | 0x31 | 0x32 | 0x33 |
Небезопасный PIN-код
Стандарт ISO 9564-1 рекомендует клиентам следовать следующим принципам при установке или изменении паролей:
В дополнение к этому, автор суммирует следующие пункты из своего собственного опыта проекта для вашей ссылки (в основном для 6-значных паролей):
Пароли для оплаты через Интернет обычно предлагают: платежные письма, содержащие три или более из трех или более заглавных букв, строчные буквы, цифры, специальные символы и не менее 8 цифр.
Радужный стол
Если радужная таблица содержит больше содержимого, она откроет новые обмены темами в будущем. В этой статье в основном обсуждаются меры предосторожности при взломе радужного стола из следующих пунктов:
Запрещено хранить открытый текст пароля
За последние несколько лет инцидент хранения открытого текста пароля неоднократно подвергался разоблачению, постоянно обновляя нижний предел осведомленности специалистов по ИТ о безопасности. К счастью, после многих лет популяризации сетевой безопасности и строгого национального надзора за программными системами в смежных отраслях, по крайней мере, с финансовым программным обеспечением, в котором находится автор В области промышленности системы, хранящие открытый текстовый пароль, были исключены из исторического потока.
Публичный алгоритм хеширования небезопасен
Хеш-алгоритмы все чаще становятся инструментами для проверки целостности.
Хорошая идея добавить соль в алгоритм хеширования
Да, я приношу соль для себя. Хешируйте пароль, а затем хешируйте его. Даже если он взломан, это соленый пароль, а оригинальный пароль относительно безопасен. Блок ПИН-кода также можно считать способом добавления соли, но соль блока ПИН-кода включается в номер счета.Не зная номер счета, действительно сложно получить блок ПИН-кода для взлома пароля.
Достаточно умен, чтобы настроить алгоритм шифрования
Используя собственный алгоритм шифрования, радужная таблица теряет свое место: исходя из того, что алгоритм шифрования и ключ не просочились, взлом в принципе невозможен. Однако в мире так много умных людей, никогда не будьте претенциозными. Имейте в виду, что есть люди вне людей, и будьте бдительны всегда.
Остерегайтесь утечек из базы данных
Если данные паролей в базе данных просочились, умные хакеры всегда могут изучить метод взлома, поэтому база данных должна быть адекватно защищена.
если возможно
Конечно, если в коде есть определенная ошибка, она может быть использована умными хакерами: так называемая высота высока, магия велика, и в битве за информационную безопасность нет абсолютного победителя.