Задать вопрос
@azarycheff

Защита данных в программе без опыта криптографии?

На работе мне как "нутыжеучишьсявунивере" поручили сделать маленькую программу для хранения строк некоторых данных, которые сейчас хранят просто в блокноте.

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

ChatGPT советует просто взять питон и подгрузить там библиотеку шифрования aes

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

Идея в том, чтобы данные было затруднительно или невозможно восстановить без файла пользователя с флешки
  • Вопрос задан
  • 253 просмотра
Подписаться 2 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    1C-программист: расширенный курс
    18 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия 1С-программист
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 5

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

По какой идее? Что это за данные и откуда взялись требования по шифрованию?
Что ещё с ними нужно кроме хранения?
Сколько их?

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


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

Это иллюзия безопасности, не надо так.

Лучше тогда уж зашифровать каким-нибудь сильным алгоритмом типа AES, а на флешку положить ключ (но тогда наверное стоит задуматься об использовании специального ключевого носителя)
Но надо подумать, как происходит работа с этими данными, а то если их много, то целиком всё расшифровывать и защифровывать обратно будет слишком тяжело. А при применении блочных схем есть риск создать дыру.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Делали похожее, просто Fernet из cryptography, это AES под капотом. Идея с разделением файла красивая но по факту обфускация, ломается элементарно. Если хочешь привязку к флешке, клади на неё файл с ключом шифрования, а шифрованные данные на пк. Только бекап ключа сделай, флешка сдохнет — данные потеряешь. ChatGPT тут не соврал)
Ответ написан
@rPman
Безопасность не абстрактная вещь и не может быть реализована только программными средствами. Безопасность это точно не криптография, хотя она будет использоваться под капотом, вам нужно комплексное програмно-аппаратное решение плюс регламенты.

Так как вы ничего не сказали про вашу задачу, задавать наводящие вопросы это долго, я придумаю ответы за вас, и дам выжимку:

Вам нужна аутентификация пользователя, т.е. надежный способ идентифицировать пользователя, что бы в приложении можно было выбрать (авторизация), что пользователю доступно или к примеру блокировать доступ при его отзыве.

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

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

Более сложный и надежный способ - не пассивное устройство с чипом шифрования (карта доступа или usb токен), в этом случае для компроментации доступа нужна физическая кража устройства или проксируемый доступ снаружи и физический доступ с подменой карт ридера на рабочем месте (обламывается регламентами, обысками и слежкой).

Я рекомендую не пассивный usb токен авторизации, на базе FIDO2 (CTAP2) USB‑ключа (есть карты но тогда нужно покупать еще и ридер), библиотеки есть по до все, например открытая libfido2, стоимость токена порядка 1-2т.р. (может есть дешевле при оптовых покупках). В приложении заложить логику, ввода пин кода (с экрана, что бы усложнить компроментацию, а то с клавиатурой это не сложно) при вставке, и поддерживать доступ к приложению и данным только пока устройство подключено.

Токен будет позволять выдавать ключ шифрования и защищает его от копирования при его краже. Управление правами доступа (добавление или отзыв доступа) при оффлайн работе приложения придется делать на нем же (т.е. администратор использует свой ключ доступа, авторизуясь, получает у приложения доступ на управление списками доступа и регистрацию новых ключей).
Ответ написан
Комментировать
@Apasnychel
Мда, сделай те мне то, что я не знаю что.
Максимум что я понял из твоего задания, что нужно предоставлять доступ к данным если человек владеет флешкой. Самое лучшее это aes ключ на флехе.
Но тут надо быть уверенным что машина при виыкаеии флешки не скопрометированна. Желательно это должен быть отдельный мини ПК (хотяты ардуино, которое у себя на плате расшифрования данные, беря зашифрованные из ПК.) ну жто уже совсем паранойя
Ответ написан
CityCat4
@CityCat4
Жил да был черный кот за углом...
Никогда не изобретай своей криптографии! Если ты конечно не Ривест, Шамир и Адлеман в одном лице :) Берешь rsa, ключ 2048 - и шифруешь. На флэшку ключ (учти - утеря ключа - утеря данных!). Все.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы