Рейтинг:0

Как сгенерировать ключи из 56 бит с помощью DES

флаг ru

Сначала я просто хочу извиниться за свое незнание этой системы.

Профессор как бы дал нам упражнение, которое нужно было решить, прежде чем даже пройти уроки. Я устал смотреть видео в Интернете, но я знаю только, как использовать 64-битный начальный ключ.

начальный 56-битный шестнадцатеричный ключ: «B092EBA02E3798» Даем ключ К16 (на последний ход) на 64 бита в шестнадцатеричном виде.

Итак, мой вопрос: нужно ли мне превратить 56-битный код в 64-битный, прежде чем выполнять первоначальную перестановку. И если да, то как я могу это сделать. Спасибо за помощь.

kelalaka avatar
флаг in
Добро пожаловать в Cryptography.SE. Википедия - это первый шаг!. Однако у нас есть некоторые вопросы и ответы по этому поводу, см. [Wiki:DES] (https://en.wikipedia.org/wiki/Data_Encryption_Standard#Description). Ключ якобы состоит из 64 бит; однако только 56 из них фактически используются алгоритмом. Восемь битов используются исключительно для проверки четности, после чего отбрасываются. Следовательно, эффективная длина ключа составляет 56 бит.
kelalaka avatar
флаг in
Отвечает ли это на ваш вопрос? [Биты четности DES] (https://crypto.stackexchange.com/questions/70736/des-parity-bits)
Рейтинг:3
флаг in

Ключ DES определен как 64 бита. 56 из них являются фактическим ключом и 8 битами четности. Это позволяет ему уместиться в 8 байт.

K16 предположительно относится к последнему подключу согласно расписанию ключей. Каждый подключ DES имеет длину 48 бит. введите описание изображения здесь

Кодирование 56-битного ключа в 64-битное выполняется путем добавления бита четности к каждому 7-битному байту. Однако я не знаю стандартного способа представления 48-битного подключа как 64-битного.

Hakim Cheheb avatar
флаг ru
Большое спасибо за вашу помощь. Думаю, я просто попытаюсь решить упражнение с 48-битным ключом.
Рейтинг:1
флаг cn

Может быть недостаточно информации о том, где в алгоритме находится ваш 56-битный ключ.

Если 56-битное значение B092EBA02E3798 представляет блок CD, следующий за PC1 keytab Таблица -s показывает, что выбранный ключ K16 является результатом применения PC2 к блоку CD:

  Бит 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
КС
   1 15 18 12 25 2 6 4 1 16 7 22 11 24 20 13 5 27 9 17 8 28 21 14 3
   2 16 19 13 26 3 7 5 2 17 8 23 12 25 21 14 6 28 10 18 9 1 22 15 4
   3 18 21 15 28 5 9 7 4 19 10 25 14 27 23 16 8 2 12 20 11 3 24 17 6
   4 20 23 17 2 7 11 9 6 21 12 27 16 1 25 18 10 4 14 22 13 5 26 19 8
   5 22 25 19 4 9 13 11 8 23 14 1 18 3 27 20 12 6 16 24 15 7 28 21 10
   6 24 27 21 6 11 15 13 10 25 16 3 20 5 1 22 14 8 18 26 17 9 2 23 12
   7 26 1 23 8 13 17 15 12 27 18 5 22 7 3 24 16 10 20 28 19 11 4 25 14
   8 28 3 25 10 15 19 17 14 1 20 7 24 9 5 26 18 12 22 2 21 13 6 27 16
   9 1 4 26 11 16 20 18 15 2 21 8 25 10 6 27 19 13 23 3 22 14 7 28 17
  10 3 6 28 13 18 22 20 17 4 23 10 27 12 8 1 21 15 25 5 24 16 9 2 19
  11 5 8 2 15 20 24 22 19 6 25 12 1 14 10 3 23 17 27 7 26 18 11 4 21
  12 7 10 4 17 22 26 24 21 8 27 14 3 16 12 5 25 19 1 9 28 20 13 6 23
  13 9 12 6 19 24 28 26 23 10 1 16 5 18 14 7 27 21 3 11 2 22 15 8 25
  14 11 14 8 21 26 2 28 25 12 3 18 7 20 16 9 1 23 5 13 4 24 17 10 27
  15 13 16 10 23 28 4 2 27 14 5 20 9 22 18 11 3 25 7 15 6 26 19 12 1
  16 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2

  Бит 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
КС
   1 42 53 32 38 48 56 31 41 52 46 34 49 45 50 40 29 35 54 47 43 51 37 30 33
   2 43 54 33 39 49 29 32 42 53 47 35 50 46 51 41 30 36 55 48 44 52 38 31 34
   3 45 56 35 41 51 31 34 44 55 49 37 52 48 53 43 32 38 29 50 46 54 40 33 36
   4 47 30 37 43 53 33 36 46 29 51 39 54 50 55 45 34 40 31 52 48 56 42 35 38
   5 49 32 39 45 55 35 38 48 31 53 41 56 52 29 47 36 42 33 54 50 30 44 37 40
   6 51 34 41 47 29 37 40 50 33 55 43 30 54 31 49 38 44 35 56 52 32 46 39 42
   7 53 36 43 49 31 39 42 52 35 29 45 32 56 33 51 40 46 37 30 54 34 48 41 44
   8 55 38 45 51 33 41 44 54 37 31 47 34 30 35 53 42 48 39 32 56 36 50 43 46
   9 56 39 46 52 34 42 45 55 38 32 48 35 31 36 54 43 49 40 33 29 37 51 44 47
  10 30 41 48 54 36 44 47 29 40 34 50 37 33 38 56 45 51 42 35 31 39 53 46 49
  11 32 43 50 56 38 46 49 31 42 36 52 39 35 40 30 47 53 44 37 33 41 55 48 51
  12 34 45 52 30 40 48 51 33 44 38 54 41 37 42 32 49 55 46 39 35 43 29 50 53
  13 36 47 54 32 42 50 53 35 46 40 56 43 39 44 34 51 29 48 41 37 45 31 52 55
  14 38 49 56 34 44 52 55 37 48 42 30 45 41 46 36 53 31 50 43 39 47 33 54 29
  15 40 51 30 36 46 54 29 39 50 44 32 47 43 48 38 55 33 52 45 41 49 35 56 31
  16 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32

где биты с 1 по 24 получены из регистра C, а биты с 25 по 56 получены из регистра D.

Расширенное значение регистра C B092EBA равно

Бит 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Вал 1 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0

Применение Permuted Choice 2 к регистру C дает:

ПК2 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2
     0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0

или 5AA5B08.

Расширенное значение регистра D 02E3798 равно

Бит 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
Вал 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 0

Применение Permuted Choice 2 к регистру D дает:

ПК2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
     0 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0

или 581Е60.

Это дает выбранное значение ключа 5AA5B08581E60, которое является 48-битным значением. Ключевые входные данные для f(R,K) для первых 4 блоков S поступают от C, а последние 4 — от D.

Если, с другой стороны, 56-битное значение B092EBA02E3798 представляет биты с 1 (MS) по 7 из 8 (LS) восьми последовательных 8-битных байтов ввода в PC1, это расширится до 64-битного значения, где дополнительные биты используются для контроля четности. но здесь игнорируется и устанавливается равным нулю:

                     п
1 0 1 1 0 0 0 0
0 1 0 0 1 0 0 0
1 0 1 1 1 0 1 0
0 1 1 1 0 1 0 0
0 0 0 0 0 0 1 0
0 1 1 1 0 0 0 0
1 1 0 1 1 1 1 0
0 0 1 1 0 0 0 0

или B048BA740270BE30.

Это значение может быть введено в копию Юджина Стейера. Пример Javascript DES который может быть отредактировано, чтобы разрешить ввод произвольных ключей и данных и производит:

КС[16]: 011100 001110 010011 001011 100000 101000 000111 101001

это будет 70E4CB8281E9, 48-битное значение.

Не видя контекста вашего задания, я подозреваю, что если бы второй метод, показанный здесь, был предназначен, вам нужно было бы показать свою работу, что подразумевало бы демонстрацию ПК1 и ПК2, а также упоминание о расписании клавиш, демонстрирующем, что выбранный ключ 16 - это ПК2. применяется к блоку CD.

Это помогает понять, что Digital Encryption Standard — это стандарт взаимодействия, ссылающийся на аппаратную реализацию, найденную в двух патентах IBM DES, использующую порядок битов с прямым порядком байтов от 1 и имеющий 8-битный интерфейс с хостом.

Взаимосвязь между байтами входного ключа, PC1, PC2 и блоком CD показана на рис. этот ответ на другой вопрос.

Рейтинг:0
флаг ng
SSA

Например это твоя 64 битная ${ключ = AABB09182736CCDD}$ вы можете преобразовать в двоичный файл, а затем просто расположить биты, показанные в массиве ключей, и вы получите новый 56-битный ключ. новый ключ как объединенный битовый массив (бит5+бит49+бит41....+бит4), остальные биты удаляются. для нижнего счетчика массива начинается с 0

введите описание изображения здесь

  • получение 56-битного ключа из 64-битного с использованием битов четности ключ = перестановка (ключ, ключ, 56)
  • теперь после первой перестановки PC1 выше, показанной Меиром, 56-битный ключ «0xc3c033a33f0cfa»
  • Если я правильно понимаю ваш вопрос, вам нужно найти 64-битный ключ из 56-битного ключа, как упомянул Меир, это невозможно.вы можете использовать этот 56-битный ключ после первоначальной перестановки и сгенерировать 16 48-битных подключа и использовать их в обратном порядке при расшифровке. Пожалуйста, ищите Feistel Cipher, так как DES основан на нем.
Hakim Cheheb avatar
флаг ru
Большое спасибо, я поищу более подробную информацию о Fiestel Clipher, спасибо.

Ответить или комментировать

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