Подпись данных алгоритмами SHA + AES собственным модулем

0. 67 31.10.20 11:50 Сейчас в теме
Реализация подписи данных ключом длиной 256 бит алгоритмами SHA-256 + AES-256 без использования внешних компонент, zip-файлов, обращения к диску или БД и без привязки к ОС.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. altu71 02.11.20 16:57 Сейчас в теме
Чем отличаются две предлагаемые к скачиванию обработки?
2. 1div0 67 03.11.20 07:18 Сейчас в теме
(1)
Чем отличаются две предлагаемые к скачиванию обработки?


Спасибо, я не обратил внимания, что названия в итоге получились одинаковые - я ещё путаюсь в миллионе полей, которые надо заполнить, чтобы выложить файл. Поправил в статье.

Верхняя обработка - это то что нужно: AES_ESB_v2.1, содержит функции подписи и проверки подписи, и быструю реализацию алгоритма AES.

Вторая обработка - ненужное дополнение, я её написал специально для статьи. Может быть кому-то понадобится или будет интересно. Вот тоже можно скачать.
3. 1div0 67 03.11.20 07:20 Сейчас в теме
(1) Есть ещё скриншот второй обработки:
5. 1div0 67 03.11.20 07:22 Сейчас в теме
(1) Хм.. необычно, что новые ответы сначала появляются сверху.
6. SizovE 154 16.02.21 15:48 Сейчас в теме
Подскажи, пожалуйста, а зачем делать к SHA256 еще 5 пунктов, ради чего? Разве как-то можно получить данные из SHA256?
Недостаточно ли разве что-то типа такого ЗашифроватьAES(SHA256, Ключ256)
И еще вопрос, а почему не сделать: SHA256(Соль + передаваемые данные) и сверить тоже самое на точке получатель?
Соль (или ключ256 в данном случае) известна только отправителю и получателю.
7. 1div0 67 17.02.21 06:30 Сейчас в теме
(6) ЗашифроватьAES(SHA256, Ключ256) - потому что это очевидное решение. Допустим злоумышленник предполагает именно такую схему. Перехватываем любое сообщение, получаем SHA256. Далее включаем видеокарту и перебираем Ключ256, пока не совпадёт равенство:
ЗашифроватьAES(SHA256, Ключ256) = SHA256.

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

Поэтому ещё усложняем. В статье мы получаем случайную соль при каждой подписи. Только применяем соль не на расчёт хэша, что хуже, а на шифр.

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

Со стороны злоумышленника надо немного больше заморочиться и подобрать кроме ключа ещё 32-битное число. То есть объём перебора = 256 + 32 = 288 бит. Ну и существенно увеличено время на каждую итерацию перебора. Если использовать генератор получше, то можно добавить ещё 64 бита перебора. Можно ещё увеличить стойкость, выкинув отметку времени и заполняя случайными данными начальный буфер, тогда объём перебора будет 256 + 256.
8. SizovE 154 17.02.21 16:26 Сейчас в теме
(7) Я так понимаю, Вы хотите поставить защиту от чужих запросов, выполнять запросы только свои.
Ключ для AES разве так просто подобрать? Он же достаточно длинный будет.

Разве так просто получить соль сравнения SHA256(Соль + передаваемые данные) разных сообщений? Вроде как SHA256 гарантирует высокую сложность такой задачки? Учитывая, что это узлы все ваши, и передаваемые данные нельзя "подгонять" (хотя мне кажется даже в этом случае вычислить соль не так уж и просто)

А ведь в Вашем случае, если я знаю Ваш алгоритм, то соль для меня не является уже "случайной"?

Еще вопросик - Ваш алгоритм AES получает такой же результат как онлайн алгоритмы - https://encode-decode.com/aes-256-ecb-encrypt-online/, если ДА, то возьму себе Вашу обработку ) Кстати, она есть за 1 стартмани и за 2 - обе одинаково работают для задачи шифровки и расшифровки?
9. 1div0 67 17.02.21 18:10 Сейчас в теме
(8) Данная реализация получает такой же результат, как и другие его реализации на онлайн-ресурсах, например этом.

Верхняя обработка - это то что нужно: AES_ESB_v2.1, содержит функции подписи и проверки подписи, и быструю реализацию алгоритма AES.

Вторая обработка - ненужное дополнение, я её написал специально для статьи. Может быть кому-то понадобится или будет интересно. Вот тоже можно скачать.

Про соль и прочее - к сказанному выше мне нечего дополнить.
Оставьте свое сообщение
Вопросы с вознаграждением