Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
62
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

Вопросы безопасности

Проблема обеспечения безопасности возникла с самого начала. В первое время речь шла преимущественно о физической безопасности: о защите оборудования от физического повреждения в результате, например, пожара или затопления. Однако всего через несколько лет появились сообщения об обиженных работниках, которые портили или уничтожали важнейшие программы , причиняя тем самым большие разрушения. Часто припоминают историю одного программиста, может быть и недостоверную, но весьма правдоподобную. Он был автором программы по распечатке платежной ведомости и заметил за своими работодателями привычку увольнять работников почти без предварительного уведомления. Тогда он вставил в программу раздел кода, в котором осуществлялась проверка наличия его собственной фамилии в платежной ведомости, и если это было не так, то вся программа уничтожалась. Некоторое время спустя он был тоже уволен, и написанная им программа стерла сама себя. Рассказывают, что работодателям пришлось принять его обратно с более высоким окладом с тем, чтобы он всё восстановил. Правда это или нет, неизвестно, но эта история обращает наше внимание на весьма серьезную проблему, впоследствии названную "троянским конем", а также на необходимость создания системы проверок того, что программы не подверглись "модифицикации", что, в свою очередь, привело к созданию "антивирусного компьютерного обеспечения". Проблемы эти актуальны и сегодня, и о компьютерных вирусах мы слышим регулярно. И хотя большая их часть - не более чем досадная помеха, некоторые из них могут потенциально нанести большой ушерб.

Защита программ и данных

Целостность программ и данных можно обеспечивать как с помощью шифрования, так и без него. Программы состоят из блоков кода. Данные обычно также хранят и передают блоками или пакетами. Если каждый блок преобразовать в набор чисел, к которым затем применяется некоторая математическая функция, то полученное в результате значение можно как зашифровать, так и оставить без изменения. В любом случае это окончательное значение функции можно записать в конце блока в качестве контрольной суммы. Если кто-нибудь захочет изменить что-либо в этом блоке, то он должен не только уметь вычислить для нового блока значение математической функции, но и осуществить зашифрование там, где это потребуется. Если он не умеет делать это, то контрольная сумма не совпадет, и станет очевидно, что блок подвергся изменению. В 50-х годах для программ и данных, хранившихся на магнитной ленте, применялась одна из первых, и самых простых вариаций этого подхода - использование проверок на четность. В этом случае никакого шифрования не производилось. Для каждого шестиразрядного (впоследствии восьмиразрядного) символа в данном блоке вычислялась контрольная сумма, называемая поперечной проверкой на четность, а другая контрольная сумма, называемая продольной проверкой на четность и основанная на подсчете числа единиц в каждом из шести (или восьми) отдельных битовых потоков, вычислялась в конце блока. Эти контрольные суммы обычно строились так, что каждый поток из нулей и единиц содержал нечетное число единиц. Этого было достаточно для поиска и исправления одиночной ошибки в блоке. Если блок содержал две или более ошибок, то исправить их было нельзя, а иногда нельзя было и обнаружить. Запоминающие устройства выполняли эти проверки автоматически и заново считывали каждый блок, не прошедший проверку на четность. Пыль на ленте могла вызвать ошибки при считывании, и частенько можно было видеть, как ленты перематываются туда-сюда, прежде чем двинуться дальше. Поскольку проверочные биты вычислялись самим компьютером, то в случае действительного обнаружения единичной ошибки не было никаких трудностей при восстановлении данных. Проверки на четность были разработаны не для защиты от злоумышленников, которым было вполне по силам изменить и данные, и контрольные суммы, а предназначались только для защиты данных от пыли, в том числе от сигаретного пепла, и от машинных сбоев. Выяснилось, что курение в машинном зале, широко распространенное в первые годы, часто является причиной ошибок при записи, и оно было впоследствии запрещено. Время от времени случалось, что данные на магнитной ленте в порядке, а неисправны были проверочные схемы в самих лентопротяжных механизмах. Операторы ЭВМ быстро выяснили это, а в США также и то, что если в определенное место лентопротяжного механизма вставить монету достоинством в четверть доллара, то проверочная схема отключается.

Как только стало возможно установить связь между компьютерами, чтобы они могли обмениваться "сообщениями" (например, программами или данными), возник вопрос, как добиться того, чтобы эти сообщения не "искажались" при передаче ни случайно, ни преднамеренно. И если проверка на четность могла обеспечить защиту от случайных искажений, особенно при использовании более совершенных кодов, исправляющих ошибки (таких, которые описаны в [1.1].[1.2] и [1.3]), то злоумышленник всегда мог вычислить необходимую контрольную сумму для любого измененного им блока и тем самым избежать обнаружения. Так пришли к осознанию необходимости шифрования с использованием системы, которую злоумышленник не сможет воспроизвести.