(Java) Обертывание ключей с помощью алгоритма тройного шифрования данных (TDEA) для теста известного ответа (KAT) - PullRequest
1 голос
/ 28 мая 2020

Я работаю над тестом известных ответов для переноса ключей и не могу найти правильный алгоритм или реализацию. Как описано в «официальном» тесте (https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/mac/KWVS.pdf), я хотел бы использовать алгоритм тройного шифрования данных (TDEA), поэтому я работаю с официальным тестовым вектором от NIST (получите набор тестовых векторов здесь: https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/mac/kwtestvectors.zip) в файле «TKW_AE.txt», где K - ключ, P - ключ для переноса («Открытый текст») и C - зашифрованный / завернутый зашифрованный текст (« output "):

[PLAINTEXT LENGTH = 64]
COUNT = 0
K = 12b84c663120c196f8fc17428bc86a110d92cc7c4d3cb695
P = ef7da3da918d0679
C = 7a72bbca3aa323aa1ac231ba

Моя реализация, похоже, работает, поскольку она обертывает открытый текст (ключ для переноса) и разворачивает зашифрованный текст в исходный ключ, но при запуске теста с тем же ключом (" K ") и открытый текст (" P ") Я получаю разные результаты по зашифрованному тексту, это из-за случайного IV, который используется для алгоритма" DESedeWrap ".

Мой вопрос: как я могу настроить шифр упаковки / развертывания в соответствии с «официальным» результатом тестового вектора (в моем примере мне нужен вывод «7a72bbca3aa323aa1ac231ba» для зашифрованного текста («C)».

Это это один результат:

TDEA KeyWrapping with Java version: 11.0.6+8-b520.43
pt        : ef7da3da918d0679
ctExpected: 7a72bbca3aa323aa1ac231ba
ct JCE    : 77d34a462f7e1fc628692ef05be251b4d8838510fe3d019b
dt JCE    : ef7da3da918d0679
ct JCE 2  : 23aa07d07bd21c3aaf6e23cbbf00cf2b3c2d140b4668f7ec
dt JCE 2  : ef7da3da918d0679

Исходный код:

* 102 0 *
...