Р 1323565.1.011-2017. Рекомендации по стандартизации. Информационная технология. Криптографическая защита информации. Использование алгоритмов согласования ключа и блочного шифрования при офлайновой проверке PIN
(утв. и введены в действие Приказом Росстандарта от 19.12.2017 № 2019-ст)
Примечание
Документ введен в действие с 1 июня 2018 года.
Утверждены и введены в действие Приказом Федерального агентства по техническому регулированию и метрологии от 19 декабря 2017 г. № 2019-ст
РЕКОМЕНДАЦИИ ПО СТАНДАРТИЗАЦИИ
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
ИСПОЛЬЗОВАНИЕ АЛГОРИТМОВ СОГЛАСОВАНИЯ КЛЮЧА И БЛОЧНОГО ШИФРОВАНИЯ ПРИ ОФЛАЙНОВОЙ ПРОВЕРКЕ PIN
Information technology. Cryptographic data security. Using key matching and block encryption algorithms in offline PIN verification
Дата введения 1 июня 2018 года
Предисловие
1 РАЗРАБОТАНЫ Обществом с ограниченной ответственностью «Системы практической безопасности» (ООО «СПБ») совместно с Открытым акционерным обществом «Информационные технологии и коммуникационные системы» (ОАО «ИнфоТеКС») и Обществом с ограниченной ответственностью «КРИПТО-ПРО» (ООО «КРИПТО-ПРО»)
2 ВНЕСЕНЫ Техническим комитетом по стандартизации ТК 26 «Криптографическая защита информации»
3 УТВЕРЖДЕНЫ И ВВЕДЕНЫ В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 19 декабря 2017 г. № 2019-ст
Правила применения настоящих рекомендаций установлены в статье 26 Федерального закона от 29 июня 2015 г. № 162-ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящим рекомендациям публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящих рекомендаций соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
Введение
В настоящих рекомендациях рассмотрен порядок использования алгоритма согласования ключей для аутентификации PIN в офлайновом режиме. Данная процедура выполняется в рамках верификации держателя карты.
Верификация держателя карты производится в целях идентификации лица, получившего карту от ее эмитента (клиента банка), с лицом, совершающим по карте операцию. Данная процедура обработки транзакции выполняется после динамической/комбинированной аутентификации карты терминалом, в процессе которой терминал проверяет сначала сертификат карты, считанный с нее, а затем генерирует случайное число, отправляет его карте для заверения, после чего проверяет полученную в ответ подпись этого случайного числа и служебную информацию. Передача карте в режиме офлайн зашифрованного PIN для верификации выполняется в том случае, если картой и терминалом согласован метод верификации держателя карты «Enciphered PIN verification performed by ICC».
Разработка настоящих рекомендаций вызвана необходимостью внедрения процедур для аутентификации PIN в платежных приложениях.
Примечание — Настоящие рекомендации дополнены приложением А.
1 Область применения
Описанные в настоящих рекомендациях алгоритмы рекомендуется применять при проверке PIN в платежной системе «МИР».
2 Нормативные ссылки
В настоящих рекомендациях использованы нормативные ссылки на следующие документы:
ГОСТ 28147-89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования
ГОСТ Р 34.10-2012 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
ГОСТ Р 34.13-2015 Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров
ГОСТ Р 34.11-2012 Информационная технология. Криптографическая защита информации. Функция хэширования
Р 50.1.113-2016 Информационная технология. Криптографическая защита информации. Криптографические алгоритмы, сопутствующие применению алгоритмов электронной цифровой подписи и функции хэширования
Примечание - При пользовании настоящими рекомендациями целесообразно проверить действие ссылочных документов в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю «Национальные стандарты», который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя «Национальные стандарты» за текущий год. Если заменен ссылочный документ, на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого документа с учетом всех внесенных в данную версию изменений. Если заменен ссылочный документ, на который дана датированная ссылка, то рекомендуется использовать версию этого документа с указанным выше годом утверждения (принятия). Если после утверждения настоящих рекомендаций в ссылочный документ, на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный документ отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.
3 Обозначения
В настоящих рекомендациях использованы следующие обозначения:
| Vn | - | конечномерное векторное пространство размерности n; | ||
| A||B | - | конкатенация строк, т.е. если A \in V_{n_{1}} , B \in V_{n_{2}} , A = (an1-1, an1-2, ..., a0), B = (bn2-1, bn2-2, ..., b0), то A||B = (a_{n1 - 1},a_{n1 - 2},...,a_{0},b_{n2 - 1},b_{n2 - 2},...,b_{0}) \in V_{n1 + n2} ; | ||
| CICC-PIN | - | сертификат открытого ключа карты для проверки PIN; | ||
| CICC-ISS | - | сертификат эмитента карты; | ||
| DK(M) | - | функция расшифрования; | ||
| EK(M) | - | функция зашифрования; | ||
| H256 - | ||||
| функция хэширования в соответствии с ГОСТ Р 34.11-2015. Длина значения равна 32 байтам; | IUN | - | ||
| случайное число карты (ICC Unpredictable Number), генерируемое картой в ответ на команду GET CHALLENGE в том случае, когда терминал выбирает метод верификации держателя карты Enciphered PIN Offline. Длина значения равна 8 байтам; | KEKVKO | - | ||
| ключ шифрования, формируемый в соответствии с алгоритмом VKO_GOSTR3410_2012_256, описанным в Р 50.1.113-2016. Длина значения равна 32 байтам; | kP | - | ||
| точка эллиптической кривой кратности k; | m, q | - | ||
| параметры эллиптической кривой id-GostR3410-2001-CryptoPro-A-ParamSet; | PIN | - | ||
| персональный идентификационный номер (Personal identification number) (4 — 12 десятичных цифр); | PIN-block | - | ||
| данные для вычисления шифрограммы. Длина значения равна 8 байтам; | UKM | - | ||
| фиксированный параметр, значение которого равно UKM = (0 \times 00||0 \times 00||0 \times 00||0 \times 00||0 \times 00||0 \times 00||0 \times 00||0 \times 01) . Длина значения равна 8 байтам; | VKO_GOSTR3410_2012_256 | - | ||
| алгоритм согласования ключей, определенный в Р 50.1.113-2016; | x | - | ||
| закрытый ключ терминала. Длина значения равна 32 байтам; | xP | - | ||
| открытый ключ терминала. Длина значения равна 64 байтам; | y | - | ||
| закрытый ключ карты. Длина значения равна 32 байтам; | yP | - | ||
| открытый ключ карты. Длина значения равна 64 байтам. | 4 Описание алгоритмов | |||
Возможные значения аргументов функций в представленных алгоритмах ограничены допустимостью их использования в качестве входных параметров преобразований.
4.1 Процедура зашифрования PIN (терминал)
Для зашифрования PIN на стороне терминала необходимо сформировать шифрограмму на основе ключа шифрования KEKVKO и значения PIN-block.
Формирование ключа шифрования KEKVKO происходит в соответствии с алгоритмом согласования ключей VKO_GOSTR3410_2012_256, описанным в Р 50.1.113-2016.
Для этого сертификат открытого ключа карты CICC-PIN проверяется с использованием раннее считанного с карты сертификата эмитента карты CICC-ISS. После чего формируется эфемерная ключевая пара терминала: x — закрытый ключ терминала и xP — открытый ключ терминала в соответствии с ГОСТ Р 34.10-2012.
На основе полученных параметров вычисляется ключ шифрования:
K (x, y, UKM) = (m/q·UKM·x mod q) (yP),
KEKVKO (x, y, UKM) = H256 (K (x, y, UKM))
| C | N | P | P | P | P | P/F | P/F | P/F | P/F | P/F | P/F | P/F | P/F | F | F |
|---|
Значение в каждом столбце имеет длину 4 бита.
Значение знаков PIN-block определены в таблице 1.
Для вычисления шифрограммы применяется алгоритм зашифрования согласно ГОСТ 28147-89 в режиме СВС по ГОСТ Р 34.13-2015 с вектором инициализации IV = 0 (то же, что и двукратное применение алгоритма шифрования в соответствии с ГОСТ 28147-89 в режиме простой замены с узлом замены id-tc26-gost-28147-param-Z):
E_{KEK_{VKO}}(IUN||PIN - block)
Полученная шифрограмма и открытый ключ терминала отправляются на карту.
4.2 Процедура расшифрования и верификации PIN (карта)
Перед началом процедуры расшифрования и верификации PIN проверяются значения всех необходимых счетчиков, если хоть одно из них достигло своего предельного значения, то обработка прекращается.
Формирование ключа шифрования KEKVKO происходит в соответствии с алгоритмом согласования ключей VKO_GOSTR3410_2012_256, описанным в Р 50.1.113-2016:
K (x, y, UKM) = (m/q·UKM·y mod q) (xP),
KEKVKO (x, y, UKM) = H256 (K (x, y, UKM))
С помощью полученного ключа KEKVKO расшифровывается шифрограмма по алгоритму расшифрования согласно ГОСТ 28147-89 в режиме СВС по ГОСТ Р 34.13-2015 с вектором инициализации IV = 0 (то же, что и двукратное применение алгоритма расшифрования в соответствии с ГОСТ 28147-89 в режиме простой замены с узлом замены id-tc26-gost-28147-param-Z):
D_{KEK_{VKO}}(IUN||PIN - block)
После расшифрования и проверки формата PIN-block из него извлекается значение PIN, которое сравнивается со значением, хранимым на карте. Если проверка значения IUN, формата PIN-block или значения PIN выдала неверный результат, то обработка прекращается и происходит возврат ошибки терминалу.
Приводимые ниже значения параметров PIN, IUN, а также значения ключей терминала x, xP и значения ключей карты y, yP рекомендуется использовать только для проверки корректной работы конкретной реализации алгоритмов, описанных в настоящих рекомендациях.
Все числовые значения приведены в десятичной или шестнадцатеричной записи. Нижний индекс в записи числа обозначает основание системы счисления.
В данном приложении двоичные строки из V*, длина которых кратна 4, записываются в шестнадцатеричном виде, а символ конкатенации
опускается. То есть строка a \in V_{4r} будет представлена в виде ar-1 ar-2 ... a0, где {}_{a_{i} \in}{_{0,1,...,9,a,b,c,d,e,f}} , i = 0, 1, ..., r — 1. Соответствие между двоичными строками длины 4 и шестнадцатеричными строками длины 1 задается естественным образом (таблица А.1).
Соответствие между двоичными и шестнадцатеричными строками
| 0000 | 0 |
|---|---|
| 0001 | 1 |
| 0010 | 2 |
| 0011 | 3 |
| 0100 | 4 |
| 0101 | 5 |
| 0110 | 6 |
| 0111 | 7 |
| 1000 | 8 |
| 1001 | 9 |
| 1010 | a |
| 1011 | b |
| 1100 | c |
| 1101 | d |
| 1110 | e |
| 1111 | f |
Преобразование, ставящее в соответствие двоичной строке длины 4r шестнадцатеричную строку длины r, и соответствующее обратное преобразование для простоты записи опускается.
Для вычисления секретного ключа и последующего шифрования PIN-block используются следующие данные:
| x | = | d92d431d20375cd2a537cd648e14b60b\ 4c21a15a579861b7be419b16ed86187416 |
|---|
| xP | = | 030654acd14ad85d6b246ec4a195b334\ ecfef93c1f22b67cf81ff7d35e8dd618\ e538c3b327e93b136697ed5c86173b44\ 341c5f5b9792e95362170a993d84a47216 |
|---|
| y | = | 246954f9881d2918f373c01b6d8c9cc0\ 01563d191078316e8a3ae1174182952316 |
|---|
| yP | = | 4fc5f57ab09aa6f0f7433edefbb4bcbe\ 4368d64fcf5ec69452982cfaef61fdc6\ ae37764bc9f910905995e92389537ff3\ b632938a4a6b8e5d1bee20dee371e25816 |
|---|
Символ "\\" обозначает перенос числа на новую строку.
Используя исходные данные, формируется ключ шифрования KEKVKO:
| KEKVKO | = | ae9fcf1983ffa8160ab8bff66c78c890\ 385496c69db2c035fd321cfec3bcf36d16 |
|---|
PIN-block = 271234567fffffff16
В результате применения алгоритма зашифрования PIN получится следующее значение шифрограммы:
E_{KEK_{VKO}}(IUN||PIN - block) = 5e227e64f83e8a5470e03b97086c4f_{16}
С использованием приведенных значений KEKVKO и значения шифрограммы с помощью операции расшифрования воспроизводится исходное значение PIN.
Для вычисления секретного ключа и последующего шифрования PIN-block используются следующие данные:
| x | = | 05050505050505050505050505050505\ 0505050505050505050505050505050516 |
|---|
| xP | = | 2221df1866280f2cfd78d2d5f0f4719a\ caa187bf4fab1d8198ab53c9c800fbf2\ 4db2a57d9c26c61a886cfa10041566ad\ 01080083ed2456e5355d7467cbec327d16 |
|---|
| y | = | d92d431d20375cd2a537cd648e14b60b\ 4c21a15a579861b7be419b16ed86187416 |
|---|
| yP | = | 030654acd14ad85d6b246ec4a195b334\ ecfef93c1f22b67cf81ff7d35e8dd618\ e538c3b327e93b136697ed5c86173b44\ 341c5f5b9792e95362170a993d84a47216 |
|---|
Используя исходные данные, формируется ключ шифрования KEKVKO:
| KEKVKO | = | 165e107572d0cb10cd2c43558713e181\ 87a75b3812b020f00b3d05166a201e1e16 |
|---|
PIN-block = 271234487fffffff16
В результате применения алгоритма зашифрования PIN получится следующее значение шифрограммы:
E_{KEK_{VKO}}(IUN||PIN - block) = ee8f229bc105f29039b7af06e0058d59_{16}
С использованием приведенных значений KEKVKO и значения шифрограммы с помощью операции расшифрования воспроизводится исходное значение PIN.
Для вычисления секретного ключа и последующего шифрования PIN-block используются следующие данные:
| x | = | 246954f9881d2918f373c01b6d8c9cc0\ 01563d191078316e8a3ae1174182952316 |
|---|
| xP | = | 4fc5f57ab09aa6f0f7433edfbb4bcbe\ 4368d64fcf5ec69452982cfaef61fdc6\ ae37764bc9f910905995e92389537ff3\ b632938a4a6b8e5d1bee20dee371e25816 |
|---|
| y | = | 05050505050505050505050505050505\ 0505050505050505050505050505050516 |
|---|
| yP | = | 2221df1866280f2cfd78d2d5f0f4719a\ caa187bf4fab1d8198ab53c9c800fbf2\ 4db2a57d9c26c61a886cfa10041566ad\ 01080083ed2456e5355d7467cbec327d16 |
|---|
Используя исходные данные, формируется ключ шифрования KEKVKO:
| KEKVKO | = | b6da0eeb6cbc0ca99b20cbecadcb6e75\ b77ee8e318e1eba28ada53c8d708636316 |
|---|
PIN-block = 271234567fffffff16
В результате применения алгоритма зашифрования PIN получится следующее значение шифрограммы:
E_{KEK_{VKO}}(IUN||PIN - block) = 5c8e839b19e2031c01352611c2d2a379_{16}
С использованием приведенных значений KEKVKO и значения шифрограммы с помощью операции расшифрования воспроизводится исходное значение PIN.