Шифровавание графического файла с помощью RSA

192 views
Skip to first unread message

forwo...@gmail.com

unread,
Nov 6, 2016, 8:35:29 AM11/6/16
to Golang Russian
Подскажите как можно зашифровать/дешифровать изображение с помощью rsa. Лазил в интеренете, но но нашёл работы конкретно с граф. файлом.

Алексей Акулович

unread,
Nov 6, 2016, 8:40:05 AM11/6/16
to Golang Russian
Декодировать в RGB(A), получить слайс байтов, обработать RSA, и сконвертить обратно в картинку?

воскресенье, 6 ноября 2016 г., 16:35:29 UTC+3 пользователь forwo...@gmail.com написал:

Sergey Matveev

unread,
Nov 6, 2016, 8:50:10 AM11/6/16
to Golang Russian
*** Алексей Акулович <aterc...@narod.ru> [2016-11-06 16:45]:
>Декодировать в RGB(A), получить слайс байтов, обработать RSA, и сконвертить
>обратно в картинку?

Имейте в виду, что RSA по определению не может "зашифровать" объёмы
данных больше чем размер ключа, грубо говоря. То есть зашифровать им
можно считанные сотни байт.

Для таких задач используют гибридное шифрование: шифруют симметричным
алгоритмом шифрования (AES например), а сам симметричный ключ шифрования
уже шифруют RSA и этот зашифрованный ключ вместе с зашифрованной
картинкой передают вместе.

--
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263 6422 AE1A 8109 E498 57EF

Алексей Акулович

unread,
Nov 6, 2016, 9:08:42 AM11/6/16
to Golang Russian, star...@stargrave.org
Да, это понятно.

Я к тому, как картинку вообще обработать можно.

воскресенье, 6 ноября 2016 г., 16:50:10 UTC+3 пользователь Sergey Matveev написал:

forwo...@gmail.com

unread,
Nov 6, 2016, 11:07:49 AM11/6/16
to Golang Russian, star...@stargrave.org
воскресенье, 6 ноября 2016 г., 17:50:10 UTC+4 пользователь Sergey Matveev написал:
Имейте в виду, что RSA по определению не может "зашифровать" объёмы
данных больше чем размер ключа, грубо говоря. То есть зашифровать им
можно считанные сотни байт.

А разве нельзя разбить текст и картинку на блоки (под размер ключа) и шифровать блоками?

Sergey Matveev

unread,
Nov 6, 2016, 11:22:16 AM11/6/16
to Golang Russian
*** forwo...@gmail.com <forwo...@gmail.com> [2016-11-06 19:10]:
> А разве нельзя разбить текст и картинку на блоки (под размер ключа) и
>шифровать блоками?

В теории можно, но так никто не делает.

* RSA шифрование на несколько порядков медленнее любого симметричного.
eапример у меня на Core i5 openssl speed показывает скорость RSA
операции для 2048-бит ключа в 410 операций/сек. То есть, грубо говоря,
это чуть больше 100 KiB/sec
* Уровень безопасности RSA 2048, считается где-то не более 112-бит.
Можно взять 4096, но тогда скорость будет ещё на порядок ниже. Атаки
на факторизацию становятся только лучше и лучше, сильно лучше, ни в
какое сравнение с блочными симметричными шифрами
* В теории RSA "течёт" при операциях подписи: при каждом использовании
данные о ключе могут уходить как по побочному каналу. Опять же,
безопасность по сравнению с симметричными шифрами не в сравнение

Denis Bakhtin

unread,
Nov 6, 2016, 5:30:03 PM11/6/16
to Golang Russian, star...@stargrave.org
Не совсем верно, про объем данных, возможных для шифрования RSA и др. алгоритмами. Можно шифровать любой объем, для этого он разбивается на блоки, каждый из которых шифруется независимо (или с учетом результата шифрования предыдущих блоков для особой устойчивости).
Гибридная схема это несколько другое, там скорее преследуется цель оптимизации скорости шифровки дешифровки, т.к. симметричные алгоритмы более быстрые, чем ассиметричные. Как-то так. 

Sergey Matveev

unread,
Nov 7, 2016, 12:10:14 AM11/7/16
to Golang Russian
*** Denis Bakhtin <denis....@gmail.com> [2016-11-07 01:35]:
>Не совсем верно, про объем данных, возможных для шифрования RSA и др.
>алгоритмами. Можно шифровать любой объем, для этого он разбивается на
>блоки, каждый из которых шифруется независимо (или с учетом результата
>шифрования предыдущих блоков для особой устойчивости).

Вы на практике где-либо встречали чтобы с асимметричными алгоритмами так
делали?

Denis Bakhtin

unread,
Nov 7, 2016, 3:37:36 AM11/7/16
to gola...@googlegroups.com
Это я вспоминал дипломную работу :) не воспринимайте в серьез. Просто увидел обсуждение, решил вставить свои пару копеек.

7 ноября 2016 г., 8:08 пользователь Sergey Matveev <star...@stargrave.org> написал:
--
Вы получили это сообщение, так как подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/golang-ru/Ggnyove6ZHU/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес golang-ru+unsubscribe@googlegroups.com.
Настройки подписки и доставки писем: https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages