/FaceLock

Primary LanguagePython

FaceLock

FaceLock is a program to protect your PC using facial recognition and data encryption.

Technical stack:

TCP server:

  • SqlAlchemy - ORM for working with PostgreSQL
  • Python sockets - TCP connection
  • docker-compose - Setup

Application:

  • PyQT6 - Application design
  • OpenCV - FaceRecognition ...

Назва проекту: Розробка програмного забезпечення для шифрування файлів та папок

Мета проекту: Розробити програмне забезпечення, яке забезпечить безпеку операційної системи шляхом шифрування конфіденційних файлів і дозволить розшифровувати їх лише після успішного підтвердження особистості користувача за допомогою розпізнавання обличчя.

Опис завдання:

Шифрування файлів:

  • Розробити програму, яка буде шифрувати вказані користувачем файли за допомогою симетричного шифрування за допомогою ключа.

  • Забезпечити можливість вибору файлів для шифрування з використанням графічного інтерфейсу користувача (GUI).

  • Використати потужний алгоритм шифрування, такий як AES (Advanced Encryption Standard).

Підтвердження особистості за допомогою розпізнавання обличя:

  • Інтегрувати модуль face_recognition у програму для впізнавання особи користувача.
  • Забезпечити можливість реєстрації облич користувачів та зберігання їх у базі даних.
  • Після успішного визначення особистості користувача, дозволити доступ до розшифрування файлів.

Інтерфейс користувача:

  • Розробити зручний графічний інтерфейс для взаємодії з програмою.
  • Забезпечити можливість вибору файлів для шифрування та розшифрування за допомогою інтерфейсу.

Тестування:

  • Провести ретельне тестування програми на різних тестових наборах файлів.
  • Впевнитися у правильності шифрування та розшифрування файлів.
  • Перевірити коректність роботи модуля face_recognition на різних зображеннях.

Очікуваний результат:

  • Створення програмного забезпечення, яке забезпечить безпеку операційної системи шляхом шифрування та розшифрування файлів лише після підтвердження особистості користувача за допомогою модуля face_recognition.

Опис вхідних та вихідних данних

Вхідні дані:

  • Файли для шифрування: Користувач може обрати один чи декілька файлів, які він бажає зашифрувати. Ці файли можуть бути будь-якого типу (тексти, зображення, відео тощо).
  • Дані для підтвердження особистості: При використанні модулю face_recognition, вхідними даними є зображення облич користувачів, які заздалегідь були зареєстровані в системі.
  • Ключ для шифрування: Симетричний ключ, який буде використовуватися для шифрування та розшифрування файлів. Ключ може бути згенерований користувачем або може бути автоматично згенерований програмою.

Вихідні дані:

  • Зашифровані файли: Результатом успішного виконання проекту будуть зашифровані файли, які будуть збережені в системі з недоступними для читання даними без відповідного ключа.
  • Розшифровані файли: Після успішної ідентифікації особистості користувача та введення правильного ключа для розшифрування, користувач отримає доступ до розшифрованих файлів.
  • Статус підтвердження особистості: Це може бути булеве значення, яке показує, чи була успішно підтверджена особистість користувача за допомогою face_recognition. Це може використовуватися для подальшого контролю доступу до розшифрованих файлів.

Вимоги до проєкту

Функціональні вимоги:

  • Користувач може вибирати файли для шифрування та розшифрування через графічний інтерфейс користувача.
  • Користувач може зареєструвати своє обличчя для подальшого використання при підтвердженні особистості.
  • Система забезпечує шифрування файлів за допомогою симетричного шифрування з використанням AES.
  • Після успішного підтвердження особистості за допомогою face_recognition, користувач може розшифрувати обрані файли за допомогою введення правильного ключа.

Нефункціональні вимоги:

  • Система має надійно забезпечувати безпеку шляхом надійного шифрування та зберігання ключів.
  • Модуль face_recognition повинен бути точним у визначенні особистості користувача.
  • Програма повинна працювати швидко та ефективно.
  • Графічний інтерфейс користувача має бути інтуїтивно зрозумілим і забезпечувати зручну взаємодію з програмою.
  • Програмне забезпечення повинно бути стійким до помилок та збоїв.

Вимоги до інтеграції

  • Програмне забезпечення повинно бути реалізоване мовою програмування Python.
  • Модуль face_recognition повинен бути інтегрований у систему для проведення процесу ідентифікації користувача.
  • Використання TCP сервера, який піднімається в Docker Compose для зручної роботи з PostgreSQL.
  • Сервер використовує бібліотеку threading для забезпечення багатопоточності роботи програми.
  • Робота з базою даних здійснюється за допомогою ORM.

Вимоги до тестування

  • Провести ретельне тестування системи на різних тестових наборах даних.
  • Виконати тести безпеки для перевірки стійкості системи до можливих атак.

Аналіз існуючих рішень

Існують різні рішення, що забезпечує безпеку операційної системи шляхом шифрування файлів та підтвердження особистості за допомогою face_recognition. Деякі з них є з відкритими джерелами, а інші є комерційними. Нижче подано огляд деяких існуючих рішень:

VeraCrypt:

VeraCrypt - це безкоштовне і відкрите програмне забезпечення для шифрування диска.

  • Особливості: Використовує потужні алгоритми шифрування для захисту даних на диску. Має можливість створювати зашифровані контейнери для зберігання файлів та папок.
  • Обмеження: Не має інтегрованого механізму для підтвердження особистості через face_recognition.

TrueCrypt:

TrueCrypt - це програмне забезпечення для шифрування даних.

  • Особливості: Дозволяє створювати зашифровані області на диску для зберігання конфіденційних файлів.
  • Обмеження: Розвиток проекту припинено, існує ризик безпеки.

Microsoft BitLocker:

BitLocker - це вбудований інструмент шифрування для операційних систем Windows.

  • Особливості: Надійний захист даних на диску шляхом шифрування всього тома.
  • Обмеження: Може бути доступний лише для певних версій Windows. Не має можливості розширеного контролю доступу на основі обличчя через face_recognition.

Зважаючи на існуючі рішення можна виділити переваги створення власного проекту для шифрування даних:

Інтегроване розпізнавання облич:

Мій проект має можливість підтвердження особистості користувача за допомогою модуля face_recognition. Це може забезпечити додатковий рівень безпеки, оскільки доступ до розшифрованих файлів буде надано лише після успішного підтвердження особистості.

Широкий спектр можливостей:

Мій проект може поєднувати в собі не тільки шифрування файлів, але і підтвердження особистості через обробку облич. Це робить його більш універсальним та гнучким у використанні.

Відкритість та розширюваність:

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

Контроль над безпекою:

Розробка власного проекту дає повний контроль над безпекою та захистом даних. Я можу вибирати найбільш підходящі методи шифрування для забезпечення безпеки, що дозволяє створити більш гнучку та індивідуальну систему.

Отже, мій проект може бути кращим за існуючі рішення завдяки його унікальним можливостям та гнучкості, що дозволить забезпечити вищий рівень безпеки та зручності використання для користувачів.

Аналіз технологій, інструментів, програмних бібліотек та математичних моделей:

Мова програмування:

  • Python: Це одна з найпопулярніших мов програмування для розробки проектів зі штучним інтелектом, обробки зображень та обробки даних. Python є ідеальним вибором для реалізації вашого проекту, оскільки він має широкий вибір бібліотек, таких як OpenCV для обробки зображень та face_recognition для розпізнавання облич.

Бібліотеки та інструменти:

  • OpenCV: Бібліотека OpenCV (Open Source Computer Vision Library) надає широкий набір інструментів для роботи з зображеннями та відео, що включає обробку зображень, відстеження облич та багато іншого.
  • face_recognition: Ця бібліотека реалізує простий інтерфейс для обробки зображень та визначення облич людей на них. Вона базується на бібліотеці dlib, яка використовує машинне навчання для розпізнавання облич.
  • SQLAlchemy: Це потужний ORM (Object-Relational Mapping) для роботи з базами даних у Python. Ви можете використовувати SQLAlchemy для спрощення взаємодії з базою даних PostgreSQL.

Шифрування:

  • cryptography: Це бібліотека для криптографічних операцій у Python. Вона надає реалізації різних алгоритмів шифрування, включаючи AES, який може бути використаний для шифрування файлів у вашому проекті.

Графічний інтерфейс:

  • PyQt6: PyQt є набором Python-зв'язків для Qt, який надає можливості для розробки крос-платформених графічних інтерфейсів. Ви можете використовувати PyQt6 для створення зручного інтерфейсу користувача для вашого проекту.

Сервер та база даних:

  • Docker Compose: Використання Docker Compose для контейнеризації вашого додатку разом із сервером та базою даних дозволить легко розгорнути та керувати середовищем вашого проекту.
  • PostgreSQL: Це потужна об'єктно-реляційна система керування базами даних, яка забезпечить надійне зберігання та управління даними вашого проекту.

Математичні моделі:

  • Математичні моделі можуть включати алгоритми машинного навчання для покращення точності розпізнавання облич та забезпечення безпеки системи.

Ці технології, інструменти та бібліотеки можуть бути ефективно використані для реалізації проекту та забезпечення високої безпеки та зручності користувачів.

Відповідальний за виконання: Герега Ростислав Олегович КІ-307