19 смертных грехов, угрожающих безопасности программ
Шрифт:
Грех 17.
Неаутентифицированный обмен ключами
Рекомендуется
□ Уясните, что обмен ключами сам по себе часто не является безопасной процедурой. Необходимо также аутентифицировать остальных участников.
□
□ Убедитесь, что вы разобрались во всех деталях процедуры строгой аутентификации каждой стороны.
Стоит подумать
□ О том, чтобы обратиться к профессиональному криптографу, если вы настаиваете на применении нестандартных решений.
Грех 18.
Случайные числа криптографического качества
Рекомендуется
□ По возможности пользуйтесь криптографическим генератором псевдослучайных чисел (CRNG).
□ Убедитесь, что затравка любого криптографического генератора содержит по меньшей мере 64, а лучше 128 битов энропии.
Не рекомендуется
□ Не пользуйтесь некриптографическими генераторами псевдослучайных чисел (некриптографические PRNG).
Стоит подумать
□ О том, чтобы в ситуациях, требующих повышенной безопасности, применять аппаратные генераторы псевдослучайных чисел.
Грех 19.
Неудобный интерфейс
Рекомендуется
□ Оцените, чего хочет пользователь в плане
□ По возможности делайте конфигурацию по умолчанию безопасной.
□ Выводите простые и понятные сообщения, но предусматривайте прогрессивное раскрытие информации для более опытных пользователей и администраторов.
□ Сообщения об угрозах безопасности должны предлагать какие–то действия.
Не рекомендуется
□ Избегайте заполнять огромные диалоговые окна техническими подробностями. Ни один пользователь не станет это читать.
□ Не показывайте пользователю дорогу к самоубийству, упрятывайте подальше параметры, которые могут оказаться опасными!
Стоит подумать
□ Об избирательном ослаблении политики безопасности, но ясно и недвусмысленно объясняйте пользователю, к каким последствиям ведут его действия.
Примечания
1
Перечень технологий доступа к базам данных, доступных из программ на Perl, см. на странице http://search.cpan.org/modlist/Database_Interfaces.
2
Смысл атаки в следущем: «зная свертку и длину некоторого неизвестного сообщения М, можно найти свертку другого сообщения N=M | Z (символ | обозначает конкатенацию), где Z – сообщение, выбранное противником, которое должно начинаться со специальной комбинации битов, но заканчиваться может любыми битами». {Прим. перев.)