Похожие презентации:
8 группа тема Мастер ключей
1.
ИТОГОВЫЙ ТВОРЧЕСКИЙ ПРОЕКТ«Мастер ключей»
по ДОП «Этичный хакинг: инструменты защиты
на Python и ИИ» (базовый уровень)
Выполнил(и):
1. Пестерева Дарья Станиславовна
2. Рыбалко Дарья Михайловна
3. Пухно Никита Юрьевич
4. Свечникова Нина Борисовна
5. Пашков Кирилл Алексеевич
ПРЕПОДАВАТЕЛЬ: Пустозеров Константин Леонидович
КУРАТОР: Редикарцева Татьяна Борисовна
2.
«КОД БУДУЩЕГО»Описание проекта
Название проекта :
KeyMaster («Мастер ключей») – система управления паролями,
вдохновлённая концепцией этнического хакинга
Основная идея :
В традиционных культурнах существовали хранители
ключей – люди, знавшие коды доступа к общественным ресурсам,
сакральным местам и родовым знаниям. Современный «мастер
ключей» – это этничный хакер, который помогает пользователям
создать, хранить и защищать свои цифровые ключи (пароли) от
несанкционированного доступа.
Проект реализует систему управления паролями с элементами :
•Генерация надёжных паролей
•Хэшированное хранение в SQLite
•Аутенфикация и авторизация
•Защита от SQL-инъекций и XSS
3.
«КОД БУДУЩЕГО»Цель и задачи проекта
Цель :
•Разработать безопасную систему управления паролями на Python с
веб-интерфейсом
Задачи :
•Генерация случайных паролей с заданными параметрами
•Хранение паролей в зашифрованном виде (хэширование)
•CRUD-операции над паролями (создание, чтение, обновление,
удаление)
•Аутентификация пользователей
•Защита от распространённых атак
4.
«КОД БУДУЩЕГО»Используемые технологии
и модули
Компонент
Язык
Технология
Python 3.1+
Назначение
Основная логика
Хэширование
Hashlib (SNA-256 + соль)
Защита паролей перед
сохранением
База данных
SQLite3
Локальное хранилище
Веб-фреймворк
Flask
Пользовательский интерфейс
Шаблонизация
Jinja2
HTML-страницы
Стили
CSS + Bootstrap 5
Интерфейс
Генерация паролей
Random, string, secrets
Криптостойкие пароли
5.
«КОД БУДУЩЕГО»База данных
Структура БД (SQLite)
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
salt TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE passwords (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
service_name TEXT NOT NULL,
username TEXT NOT NULL,
password_hash TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TUMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREING KEY (user_id) REFERENCES user (id) ON DELETE CASCADE
);
Меры защиты БД :
•Пароли хранятся только в виде хэшей + соль (никогда в открытом виде)
•Используются параметризованные запросы для защиты от SQL-инъекций
•FOREIGN KEY с каскадным удалением для целостности
6.
«КОД БУДУЩЕГО»Обеспечение безопасности
Хэширование паролей
import hashlib, os
def hash_password(password: str) -> tuple:
salt = os.urandom(32).hex()
hash_obj = hashlib.pbkdf2_hmac(‘sha256’, password.encode(), salt.encode(), 100000)
return salt, hash_obj.hex()
•Сессии Flask с секретным ключом
Защита от атак
•При входе проверяется : hash(password + соль) == сохранённый хэш
•Доступ к паролям – только владельца
Атака
Защита
SQL-инъекции
Использование параметризованных запросов (? вместо подставки)
XSS (межсайтовый скриптинг)
Экранирование выводов через Jinja2 (автоматически
Перебор паролей
Задержка при неудачном входе + ограничение попыток
Подбор мастер-пароля
PBKDF2 с 100 000 интераций
Перехват трафика
Рекомендация использования HTTPS
7.
«КОД БУДУЩЕГО»Функциональные блоки (код)
• Генерация паролей
```python
import secrets, string
def generate_password(length=12, use_digits=True,
use_special=True):
chars = string.ascii_letters
if use_digits:
chars += string.digits
if use_special:
chars += "!@#$%^&*"
return ''.join(secrets.choice(chars) for _ in range(length))
```
• Сохранение пароля в БД
```python
def save_password(user_id, service, username, plain_password):
salt, hash_val = hash_password(plain_password)
cursor.execute("""
INSERT INTO passwords (user_id, service_name, username,
password_hash)
VALUES (?, ?, ?, ?)
""", (user_id, service, username, hash_val))
conn.commit()
```
8.
«КОД БУДУЩЕГО»Функциональные блоки (код)
• Просмотр, обновление, удаление
```python
def get_passwords(user_id):
return cursor.execute("SELECT id, service_name, username FROM passwords WHERE
user_id=?", (user_id,)).fetchall()
def update_password(password_id, new_password):
salt, hash_val = hash_password(new_password)
cursor.execute("UPDATE passwords SET password_hash=?,
updated_at=CURRENT_TIMESTAMP WHERE id=?", (hash_val, password_id))
def delete_password(password_id):
cursor.execute("DELETE FROM passwords WHERE id=?", (password_id,))
```
9.
«КОД БУДУЩЕГО»• Маршруты (routes)
Реализация на Flask
Маршрут
Метод
Описание
/
GET
Главная страница
/register
POST/GET
Регистрация нового мастера ключей
/login
POST/GET
Вход
/dashboard
GET
Панель управления паролями
/generate
POST
Генерация нового пароля
/add
POST
Добавление пароля в хранилище
/delete
POST
Удаление пароля
/logout
GET
Выход
10.
«КОД БУДУЩЕГО»Реализация на Flask
• Пример обработчика входа
```python
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
user = get_user_by_username(username)
if user and verify_password(password,
user['salt'], user['password_hash']):
session['user_id'] = user['id']
return redirect('/dashboard')
return "Ошибка входа", 401
```
11.
«КОД БУДУЩЕГО»Пользовательский интерфейс
• Экраны
1. Страница входа — ввод имени и мастер-пароля
2. Регистрация — создание нового аккаунта
3. Дашборд — список сохранённых паролей (сервис, логин, действия)
4. Генератор — слайдер длины, выбор символов, кнопка «Создать ключ»
5. Добавление/редактирование — форма для нового сервиса
Взаимодействие элементов
· Пользователь → регистрируется → входит → видит свои пароли
· Может нажать «Сгенерировать» → получить сложный пароль → сохранить его для сервиса
· Может удалить устаревший ключ
· Все операции требуют аутентификации (мастер-ключ открывает хранилище)
12.
«КОД БУДУЩЕГО»Тестирование
• Функциональное тестирование
Действие
Регистрация с новым именем
Ожидаемый результат
Пользователь создан
Статус
Вход с верным паролем
Вход с неверным паролем
Переход в дашборд
Сообщение об ошибке
Генерация пароля длины 20
Строка длиной 20 символов
Сохранение пароля
Удаление пароля
Появляется в списке
Исчезает из списка
• Безопасности
· SQL-инъекция: ' OR '1'='1 в поле логина → не
работает (параметризация)
· Попытка доступа к /dashboard без входа →
редирект на /login
· Повторный хэш мастер-пароля проверяется с
солью
13.
«КОД БУДУЩЕГО»Документация пользователя
• Инструкция по использованию
1. Запуск приложения:
```bash
python app.py
```
Перейти в браузере по адресу http://127.0.0.1:5000
2. Регистрация:
Придумайте уникальное имя и мастер-пароль. Запомните мастер-пароль —
восстановить его нельзя (этнический хакинг не вламывает свои замки).
3. Генерация ключа:
На дашборде выберите длину и типы символов. Нажмите «Создать ключ».
4. Сохранение:
Укажите название сервиса (например, «Gmail») и ваше имя пользователя. Вставьте
сгенерированный пароль.
5. Управление:
Кнопки «Обновить» (перегенерировать) или «Удалить».
14.
«КОД БУДУЩЕГО»Жизненный цикл проекта и перспективы
Этапы разработки
Этап
Содержание
1 Планирование и проектирование БД
2Реализация хэширования и генерации
3Создание Flask-маршрутов и шаблонов
4 Интеграция БД с веб-интерфейсом
5Тестирование безопасности
6Документирование + презентация
Области использования
· Личное использование (локальное хранилище паролей)
· Образовательные цели (демонстрация принципов этичного хакинга)
· Корпоративный аудит (генерация политик паролей)
Перспективы развития
· Двухфакторная аутентификация (TOTP)
· Шифрование паролей, а не только хэширование (для возможности восстановления)
· Экспорт/импорт в зашифрованном JSON
· Десктопное приложение на Tkinter/PyQt
15.
«КОД БУДУЩЕГО»Заключение
Проект KeyMaster реализует все требования технического задания:
· Генерация случайных паролей
· Хранение в защищённом хранилище (SQLite + хэширование)
· Управление (просмотр, обновление, удаление)
· Аутентификация и защита от атак
Метафора «мастера ключей» из этнического хакинга удачно вписана в
концепцию: система помогает пользователю стать хранителем своих
цифровых ключей, не полагаясь на сторонние сервисы.
Программа написана на Python с использованием Flask,hashlib, SQLite и
соответствует критериям этичного хакинга — защита, а не взлом.
16.
«КОД БУДУЩЕГО»Спасибо за внимание!