Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
1

Чем опасно создавать вектор инициализации и секретный ключ для алгоритма симметричного шифрования самому

11.07.2014, 16:22. Просмотров 3119. Ответов 15
Метки нет (Все метки)


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

1) Чем опасно создавать вектор инициализации и секретный ключ для алгоритма симметричного шифрования самому, в ручную (т.е. придумывать самому байтовый массив и записывать всё)?

Вот, к примеру, я сам написал следующие значения и позже собираюсь использовать Encrypt и Decrypt с этим ключиком и вектором инициализации:

C#
1
2
byte[] Key = { 12, 59, 20, 254, 128, 132, 1, 55, 12, 59, 20, 254, 128, 132, 1, 55 };
byte[] IV = { 27, 27, 38, 49, 55, 64, 23, 53, 56, 57, 128, 255, 12, 254, 128, 27 };
2) Опасно ли оставлять эти данные все время прежними? Заметил методы и свойства, которые генерируют ключ и вектор автоматически, стало интересно - может как-то возможно каждый раз делать новый ключ, если пакеты передаются с Клиента - Серверу и наоборот (Key, IV, GenerateKey(), GenerateIV()).

Вот эти методы и свойства :

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using (RijndaelManaged myRijndael = new RijndaelManaged())
{
    myRijndael.GenerateKey();
    myRijndael.GenerateIV();
 
    // Encrypt the string to an array of bytes.
    Console.WriteLine("Original:   {0}", original);
    byte[] encrypted = EncryptStringToBytes(original, myRijndael.Key, myRijndael.IV);
 
    // Decrypt the bytes to a string.
    string roundtrip = DecryptStringFromBytes(encrypted, myRijndael.Key, myRijndael.IV);
    Console.WriteLine("Round Trip: {0}", roundtrip);
}
3) Интересует - на сколько легко такая вещь вообще обходится? Помогает ли это от подмены пакетов? От чего вообще оно защищает? Ну и как такое обойти?


P.S В интернете много информации, но всё как-то не особо по теме. Данная тема показалась безумно интересной, очень надеюсь на вашу отзывчивость. Не отказался бы от каких-то интересных статей и примеров.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2014, 16:22
Ответы с готовыми решениями:

Скомпилить код алгоритма симметричного шифрования
ребят, помогите плз, не могу скомпилить...не работает.. нужен...

Зачем нужен ключ сессии(секретный ключ) при HTTPS
Как я понимаю устройство HTTPS. Есть открытый и закрытый ключ. Как я понимаю клиент и сервер...

Как в java выполнить аутентификацию используя секретный ключ для работы по websocket c удаленным сервером?
Всем привет. Суть задачи состоит в том, что нужно установить связь с сервером по средствам...

C помощью каких программ можно самому создавать темы для Windows?
Посоветуйте пожалуйста. Очень хочется самому создавать свои темы для Windows.

15
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
11.07.2014, 16:28 2
Blueeyer, я на основе этого класса строил защиту приложения. Вроде как не плохо работает.
1
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
11.07.2014, 16:32  [ТС] 3
А что за защита, если не секрет?
И если сможете дать ответ на некоторые вопросики, буду очень признателен. Особенно интересует - можно ли всё время использовать один и тот же ключ и вектор инициализации? Ну и можно ли придумывать их самому, либо когда они генерируются методами - это более надежно?
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
11.07.2014, 16:36 4
Цитата Сообщение от Blueeyer Посмотреть сообщение
А что за защита, если не секрет?
Да обычная защита... Привязка экземпляра программы к определенному компьютеру. Правада, я немного усложнил, получаю, к примеру строку. Сначала ее шифрую каким-нибудь простеньким методом, типа шифра Цезаря или еще что, а потом уже шифрую нормально, этим классом. И получается довольно не плохо... Конечно, от декомпиляторов это не спасает, но для обычных юзеров - более чем.
1
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
11.07.2014, 16:44  [ТС] 5
Скажите, а от перехвата пакетов это спасает как-то?
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
11.07.2014, 16:50 6
Цитата Сообщение от Blueeyer Посмотреть сообщение
от перехвата пакетов это спасает как-то?
Не думаю. От расшифровки данных в них-да.
Ятд, если я верно понял ваши задачу, нужно реализовать примерно такой алгоритм.
В каждом пакете данных должно быть какое-то значение, информирующее принимающую сторону о том, что пакет подлинный. И каждый пакет зашифрован. Естественно, даже если кто-то подменит пакет, принимающая сторона моментально сможет это опознать и соответствующим образом отреагировать.
Ну а от корректной подмены как раз и спасет шифрование каждого пакета перед передачей.
1
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
11.07.2014, 16:55  [ТС] 7
Вообще, скорее всего - вы правы, именно это мне и надо. А как можно засунуть это самое значение в каждый пакет и проверить его? У меня, конечно, появились догадки, но я бы лучше послушал ваш вариант
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
11.07.2014, 17:00 8
Blueeyer, да любое значение, хоть свое имя в массив байт переведите и добавьте к пакету. Пакет же по сути будет массивом байт. Так вот решите, где будет это контрольное значение (в начале, в конце, в середине) и на основе этого реализуйте логику работы. На принимающей стороне выделяйте из принятого пакета тот участок, где должно быть расположено контрольное сообщение, и проверяйте, совпадает ли оно с заданным. Совпадает - пакет корректный, нет - пакет отбрасывается как некорректный.
1
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
11.07.2014, 17:08  [ТС] 9
Огромное спасибо! Думаю интересная работка выйдет

Добавлено через 5 минут
Ах, да, так вы не ответили на один вопросик - если я в ручную придумаю и напишу ключик и вектор инициализации, а затем всё время буду их использовать как в клиенте (для шифровки), так и в сервере (для расшифровки) - это ничем не грозит?
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
11.07.2014, 17:15 10
Цитата Сообщение от Blueeyer Посмотреть сообщение
это ничем не грозит?
Ну если кроме вас никто их знать не будет - ничем.
0
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
11.07.2014, 20:47  [ТС] 11
Тоесть, все же лучше использовать асимметричное шифрование?
0
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
11.07.2014, 21:19 12
Когда я делал приложение для шифрования файлов, то у меня ключ и вектор это был хеш MD5 заданного пользователем пароля.

Добавлено через 11 минут
Да и хранить ключ и вектор в приложении нельзя т.к. опять же его можно де компилировать и узнать ключ.
0
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
11.07.2014, 23:03  [ТС] 13
и как же тогда его передать в приложение?
0
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
11.07.2014, 23:10 14
Цитата Сообщение от Blueeyer Посмотреть сообщение
и как же тогда его передать в приложение?
Ну смотря что за приложение, как построено, что делает и т.д. А если оно по типу банк клиента, то нужно применять асимметричное шифрование.
0
12 / 12 / 7
Регистрация: 09.10.2013
Сообщений: 222
11.07.2014, 23:18  [ТС] 15
именно банковский клиент - сервер это и есть Да, мне сказали разбираться в асимметричной шифровке, просто интересно стало и в симметричную углубиться

Добавлено через 5 минут
D_Sergeevich, я заметил - вы тоже работали с асимметричной шифровкой. Может вы могли бы оставить мне свои контактные данные, я бы обратился к вам в случае возникновения вопроса Если, конечно, вы не имеете никаких претензий
0
29 / 29 / 10
Регистрация: 06.02.2014
Сообщений: 156
11.07.2014, 23:22 16
Цитата Сообщение от Blueeyer Посмотреть сообщение
именно банковский клиент - сервер
Ну тогда только асимметрия с отк. и закр. ключами, иначе стоит узнать или вытащить с приложения ваши ключи и все, данные тютю, а отвечать как всегда нам программистам.

Добавлено через 3 минуты
Цитата Сообщение от Blueeyer Посмотреть сообщение
я заметил - вы тоже работали с асимметричной шифровкой.
Не, к сожалению я с асимметрией не работал, да и вообще я тоже как бы новичок в этом деле, ну вы если че спрашивайте, чем смогу тем помогу.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2014, 23:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как расшифровать секретный ключ?
В реестре есть путь к значению Параметр: Number Значение:...

Реально ли подобрать секретный ключ?
Ребята помогите вычислить количество ключей для перебора (брутфорс). Дано: секретный ключ...

Хранение ключей симметричного шифрования
Пишу программу, использующую алгоритм шифрования AES. Озаботился хранением ключа и вектора...

Примеры алгоритмов симметричного шифрования
Ребят, покидайте примеры симметричных алгоритмов на c# !!! Очень нужно

Алгоритм симметричного шифрования TwoFish
При реализации алгоритма возникли сложности. Сначала работа шла живо и весело, запрограммировал...

Как правильно хранить секретный ключ?
Здравствуйте! Как известно, разработчики Django категорически не рекомендуют хранить секретный...


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

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

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