КРИПТОГРАФИЧЕСКАЯ ОБРАБОТКА С ИСПОЛЬЗОВАНИЕМ ПРОЦЕССОРА

1. Криптографический процессор, содержащий одно или несколько арифметико-логических устройств (ALU) и множество регистров данных, причем процессор выполнен с возможностью:
принимать блок данных a-битовой длины, причем блок данных организован как a/n n-битовых слов;
хранить a/n n-битовых слов как структуру в регистрах данных, причем структура является матрицей, имеющей b>1 строк и c>1 столбцов p-битовых элементов структуры, где
p>n;
a/n>1;
каждое n-битовое слово данных хранится в соответствующем p-битовом элементе структуры; и
b·c·n=a; и
осуществлять преобразование перемешиванием столбцов в структуре с использованием одного или нескольких ALU, причем преобразование перемешиванием столбцов предполагает формирование произведений конечного поля с использованием побитового сдвига и операций исключающее ИЛИ (XOR).
2. Процессор по п.1, в котором
a равно 128;
n равно 8;
a/n равно 16;
p ≥ 9;
b равно 4; и
c равно 4.
3. Процессор по п.1, причем
процессор выполнен с возможностью обработки блока данных образом, совместимым с Улучшенным Стандартом Шифрования (AES); и
обработка содержит преобразование структуры по множеству раундов, содержащих преобразование заменой элемента, преобразование сдвигом строк, преобразование перемешиванием столбцов и преобразование добавлением ключа для раунда.
4. Процессор по п.3, в котором
преобразование заменой элемента, ModSubBytes(k), осуществляется над элементом k структуры, где k является десятичным представлением значения элемента, такого, что
SubBytes(k) представляет AES SubBytes() преобразование для k; и
знак операции XOR.
5. Процессор по п.4, причем
процессор выполнен с возможностью осуществлять ModSubBytesShiftRows() преобразование, которое объединяет преобразования сдвигом строк и заменой элемента, над элементами структуры
i, j
i, j+i
(mod 4)
ModSubBytesShiftRows(s) = ModSubBytes(s);
i, j
s представляет значение элемента структуры в строке i и столбце j; и
mod представляет сокращение по модулю.
6. Процессор по п.3, в котором преобразование сдвигом строк ModShiftRows() кругообразно сдвигает каждую строку структуры на d·p бит.
7. Процессор по п.3, в котором
0, j
3, j
четыре элемента столбца j структуры представлены как s, …, s;
Shift(а) осуществляет сдвиг на 1 бит влево по компоненту операции а;
преобразование перемешиванием столбцов ModMixColumns() осуществляется после преобразования заменой элемента раунда; и
операции ModMixColumns() преобразования для элементов столбца j структуры являются
0, j
0, j
1, j
1, j
2, j
3, j
ModMixColumns(s)=Shift(ss)sss;
1, j
1, j
2, j
2, j
3, j
0, j
ModMixColumns(s)=Shift(ss)sss;
2, j
2, j
3, j
3, j
0, j
1, j
ModMixColumns(s)=Shift(ss)sss; и
3, j
3, j
0, j
0, j
1, j
2, j
ModMixColumns(s)=Shift(ss)sss.
8. Процессор по п.3, в котором
0
1
2
3
строки 0, 1, 2 и 3 структуры хранятся как sd, sd, sd и sd соответственно на четырех соответствующих регистрах данных из множества регистров данных;
операции преобразования перемешиванием столбцов ModMixColumns() для строк структуры следующие
0
0
1
1
2
3
ModMixColumns(sd) = Shift(sd sd)  sd sd sd;
1
1
2
2
3
0
ModMixColumns(sd) = Shift(sd sd)  sd sd sd;
2
2
3
3
0
1
ModMixColumns(sd) = Shift(sd sd)  sd sd sd; и
3
0
1
1
2
3
ModMixColumns(sd) = Shift(sd sd)  sd sd sd.
9. Процессор по п.3, причем
процессор выполнен с возможностью
объединения выполнения преобразований перемешиванием столбцов и добавлением ключа для раунда; и
формирования AES - расширенного плана смены ключей из ключа, соответствующего блоку данных, причем расширенный план смены ключей содержит элементы расширенного плана смены ключей, соответствующие элементам структуры для конкретного раунда обработки;
0
1
2
3
строки 0, 1, 2 и 3 структуры хранятся как sd, sd, sd и sd соответственно на четырех соответствующих регистрах данных из множества регистров данных;
i
четыре элемента расширенного плана смены ключей соответствующие строке i структуры для конкретного раунда хранятся вместе в одном из множества регистров данных, таком как kd;
i
kd для раунда r является равной конкатенации байтов с дополненным префиксом AES - расширенного плана смены ключей, а именно key[16r + i], key [16r + 4 + i], key[16r + 8 + i], и key[16r + 12 + i];
key[n] ссылается на n-й байт AES - расширенного плана смены ключей; и
0
3
осуществление объединенного преобразования перемешиванием столбцов и добавлением ключа для раунда структуры для конкретного раунда производит четыре новые строки, new_sd ,…, new_sd, где
0
0
1
1
2
3
0
new_sd = Shift(sd sd)  sd sd sd kd;
1
1
2
2
3
0
1
new_sd = Shift(sd sd)  sd sd sd kd;
2
2
3
3
0
1
2
new_sd = Shift(sd sd)  sd sd sd kd; и
3
0
1
1
2
3
3
new_sd = Shift(sd sd)  sd sd sd kd.
10. Процессор по п.3, причем
процессор выполнен с возможностью
формирования AES - расширенного плана смены ключей, key[], из ключа соответствующего блоку данных, причем расширенный план смены ключей содержит элементы расширенного плана смены ключей соответствующие элементам структуры для конкретных раундов обработки; и
g
формирования 320 - байтового расширенного плана смены ключей, new_key[] из key с использованием следующей процедуры, где temp1 и temp2 являются временными переменными, vector[e…f] ссылается на байты от e до f вектора массива, и d||0 означает суффиксное дополнение g нолей до d
new_key[k] = key[k] для k = 0…15;
new_key[k] = key[k - 72] для k = 232…247; и
для r = от 1 до 9
{
9
temp1 = key[16r]  (key[16r + 4] ||0)
9
temp2 = key[16r + 8]  (key[16r + 12] ||0)
new_key[24r + 4…24r + 7] = temp1[0…3]
new_key[24r…24r + 3] = temp2[0…3]
9
temp1 = key[16r + 1]  (key[16r + 5] ||0)
9
temp2 = key[16r + 9]  (key[16r + 13] ||0)
new_key[24r - 8…24r - 5] = temp1[0…3]
new_key[24r - 4…24r - 1] = temp2[0…3]
9
temp1 = key[16r + 2]  (key[16r + 6] ||0)
9
temp2 = key[16r + 10]  (key[16r + 14] ||0)
new_key[8r + 240…8r + 243] = temp1[0…3]
new_key[8r + 244…8r + 247] = temp2[0…3]
9
temp1 = key[16r + 3]  (key[16r + 7] ||0)
9
temp2 = key[16r + 11]  (key[16r + 15] ||0)
new_key[24r + 8…24r + 11] = temp1[0…3]
new_key[24r +12…24r + 15] = temp2[0…3]
}; и
с использованием new_key[] вместо key[] для осуществления преобразования раундов добавлением ключа для раунда.
11. Процессор по п.10, в котором
ключ, соответствующий блоку данных, имеет длину 128-бит;
i
четыре элемента new_key[], соответствующие строке i в конкретном раунде преобразования, хранятся вместе как kd в одном из множества регистров данных;
i
для начального раунда, kd = new_key[4i…4i + 3];
i
для раундов от 1 до 9, kd = key1(r,i)  (key2(r,i)<<18), причем key1(r,i) и key2(r,i) для раунда r и строки i получают следующим образом
key1(r, 0) = new_key[24·r + 4…24·r + 7];
key2(r, 0) = new_key[24·r…24·r + 3];
key1(r, 1) = new_key[24·r - 8…24·r - 5];
key2(r, 1) = new_key[24·r - 4…24·r - 1];
key1(r, 2) = new_key[8·r + 240…8·r + 243];
key2(r, 2) = new_key[8·r + 244…8·r + 247];
key1(r, 3) = new_key[24·r + 8…24·r + 11]; и
key2(r, 3) = new_key[24·r + 12…24·r + 15]; и
i
для раунда 11, kd = new_key[232+4i…4i + 235].
12. Процессор по п.11, причем процессор выполнен с возможностью осуществлять каждое из преобразований добавлением ключей для раундов от 1 до 9 с использованием не более чем четырех операций чтения и восьми операций XOR.
13. Процессор по п.3, в котором
0
1
2
3
строки 0, 1, 2 и 3 структуры хранятся как sd, sd, sd и sd соответственно на четырех соответствующих регистрах данных из множества регистров данных;
i
четыре элемента расширенного плана смены ключей, соответствующие строке i структуры для конкретного раунда, хранятся вместе в одном из множества регистров данных, таком как kd;
содержание рабочего регистра, который является одним из множества регистров данных, хранится как wd; и
процессор выполнен с возможностью
формирования AES - расширенного плана смены ключей, из ключа, соответствующего блоку данных, причем key[] расширенного плана смены ключей содержит элементы расширенного плана смены ключей, соответствующие элементам структуры для конкретных раундов обработки; и
i
заполнения регистра данных, хранящего kd осуществляя
i
установку kdдля key[16r + i];
i
сдвиг влево kd на 3·p бит;
установку wd для key[16r + 4 + i];
сдвиг влево wd на 2·p бит;
i
i
установку kdдля wd  kd;
установку wd для key[16r + 8 + i];
сдвиг влево wd на p бит;
i
i
установку kdдля wd  kd;
установку wd для key[16r + 12 + i]; и
i
i
установку kdдля wd  kd.
14. Процессор по п.3, в котором
0
1
2
3
строки 0, 1, 2 и 3 структуры хранятся как sd, sd, sd и sd соответственно на четырех соответствующих регистрах данных из множества регистров данных;
i
четыре элемента расширенного плана смены ключей соответствующие строке i структуры для конкретного раунда хранятся вместе в одном из множества регистров данных, таком как kd;
0
1
2
3
причем процессор выполнен с возможностью осуществления преобразований перемешиванием столбцов и добавлением ключа для раунда в объединении для формирования преобразованных строк структуры именованных как new_sd, new_sd, new_sd и new_sd соответственно, осуществляя
для строки 0:
0
0
M = 2·sd;
1
1
0
(0)
t  = sd kd;
2
1
0
(0)
(0)
t  = t  M;
3
2
1
(0)
(0)
t  = t  M;
4
3
2
(0)
(0)
t  = t  sd; и
0
4
3
(0)
new_sd = t  sd;
для строки 1:
1
1
M = 2·sd;
1
0
1
(1)
t  = sd kd;
2
1
1
(1)
(1)
t  = t  M;
3
2
2
(1)
(1)
t  = t  sd;
4
3
2
(1)
(1)
t  = t  M; и
1
4
3
(0)
new_sd= t  sd;
для строки 2:
2
2
M = 2·sd;
1
2
0
(2)
t  = kd sd;
2
1
1
(2)
(2)
t  = t  sd;
3
2
3
(2)
(2)
t  = t  sd;
4
3
3
(2)
(2)
t  = t  M; и
2
4
2
(0)
new_sd = t  M;
для строки 3:
3
3
M = 2·sd;
1
0
1
(3)
t  = sd sd;
2
1
0
(3)
(3)
t  = t  M;
3
2
2
(3)
(3)
t  = t  sd;
4
3
3
(3)
(3)
t  = t  kd; и
3
4
3
x
x
(0)
(y)
new_sd = t  M; где M и t  все представляют временные регистры данных из множества регистров данных для хранения временных значений.
15. Процессор по п.14, в котором умножение на 2 осуществляется с использованием однобитовых сдвигов влево.
16. Процессор по п.3, причем процессор выполнен с возможностью осуществления замены байта и преобразования сдвигом строк для раунда 22 тактовыми циклами, осуществляя
в первом тактовом цикле: E2 и C1;
во втором тактовом цикле: E3, C2 и U1;
в третьем тактовом цикле: E4, C3 и U2;
в четвертом тактовом цикле: E5, C4 и U3;
в пятом тактовом цикле: E6, C5 и U4;
в шестом тактовом цикле: E7, C6, U5 и R1;
в седьмом тактовом цикле: E8, C7, I1, U6 и R2;
в восьмом тактовом цикле: E9, C8, I2, U7 и R3;
в девятом тактовом цикле: E10, C9, I3, U8 и R4;
в десятом тактовом цикле: E11, C10, I4, U9 и R5;
в одиннадцатом тактовом цикле: E12, C11, I5, U10 и R6;
в двенадцатом тактовом цикле: E13, C12, I6, U11 и R7;
в тринадцатом тактовом цикле: E14, C13, I7, U12 и R8;
в четырнадцатом тактовом цикле: E15, C14, I8, U13 и R9;
в пятнадцатом тактовом цикле: E16, C15, I14, U14 и R10;
в шестнадцатом тактовом цикле: C16, I10, U15 и R11;
в семнадцатом тактовом цикле: I11, U16 и R12;
в восемнадцатом тактовом цикле: I12 и R13;
в девятнадцатом тактовом цикле: I13 и R14;
в двадцатом тактовом цикле: I14 и R15;
в двадцать первом тактовом цикле: I15 и R16; и
в двадцать втором тактовом цикле: E1 и I16, причем
процессор содержит блок формирования адреса (AGU);
Em представляет осуществленную ALU операцию извлечения для элемента m структуры;
Cm представляет осуществленную ALU операцию вычисления для элемента m структуры;
Um представляет осуществленную AGU операцию загрузки для элемента m структуры;
Rm представляет осуществленную AGU операцию чтения для элемента m структуры;
Im представляет осуществленную ALU операцию вставки для элемента m структуры; и
операция E1 в двадцать втором тактовом цикле осуществляется для последующего раунда.
17. Процессор по п.3, причем процессор выполнен с возможностью осуществления замены байта и преобразования сдвигом строк для раунда 22 тактовыми циклами, осуществляя
в первом тактовом цикле: E3, C2 и U1;
во втором тактовом цикле: E4, C3, E5, RK2 и RK1;
в третьем тактовом цикле: E6, C4, U2 и RK3;
в четвертом тактовом цикле: E7, C5, U3 и RK4;
в пятом тактовом цикле: C1, C6, CK1 и U4;
в шестом тактовом цикле: E8, C7, CK2, E10, U5 и R1 + I1;
в седьмом тактовом цикле: E9, C8, U6 и R2;
в восьмом тактовом цикле: E12, C9, I2, U7 и R3;
в девятом тактовом цикле: E11, C10, CK3, I3, U8 и R4;
в десятом тактовом цикле: E16, C11, CK4, I4, U9 и R5;
в одиннадцатом тактовом цикле: E13, C12, CK5, I5, U10 и R6;
в двенадцатом тактовом цикле: E14, C13, E15, I6, U11 и R7;
в тринадцатом тактовом цикле: C14, I7, U12 и R8;
в четырнадцатом тактовом цикле: C15, I8, U13 и R9 + I9;
в пятнадцатом тактовом цикле: C16, U14 и R10;
в шестнадцатом тактовом цикле: I10, U15 и R11;
в семнадцатом тактовом цикле: I11, U16 и R12;
в восемнадцатом тактовом цикле: I12, RK5 и R13;
в девятнадцатом тактовом цикле: I13 и R14;
в двадцатом тактовом цикле: CK6, I14 и R15;
в двадцать первом тактовом цикле: E1, I15 и R16; и
в двадцать втором тактовом цикле: E2 и I16, причем
процессор содержит блок формирования адреса (AGU);
Em представляет осуществленную ALU операцию извлечения для элемента State m;
Cm представляет осуществленную ALU операцию вычисления для элемента State m;
Um представляет осуществленную AGU операцию загрузки для элемента State m;
Rm представляет осуществленную AGU операцию чтения для элемента State m;
Im представляет осуществленную ALU операцию вставки для элемента State m; и
Rm + Im представляет осуществленную AGU объединенную операцию чтения и вставки для упомянутого элемента m структуры;
RKh представляет осуществленную AGU операцию чтения ключа для чтения значений ключа из расширенного плана смены ключей;
CKh представляет осуществленную ALU операцию объединенного копирования для объединения значений ключа из расширенного плана смены ключей;
операция E1 в двадцать первом тактовом цикле и операция E2 в двадцать втором тактовом цикле осуществлены для последующего раунда.
18. Способ для криптографического процессора, содержащего одно или несколько арифметико-логических устройств (ALU's) и множество регистров данных, причем способ содержит этапы, на которых:
принимают блок данных a-битовой длины, причем блок данных организован как a/n n-битовых слов;
хранят a/n n-битовых слов как структуру в регистрах данных, причем структура является матрицей, имеющей b>1 строк и c>1 столбцов p-битовых элементов структуры, где
p>n;
a/n>1;
каждое n-битовое слово данных хранится в соответствующем p-битовом элементе структуры; и
b·c·n=a; и
осуществляют преобразование перемешиванием столбцов структуре с использованием одного или нескольких ALU, причем преобразование перемешиванием столбцов предполагает формирование произведений конечного поля с использованием побитового сдвига и операций исключающее ИЛИ (XOR).
19. Способ по п.18, в котором
a равно 128;
n равно 8;
a/n равно 16;
p ≥ 9;
b равно 4; и
c равно 4.
20. Способ по п.18, в котором
процессор обрабатывает блок данных образом, совместимым с Улучшенным Стандартом Шифрования (AES); и
обработка содержит преобразование структуры по множеству раундов, содержащих преобразование заменой элемента, преобразование сдвигом строк, преобразование перемешиванием столбцов и преобразование добавлением ключа для раунда.