Как я могу/должен протестировать алгоритм AES

Я делаю расширенное эссе по информатике, и я застрял на том, что делать. Меня интересует тема алгоритма AES или любых алгоритмов шифрования. Однако, поскольку информатика является предметом науки, я должен провести эксперимент. Однако я не уверен, как я должен проверить это.

Я думал о шифровании различных типов файлов, например. видео, фотографии и текстовые файлы и т. д., а также тестирование скорости передачи данных или скорости шифрования по сравнению с другими алгоритмами шифрования. Мне было интересно, может ли кто-нибудь из вас сказать мне, как это сделать, или порекомендовать другой эксперимент. Это не может быть слишком сложно, что я не могу сделать, или слишком просто, чтобы не заслуживать хорошей оценки. Спасибо. P.S. Мне 17 (12 лет)


person Trey Aesthetics    schedule 21.12.2016    source источник
comment
Попробуйте задать вопрос по адресу: cs.stackexchange.com, так как это сайт программирования.   -  person kenorb    schedule 21.12.2016
comment
Рассмотрите возможность принятия ответов, которые являются полезными. Принимая ответ, вы указываете будущим читателям, что это правильный ответ. Чтобы принять ответ, щелкните пустую галочку рядом с лучшим ответом, это повысит вашу репутацию и предоставит больше возможностей. См. часто задаваемые вопросы о репутации Подробнее см. на этой странице. Также, пожалуйста, подумайте о том, чтобы вернуться и принять прошлые ответы, см. часто задаваемые вопросы о репутации.   -  person zaph    schedule 15.01.2017


Ответы (1)


Конечно, здесь есть масса возможностей для исследований. Хорошо, что вы интересуетесь этим и изучаете это. Скорее всего, вы захотите контролировать несколько переменных и тестировать их следующим образом:

  • симметричное и асимметричное шифрование (например, AES или RSA)
  • различные симметричные алгоритмы (например, Rijndael (текущий алгоритм AES) по сравнению с Blowfish, DES, TDES и т. д.)
  • различные режимы работы блочного шифра (например, CTR, CBC, GCM и т. д.)
  • разные размеры данных (т. е. масштабируется ли он линейно? Требуется ли ровно в 1000 раз больше времени для шифрования 16 байтов, 16_000 или 16_000_000?)

Вы захотите запустить эти эксперименты на одном и том же оборудовании, под одной и той же нагрузкой, на одном и том же языке много раз, чтобы получить достоверные данные. Особенно с учетом того, что современные процессоры имеют набор инструкций AES-NI и настраиваемые регистры для данных шифрования, не забывайте заполнять свои эксперименты, иначе последующие запуски могут иметь разные профили производительности.

Если у вас нет предыдущего опыта программирования, у Java, Ruby и Python есть очень популярные криптографические библиотеки и широкое сообщество, которое с радостью поддержит вас, если/когда вы столкнетесь с трудностями. Если вы уже знакомы с одним или несколькими конкретными языками, я бы посоветовал использовать один из них, так как будет достаточно сложно изучить инструкции, относящиеся к криптографии; изучение нового языка, вероятно, является ненужным бременем в настоящее время.

Я думаю, что это достаточно расплывчато, поэтому вам все равно придется провести исследование и исследование для своей статьи, но вы должны указать отправную точку. Не стесняйтесь задавать конкретные вопросы, если вам это нужно.

person Andy    schedule 28.12.2016
comment
Большое спасибо, и знаете ли вы, как я могу проверить скорость алгоритма, например, сколько времени требуется для шифрования по сравнению с другими? - person Trey Aesthetics; 29.12.2016
comment
Вам придется написать тестовую обвязку, которая выполняет оба действия и сравнивает время. Вы захотите запустить каждый несколько раз и принять во внимание среднее/медианное/стандартное отклонение. Существует много библиотек на разных языках для выполнения бенчмаркинга, но основная концепция заключается в том, что вы записываете текущее время, выполняете действие, снова записываете время и вычитаете. - person Andy; 30.12.2016