Интернет магазин китайских планшетных компьютеров



Компьютеры - ACE Encrypt - Схема шифрования

30 апреля 2011


Оглавление:
1. ACE Encrypt
2. Безопасность
3. Схема шифрования
4. Схема цифровой подписи
5. Замечания



Пара ключей шифрования

В схеме шифрования ACE задействованы два типа ключей:
открытый ключ ACE: \,.
закрытый ключ ACE: \,.
Для заданного параметра размера m\,, такого что 1024 \le m \le 16384, компоненты ключей определяются следующим образом:
q\, — 256-битное простое число.
P\, — m-битное простое число, такое что P\equiv1.
g_1,g_2,c,d,h_1,h_2\, — элементы \left\{1,...,P-1\right\}.
w,x,y,z_1,z_2\, — элементы \left\{0,...,q-1\right\}.
k_1,k_2\, — элементы B^\ast, для которых L=20l^\prime+64 и L=32\left\lceil l/16 \right\rceil+40, где l=\left\lceil m/8 \right\rceil и l^\prime=L_b.

Генерация ключа

Алгоритм. Генерация ключа для схемы шифрования ACE.
Вход: параметра размера m\,, такой что 1024 \le m \le 16384.
Выход: пара открытый/закрытый ключ.

  1. Сгенерировать случайное простое число q\,, такое что 2^{255} < q < 2^{256}\,.
  2. Сгенерировать случайное простое число P\,, 2^{m-1} < P < 2^{m}\,, такое что P\equiv1.
  3. Сгенерировать случайное целое число g_1 \in \left\{ 2,...,P-1 \right\}, такое что g_1^q\equiv1.
  4. Сгенерировать случайные целые числа w \in \left\{ 1,...,q-1 \right\} и x,y,z_1,z_2 \in \left\{ 0,...,q-1 \right\}
  5. Вычислить следующие целые числа в \left\{ 1,...,P-1 \right\}:

    g_2 \leftarrow g_1^w rem P,


    c \leftarrow g_1^x rem P,


    d \leftarrow g_1^y rem P,


    h_1 \leftarrow g_1^{z_1} rem P,


    h_2 \leftarrow g_1^{z_2} rem P.

  6. Сгенерировать случайные байтовые строки k_1 \in B^{20l^\prime+64} и k_2 \in B^{2\left\lceil l/16 \right\rceil+40}, где l=L_B\, и l^\prime = L_B.
  7. Вернуть пару открытый/закрытый ключ

    ,)\,

Представление шифротекста

Шифротекст в схеме шифрования ACE имеет вид

\,,


где компоненты определяются следующим образом:
u_1,u_2,v\, — целые числа из \left\{ 1,...,P-1 \right\}.
s\, — элемент W^4\,.
e\, — элемент B^{\ast}\,.
s,u_1,u_2,v\, назовём преамбулой, а e\, — криптограммой. Если текст — строка из l\, байт, то тогда длина e\, равна l+16\left\lceil l/1024 \right\rceil.

Необходимо ввести функцию CEncode\,, которая представляет шифротекст в виде байтовой строки, а также обратную функцию CDecode\,. Для целого l>0\,, символьной строки s \in W^4, целых 0 \le u_1,u_2,v<256^l, и байтовой строки e \in B^{\ast},

CEncode \stackrel{\mathrm{def}}{=}I_{W^{\ast}}^{B^{\ast}}||pad_l)||pad_l)||pad_l)||e \in B^{\ast}.


Для целого l>0\,, байтовой строки \psi \in B^{\ast}, для которой L \ge 3l+16,

CDecode \stackrel{\mathrm{def}}{=},I_{B^{\ast}}^{Z},I_{B^{\ast}}^{Z},I_{B^{\ast}}^{Z},\Bigl_{16+3l}^{L}) \in W^4 \times Z \times Z \times Z \times B^{\ast}.

Процесс шифрования

Алгоритм. Ассимметричный процесс шифрования ACE.
Вход: открытый ключ \, и байтовая строка M \in B^{\ast}\,.
Выход: байтовая строка — шифротекст  \psi\ , полученный из M\,.

  1. Сгенерировать случайное r \in \left\{ 0,...,q-1 \right\}.
  2. Сгенерировать преамбулу шифротекста:
    1. Сгенерировать s \in W^4\,.
    2. Вычислить u_1 \leftarrow g_1^r rem P, u_2 \leftarrow g_2^r rem P.
    3. Вычислить \alpha\ \leftarrow UOWHash^\prime,s,u_1,u_2) \in Z\,; заметим, что 0 < \alpha\ < 2^{160}\,.
    4. Вычислить v \leftarrow c^r d^{\alpha\ r} rem P\,.
  3. Вычислить ключ для операции симметричного шифрования:
    1. \tilde{h_1} \leftarrow h_1^r rem P, \tilde{h_2} \leftarrow h_2^r rem P.
    2. Вычислить k \leftarrow ESHash,s,u_1,u_2,\tilde{h_1},\tilde{h_2}) \in W^8\,.
  4. Вычислить криптограмму e \leftarrow SEnc.
  5. Закодировать шифротекст:

    \psi\ \leftarrow CEncode,s,u_1,u_2,v,e).

  6. Вернуть  \psi\ .

Перед запуском процесса симметричного шифрования входное сообщение M \in B^{\ast}\, разбивается на блоки M_1,...,M_t\,, где каждый блок кроме, возможно, последнего имеет 1024 байт. Каждый блок шифруется потоковым шифратором. Для каждого зашифрованного блока E_i\, вычисляется 16-байтовый код аутентификации. Получаем криптограмму

e=E_1||C_1||...||E_t||C_t\,.

L=L+16\left\lceil L/m \right\rceil. Заметим, что если L=0\,, то L=0\,.

Алгоритм. Симметричный процесс шифрования ACE.
Вход:  \in W^8 \times W^4 \times Z \times B^{\ast} \, m>0\,
Выход: e \in B^l, l=L+16 \left\lceil L/m \right\rceil.

  1. Если M=\lambda_B \,, тогда вернуть \lambda_B \,.
  2. Проинициализировать генератор псевдо-случайных чисел:

genState \leftarrow InitGen \in GenState

  1. Сгенерировать ключ k_{AXU} AXUHash \,:

 \leftarrow GenWords+24),genState)..

  1. e \leftarrow \lambda_B, i \leftarrow 0.
  2. Пока i<L\,, выполнять следующее:
    1. r \leftarrow min-i,m).
    2. Сгенерировать значения масок для шифрования и MAC:
      1.  \leftarrow GenWords.
      2.  \leftarrow GenWords.
    3. Зашифровать текст: enc \leftarrow \Bigl_i^{i+r} \oplus mask_e.
    4. Сгенерировать аутентификационный код сообщения:
      1. Если i+r=L\,, тогда lastBlock \leftarrow 1; иначе lastBlock \leftarrow 0.
      2. mac \leftarrow AXUHash \in W^4.
    5. Обновить шифротекст: e \leftarrow e||enc||I_{W^{\ast}}^{B^{\ast}}.
    6. i \leftarrow i+r.
  3. Вернуть e \,.

Процесс дешифрования

Алгоритм. Процесс дешифрования ACE.
Вход: открытый ключ \, и соответствующий закрытый ключ \,, байтовая строка \psi \in B^{\ast}.
Выход: Расшифрованное сообщение M \in B^{\ast} \cup {Reject}.

  1. Дешифровать шифротекст:
    1. Если L < 3L_B+16 \,, тогда вернуть Reject \,.
    2. Вычислить:

       \leftarrow CDecode,\psi) \in W^4 \times Z \times Z \times Z \times B^{\ast};


      заметим, что 0 \le u_1,u_2,v<256^l, где l=L_B\,.
  2. Подтвердить преамбулу шифротекста:
    1. Если u_1 \ge P или u_2 \ge P или v \ge P, тогда вернуть Reject \,.
    2. Если u_1^q \ne 1 rem P, тогда вернуть Reject \,.
    3. reject \leftarrow 0 \,.
    4. Если u_2 \ne u_1^w rem P, тогда reject \leftarrow 1 \,.
    5. Вычислить \alpha \leftarrow UOWHash^{\prime},s,u_1,u_2) \in Z; заметим, что 0 \le \alpha \le 2^{160}.
    6. Если v \ne u_1^{x+{\alpha}y} rem P, тогда reject \leftarrow 1 \,.
    7. Если reject=1 \,, тогда вернуть Reject \,.
  3. Вычислить ключ для процесс симметричного дешифрования:
    1. \tilde{h_1} \leftarrow u_1^{z_1} rem P, \tilde{h_2} \leftarrow u_1^{z_2} rem P.
    2. Вычислить k \leftarrow ESHash,s,u_1,\tilde{h_1},\tilde{h_2}) \in W^8.
  4. Вычислить M \leftarrow SDec;заметим, что SDec\, может вернуть Reject \,.
  5. Вернуть M\,.

Алгоритм. Операция дешифрования SDec\,.
Вход:  \in W^8 \times W^4 \times Z \times B^{\ast} \, m>0\,
Выход: Расшифрованное сообщение M \in B^{\ast} \cup {Reject}.

  1. Если e=\lambda_B \,, тогда вернуть \lambda_B \,.
  2. Проинициализировать генератор псевдо-случайных чисел:

    genState \leftarrow InitGen \in GenState

  3. Сгенерировать ключ k_{AXU} AXUHash \,:

     \leftarrow GenWords+24),genState)..

  4. M \leftarrow \lambda_B, i \leftarrow 0.
  5. Пока i<L\,, выполнять следующее:
    1. r \leftarrow min-i,m+16)-16.
    2. Если r \le 0, тогда вернуть Reject \,.
    3. Сгенерировать значения масок для шифрования и MAC:
      1.  \leftarrow GenWords.
      2.  \leftarrow GenWords.
    4. Подтвердить аутентификационный код сообщения:
      1. Если i+r+16=L\,, тогда lastblock \leftarrow 1; иначе lastblock \leftarrow 0.
      2. mac \leftarrow AXUHash \in W^4.
      3. Если \Biglr_{i+r}^{i+r+16} \ne I_{W^{\ast}}^{B^{\ast}}, тогда вернуть Reject \,.
    5. Обновить текст: M \leftarrow M|| \oplus mask_e).
    6. i \leftarrow i+r+16.
  6. Вернуть M \,.


Просмотров: 3894


<<< Защита от несанкционированного копирования