Исследование методов хранения пользовательских паролей и их синхронизации на мобильных устройствах
Определение методов безопасного хранения и передачи пользовательских данных, на примере паролей, с использованием компьютерного зрения, что обеспечивает безопасность. Важность политики свободного программного обеспечения в контексте управления паролями.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 14.12.2024 |
Размер файла | 100,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Исследование методов хранения пользовательских паролей и их синхронизации на мобильных устройствах
Лейн Ф.Е.
Аннотация
в работе представлены методы безопасного хранения и передачи пользовательских данных, на примере паролей, с использованием компьютерного зрения, что обеспечивает безопасность и конфиденциальность. Описанный метод учитывает важность политики свободного программного обеспечения (FLOSS) в контексте управления паролями. Различные облачные сервисы и радиопередача могут быть уязвимыми к взлому и/или использовать проприетарные технологии, использование которых ставит под сомнение вопрос шифрования и хранения данных, что может создать риски для безопасности. Предложенный метод хранения данных основан на использовании шифрования AES + BIP-39, а метод передачи и синхронизации - на компьютерном зрении, обеспечивая защиту от несанкционированного перехвата данных.
Ключевые слова: безопасность, компьютерное зрение, шифрование, пароли, конфиденциальность, мобильные технологии, свободное программное обеспечение.
Abstract
Lane F.E.
METHODS OF STORING USER PASSWORDS AND SYNCHRONIZING THEM ON MOBILE DEVICES
This paper presents methods for secure storage and transmission of user data, using computer vision as an example, ensuring security and confidentiality. The described method takes into account the importance of Free/Libre and Open Source Software (FLOSS) policy in password management. Various cloud services and radio transmission methods may be vulnerable to hacking and/or use proprietary technologies, the use of which raises questions about data encryption and storage, posing security risks. The proposed data storage method is based on AES encryption + BIP-39, and the transmission and synchronization method is based on computer vision, providing protection against unauthorized interception of data.
Keywords: security, computer vision, encryption, passwords, confidentiality, mobile technologies, open source software, FLOSS.
Хранение паролей в облачных сервисах или на серверах компаний становится всё более опасным и актуальным вопросом в современном мире цифровых технологий. В свете нескольких значительных инцидентов нарушения безопасности данных, включая утечки миллионов паролей, становится очевидной необходимость в поиске более надежных методов управления паролями [1].
Во-первых, хранение паролей в облачных сервисах или на серверах компаний подвергает их риску атак со стороны злоумышленников. В случае успешной атаки, злоумышленники могут получить доступ к чувствительной информации, что приводит к серьезным последствиям для безопасности и конфиденциальности данных. Более того, внутренние нарушения безопасности, связанные с недостаточным контролем доступа к данным, могут представлять такую же угрозу, как и внешние атаки [2].
Во-вторых, использование проприетарных технологий для хранения паролей может создавать дополнительные риски для безопасности данных. Такие технологии, часто не прозрачные в своих методах шифрования и управления данными, могут стать объектом атак или утечек данных. Более того, недостаточная прозрачность может привести к нарушению политики конфиденциальности и использованию данных пользователей в целях, не связанных с первоначальным назначением.
Также, важность надежного хранения и генерации паролей рассматривается в статьях [3] и [4]. В них анализируются современные проблемы информационной безопасности, включая использование повторяющихся паролей и связанные с этим проблемы защиты персональных данных. Также, в [4] предлагаются рекомендации по созданию безопасных паролей и анализу их надежности.
Для защиты паролей отлично подходит алгоритм симметричного шифрования AES. Симметричное шифрование означает, что для зашифрования и расшифрования данных используется один и тот же ключ. В случае хранения паролей, они обычно зашифровываются с помощью мастер-пароля и модификатора входа хэш-функци (соли). Одним из преимуществ шифрования AES является его высокая стойкость к взлому. Этот алгоритм имеет различные режимы работы (например, ECB, CBC, CTR и др.), которые позволяют адаптировать его к различным потребностям безопасности. Важно учитывать, что безопасность шифрования AES зависит от правильного выбора ключа. Длина ключа влияет на стойкость алгоритма к взлому. Обычно используются ключи длиной 128, 192 или 256 бит. Чем длиннее ключ, тем сложнее взломать зашифрованные данные [5]. Согласно анализу, проведенному авторами, AES с ключом длиной 128 бит обычно считается достаточно стойким для защиты данных на длительный срок. Для взлома AES-128 требуется вычислительное время, превышающее возможности современных компьютеров. Тем не менее, более длинные ключи, такие как AES-192 и AES-256, обеспечивают еще более высокий уровень безопасности. И хотя время, необходимое для взлома этих более длинных ключей, может быть велико, оно всё равно зависит от вычислительной мощности атакующего и использованных методов атаки [5].
Для удобства пользователя, каждый «пароль» (каждый объект в базе данных) должен содержать 4 поля: название сайта (или ресурса к которому применяется пароль), имя пользователя, пароль и заметки. Все поля должны подвергаться шифрованию, а при вводе должны поддерживать возможность оставаться пустыми. Т.к., например, при определённых обстоятельствах может отсутствовать имя пользователя, или же, пользователь просто хочет сохранить небольшие приватные данные в поле заметок или пароля. Также данные поля должны иметь возможность редактирования и копирования в буфер обмена для удобства работы.
Для усиления безопасности шифрования предлагается использовать случайно сгенерированную соль для каждого объекта данных (4 поля). В случае повреждения файла базы, это позволит восстановить как можно больше объектов. Каждый раз при создании или обновлении записи пароля необходимо использовать новую соль. В противном случае, из-за принципа работы шифрования AES возможно скомпрометировать мастер-пароль.
В качестве мастер-пароля предлагается использовать мнемоническую фразу (BIP-39). Пользователю можно предложить вводить данную фразу при каждом декодировании базы данных, что существенно повышает безопасность и делает возможным хранение и передачю файла базы данных на любых носителях.
Однако, мнемоническую фразу можно хранить на устройстве пользователя в зашифрованном виде, используя тот же алгоритм AES и мастер- пароль. Данный подход снижает безопасность, так как в случае, если устройство пользователя окажется у злоумышленника и мастер-пароль не является достаточно надежным, злоумышленник сможет расшифровать BIP-39 и получить доступ к базе паролей. Во избежание этого, такой принцип работы лучше всего использовать на устройствах, которые гарантированно не могут попасть в руки злоумышленника или имеют возможность шифрования данных, хранимых приложениями. Также, мастер-пароль должен быть крайне надежным, что было описано ранее.
В качестве формата хранения данных хорошо подходит JSON-нотация, т.к. в большом количестве высокоуровневых языков программирования реализована возможность эффективно работать с ней. Пример одного объекта (4 поля) в незашифрованном виде показан в листинге 1.
Листинг 1. Пример формата хранения объекта.
{
"site": "example.com",
"user": "user123",
"pass": "secretpassword123",
"notes": "This is a note for the password entry" }
Для шифрования, JSON можно представить в формате строки, применить кодировку (например, UTF-8) и подать байты на вход шифратора, предварительно представив мнемоническую фразу в виде байтов. Однако, для проверки целостности данных при расшифровке, перед сжатием следует вычислить чек-сумму байтов строки, например, используя хэш-функцию MD5. -Полученную чек сумму можно добавить в конец байтов строки, и, для уменьшения итогового объёма данных, дополнительно сжать (например, используя GZIP). Пример реализации такого алгоритма на языке Python, с использованием библиотек PyCryptodome и Mnemonic показан в листинге 2.
Листинг 2. Пример реализации описанного алгоритма шифрования.
data = {
"site": "example.com",
"user": "user123",
"pass": "secretpassword123",
"notes": "This is a note for the password entry",
}
#"site":"example.com","user":"user123","pass":"secretpassword123","notes":"This
is a note for the password entry"
data_str = json.dumps(data, separators=(",", ":"), ensure_ascii=False)[1:][:-1]
#2273697465223a226578616d706c652e636f6d222c2275736572223a2275736572313233222c227 0617373223a2273656372657470617373776f7264313233222c226e6f746573223a2254686973206 9732061206e6f746520666f72207468652070617373776f726420656e74727922
data bytes = data str.encode("utf-8")
#6ccc3a1d87d9b474c61dd72e454a4a9b
checksum = hashlib.md5(data_bytes).digest()
#2273697465223a226578616d706c652e636f6d222c2275736572223a2275736572313233222c227 0617373223a2273656372657470617373776f7264313233222c226e6f746573223a2254686973206 9732061206e6f746520666f72207468652070617373776f726420656e747279226ccc3a1d87d9b47 4c61dd72e454a4a9b
data with checksum = data bytes + checksum
#78da532ace2c4955b2524aad48cc2dc849d54bcecf55d2512a2d4e2d020a8228432363a04041627 13150a03835b928b504c429cf2f4a8148e5e597a482e44232328b158028510124a290965fa450929 1aa0053ac909a575254a99473c64ab6fde6969263b2d7f55cbdbc660300bfa02d29
data_compressed = zlib.compress(data_with_checksum, level=9)
#78da532ace2c4955b2524aad48cc2dc849d54bcecf55d2512a2d4e2d020a8228432363a04041627 13150a03835b928b504c429cf2f4a8148e5e597a482e44232328b158028510124a290965fa450929 1aa0053ac909a575254a99473c64ab6fde6969263b2d7f55cbdbc660300bfa02d290f0f0f0f0f0f0 f0f0f0f0f0f0f0f0f
data padded = Padding.pad(data compressed, AES.block size)
#626263aa5e1c475b5e5eec20f110e06d
entropy = Mnemonic.to_entropy(Mnemonic("english"), words="give basic tunnel rotate settle pumpkin just talk can mass day surge")
iv = b"0123456789abcdef"
cipher = AES.new(entropy, AES.MODE_CBC, iv=iv)
#a441206f18291fca5881d5ccf92f867456758611d14cdf2d1617a7061b3786b399c2312a9b77cdd 47c024ae96eb2ac9f034945ca150793eda548c525543e2ccc9317f481cdea535b9e228f1c9a45dd8 0c058a79f53e69e34d73d936d450299f941bbc30a0f0e5615716da9bd31251e1078f20a706455e30 cb782d88a9751919e
data_encrypted = cipher.encrypt(data_padded)
Как видно в данном примере, сжатие позволило незначительно сократить размер объекта со 128 до 113 байтов (-12%). Однако, в случае использования заметок пользователем, сжатие может быть существеннее. Зашифрованные данные, вместе с начальным вектором (солью) можно также представить в виде JSON-нотации, предварительно применив кодировку Base64, что показано в листинге 3.
Листинг 3. Пример хранения зашифрованного объекта.
data encrypted b64 = base64.b64encode(data encrypted).decode("utf-8")
iv b64 = base64.b64encode(iv).decode("utf-8")
data = {"encrypted": data encrypted b64, "salt": iv b64}
#{
#"encrypted":"pEEgbxgpH8pYgdXM+S+GdFZ1hhHRTN8tFhenBhs3hrOZwj Eqm3fN1HwCSulusqyfA0 lFyhUHk+2lSMUlVD4szJMX9IHN6lNbniKPHJpF3YDAWKefU+aeNNc9k21FApn5QbvDCg8OVhVxbam9MS UeEHj yCnBkVeMMt4LYipdRkZ4 = ",
#"salt":"MDEyMzQ1Njc4OWFiY2RlZg=="
#}
print (json.dumps(data, ensure ascii=False, indent=4))
Для расшифровки объекта, необходимо проделать действия в обратном порядке, т.е. декодировать байты из Base64, расшифровать объект, используя мнемоническую фразу и начальный вектор (соль), распаковать байты, отделить чек-сумму, вычислить новую чек-сумму и сверить её с изначальной и кодировать, используя стандартную текстовую кодировку (например, UTF-8). В листинге 4 показан пример реализации декодирования.
Листинг 4. Пример декодирования зашифрованного объекта.
data encrypted = base64.b64decode(data["encrypted"].encode("utf-8"))
iv = base64.b64decode(data["salt"].encode("utf-8"))
#626263aa5e1c475b5e5eec20f110e06d
entropy = Mnemonic.to entropy(Mnemonic("english"), words="give basic tunnel rotate settle pumpkin just talk can mass day surge")
cipher = AES.new(entropy, AES.MODE CBC, iv=iv) data decrypted = cipher.decrypt(data encrypted)
data unpadded = Padding.unpad(data decrypted, AES.block size)
data uncompressed = zlib.decompress(data unpadded)
data = data uncompressed[^16]
data checksum = data uncompressed[-16:]
checksum new = hashlib.md5(data).digest()
#True
print(checksum new == data checksum)
iata str = data.decode("utf-8")
data dict = json.loads("{" + data str + "}")
#{'site': 'example.com', 'user': 'user123', 'pass': 'secretpassword123', 'notes': 'This is a note for the password entry'} print(data dict)
Т.к. данные после шифрования имеют высокую степень защиты, для синхронизации можно использовать открытые каналы передачи данных. Однако, для повышения защищённости и сохранения BIP-39 фразы на устройстве пользователя, крайне желательно, чтобы канал передачи данных также был защищённым, а для увеличения удобства использования -- поддерживался на максимальном количестве устройств.
По этим, и, описанным в начале причинам, для синхронизации не подходят проприетарные системы радиопередачи данных, такие как AirDrop, Samsung Quick Share и различные реализации Nearby Sharing. Использование Bluetooth и Wi-Fi потребует наличие соответствующих технологий в устройстве, а также алгоритмов инициации соединения, создания зашифрованного канала и передачи данных. Также, для повышения безопасности, некоторые пользователи предпочитают не использовать стандарты беспроводной передачи данных на устройствах с секретной информацией.
Одним из вариантов передачи небольшого объёма данных в таких условиях является использование камеры устройства и алгоритмов компьютерного зрения. Например, при помощи QR-кодов [5] и открытых оффлайн-библиотек для их чтения, распространяющихся под лицензиями открытого программного обеспечения, можно передавать зашифрованные данные вплоть до 3КБ одним QR-кодом. При наличии большего объёма данных, их можно разделить на несколько кодов. Такой метод синхронизации данных используется, например, в приложениях двухфакторной аутентификации, таких как Aegis и Google Authenticator. Помимо QR-кодов, можно использовать и другие матричные коды, такие как Aztec, Data Matrix и т.д., способные хранить достаточное количество информации. компьютерный пользовательский пароль программный
Таким же образом, можно передать и мнемоническую фразу на другое устройство, однако в данном случае следует предупредить пользователя, что никто не должен получить доступ к данному изображению.
Для первоначальной синхронизации (на новом устройстве), вся база данных может быть передана при помощи одного или нескольких QR-кодов в том же виде, в котором она хранится в JSON-файле, поскольку каждый объект уже содержит чек-сумму и закодированную информацию в формате Base64.
Для последующих синхронизаций, с целью уменьшения объёма передаваемых данных можно синхронизировать лишь изменения в базе данных. Например, присваивать каждому объекту при создании уникальный ID и передавать только изменённые поля (или команду на удаление данного объекта). В листинге 5 показан пример, генерирующий QR-код при помощи библиотеки PyQRCode для синхронизации лишь одного изменённого поля.
Листинг 5. Пример генерации QR-кода для синхронизации изменений.
ENTRY_ID = 123 data old = { "site": "example.com", "user": "user123", "pass": "secretpassword123", "notes": "This is a note for the password entry", } data_new = { "site": "example.com", "user": "user123", "pass": "newpassword", "notes": "This is a note for the password entry", } data_to_update = {} for key, value in data new.items(): if data_old[key] != value: data_to_update[key] = value #{'pass': 'newpassword'} print(data_to_update) data_new_str = json.dumps(data_new, separators=(",", ":"), ensure ascii=False)[1:][:-1] -ata new bytes = data new str.encode("utf-8") checksum full = hashlib.md5(data new bytes).digest() data_to_update_str = json.dumps(data_to_update, separators=(",", ":"), -ensure_ascii=False)[1:][: 1] data_to_update_bytes = data_to_update_str.encode("utf-8") data_to_update_with_full_checksum = data_to_update_bytes + checksum_full data compressed = zlib.compress(data to update with full checksum, level=9) data_padded = Padding.pad(data_compressed, AES.block_size)
entropy = Mnemonic.to_entropy(Mnemonic("english"), words="give basic tunnel rotate settle pumpkin just talk can mass day surge") iv = b"0123456789abcdef" # Must be random cipher = AES.new(entropy, AES.MODE_CBC, iv=iv) data_encrypted = cipher.encrypt(data_padded) data_encrypted_b64 = base64.b64encode(data_encrypted).decode("utf-8") -iv_b64 = base64.b64encode(iv).decode("utf 8")
data = {"id": ENTRY ID, "encrypted": data encrypted b64, "salt": iv b64} #{'id': 123, 'encrypted':
'PrWxGg8g+/NG+fV8tTe6lIG9UFVEDuXmTcmm0fpv7qGBySwyMyj kGf52P2eLx5Ep', 'salt' : 'MDEyMzQ1Njc4OWFiY2RlZg=='} print(data)
data str = json.dumps(data, separators=(",", ":"), ensure ascii=False)[1:][:-1] qrcode = pyqrcode.create(data_str) qrcode.png("output.png", scale=10)
На рисунке 1 показан сгенерированный QR-код.
Рисунок 1. Пример сгенерированого QR-кода.
Как можно заметить, чек-сумма передаётся конечного объекта, а не синхронизируемых данных. Это позволяет убедиться в том, что переданных изменений достаточно для синхронизации двух объектов. Для использования данного метода, приложение должно сохранять версию базы данных после последней синхронизации, чтобы составить список изменений, необходимых для передачи на устройство. Также возможно создание нескольких таких «версий» базы данных для каждого устройства, чтобы корректно передавать изменения на несколько устройств в разное время.
Таким образом, используя современные методы шифрования, удобный формат хранения и передачи данных, а также методы синхронизации, можно обеспечить высокий уровень безопасности и удобства в управлении паролями.
Список литературы
1. Швыряев П. С. Утечки конфиденциальных данных: главный враг внутри // Государственное управление. Электронный вестник. - 2022;
2. Хачатурова С. С. Хранение и защита информации // Международный журнал прикладных и фундаментальных исследований. - Волгоград: Волгоградский Государственный Университет;
3. Маврин А. В. Современные проблемы информационной безопасности, связанные с защитой персональных данных пользователя;
4. Назарова А. Д. Анализ надежности паролей для защиты данных // Уральский государственный экономический университет. - Екатеринбург, Россия;
5. Бужинская Н.В., Шушпанов М.С., Васева Е.С. Автоматизированная система защищенного хранения и передачи данных // Федеральное государственное автономное образовательное учреждение высшего образования «Российский государственный профессионально-педагогический университет». - 2019
Размещено на Allbest.ru
...Подобные документы
Понятие и принципы организации Web-браузеров как систем, использующихся для доступа к интернет-ресурсам для просмотра страниц, видео, управления / администрирование неких ресурсов. Механизм хранения паролей в браузерах и оценка его эффективности.
лабораторная работа [579,9 K], добавлен 04.12.2014Значение WEB-браузеров для организации доступа к Интернет-ресурсам, для просмотра страниц, видео, управления/администрирование ресурсов. Механизмы хранения паролей современных web-браузеров. Особенности применения функций дешифровки имени и пароля.
лабораторная работа [408,4 K], добавлен 04.12.2014Обзор основных используемых языков программирования (С++, Java, Pascal). Анализ существующих методов шифрования паролей. Основные понятия объектно-ориентированного программирования. Реализация приложения для генерирования паролей на языке Object Pascal.
курсовая работа [822,4 K], добавлен 07.07.2012Определение и анализ сущности брутфорса – одного из популярных методов взлома паролей на серверах и в различных программах. Характеристика клавиатурного шпиона на базе драйвера. Рассмотрение основных программ для поиска и удаления клавиатурных шпионов.
курсовая работа [100,9 K], добавлен 03.08.2017Принципы и методы разработки пользовательских интерфейсов, правила их проектирования. Классические способы создания прототипов пользовательских интерфейсов в Microsoft Expression Blend. Работа с текстом и графическими изображениями в Expression Blend.
курсовая работа [1,5 M], добавлен 19.03.2012Трансляция полей формы. Метод аутентификации в Web как требование к посетителям предоставить имя пользователя и пароль. Форма для передачи данных. Использование базу данных для хранения паролей. Разработка сценарий для аутентификации посетителей.
лекция [225,0 K], добавлен 27.04.2009Изучение синтаксиса пользовательских функций. Разработка приложения для вычисления параметров системы управления запасами. Синтаксис элемента "Список аргументов функции". Основные правила написания программного кода. Основные операторы языка VBA.
лабораторная работа [119,0 K], добавлен 22.09.2016Разработка программного средства для анализа значений хэш-функций с целью формальной оценки стойкости пароля. Проблема слабых паролей. Оценка ущерба, возникающего вследствие атаки на защищаемый объект. Метод поиска по словарям и "радужным таблицам".
дипломная работа [1022,5 K], добавлен 10.06.2013Проблемы использования паролей на предприятии. Общие понятия и технологии идентификации и аутентификации. Принцип работы и структура программного средства SecureLogin от компании ActiveIdentity. Автоматическая генерация пароля, фишинг и фарминг.
курсовая работа [2,5 M], добавлен 22.01.2015Изучение основных видов угроз программного обеспечения. Выявление наиболее эффективных средств и методов защиты программного обеспечения. Анализ их достоинств и недостатков. Описания особенностей лицензирования и патентования программного обеспечения.
курсовая работа [67,9 K], добавлен 29.05.2013Проведение системного анализа предметной области и разработка проекта по созданию базы данных для хранения информации о перевозках пассажиров и грузов. Обоснование выбора системы управления базой данных и разработка прикладного программного обеспечения.
курсовая работа [1,1 M], добавлен 18.07.2014Разработка и цели внедрения свободного программного обеспечения в образовательные учреждения. Основные понятия векторной графики на примере редактора Inkscape, интерфейс программы. Разработка серии практических заданий с использованием Inkscape.
курсовая работа [4,1 M], добавлен 15.01.2011Пакет Microsoft Office. Электронная таблица MS Excel. Создание экранной формы и ввод данных. Формулы и функции. Пояснение пользовательских функций MS Excel. Физическая постановка задач. Задание граничных условий для допустимых значений переменных.
курсовая работа [3,4 M], добавлен 07.06.2015Центр обеспечения безопасности (Windows Security Center) в операционной системе Windows XP SP2 и угрозы компьютерной безопасности. Обеспечение безопасности хранения данных в ОС Microsoft. Алгоритм создания отказоустойчивых томов для хранения данных.
курсовая работа [507,1 K], добавлен 13.11.2011Модели развертывания и облачные модели. Анализ существующих методов информационной безопасности. Обеспечение надежного шифрования данных при передаче их от пользователя к провайдеру услуг по хранению данных. Минимизация нагрузки на облачные сервисы.
дипломная работа [839,1 K], добавлен 17.09.2013Системы управления базами данных и их использование для решения задач автоматизации предприятия. Разработка информационного и программного обеспечения для автоматизации хранения и обработки информации при организации работы агропромышленного предприятия.
курсовая работа [607,1 K], добавлен 07.05.2011Принципы работы клавиатурного шпиона. Способ взлома брутфорсом. Захват информации программ-снифферов. Противодействие раскрытию и угадыванию пароля, пассивному перехвату, несанкционированному воспроизведению. Защита при компрометации проверяющего.
курсовая работа [454,7 K], добавлен 28.03.2016Описание предметной области коучинга, его основные понятия. Разработка, реализация прикладной программы на базе WindowsForms. Описание пользовательских классов и реализованных форм. Описание принципа работы программы, структур хранения и получения данных.
курсовая работа [1,3 M], добавлен 09.09.2012Разработка информационной системы для хранения данных для предметной области "Самолеты аэропорта". Формат хранения исходных данных, их загрузка в табличный процессор. Тестирование программного комплекса. Возможности пакета MS Excel по обработке данных.
курсовая работа [1,2 M], добавлен 23.04.2014Разработка информационного обеспечения для формирования базы данных для государственной итоговой аттестации 9 классов. Обзор методов репликации и синхронизации баз данных. Преимущества алгоритма шифрования Rijndael. СУБД Microsoft SQL Server и Firebird.
дипломная работа [3,3 M], добавлен 27.06.2012