Компьютерные сети. 6-е изд.
Шрифт:
Нам осталось рассмотреть еще одну особенность упомянутых показателей, которая показывает важность ложноположительных результатов. При этом мы используем слегка модифицированную версию примера, приведенного Стефаном Аксельсоном (Stefan Axelsson) в его известной статье о том, почему обнаружение вторжений является сложным процессом (Axelsson, 1999). Допустим, реальное количество заболевших определенной болезнью составляет 1 из 100 000 человек. Любой человек, у которого обнаруживается эта болезнь, умирает в течение месяца. К счастью, имеется тест, позволяющий эффективно выявлять наличие болезни. У этого теста доля верных результатов составляет 99 %: если пациент болен (S), то в 99 % случаев тест выдаст положительный результат (что в медицине является не хорошим, а плохим признаком!), а если пациент здоров (H), то в 99 % случаев тест выдаст отрицательный результат (Neg). Решив пройти этот тест, вы получаете положительный результат (Pos). Вопрос на миллион долларов: насколько это плохой признак? Или скажем иначе: стоит ли вам попрощаться с друзьями и семьей, распродать имущество и пуститься во все тяжкие в оставшиеся вам тридцать с небольшим дней или все же не стоит этого делать?
Чтобы ответить на этот вопрос, обратимся к математике. Мы должны определить вероятность наличия у вас заболевания при условии, что тест выдал положительный результат: P(S | Pos). Нам известно следующее:
Чтобы вычислить P(S | Pos), воспользуемся известной формулой Байеса:
В данном случае тест может выдавать только два варианта ответа — вы либо заболели, либо нет. То есть
где P(H) = 1 – P(S);
P(Pos | H) = 1 – P(Neg | H), следовательно:
Таким образом
Итак, вероятность наличия у вас этого заболевания составляет менее 0,1 %, и вам пока не стоит паниковать (если, конечно, вы еще не успели распродать все свое имущество).
Как мы видим, окончательное значение вероятности здесь в значительной мере зависит от доли ложноположительных результатов P(Pos | H) == 1 – P(Neg | H) = 0,01. Это объясняется тем, что количество рассматриваемых происшествий является настолько малым (0,00001), что мы можем пренебречь влиянием всех остальных членов уравнения. Данную проблему называют ошибкой базовой оценки (Base Rate Fallacy). Если мы заменим здесь слова «болезнь» и «положительный результат» словами «атака» и «оповещение об атаке», то увидим, что ошибка базовой оценки играет крайне важную роль при использовании любой IDS или IPS. Поэтому нужно стремиться к тому, чтобы количество ложных срабатываний было как можно меньше.
Кроме базовых принципов безопасности Зальцера и Шредера, многие исследователи предлагали использовать дополнительные, часто очень практичные принципы. В частности, здесь уместно вспомнить прагматичный принцип эшелонированной защиты (principle of defense in depth). Часто для защиты системы целесообразно использовать несколько взаимно дополняющих методов. Например, чтобы остановить атаку, можно применять брандмауэр в сочетании с системой обнаружения вторжений и антивирусным сканером. Хотя эти средства не дают стопроцентной защиты по отдельности, их гораздо труднее обойти, если они используются одновременно.
8.4. Криптография
Слово криптография (cryptography) происходит от греческого «тайнопись». У криптографии долгая и яркая история, насчитывающая несколько тысяч лет. В данном разделе мы всего лишь кратко упомянем некоторые отдельные моменты в качестве введения к последующей информации. Желающим ознакомиться с полной историей криптографии рекомендуется книга Кана (Kahn, 1995). Для получения всестороннего представления о текущем положении дел см. работу Кауфмана и др. (Kaufman et al., 2002). Если вы хотите подробнее ознакомиться с математическими основами криптографии, см. книгу Крафта и Вашингтона (Kraft and Washington, 2018). Если вас, наоборот, не слишком интересуют математические основы, см. работу Эспозито (Esposito, 2018).
С профессиональной точки зрения понятия «шифр» и «код» отличаются друг от друга. Шифр (cipher) представляет собой посимвольное или побитовое преобразование, которое не зависит от лингвистической структуры сообщения. Код (code), напротив, заменяет целое слово другим словом или символом. Коды в настоящее время не используются, хотя имеют богатую историю.
Наиболее успешным в истории считается код, использованный корпусом морской пехоты США в Тихом океане во время Второй мировой войны. Для ведения секретных переговоров применялись слова языка индейцев навахо, носители которого служили в американских войсках. Например, слово чаи-да-гахи-найл-цайди (что буквально означает «убийца черепах») означало противотанковое оружие. Язык навахо тоновый (для различения смысла используется повышение или понижение тона), весьма сложный, не имеет письменной формы. Но самое большое его достоинство заключалось в том, что ни один японец не имел о нем ни малейшего представления. В сентябре 1945 года в газете San Diego Union появилась статья, в которой были раскрыты сведения о том, насколько эффективным оказался опыт использования языка индейцев навахо во время военного противостояния с японцами. Японцы так и не смогли взломать этот код, и многие носители языка индейцев навахо были удостоены высоких воинских наград за отличную службу и смелость. Тот факт, что США смогли расшифровать японский код, а японцы так и не узнали язык навахо, сыграл важную роль в американской победе в Тихом океане.
8.4.1. Основы криптографии
Исторически искусство криптографии применяли и развивали представители четырех групп: военные, дипломаты, авторы дневников и влюбленные. Наиболее важный вклад в эту сферу на протяжении веков вносили военные. В военных организациях секретные сообщения традиционно отдавались для зашифровки и передачи низкоквалифицированным шифровальщикам с маленьким жалованьем. Объем сообщений не позволял выполнить эту работу с привлечением небольшого числа элитных специалистов.
До появления компьютеров одним из основных сдерживающих факторов в криптографии была способность шифровальщика выполнять необходимые преобразования, часто на поле боя, с помощью несложного оборудования. Кроме того, достаточно тяжело было быстро переключаться с одного криптографического метода на другой, так как для этого требовалось переобучение множества людей. Тем не менее риск захвата шифровальщика в плен поставил на первый план задачу мгновенного перехода, в случае необходимости, к другому криптографическому методу. Эти противоречивые требования отражены в модели процесса шифрования-дешифрования (илл. 8.9).
Илл. 8.9. Модель шифрования (для шифра с симметричным ключом)
Сообщения, подлежащие зашифровке, открытый текст (plaintext), преобразуются с помощью функции, параметром которой является ключ (key). Результат шифрования, зашифрованный текст (ciphertext), обычно передается по радио или через связного. Предполагается, что противник или злоумышленник (intruder) слышит и аккуратно копирует весь зашифрованный текст. Но в отличие от адресата, он не знает ключа дешифрования, и поэтому расшифровка сообщения представляет для него большие трудности, а порой просто невозможна. Иногда он не только прослушивает канал связи (пассивный злоумышленник), но также записывает сообщения и воспроизводит их позже, вставляет свои сообщения или модифицирует оригинал, прежде чем он достигнет получателя (активный злоумышленник). Искусство взлома шифров называется криптоанализом (cryptanalysis). Искусство изобретать шифры (криптография) и искусство взламывать их (криптоанализ) вместе называются криптологией (cryptology).
Для обозначения открытого/зашифрованного текста и ключей лучше всего применять специальную нотацию. Мы будем использовать формулу C = EK (P), обозначающую, что при зашифровке открытого текста P с помощью ключа K получается зашифрованный текст C. Аналогично формула P = DK (C) означает расшифровку зашифрованного текста C для восстановления открытого текста. Из этих формул следует, что
DK (EK (P)) = P.
Эта нотация предполагает, что E и D — просто математические функции (чем они и являются). Единственная хитрость состоит в том, что каждая из них имеет два параметра, один из которых (ключ) мы записали не в виде аргумента, а в виде нижнего индекса, чтобы отличать его от сообщения.
Основное правило криптографии заключается в предположении, что криптоаналитику (взломщику шифра) известен используемый метод шифрования. Другими словами, он точно знает, как работают методы шифрования E и дешифрования D на илл. 8.9. На разработку, тестирование и внедрение нового метода тратятся огромные усилия. Поэтому каждый раз, когда старый метод оказывается скомпрометированным (или считается таковым), хранить алгоритм шифрования в секрете просто непрактично. А предположение, что метод является секретным, когда это уже не так, может принести еще больше вреда.