Базовый обзор

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

Эти токены подпадают под Стандартную спецификацию передачи (STS), которая является глобальным стандартом, введенным в 1993 году для описания безопасного перевода коммунальных кредитов. Вам когда-нибудь было любопытно, как генерируются эти токены? Вы когда-нибудь задумывались, как ваш счетчик переводит эти числа в единицы после того, как вы их ввели? Или почему нельзя использовать жетон, предназначенный для одного метра в другом? Если у вас есть такие вопросы, то вы просто наткнулись на нужный пост.

Обычно токен имеет формат 0123–4567–8901–2345–6789. Вы понимаете эти числа? Можете ли вы определить количество выделенных единиц? Возможно нет. Это потому, что содержимое зашифровано внутри этого токена. Для тех, кому интересно, что такое шифрование, сделаем небольшой экскурс. Представьте, что вы живете в месте, где окна всех домов полупрозрачны. Вы хотели бы видеть, что находится в вашем доме, но поскольку окна полупрозрачны, единственное, что вы видите, - это искаженные изображения, которые вы не можете понять. Чтобы увидеть четкую картину, нужно иметь ключ от двери. Только с этим ключом вы можете получить доступ к тому, что находится в этом доме. Процесс открытия этого дома для доступа к его предметам - это то, что мы называем расшифровкой.

Тот же принцип применяется к токену, указанному выше. Всякий раз, когда вы производите этот платеж поставщику коммунальных услуг, например, Kenya Power, он выполняет свои вычисления и назначает вам несколько единиц, а затем шифрует эту информацию с помощью ключа, называемого ключом декодера, который соответствует тот, что внутри счетчика. Зашифрованная информация отправляется вам в виде 20-значного кода для ввода в ваш счетчик. Затем ваш глюкометр использует сохраненный ключ декодера для расшифровки этой информации и определения количества награжденных единиц.

По этой причине вы не можете использовать жетон, предназначенный для другого счетчика в вашем. У него нет ключа для перевода токена, ключ которого был другим. Вам может быть интересно, как они узнают ключ к вашему счетчику. Что ж, при совершении платежа вы обычно включаете номер своего счетчика в информацию о транзакции. Это число очень важно для генерации ключа декодера. Я включил диаграмму, которая поможет вам визуализировать процесс от начала до конца.

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

Ключ декодера

Для декодирования токена в счетчике должен быть сохранен ключ декодера. Ключ декодера зашифрован и хранится таким образом, чтобы его нельзя было прочитать из устройства в соответствии со стандартной спецификацией. Этот ключ декодера генерируется с использованием различных алгоритмов, которые включают объединение номера счетчика (ссылочный номер декодера или DRN), торгового ключа (VK), кода группы поставки (SGC), идентификационного номера эмитента (IIN), типа ключа (KT), тарифа. Индекс (TI) и ключевой номер редакции (KRN). Я не буду углубляться в специфику этих параметров, но если вы хотите узнать больше, вы можете прочитать о них здесь

Процесс генерации токена начинается с генерации ключа декодера. Процесс шифрования-дешифрования является симметричным, что означает, что ключ декодера, созданный поставщиком, аналогичен ключу, закодированному в вашем счетчике. Существует 4 алгоритма генерации ключей декодера, а именно DKGA01, DKGA02, DKGA03 и DKGA04. DKGA расшифровывается как алгоритм генерации ключа декодера. DKGA01 устарел и используется в устаревших системах, тогда как DKGA03 устарел и не используется. В этом посте будет рассмотрен DKGA02. Оставлю DKGA04 на другой день.

Блок-схема для DKGA02 выглядит следующим образом;

Формат блока управления представлен как

C представляет тип ключа, который представляет собой цифру в диапазоне 0–3. Диапазон 4–7 зарезервирован.

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

T - это отдельная цифра в Тарифном индексе в диапазоне 0–9.

R - это номер версии ключа, который представляет собой цифру в диапазоне 1–9.

F - значение пэда. Всегда представляется как 0xF в шестнадцатеричном формате.

Формат блока PAN следующий;

I представляет собой идентификационный номер эмитента. Это может быть 600727 или 0000 в зависимости от длины ссылочного номера декодера.

D представляет собой ссылочный номер декодера (DRN) и состоит из 11 или 13 цифр.

Например, если у вас номер счетчика 56728389216, блок PAN будет таким, как показано ниже;

Заметили, что цифра 6 отсутствует? Это потому, что используются только 5 наименьших значащих цифр. Наименее значащая цифра - это единица в крайнем правом углу. В случае 600727 7 - это наименее значимая цифра, а 6 - наиболее значимая.

64-битный торговый ключ генерируется в центре управления ключами и обычно хранится в секрете, потому что просочившийся торговый ключ может использоваться для генерации действительных токенов, что ведет к огромной потере доходов для поставщика коммунальных услуг. Через этапы шифрования, показанные на рисунке 1, ключ декодера получается и используется на следующем этапе, где генерируется фактический токен. Прежде чем обсуждать этап генерации токена, мы напишем код для демонстрации алгоритма генерации ключа декодера. Внимание! Произвольные значения будут использоваться для кода группы поставок, индекса тарифа и ключевого номера редакции. Кроме того, ссылочный номер декодера будет фиктивным.

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

Ключ декодера генерируется с помощью ряда описанных шагов. Сначала генерируются блоки PAN и Control, и над ними выполняется операция XOR. Если вы не знакомы с XOR, вы можете освежить свои знания, прочитав побитовые операции. Затем результат шифруется с использованием алгоритма шифрования DES, в котором ключ шифрования является торговым ключом. Другая операция XOR выполняется с зашифрованным результатом, используя исходный результат XOR блока панорамирования и управления. Наконец, чтобы получить ключ декодера, с последним результатом выполняется еще одна операция XOR с использованием торгового ключа. Это показано в приведенном ниже коде. Я мог многое пропустить, но это дает общее представление.

Если вы хотите запустить код и увидеть, как все встало на свои места, вы можете попробовать его ниже.



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

Следите за обновлениями Часть 2 и благодарим за чтение!