Каждая из используемых ныне криптографических систем была испытана на прочность перед тем как стать общемировым стандартом. В большинстве случаев испытания были косвенными, то есть не подразумевающими строго доказательства устойчивости системы ко взлому. В данной задаче мы предлагаем вам совершить "хакерскую" атаку на примитивную систему электронной цифровой подписи.
В файле fake_crypto.h
вы найдете реализацию примитивной системы электронной цифровой подписи. В файле solution.h
представлен интерфейс функции, которую вам необходимо реализовать, а именно суметь подписать произвольное сообщение, не имея приватного ключа.
В tests.cpp
содержатся тесты, проверяющие вашу реализацию, эти тесты должны завершиться с положительным статусом для того, чтобы задача была вам зачтена. Используйте компилятор g++
не ниже 8й версии, самостоятельно разберитесь с googletest
те, кто не сдела это раньше.
Задание индивидуальное, совещаться между собой, конечно, можно и рекомендуется, но копипастить код не стоит.
В реализовать функцию FakeSign
и убедиться, что все тесты будут пройдены. Запрещается изменять какие-либо файлы, кроме solution.h, это абсолютно безоговорочное условие. После того, как ваши тесты будут пройдены, вы должны оформить решение в Latex, в котором рассказать, как именно рабодает данная криптосистема, и как вам удалось ее сломать, и отправить этот файл на почту для сдачи заданий, а так же отправить файл solution.h
в телеграм @inkln. Торопитесь! Чем позже вы пришлете код корректного решения, тем меньше баллов вы сможете получить за всю задачу
- Максимальный балл MAX будет озвучен на зачете, скорее всего MAX=1
- Без кода, проходящего все тесты, решение не засчитывается.
- Корректные посылки сортируются по времени, после чего их авторам присваиваются множители [1.5, 1.3, 1.2, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.5, 0.5, 0.5, ...]
- Ваш максимальный балл по сумме затеханного решения и пройденных тестов не превышает MAX * ваш_порядковый_множитель_сдачи_тестов
- 0.3 * MAX * ваш_порядковый_множитель_сдачи_тестов баллов гарантируется вам только за сдачу тестов, остальная часть за теорию.