Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / построение ключа для AES шифрования. / 4 сообщений из 4, страница 1 из 1
29.12.2012, 15:42
    #38097308
BaurzhanS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
построение ключа для AES шифрования.
Всех с наступающим! Необходимо создать 256-битный ключ для шифрования алгоритмом AES. Причем задача стоит именно создать ключ, а не шифровать что-либо. Сходил я, значит, в гугл, в википедию, там описаний реализации шифрования хоть отбавляй, но везде ключ рассматривается как данность . Не нашел нигде, откуда он берется, то ли генерируется рандомно, а потом динамически видоизменяется в ходе шифрования, то ли просто вычисляется хэш от заданного пользователем пароля - везде он есть и все. Вопрос знатокам - откуда он берется, вернее, как его конструировать, 256 битный ключ для AES? Если ключ таки генерируется, то, я так понимаю, необходмо генерировать не просто псевдо-случайные числа, поставляеиые стандартными библиотеками, а криптографически стойкие псевдо-случайные числа? (SecureRandom on Java, RNGCryptoServiceProvider on C#)
...
Рейтинг: 0 / 0
29.12.2012, 16:48
    #38097369
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
построение ключа для AES шифрования.
Возьми игральные кости. Бросай и записывай по модулю 2. Когда заполнишь 256 бит - будет тебе ключик.
...
Рейтинг: 0 / 0
29.12.2012, 22:40
    #38097546
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
построение ключа для AES шифрования.
BaurzhanSНе нашел нигде, откуда он берется, то ли генерируется рандомно, а потом динамически видоизменяется в ходе шифрования, то ли просто вычисляется хэш от заданного пользователем пароля - везде он есть и все. Потому что проблема создания (и, особенно, распространения ) ключа криптосистемой AES не решается ни в каком виде. Во всех рекомендуемых режимах работы для (всех используемых) блочных шифров ключ остаётся неизменным при шифровании заданного сообщения. "Штатный" способ использования криптосистемы подразумевает, что у атакующего нет никаких сведений ни об одном бите ключа; как Вы этого будете добиваться - сильно зависит от задачи. Сильный генератор псевдослучайных чисел, скорее всего, сойдёт.
...
Рейтинг: 0 / 0
01.01.2013, 22:50
    #38098480
BaurzhanS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
построение ключа для AES шифрования.
Спасибо за ответы! Вот про сильный генератор ПСЧ хотелось бы узнать поподробнее: Могу ли я использовать SecureRandom (Java) для генерации ключа? Не могу разобраться, что он использует для энтропии.

1) в википедии - источник энтропии - взаимодействие между потоками
2) в java.security файле, лежащем на локальном дистре java ./jre/security написано следующее:

# On Solaris and Linux systems, if file:/dev/urandom is specified and it
# exists, a special SecureRandom implementation is activated by default.
# This "NativePRNG" reads random bytes directly from /dev/urandom.
#
# On Windows systems, the URLs file:/dev/random and file:/dev/urandom
# enables use of the Microsoft CryptoAPI seed functionality.

То есть, в моем случае (Windows) secure random берет значения, опираясь на Microsoft CryptoAPI, который, согласно википедии, использует как источник энтропии параметры системы.

Вопрос: в случае винды SecureRandom использует для энтропии информацию о взаимодействии между потоками (по википедии) или системные параметры (опираясь на виндовый апи)?

И еще, в процессе поиска готовой реализации 256-битного AES шифрования, натолкнулся на такое предупреждение:

If you are operating in a nation that has cryptographic export/import restrictions, you'd have to consult the law in your nation, but it's probably safe to assume in these situations that you don't have unlimited strength cryptography available (by default) in your JVM. Putting it another way, assuming you're using the official JVM from Oracle, and you happen to live in a nation against which the U.S. has leveled export restrictions for cryptography (and since Oracle is a United States company, it would be subject to these restrictions), then you could also assume in this case that you don't have unlimited strength available.

Меня заинтересовало первое предложение, а именно та часть, где говорится, про ограничения на использование криптографического инструментария - я правильно понимаю, что одна страна может запрещать готовые криптографические решения другой страны опасаясь бэкдоров? Я к тому, что можно ли вообще генерировать ключ этим SecureRandom, просто я делаю прогу не для себя и это не лабораторка=) То есть, с одной стороны, он использует некие случайные [b]физические[b] параметры для энтропии, то есть даже если бэкдор для предугадывания случайных чисел есть, "элемент хаоса" он не может учесть - кто же может наперед угадать физические параметры моей системы? А с другой стороны, я не зря задал выше вопрос про энтропию - я читал много разных источников и окончательно запутался, когда SecureRandom использует физические параметры, когда нет(то есть использует арифметические генераторы обеспечивающие трудную предсказуемость) - в общем, не понял я всей тонкости этой кухни, поэтому боюсь сгенерировать 256-битный ключ, который в итоге легко угадать. Так можно ли его использовать, учитывая, что мне этот ключ нужен для серьезных целей?
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / построение ключа для AES шифрования. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]