Главное в обучении честность и прозрачность. Ни у кого не должно оставаться сомнений в объективности обучения и справедливости оценивания. В этом плане нам помогает система защиты целостности и статистики, которая представляет собой многоуровневый криптографический механизм, где каждая запись в базе данных защищена уникальной контрольной суммой, вычисляемой через HMAC-SHA256 на основе секретного динамического ключа. Этот ключ формируется из комбинации уникального набора данных, включая секретный перец, вшитый в код программы в зашифрованном виде. При инициализации для каждой книги генерируется стабильный идентификатор (db_id) через SHA-256 хеширование на основе кода учебника и стабильной соли, который разбивается на три части и хранится в метаданных базы — это гарантирует уникальность каждой учебной сессии и делает невозможным перенос статистики между разными группами студентов. Каждая строка в таблице usage_stats содержит поле row_hash — криптографическую подпись всех данных строки, включая время обучения, количество просмотров и ошибок в тестах.
При каждом обновлении статистики система сначала проверяет целостность существующей записи: если вычисленный хеш не совпадает с сохраненным, операция отклоняется как попытка подделки. Затем вычисляется новый хеш для обновленных данных, и запись сохраняется атомарно через конструкцию INSERT OR REPLACE с ON CONFLICT, что предотвращает race conditions и частичные обновления при сбоях системы. Особое внимание уделено защите временных данных — система отслеживает не просто время, а реальную активность пользователя: при бездействии более 5 секунд таймер приостанавливается (иконка меняется с 👁️ на 🥱), а все временные метки фиксируются в защищенных записях с криптографическими подписями, что делает невозможной «накрутку» времени через манипуляции с системными часами или оставленное в фоновом режиме приложение.
Дополнительный уровень защиты обеспечивает криптографическая подпись всего учебного материала через RSA-PSS-SHA256 — перед загрузкой книги программа проверяет цифровую подпись эталонного файла с хешами всех учебных материалов, что гарантирует работу именно с тем контентом, который подготовил автор. При сбросе прогресса для новой группы система генерирует совершенно новый уникальный идентификатор базы, делая старую статистику криптографически несовместимой с новой. Визуализация подозрительных данных для контроля реализована через цветовую индикацию — строки с несоответствиями в хешах помечаются красным фоном, отображается общее количество скомпрометированных записей, а в ячейках с поддельными данными указывается метка «invalid-cell».
Такая комплексная система гарантирует, что подделка статистики обучения требует одновременного взлома нескольких независимых уровней защиты: компрометации секретного ключа, подмены идентификатора базы данных, изменения цифровых подписей учебных материалов и обхода механизмов отслеживания активности пользователя, что делает манипуляции с учебным процессом не просто рискованными, а технически невыгодными.
