Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Управляемый шифр, Шифрование управляется ключом. 
V
    Опции темы
alexsk
Дата 24.4.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 24.4.2006
Где: Томск

Репутация: нет
Всего: нет



Управление шифрования ключом. Как это сделать? Как именно метод шифрования может управляться ключом.
Сформулируем более конкретно:
Предположим у нас есть набор криптографических примитивов (например циклический сдвиг, таблица замены и т. д.), мы генерируем (не важно как) определённый ключ, длинной в, скажем, 12 символов. Наша задача зашифровать текст на основе данного ключа , используя данные примитивы. Вопрос: как программа должна выбирать какие именно примитивы и в каком порядке должна использовать для шифрования(имеется ввиду сам алгоритм выбора), при условии что для следующего текста мы будем использовать другой ключ?   

Это сообщение отредактировал(а) alexsk - 24.4.2006, 11:35
PM MAIL   Вверх
Snowy
Дата 24.4.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Вообще-то по идее в алгоритм шифрования порядок должен быть заложен изначально.
Порядок действий от смены ключа не меняется... 
PM MAIL   Вверх
Sunvas
Дата 25.4.2006, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Что-то не ясно в чем проблема: ты хочешь узнать как зашифровать текст покруче или что? 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
alexsk
Дата 25.4.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 24.4.2006
Где: Томск

Репутация: нет
Всего: нет



я хочу написать программу по сути схожую с ГОСТ28147-89, только ГЛАВНЫМ ОТЛИЧИЕМ, будет то, что сам выбор используемых примитивов,и их порядок будет определён не изначально и постоянен (как в ГОСТе), а меняться в зависимости от используемого ключа. В итоге имеем, что алгоритм используемых крипто-примитивов действительно постоянен и не меняется никогда, а весь алгоритм шифрования изменяется в зависимости от ключа. так вот вопрос и состоит втом, какая должна быть зависимость, и как она должна определятся. Хотя бы, как определяться?

Добавлено @ 09:33 
В принципе наброски уже есть, кроме модуля управления ключом. Не могу сообразить какой алгоритм. 
PM MAIL   Вверх
Snowy
Дата 25.4.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ну, могу предложить такой вариант:
считаешь CRC ключа. Полученный результат делишь на кол-во примитивов.
Остаток от деления и будет номером нужного примитива. 
PM MAIL   Вверх
alexsk
Дата 25.4.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 24.4.2006
Где: Томск

Репутация: нет
Всего: нет



Что такое CRC? 
PM MAIL   Вверх
Snowy
Дата 25.4.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



PM MAIL   Вверх
alexsk
Дата 25.4.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 24.4.2006
Где: Томск

Репутация: нет
Всего: нет



Такой вариант не подходит по следующей причине: как я понял, CRC, для каждой строки всегда один и тот же, а нам необходимо знать некоторую последовательность номеров примитивов.
Возможно, правда взять вариант, что у нас заранее заложены некоторые комбинации последовательностей примитивов, тогда встаёт вопрос, о том, по какому закону будут распределяться результаты ф-ии CRC, при условии равномерного распределения ключей? 
PM MAIL   Вверх
Snowy
Дата 25.4.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(alexsk @  25.4.2006,  13:01 Найти цитируемый пост)
 как я понял, CRC, для каждой строки всегда один и тот же
Конечно. В этом и смысл. CRC ключа определяет порядок следования примитивов.
Для кодирования и декодирования он должен быть один и тот же.

Цитата(alexsk @  25.4.2006,  13:01 Найти цитируемый пост)
 а нам необходимо знать некоторую последовательность номеров примитивов.
Я предлагал пример для одного примитива.
Для последовательности примитивов, можно модифицировать строку ключа (например прокрутить по кругу на символ) и снова посчитать CRC и получить номер следующего примитива. И так нужное кол-во раз. 
PM MAIL   Вверх
alexsk
Дата 25.4.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 24.4.2006
Где: Томск

Репутация: нет
Всего: нет



А как по поводу распределения результатов CRC?

Добавлено @ 13:24 
Я хочу сказать, даст ли циклическое вращение ключа равномерное случайное распределение комбинаций примитивов, не будет ли простого увеличения на одно и тоже значение?  

Это сообщение отредактировал(а) alexsk - 25.4.2006, 13:26
PM MAIL   Вверх
Snowy
Дата 25.4.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Значение может повториться только после прокрутки на 8 символов.
И то, вероятность очень мала.
Также можно исключать повторения одного и того же примитива.
Если уж вдруг так получилось, что один примитив попадает второй раз, то либо крутить дальше (если длина ключа позволяет), либо просто брать следующий по порядку.
Гарантии нормального распределения нет. Т.к. номер будет зависеть от пароля.
Если пароль 11111111, то результат будет всегда одинаковый.
Как вариант: Если примитив уже использован, исключать его из списка возможных. Соответственно количество примитивов уменьшается и делить CRC нужно будет уже на меньшее число. И так вплоть до использования всех примитивов. 
PM MAIL   Вверх
alexsk
Дата 26.4.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 24.4.2006
Где: Томск

Репутация: нет
Всего: нет



Цитата(Snowy @  25.4.2006,  14:29 Найти цитируемый пост)
Гарантии нормального распределения нет. Т.к. номер будет зависеть от пароля.
Если пароль 11111111, то результат будет всегда одинаковый.

Значит, если распределение ключей равномерное, то и распределение CRC будет равномерное?
 
PM MAIL   Вверх
Snowy
Дата 26.4.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(alexsk @  26.4.2006,  10:45 Найти цитируемый пост)
Значит, если распределение ключей равномерное, то и распределение CRC будет равномерное?
Нет. Поэтому рекомендую вариант с выбыванием примитивов. 
PM MAIL   Вверх
alexsk
Дата 26.4.2006, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 24.4.2006
Где: Томск

Репутация: нет
Всего: нет



Цитата(Snowy @  26.4.2006,  10:59 Найти цитируемый пост)
Значит, если распределение ключей равномерное, то и распределение CRC будет равномерное?

Нет. Поэтому рекомендую вариант с выбыванием примитивов.  


Значит, если распределение не равномероное, то каким образом можно гарантировать, равномерное распределение выбора первого примитива при изменении ключей случайным образом с достаточно равномерным распределением? 
PM MAIL   Вверх
Snowy
Дата 26.4.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Объясняю на пальцах. Схема такая:
Допустим у нас есть 3 примитива.
0 - 1
1 - 2
2 - 3
(первая цифра - порядковый номер, вторая - имя)
k - кол-во примитивов. Сейчас равно 3.
Берем пароль. Вычисляем CRC.
n := CRC32(password) mod k;
Варианты n - [0..2]
Допустим, получилось n = 1.
Применяем примитив под номером 1 - это примитив "2".
Приминили. Выбрасываем. Список примитивов изменился:
0 - 1
1 - 3
k = 2
Берем пароль. Вычисляем CRC.
n := CRC32(password) mod k;
Варианты n - [0..1]
Допустим снова получилось 1.
Применяем примитив под номером 1 - это примитив "3".
Приминили. Выбрасываем. Список примитивов изменился:
0 - 1
k = 1
Берем пароль. Вычисляем CRC.
n := CRC32(password) mod k;
Вариантов нет. На выходе всегда 0.
Применяем примитив под номером 0 - это примитив "1".

Все. Мы приминили все примитивы.
Для декодирования применяем ту же схему порядка примитивов.
Для одной и той же строки CRC32 всегда один и тот же.
n = CRC mod k = const, при CRC=const и k=const
То есть. Если пароль для кодирования и декодирования одинаковый и кол-во и порядок примитивов тот же,
то при декодировании мы получим тот же порядок применения примитивов. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.