Интегрированные сети ISDN


HMAC и псевдослучайные функции - часть 2


S1 и S2 являются двумя равными по длине половинами секретного кода. Их длина определяется путем округления результата деления исходного секретного кода на два. Таким образом, если исходный секретный код имеет длину в байтах, характеризуемую нечетным числом, то последний байт S1 будет тем же, что и первый байт S2.

L_S = длина секретного кода в байтах;

L_S1 = L_S2 = ceil(L_S / 2);

PRF определяется как результат смешения двух псевдослучайных потоков с помощью операции исключающее ИЛИ.

PRF(secret, label, seed) = P_MD5(S1, label + seed) XOR P_SHA-1(S2, label + seed);

Метка представляет собой ASCII-строку. Она должна быть включена в исходном виде без байта длины или завершающего нуля. Например: метка "slithy toves" будет представлена в виде:

73 6C 69 74 68 79 20 74 6F 76 65 73

Заметим, что, так как MD5 выдает на выход 16 байт, а SHA-1 - 20 байт, границы их внутренних итераций не будут выровнены; чтобы сформировать на выходе 80 байт P_MD5 осуществит итерации до A(5), в то время как P_SHA-1 - до A(4).




Начало  Назад  Вперед



Книжный магазин