Oskar87
@Oskar87
Senior software engineer

Как зашифровать файлы пользователя в приложении с возможностью расшифровки так чтобы никто из разработчиков приложения не мог расшифровать их?

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

p.s.Была мысль складывать файлы в некий контейнер, который зашифрован хэшом от пароля + соль, но это не подходит - программист может взять хэш и расшифровать их.
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
А что именно Ваше приложение должно делать с этими данными ?

Если осуществляется просто передача, хранение, упорядочивание контейнеров без вникания в их суть - Вам подойдет оперирование зашифрованными контейнерами, например, с помощью неизвлекаемого ключа, хранящегося на USB-брелоке.

Но если разрабатываемая программа должна понимать семантику данных, т.е. обрабатывать их в полном смысле этого слова, то о какой защите может идти речь ? У разработчика всегда остается возможность внести в код закладку, копирующую данные в тот момент, когда они расшифрованы. Криптографы очень много времени уделяют решению этой задачи, т.н. гомоморфному шифрованию. Но результаты сейчас пока далеки от применимости на практике.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Конечная точка какая-нибудь находится всегда.

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

Так что, если приложение хоть как-то данными оперирует - оно должно будет их видеть в расшифрованном виде - иначе оно работать не сможет. А если оно сможет их видеть - сможет и скопировать :)
Ответ написан
Комментировать
GavriKos
@GavriKos
Любое шифрование с ключом +ключ есть только у пользователя и расшифровка так же происходит на стороне пользователя.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Инкапсуляция данных в crypt-пакеты.
Где Вы их будете расшифровывать потом и как именно - дело ваше.
Обмен данными между пользователями - можно сделать через ассиметричное шифрование (PGP): т.е. ключами пользователи обмениваются сами ВНЕ приложения.
Тогда без ключей - будет только crypt-контейнер и всё.
Ответ написан
Комментировать
Oskar87
@Oskar87 Автор вопроса
Senior software engineer
В частночти это могут быть фото, видео,аудио файлы - которые пользователь может посмотреть в любой момент. Да вы правы, я прихожу к выводу что с таким условием как у меня файлы не защитить.

Есть вариант держать базу ключей на отдельном сервере, и ходить туда может только приложение под определенным пользователем, креденшлы которого зашифрованы.Но это больше орг. вариант и опять же не защитит от атаки mitm
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы