Комментарии 17
НЛО прилетело и опубликовало эту надпись здесь
Замечание-уточнение по поводу очистки памяти от «секретных» данных: просто забить память нулями — это недостаточно! Наши «регуляторы» в области криптографии требуют, чтобы очищаемая память многократно (обычно 3-5 раз) «забивалась» качественным «шумом».
+1
Дилетантский вопрос: можно ли запустить несколько собственных процессов на той же машине, где и происходит, например, шифрование и по отклонению во времени выполнения операций в них извлечь полезную информацию? Есть ли название у этой разновидности атак?
0
Именно такое с процессами не встречал, но по отклонению во времени есть, эти способы входят в группу под названием «Атаки по побочным каналам».
+1
Да, конечно можно. Timing attacks лет десять назад начали обсуждать теоретически, а сейчас уже вроде какие-то практические демонстрации появились.
Отсюда — некоторое количество приведённых в статье рекомендаций. Конечно на практике их не применяют: сложно и дорого, а при современном наплевательском подходе к безопасности — и не нужно (других дыр хватает).
Отсюда — некоторое количество приведённых в статье рекомендаций. Конечно на практике их не применяют: сложно и дорого, а при современном наплевательском подходе к безопасности — и не нужно (других дыр хватает).
+1
НЛО прилетело и опубликовало эту надпись здесь
Возможно глупый вопрос. А может кто-то посоветовать код сочетающий свойства:
1) Pure C код в одном файле, желательно просто функцию вида get_random()
2) Максимально рандомную
3) Мультиплатформенную
Пишу небольшое статистическое приложение, а просто rand() никуда не годится.
1) Pure C код в одном файле, желательно просто функцию вида get_random()
2) Максимально рандомную
3) Мультиплатформенную
Пишу небольшое статистическое приложение, а просто rand() никуда не годится.
0
Берете блочный шифр в режиме счетчика, например. Т.е. шифруете последовательность a,a+1,a+2,… значение а устанавливаете тем же rand, только от системного времени. В качестве шифра возьмите Кузнечик. Реализаций полно github.com/MaXaMaR/kuznezhik tc26.ru/standard/draft/PR_GOSTR-bch_v3.zip github.com/mjosaarinen/kuznechik. A rand() — это же конгруэнтный генератор, он действительно плохой
0
Попробуйте вихрь Мерсена(Mersenne Twister). Если не подойдет — то openssl, там есть генератор псевдослучайных и случайных чисел.
0
А зачем вам для «небольшого статистического приложения» «pure C код»? На современных процессорах с поддержой AESNI использовать что-то другое без «уважительных причин» попросту глупо (пример «уважительной причины»: вы хотите генерировать одни и те же последовательности на ARM и на x86 и, разумеется, вас больше волнует скорость работы на ARM).
-1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Публикации
Изменить настройки темы
Безопасное криптопрограммирование. Часть 2, заключительная