OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 12 Декабрь, 2018 15:02

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Идея алгоритма шифрования "Сумма"
СообщениеДобавлено: Среда, 10 Август, 2011 17:00 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Решил написать небольшую утилитку для хранения паролей от всяких разных сайтов в интернете. В принципе эта информация не очень секретная, но тем не менее хранить ее в открытом виде на компьютере я не хочу, а пароли, записанные на бумажке могут потеряться.
Возникла идея такого алгоритма:
1) пароль шифрования преобразовывается в десятичное число А;
2) текст, который шифруется преобразовывается в десятичное число B;
3) два числа складываются C = A + B;
4) десятичное число C преобразовывается в текст.
Расшифровка осуществляется аналогично, только используется вычитание, а не сложение.

Кто как считает, подойдет ли этот алгоритм для шифрования не сильно секретных данных, но так, чтобы случайный хакер не смог их расшифровать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 17:26 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
Как текст будет преобразовываться в число?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 18:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Сложение делается поразрядно.

Стоит хакеру узнать несколько младших разрядов числа А и он сразу же узнает несколько младших разрядов всех чисел B.

Лучше бы вместо сложения использовать преобразование равномерно перемешивающее все разряды.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 19:01 
Аватара пользователя

Зарегистрирован: Суббота, 27 Февраль, 2010 23:34
Сообщения: 746
Сергей Губанов писал(а):
Сложение делается поразрядно.
Стоит хакеру узнать несколько младших разрядов числа А и он сразу же узнает несколько младших разрядов всех чисел B.
Лучше бы вместо сложения использовать преобразование равномерно перемешивающее все разряды.
Предложенный Rifat'ом алгоритм ниже критики. Разумнее использовать XOR и ротацию. Просто в реализации и трудно при дешифровании... особенно, если ротация происходит не на одинаковое количество бит.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 19:14 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
проще скачать truecrypt


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 20:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Ещё тут зная лишь одну пару {B, C} можно сразу же узнать А и раскрыть все остальные B.

Надо чтобы даже зная большое количество пар {B, C} трудно было бы вычислить А и тем самым раскрыть другие В.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 21:29 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Александр Ильин писал(а):
Как текст будет преобразовываться в число?

Допустим мастер паролем будет текст состоящий только из строчных латинских символов. Тогда любое латинское слово можно считать числом в 26-ричной системе счисления.
Например,
cba = (2*26+1)*26+0


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 21:32 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Сергей Губанов писал(а):
Сложение делается поразрядно.

Стоит хакеру узнать несколько младших разрядов числа А и он сразу же узнает несколько младших разрядов всех чисел B.


Как хакер может узнать младшие разряды числа A?
Если он может узнать их путем анализа чисел C1, C2, C3 и т.д, то да согласен, что это проблема. А если он просто может узнать младшие разряды, например, подглядеть, то таким же образом он может и все число A узнать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 21:33 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2930
Откуда: г. Ярославль
Пётр Кушнир писал(а):
проще скачать truecrypt


Куда круче иметь шифрованный сосдок прямо в ББ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Август, 2011 21:36 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Сергей Губанов писал(а):
Ещё тут зная лишь одну пару {B, C} можно сразу же узнать А и раскрыть все остальные B.

Надо чтобы даже зная большое количество пар {B, C} трудно было бы вычислить А и тем самым раскрыть другие В.

Насчет этого согласен, что это существенный минус, так как многие браузеры могут кэшировать пароли, соотственно, может так получиться что какой-нибудь из паролей от сайта хакер сможет узнать, соответственно, он сможет узнать A и получить пароли от всех других сайтов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 03:35 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
Rifat писал(а):
Допустим мастер паролем будет текст состоящий только из строчных латинских символов. Тогда любое латинское слово можно считать числом в 26-ричной системе счисления.
Например,
cba = (2*26+1)*26+0
Получается, что сложение с паролем зашифрует только несколько последних букв текста?

Основа шифрования сложением заключается, насколько я представляю, вот в чём. Пусть у вас есть текст, и есть такой же длины последовательность случайных букв - ключ. Если каждую букву текста сложить с соответствующей буквой случайной последовательности, то на выходе вы получите шифр, который неотличим от первоначальной случайной последовательности. Без ключа восстановить текст будет невозможно (при условии, что ключ на самом деле абсолютно случаен).

Вопроса два - как получить качественную случайную последовательность, и как запомнить пароль длиной в текст.

Если алгоритм для "домашнего" применения, то можно взять любую функцию генерации псевдослучайной последовательности (например, модуль ObxRandom в ББ или функцию Random в Delphi), и проинициализировать её неким первоначальным значением. Известно, что эти функции при одинаковом первоначальном значении выдают одну и ту же псевдослучайную последовательность чисел. Это первоначальное значение как раз можно получить, просуммировав буквы в пароле.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 08:56 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Насчет того, что как запомнить пароль длинною в текст, тексты у меня не будут очень длинными, так как текстом будут являться пароли от различных сайтов. Соответственно достаточно чтобы мастер пароль был равен по длине с самым длинным из паролей от сайтов. Если это будут, например, 64 битные числа, то думаю сложно будет перебирать все варианты и смотреть правдоподобные ли результаты расшифровки.

Насчет того, чтобы пароль инициализировал датчик случайных чисел, который уже будет дальше шифровать, эта идея интересная. Осталось только найти формулу для генерации последовательности с большим периодом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 11:01 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Rifat писал(а):
Насчет того, что как запомнить пароль длинною в текст, тексты у меня не будут очень длинными, так как текстом будут являться пароли от различных сайтов.
...
Вроде есть такие утилиты... например, описанная здесь... или Вы хотите именно хранить в инете? или именно сами написать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 11:11 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Не совсем понял, что за ссылку вы дали, по-моему там идет речь про учебник :)

Да, хочу написать эту утилиту сам, для своего же использования.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 11:32 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
В общем основная проблема такая, какие преобразования делать над мастер паролем, чтобы если один из зашифрованных и открытых текстов будет известен хакеру, чтобы он не смог расшифровать другие пароли.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 12:01 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Rifat писал(а):
Не совсем понял, что за ссылку вы дали, по-моему там идет речь про учебник :)
Да, хочу написать эту утилиту сам, для своего же использования.
Не, это описания программы, использующей одну открытую схему криптозащиты (во вложениях) :) Но раз Вы хотите писать - конечно, неактуально.
Rifat писал(а):
В общем основная проблема такая, какие преобразования делать над мастер паролем, чтобы если один из зашифрованных и открытых текстов будет известен хакеру, чтобы он не смог расшифровать другие пароли.
Вроде как "односторонние функции" (скажем, дискретное логарифмирование)... исходя из современной математики КГ. Наверное, Вы слышали про двухключевое шифрование данных? В статье Пиликова из этого поста показано его применение для подписи массивов. Вообще таких описаний много, но здесь одно из немногих лаконичных... без различных "Алис" и "Бобов"... :) Кстати, ПГП-алгоритм как раз использует эту математику (а среди профессионалов считается, что всё, что "просто придумано" для шифрования без матана, вскрывается более-менее элементарно). Общая схема его применения разобрана здесь... а алгоритм его автор опубликовал. Задачу, по-видимому, имеющую отношению к делу, разрабатывал также В.В. Потопахин - в этой теме. Если Вы собиратесь юзать прогу единолично - то не должны взникать правовые вопросы, обсуждавшиеся в этой теме.


Последний раз редактировалось Владислав Жаринов Четверг, 11 Август, 2011 12:39, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 12:10 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Rifat писал(а):
Как хакер может узнать младшие разряды числа A?
Полным перебором с анализом результата на правдоподобность :D. Такой анализ более эффективн когда есть много пар {B, C}. Ведь гораздо легче начать с перебора небольшого количества разрядов чем перебирать весь ключ целиком.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 13:10 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
В общем, пока остановился на таком варианте.
1) Сделать конкатенацию текста: Мастер пароль + Имя сайта + Логин
2) Вычислить 64 битную хэш сумму от текста, полученного на первом шаге.
3) Каждый пароль зашифровать путем наложения этой 64 битной суммы при помощи операции XOR.

Если хакеру известен какой-нибудь пароль от сайта, то он может узнать хэш сумму на основе которой данный пароль был зашифрован, но не узнает Мастер пароль, если только не будет перебирать все мастер пароли, пытаясь вычислить хэш сумму.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 14:09 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 732
Откуда: Казань
Возникла более надежная, но и более сложная идея шифрования. Использовать ассиметричное шифрование, например, по алгоритму RSA. Открытый ключ будет хранится в открытом виде и использоваться для добавления новых записей, а закрытый ключ будет храниться в зашифрованном виде, и использоваться для расшифрования записей. Закрытый ключ будет шифроваться при помощи XOR с мастер паролем.
Думаю, что такой метод шифрования будет достаточно стойким от рядового хакера, который скорее всего не сможет факторизовать большие числа.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Август, 2011 14:50 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Одобрямс :D

RSA на Mathematica:
Вложение:
rsa.png
rsa.png [ 40.74 КБ | Просмотров: 7114 ]


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB