Форум программистов, компьютерный форум, киберфорум
Наши страницы
Криптография
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/35: Рейтинг темы: голосов - 35, средняя оценка - 5.00
ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
1

Что такое длина ключа? Связана ли длина ключа с алгоритмом шифрования?

03.02.2015, 19:13. Просмотров 6523. Ответов 9
Метки нет (Все метки)

Здравствуйте уважаемые участники форума!
Сразу извините за не информативное название темы, форум не принимает слово вопрос в названии темы. Не даёт создать тему. Странно.

Я читаю статьи в интернете по криптографии, но не всё мне понятно. В связи с этим возникли вопросы.

1) Что такое длина ключа? Например 32 бит? В некоторых алгоритмах есть зависимость - длина ключа-сложность дешифрирования. Но не суть. Вопрос о длине.

Как я понимаю - бит это 1 или 0 (2 состояния). Итого 2 в степени 32 т.е. 4294967296.
Вот оно число - но что это значит? Где здесь длина? Какой ключ мне брать, если я хочу ключ длиной 32 бит?
Мне брать все числа, меньше 4294967296?
А если ключ случайная комбинация типа qwertysa? Тут 2 символа дадут 30*30=900 вариантов. Когда цифры 10*10=100.
Сторонние библиотеки, в качестве ключа принимают информацию в виде цифр, букв но не битов (integer, string).
Вот это я не понимаю.

2)И второй вопрос. Связана ли длина ключа с алгоритмом шифрования, например aes-128, aes-256 или эти цифры обозначают длину блоков, которыми будет зашифровываться информация, а длина ключа - любая?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2015, 19:13
Ответы с готовыми решениями:

Длина ключа в алгоритме шифрования
Здравствуйте. Помогите разобраться в вопросе. Сколько символов должен быть ключ шифрования при...

Длина ключа
Всем добрый день! Объясните нубу как вычисляется длина ключа(пароля). Как я знаю, в ASCII 256...

Длина ключа в alter table
Доброго времени суток, тривиальный вопрос: Как задать длину ключа в запросе? alter table table1...

Длина ключа индекса превышает допустимую
Вот такую ошибку (и см файл) я увидел сегодня, когда загружал конфигурацию из базы на sql в обычную...

Алгоритм Диффи-Хелмана на элиптических кривых. Длина ключа
В общем вот есть код. Вот только я никак не могу разобраться как тут задаеться длина генерируемого...

9
nworm
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 180
04.02.2015, 01:17 2
1) Целое число в компьютере кодируется с помощью последовательности нулей и единиц (представляется числом в двоичной системе счисления).
Например, если использовать 32-е бита, код 0 - есть 0000 0000 0000 0000 0000 0000 0000 0000, код 1 - есть 0000 0000 0000 0000 0000 0000 0000 0001, код 2 - есть 0000 0000 0000 0000 0000 0000 0000 0010, код 3 - есть 0000 0000 0000 0000 0000 0000 0000 0011, код 4 - есть 0000 0000 0000 0000 0000 0000 0000 0100,..., код 15 - есть 0000 0000 0000 0000 0000 0000 0000 1111,..., код 4294967295 - есть 1111 1111 1111 1111 1111 1111 1111.
Длина ключа - количество разрядов. В данном случае 32. Если нужен ключ длины 32, то случайным образом берётся любой ключ из ранее вписанных. Например, 1010 0000 1111 0101 1110 0111 0001 1011 (2700470043 - в десятичной системе счисления)

Кроме цифр представить с помощью нулей и единиц можно строки, буквы и т.д.

2) aes-128 - 128-битный ключ, aes-256 - 256-битный ключ.
0
ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
04.02.2015, 16:56  [ТС] 3
Удалено

Добавлено через 5 минут
nworm

Не очень ясно.
Ключи, пароли и прочая информация, часто задаётся в виде строки - букв, цифр и т.д.
На один символ (букву)требуется один бит (8 байт). Значит, если нужен ключ длины 32 байт - то это 4 буквы.
Букв 26 (не учитываем регистр), это 26 в степени 4 (один бит на букву) т.е. 456976 комбинаций.


С другой стороны, ключ длины 32 байт - это число не больше 4294967295.
Для чисел это - 2 в степени 32 т.е. 42949672956 комбинаций.

Видно, что числа намного превосходят буквы, по количеству комбинаций. Значит два ключа, одинаковой длины имеют разную криптостойкость.
Но это же не верно. Почему так?
0
gazlan
3163 / 1922 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
04.02.2015, 18:45 4
Цитата Сообщение от ISerg1986 Посмотреть сообщение
неверно. Почему так?
Байт - это 8 бит (2^8), а не "буква" (< 2^5, без учета регистра или < 2^6 с учетом - для латинского алфавита).
0
04.02.2015, 18:45
nworm
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 180
04.02.2015, 19:43 5
На один символ (букву)требуется один бит (8 байт)
Одна буква - как правило 1 или 2 байта (по 8 бит)

Значит, если нужен ключ длины 32 байт - то это 4 буквы.
Зависит от того как представлены буквы. Если одна буква 2 байта - 16 букв.
26^16 комбинаций.

Добавлено через 4 минуты
Криптостойкость у двух ключей одинаковой длины может быть разной, если эти ключи по разному формируются. Но у Вас не точно написано как формируются ключи поэтому сложно оценить, какой буквенный или цифровой Ваш ключ будет более стойкий.
0
ISerg1986
16 / 16 / 13
Регистрация: 12.01.2014
Сообщений: 177
04.02.2015, 19:55  [ТС] 6
gazlan, nworm всё равно не понимаю.
Не могли бы вы привести расчёт, где количество возможных комбинаций, для ключей длинной 32 бит равное?
Вне зависимости от того, заданы они числом или строкой из букв?

--
Байт - это 8 бит (2^8), а не "буква"
--
Байт это 8 бит. Буква (расширенная кодировка ASCII) 8 бит. Буква занимает в памяти место 1 байт.

Добавлено через 1 минуту
Цитата Сообщение от nworm Посмотреть сообщение
Криптостойкость у двух ключей одинаковой длины может быть разной, если эти ключи по разному формируются.
Пусть так. Но количество комбинаций разное.
0
taras atavin
4200 / 1777 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
04.02.2015, 20:00 7
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Пусть так. Но количество комбинаций разное.
Так о том тебе и говорят.

Добавлено через 44 секунды
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Байт - это 8 бит (2^8), а не "буква"
Байт - это минимально адресуемая ячейка памяти. Теоретически это может быть и 7 бит, и 96.

Добавлено через 2 минуты
Цитата Сообщение от nworm Посмотреть сообщение
На один символ (букву)требуется один бит (8 байт)
Одним битом нельзя закодировать символ, будь то буква, цифра, знак препинания, или ероглиф. И байт больше бита, а бит не делим.
0
nworm
59 / 59 / 19
Регистрация: 13.07.2009
Сообщений: 180
04.02.2015, 20:02 8
Не могли бы вы привести расчёт, где количество возможных комбинаций, для ключей длинной 32 бит равное?
Вне зависимости от того, заданы они числом или строкой из букв?
Разное будет число комбинаций.
32 бит = 4 байта.
Для букв 26^4=456976. Для числа 42949672956 комбинаций
0
taras atavin
4200 / 1777 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
04.02.2015, 20:12 9
Цитата Сообщение от ISerg1986 Посмотреть сообщение
Не очень ясно.
Ключи, пароли и прочая информация, часто задаётся в виде строки - букв, цифр и т.д.
На один символ (букву)требуется один бит (8 байт). Значит, если нужен ключ длины 32 байт - то это 4 буквы.
Букв 26 (не учитываем регистр), это 26 в степени 4 (один бит на букву) т.е. 456976 комбинаций.
С другой стороны, ключ длины 32 байт - это число не больше 4294967295.
Для чисел это - 2 в степени 32 т.е. 42949672956 комбинаций.
Бред. 4 буквы - это не 32 бита, а всего 18,8. Именно потому, что букв 26. То, что они избыточно кодируются 32-мя битами, к делу не относится. Но если 4 не именно буквы, а вообще символа с учётом регистра, возможностью запихать туда цифры, пробелы, знаки препинания и всё остальное, что разложено по кодам, тогда 31,23 бита и 2 517 630 976 комбинаций. Разница уже не существенна, чем выбирать энтропию, лучше поднять номинальную разрядность, 8 символов - это уже 62,46 бита и 6*338*465*731*314*712*576 комбинаций, а запомнить их проще, чем 10-ти значное число.
1
gazlan
3163 / 1922 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
04.02.2015, 21:13 10
Цитата Сообщение от ISerg1986 Посмотреть сообщение
всё равно не понимаю
Из-за стремления считать в "буквах". Правильная расчетная "валюта" - это бит. В нее и переводим "по курсу".

Пусть, например, весь алфавит - это русские буквы нижнего регистра без 'ё'. То есть, 32 символа.
32 = 2^5 -->> пять бит на символ. В байте 8 бит. Общее кратное: 5*8 = 40.
Таким образом, 8 букв помещаются в 5 байт, а 5 байт могут быть представлены 8 буквами.

Всякий раз как вы посылаете кому-либо фото по e-mail, используется кодирование Base64 (6 бит, 6*8 = 48), так что у отправителя каждые 6 двоичных байт фотографии превращаются в 8 символов текста, для передачи по сети, а у получателя каждые 8 символов текста обратно превращаются в 6 двоичных байт фотографии.

Размер письма при этом увеличивается примерно на 1/3 -->> (8-6)/6 = 1/3, но это плата за то, что старые Unix-серверы не поддерживали 8-битной кодировки.
1
04.02.2015, 21:13
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2015, 21:13

Даны две переменные, в первой строка, во второй длина строки, 100 - max длина, строки. Что такое dup('$') ?
string db 100 stringlen db ?,100 dup('$')

Передача ключа шифрования в MySQL
Есть сайт, в котором через формы вводится очень чувствительная и ценная информация о реально...

Проверка наличия определённого ключа реестра и добавление этого ключа в реестр при его отсутствии
Добрый день! Пытаюсь разобраться с bat файлом, который будет запускаться при старте системы и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.