Pull to refresh
3
0
Алексей Фала @alexeyfala

.Net разработчик

Send message

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

  • Мастер-пароль больше не будет вшит в коде, а будет храниться в пользовательской переменной окружения (в реестре по пути HKEY_CURRENT_USER\Environment) в виде Base64 строки (понимаю что Base64 легко прочитать, но все же лучше, чем в открытом виде). Задавать значение переменной пользователь будет в приложении, в специальном диалоге. Для шифрования используется AES алгоритм взятый из статьи https://tomrucki.com/posts/aes-encryption-in-csharp/.

  • Есть вариант, который мне подсказали, использовать в алгоритме соль на основе уникальных характеристик девайса (сейчас соль фиксированная). Но в этом случае острой гранью встает вопрос с переносимостью приложения на другое устройство.

Буду благодарен советам по данной теме.

Спасибо за рекомендации, учту их в дальнейшем.

У меня есть урезанная версия Data Organizer на .NET MAUI, ее еще ни где не публиковал. Честно сказать, оно такое себе. Под Windows в платформе много чего нет. Под мобильные платформы, еще более-менее. В будущем хотелось бы реализовать его на Avalonia, но нужно будет как то компенсировать недостаток компонентов, которые в обилии имеются в WPF.

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

Было бы здорово, но к сожалению приложение на WPF нельзя собрать как Native AOT. На данный момент это можно сделать с консольным приложением и ASP.NET Core.

Такой большой объем обусловлен включением в сборку целевой платформы .NET 8 и это с учетом компрессии (p:EnableCompressionInSingleFile=true), без компрессии сборка будет весить еще больше.

Судя по скрину у вас Win10? Я тестировал запуск на Win10, все работало. Можно вас попросить прислать мне в личку запись из журнала событий Windows? Наверняка соответствующая запись об ошибке должна быть там.

Спасибо за развернутый комментарий. Я пересмотрю свой подход к шифрованию данных. Была мысль использовать переменные окружения, но посчитал этот подход менее безопасным) Также ради комментариев была создана мною статья.

Написал свое, так как, хотелось назначать документам глобальные горячие клавиши, для максимально быстрого копирования текста в буфер обмена. И еще хотелось иметь особый минималистичный режим работы, который реализован в приложении как режим «Избранное». Я добавил описание этого режима в статью.

Спасибо вам за критику.
Есть несколько причин, по которым я не выкладываю исходники в открытый доступ:

  • В приложении есть возможность шифрования содержимого документов, если логика дешифрования станет доступна, можно будет ею воспользоваться, а я сам храню в Data Organizer важную информацию. Понимаю что любые данные при желании можно вскрыть, но все же, вдруг приложение станет востребованным и просто не хочется кого-то подставить.

  • Я использую проприетарные компоненты от Telerik (сам купил лицензию) и Syncfusion (комьюнити лицензия). У Syncfusion странная система лицензирования компонентов, вынуждающая прописывать ключ прямо в коде, не хотелось бы его светить, на всякий случай, чтобы мой аккаунт не заблокировали.

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

Information

Rating
Does not participate
Location
Рязань, Рязанская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Mobile Application Developer
Senior
C#
WPF
Software development
Object-oriented design
Algorithms and data structures
Multiple thread
OOP
.NET
.NET Core
Entity Framework