Я изменяю существующий код безопасности. Спецификации довольно ясны, есть пример кода, но я не специалист по криптографии. Фактически, в примере кода есть заявление об отказе от ответственности, в сущности, «не используйте этот код дословно».
Во время аудита кода, который я хочу изменить (который, якобы, завершен), я наткнулся на этот маленький драгоценный камень, который используется при создании задачи:
static uint16 randomSeed;
...
uint16 GetRandomValue(void)
{
return randomSeed++;/* This is not a good example of very random generation :o) */
}
Конечно, первое, что я немедленно сделал, - обошел его по офису, чтобы мы все могли посмеяться.
Программист, создавший этот код, знал, что это не очень хороший алгоритм (как указано в комментарии), но я не думаю, что они поняли последствия для безопасности. Они даже не удосужились назвать его в главном цикле, так что он, по крайней мере, превратился бы в автономный счетчик - все еще не идеальный, но миры за этим.
Однако я знаю, что код, который я создаю, аналогичным образом заставит настоящего гуру безопасности посмеиваться или дрожать.
- Каковы наиболее распространенные проблемы безопасности, специфичные для криптографии, которые мне нужно понять?
- Какие хорошие ресурсы дадут мне подходящие знания о том, что я должен знать помимо обычных ошибок?
-Adam