Что
нужно знать программисту.
Программист
должен не только уметь закодировать криптографический алгоритм,
но и понимать основные свойства криптографических примитивов, с
которыми ему придется работать. Применение криптографии вслепую,
необдуманно, порождает большую вероятность того, что полученная
система окажется уязвимой.
Программист
должен понимать, что при кодировании защиты необходимо
рассчитывать не на обычного пользователя, которому лицензионным
соглашением можно запретить выполнять определенные операции, а
на умного и расчетливого профессионала, имеющего самые серьезные
намерения по обходу или взлому защиты. И лучше всего исходить из
предположения, что злоумышленнику доступны все существующие на
настоящий момент знания и технологии, включая даже те, которые
не доступны разработчику.
Кроме того,
никогда нельзя забывать, что взлом криптографической части
защиты может остаться незамеченным. Злоумышленник, однажды
научившись расшифровывать перехваченные сообщения, может
заниматься этим очень долго, практически не опасаясь быть
пойманным. Обнаружить пассивное воздействие, например чтение
пакетов, передающихся по сети, практически невозможно. И,
разумеется, при проектировании защиты нужно иметь в виду, что
стойкость всей системы определяется стойкостью самого слабого ее
звена.
(продолжение)
|