LINUX.ORG.RU

Создание контейнера aes+rsa

 , , , ,


0

2

Добрый день

Для проекта понадобилась передача данных в зашифрованном виде. Т.к. размер билиотек критичен то для работы был выбран PolarSSL. С вопросами криптографии сталкнулась впервые, посмотрела, погуглила и вроде все ясно. Была выбрана свяка aes+rsa.

1) Создаю приватный(RSA_PRIVATE_KEY) и публичные(RSA_PUBLIC_KEY) rsa-ключи
2) Создаю aes-ключ (AES_KEY)
3) Данные(которые для передачи) шифрую с пом aes (AES_KEY)
4) Шифрую ключ AES_KEY приватным ключом RSA_PRIVATE_KEY

Шифрованый ключ AES_KEY + шифрованые данные и есть контейнер для передачи. Обладатель публичного ключа расшифрует AES_KEY в заголовке и дальше им расшифрует все данные. C пом PolarSSL это делается оч просто.
Но выглядит это уж больно по-велосипедному, потомучто если понадобится добавлять подписи,напрмер, чтоб данные не подменили в каналах передачи или еще какие-нибудь изыски, то не может быть чтоб все руками это так делали, городили свои форматы итп...

Подскажите пожалуйста есть ли унифицированные решения или может я чего-то недосмотрела в PolarSSL?

Спасибо



Последнее исправление: nyka (всего исправлений: 1)

С вопросами криптографии сталкнулась впервые, посмотрела, погуглила и вроде все ясно.
вроде все ясно
сталкнулась

Лучше наймите специалиста.

Deleted
()

Так понимаю что единого целостного решения нет.
Это странно даже.

nyka
() автор топика

) Шифрую ключ AES_KEY приватным ключом RSA_PRIVATE_KEY

this

шифровать нужно _публичным_ ключом. ДЕшифровка требует приватный ключ.

Что до подписи, то всё наоборот: что бы подписать нужен секретный ключ, что-бы проверить нужен публичный.

Создаю приватный(RSA_PRIVATE_KEY) и публичные(RSA_PUBLIC_KEY) rsa-ключи

они создаются ОДИН раз, на каждой железке. При этом приватный НИКОГДА не покидает железку.

Так понимаю что единого целостного решения нет.

а как оно должно по вашему выглядеть?

emulek
()
Ответ на: комментарий от nyka

Есть OAEP. Также есть схожий ISO стандарт (не знаю номер). Но это без проверки целостности, которая добавляется как encrypt-then-MAC. Я не специалист в этой теме и совсем всё-в-одном решений не знаю.

Если будете реализовывать самостоятельно, не имея необходимого опыта, то, по крайней мере, проведите потом аудит компетентными специалистами. Я подозреваю, что хотелось сделать это всё средствами библиотеки, в которой всё правильно, но под конкретную задачу реализация может и вовсе не найтись.

xaizek ★★★★★
()

Обладатель публичного ключа расшифрует AES_KEY в заголовке и дальше им расшифрует все данные.

Публичный ключ на то и публичный, что на заборе написан… В такой схеме любой сможет расшифровать сообщение.

есть ли унифицированные решения

Любая реализация PKCS#7.

Deleted
()
Ответ на: комментарий от Deleted

По неопытности, немного неверно определила суть задачи.
Каждый имеющий публичный ключ должен смочь расшифровать сообщение. Логика протокола такова что не скрывается факт того что сообщения пересылаются, не скрывается содержимое сообщений, но само содержимое должно быть защищено от внесения изменений.
Тут должен использоваться механиз цифровой подписи. К сожалению PolarSSL не поддерживает PKCS#7

nyka
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.