
- •Оглавление
- •От редактора перевода
- •Введение
- •Использовать
- •Аргументировано обсуждать
- •IV. Применять знания
- •Модуль 1. Компьютерные системы
- •Обзор компьютерных систем
- •1.1.1. Компоненты компьютерных систем
- •Эволюция компьютерных систем
- •1.2.1. Краткая историческая справка
- •Закон Мура
- •1.2.2. Применение компьютерных систем
- •Представление данных в компьютерных системах
- •1.3.1. Биты и байты
- •1.3.2. Системы счисления
- •Модуль 2. Системы аппаратного обеспечения
- •2.1 Процессор и память
- •2.1.1 Процессор. Основы.
- •2.1.2 Типы памяти
- •2.1.3 Лабораторная работа: Эталонное тестирование (необязательная)
- •2.2 Внешние устройства
- •2.2.1 Присоединяемые внешние устройства
- •2.2.2 Шины
- •2.2.3 Входные/выходные устройства
- •2.3 Запоминающие устройства
- •2.3.1 Интерфейсы дисковых контроллеров
- •2.3.2 Накопитель (запоминающее устройство большой ёмкости)
- •2.4 Соединение компонентов аппаратного обеспечения
- •2.4.1 Как компоненты компьютера работают вместе
- •2.4.2 Лабораторная работа: Изучение компьютерных систем
- •2.4.3 Лабораторная работа: Конфигурация online
- •2.5 Повышение производительности компьютера
- •2.5.1 Закон Мура
- •2.5.2 “Узкие” места (Bottlenecks)
- •2.5.3 Производительность и время ожидания
- •Модуль 1 и Модуль 2 Обзорные материалы
- •Закон Мура
- •Модуль 3. Программное обеспечение операционных систем
- •Структура
- •3.1.1 Уровни программного обеспечения
- •3.1.2 Bios: Жизнь снизу
- •3.1.3 Управление процессами
- •3.1.4 Лабораторная работа: диспетчер задач (Task Manager)
- •3.2 Управление устройствами и конфигурация
- •3.2.1 Управление прерываниями
- •3.2.2 Характеристики аппаратного обеспечения
- •3.2.3 Конфигурация
- •3.2.4 Лабораторная работа: Управление устройствами
- •3.3. Распределение ресурсов
- •3.3.1 Виртуальная память
- •3.3.2 Совместное использование файлов и принтеров
- •3.4. Файловые системы
- •3.4.1 Организация файлов
- •3.4.2 Таблица размещения файлов (File Allocation Table) и файловая система nt
- •Модуль 4. Прикладное программное обеспечение
- •4.1 Основы программного обеспечения
- •4.2 Использование систем программного обеспечения
- •4.2.1 Лабораторная работа: Команды dos
- •4.2.2 Лабораторная работа: Макросы
- •4.2.3 Лабораторная работа: Встроенные объект-приложения
- •4.3 Пакетные файлы сценариев
- •4.3.1 Расширенные функции командной строки
- •4.3.2 Команды пакетного файла
- •4.3.3 Лабораторная работа: Создание пакетного файла
- •4.4 Базы данных
- •4.4.1 Лабораторная работа: Поиск в библиотеке Конгресса
- •4.5 Проектирование программного обеспечения
- •4.5.1 Введение в разработку крупномасштабных программных систем (Large-Scale Software).
- •4.5.2 Модель открытого кода
- •4.5.3 Средства для создания и управления программным обеспечением
- •Модуль 3 и Модуль 4 - Материалы для проверки
- •Базы данных
- •Виртуальная память
- •Модуль 5. Сетевые системы
- •5.1 Основы Интернета
- •5.1.1 Типы mime
- •5.1.2 Языки Интернет
- •5.2 Локальные и глобальные сети
- •5.3 Стратегии коммуникации
- •5.3.1 Структура клиент-сервер (Client-Server Framework)
- •5.3.2 Равноправное соединение
- •5.4 Технологии передачи данных
- •5.5 Архитектура Интернет
- •5.5.1 Роутеры и tcp/ip
- •5.5.2 Сервис доменных имен (Domain Name Service)
- •5.5.3 Способность к подключению
- •5.5.4 Провайдеры Интернет-сервиса (Internet Service Providers)
- •Модуль 6. Безопасность компьютера
- •6.1 Угрозы безопасности
- •6.1.1 Злоумышленники: кто, зачем и как?
- •6.1.2 Кража личности и нарушение конфиденциальности (Identity Theft and Privacy Violation)
- •6.1.3 Вредоносные программные средства
- •6.1.4 Отказ от обслуживания
- •6.2 Технологии безопасности
- •6.2.1 Шифрование
- •6.2.2 Применение шифрования
- •6.2.3 Идентификация
- •6.3 Предотвращение, определение и восстановление
- •6.3.1 Система сетевой защиты (Firewall)
- •6.3.2 Средства определения вторжения
- •6.3.3 Восстановление данных
- •6.3.4 Обзор типов безопасности
- •Модуль 5 и Модуль 6 Обзорный материал
- •Шифрование
- •Приложение а. Выполнение файла Visual Basic
- •Приложение в. Загрузка приложения WinZip
- •Рекомендации по чтению ssd2
6.2 Технологии безопасности
Есть много методов усиления безопасности компьютерных систем или сети компьютерных систем. В этом разделе вы изучите различные способы защиты компьютерных систем посредством шифрования и аутентификации.
Последовательность чтения:
|
6.2.1 Шифрование
-
Подстановочный шифр
-
Передача ключа
-
Схема шифрования секретным ключом
-
Схема шифрования с открытым ключом
-
Схемы гибридного шифрования
Поскольку неавторизованные лица могут "слушать" ваши пакеты данных, то информация, передаваемая по компьютерной сети не всегда безопасна. Есть много точек в компьютерной сети, где передаваемая информация может быть перехвачена. Для решения этой проблемы, конфиденциальная информация должна шифроваться до передачи, а затем расшифровываться получателем. Шифрование – процесс преобразования информации в непонятный для шпионов вид. Дешифрование – процесс преобразования закодированной информации в понятную для предназначаемого получателя форму. Кодируемое сообщение называется исходным текстом или открытым (нешифрованным) текстом (plaintext), а закодированная версия называется криптограммой (зашифрованный текст – ciphertext). (Шифр – секретный код.) Для шифрования сообщения, чтобы получатель мог затем расшифровать его, должен быть ключ или пароль, который определяет, как сделано кодирование.
Связь посредством секретного кода имеет длинную историю, и известна со времен античной Греции. Целая область математики и компьютерной науки развилась вокруг криптографии, вызванная необходимостью безопасности. Криптографические алгоритмы – математические функции, использующие шифрование и дешифрование. Эти математические вычисления могут быть очень сложными, так как они должны исключить любые обнаруживаемые шаблоны в зашифрованном тексте, которые сделали бы код простым для взлома. Один популярный алгоритм кодирования для использования в электронной торговле – DES, который расшифровывается как Стандарт Кодирования Данных (Data Encryption Standard). Он был создан правительством Соединенных Штатов, в том числе, для обеспечения безопасности коммуникаций между правительственными и финансовыми учреждениями. Другим популярным алгоритмом шифрования для компьютеров является специально созданный для Интернет-приложений RC4. Он был создан частной компанией RSA Security, Inc.
Полезный источник информации об основах криптографии – Cryptography FAQ.
В заключение этого раздела мы рассмотрим некоторые простые схемы шифрования, и посмотрим, почему они недостаточно хороши для сегодняшних требований безопасности. Затем мы рассмотрим некоторые схемы шифрования, используемые сегодня.
Подстановочный шифр
Основной вид шифрования на основе секретных ключей – подстановочный шифр (substitution cipher). Подстановочный шифр изменяет обычный текст на зашифрованный текст, заменяя каждый элемент обычного текста закодированным. Элементы могут быть буквами, словами или фразами. Вероятно, самый простой из всех шифров замены – character-shift (перемещения символов), который меняет буквы, основываясь на их положении в алфавите. Например, если мы заменяем каждую букву обычного текста буквой, которая стоит после нее в алфавите, то А становится B, E становится F, и так далее. И, для законченности, скажем, что Z становится А. "Ключ" в подстановочном шифре – число позиций для перемещения каждой буквы и направление, в котором ее перемещать. Если вы знаете ключ, вы можете расшифровать сообщение, сместив символы зашифрованного текста в противоположном направлении. Это восстанавливает исходный текст.
Сообщение |
Техника шифрования |
Зашифрованное сообщение |
HELLO WORLD |
сдвиг вправо на один символ |
IFMMP XPSME |
IBM |
сдвиг влево на один символ |
HAL |
Таблица 1. Результаты шифрования заменой
Шифр перемещения символов из-за своей простоты предусматривает немного возможных путей кодирования сообщения. Сколькими способами? Обратите внимание, что перемещение на один символ влево – это тоже самое, что переместить вправо на 25 символов (английский алфавит). Поэтому, нам нужно рассматривать только перемещения в одном направлении. И, перемещение на 26 символов вообще не является кодированием, так как А будет заменено на А и так далее. Следовательно, в этом случае есть только 25 неодинаковых перемещений или 25 возможных ключей. Поэтому эта схема кодирования имеет очень маленькое пространство ключей (key space). Следующая диаграмма показывает все 25 перемещений символов.
Оригинальная буква |
Перемещение символов вправо |
||||||||||||||||||||||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
V |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
W |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
X |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
Y |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Z |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Таблица 2 Простое перемещение символов
Несмотря на то, что это напоминает довольно сложную таблицу, компьютер может мгновенно вычислить все 25 декодирований сообщения, а затем выбирает декодирование, которое воспроизводит распознаваемые английские слова. Попытка сломать код, перебором всех возможных ключей, называется «атакой методом грубой силы» (brute force attack) и чрезвычайно эффективна на кодах с маленьким пространством ключей.
Поскольку простые коды могут быть быстро сломаны «грубой силой», то необходим важный компонент к безопасному коду – большое пространство ключей (key space). Давайте посмотрим, как мы можем увеличить пространство ключей для подстановочного шифра. Предположим, что вместо смещения каждого символа исходного текста на определенную величину, мы используем пароль, или даже лучше, фразу-пароль в качестве нашего ключа шифрования. Буквы фразы-пароля могут использоваться один раз, чтобы сказать нам, на сколько символов переместить соответствующую букву исходного текста. Например, если ключевая фраза – CAT, мы отмечаем, что буквы C-А-T имеют позиции алфавита 3-1-20. Поэтому мы переместим первую букву исходного текста на три символа, вторую букву на один символ, и третью букву на двадцать символов. Если мы кодируем длинное сообщение, мы можем повторять фразу-пароль для того, чтобы сделать его длину сопоставимой с исходным текстом.
Исходный текст |
HELLO WORLD |
Ключ |
CAT |
Скопированный ключ |
CATCA TCATC |
Ключ, конвертированный в цифры Исходный текст |
3 1 20 3 1 20 3 1 20 3 H E L L O W O R L D |
Шифрованный текст |
K F F O P Q R S F G |
Таблица 3 Ключ шифрования фразой-паролем
Использование фразы-пароля для шифра замены значительно расширяет пространство ключей. С фразой-паролем длиной в n символов, пространство ключей будет размером 26n, растущим очень быстро вместе с n. Восьмибуквенная фраза-пароль обеспечивает более 208 миллиона возможных ключей.
Передача ключа
Предположим, вы хотите отправить сообщения другу, который собирается путешествовать в некотором недружественном окружении и вы хотите, чтобы ваша связь была защищена от подслушивания. Вы можете выбрать фразу-пароль и дать ее вашему другу перед тем, как он отправится в путешествие. Но, что случится, если фраза-пароль станет известной после того, как ваш друг уехал? Ваша связь больше не будет безопасна, и у вас не будет возможности установить новую фразу без угрозы перехвата. Другая проблема заключается в том, если вы пользуетесь одной и той же фразой-паролем слишком долго, то злоумышленник может взломать ваш код статистическим анализом зашифрованных сообщений.
Безопаснее выбирать новый ключ для каждого сообщения. Но, вам будет нужен способ безопасной передачи этого ключа вашему другу. Одно решение этой проблемы уже используется столетиями, – выбрать строку в книге для использования в качестве фразы-пароля, предполагая, что вы и ваш друг имеете копии книги. Вместо передачи фактического ключа, вы только указываете номер строки, чтобы найти фразу-пароль. Например, H.II.ii.24 может ссылаться на Hamlet Act II, Scene ii, Line 24. Даже если шпион осознал, что это является ссылкой на пьесу Шекспира, шпиону нужно еще знать издание, которое использовалось для получения точного ключа. Классическое издание будет использовать старое правописание, а современная версия будет использовать обычное правописание, в сокращенной современной версии будут опущены некоторые абзацы. В нижеследующем примере обычный текст кодируется, используя строку из Гамлета, взятого из издания, называемого First Folio, которое использует старое правописание.
Исходный текст |
NEW RADAR ANTENNA SPOTTED ON NORTHERN BORDER |
Определение ключа |
H.II.ii.24 |
Ключ |
YOUR VISITATION SHALL RECEIUE SUCH THANKES |
Ключ, конвертированный в цифры
Исходный текст |
25 15 21 18 22 9 19 9 20 1 20 9 15 14 20 8 1 12 12 18 5 3 5 9 21 5 19 21 3 8 20 8 1 14 11 5 19 25 N E W R A D A R A N T E N N A S P O T T E D O N N O R T H E R N B O R D E R |
Шифрованный текст |
M T R J W M T A U O N N C B U A Q A F L J G T W I T K O K M L V C C C I X Q |
Таблица 4. Передача ключа фразы-пароля и шифрование
Схема шифрования секретным ключом (Private Key Encryption Scheme)
В схеме шифрования секретным (личным) ключом, ключ, используемый для шифрования сообщения, может быть также использован для дешифрования. Эта схема также известна как симметричное шифрование. В ней отправитель и получатель должны хранить ключи у себя, отсюда термин – схема "секретного" («личного») ключа. Если кто-нибудь еще раскроет секретный ключ, сообщение уже не будет секретным. Рисунок 1 внизу показывает, как работает шифрование секретным ключом.
Рисунок 1. Шифрование секретным ключом
Схемы шифрования секретным ключом используются в современных алгоритмах, таких как DES и RC4.
Схема шифрования открытым ключом
Шифрование с открытым ключом использует один ключ для шифрования сообщения и другой для дешифровки его. Эта схема также часто называется схемой ассиметричного шифрования. В этой системе шифрования нужно хранить втайне только ключ расшифровки, а ключ шифрования может быть свободно распространяемым. Например, если бы вы отправляли секретное сообщение кому-нибудь, вы могли бы закодировать сообщение открытым ключом получателя. Получатель затем использует свой секретный ключ, чтобы расшифровать данные. Так как предполагается, что только получатель имеет свой секретный ключ, сообщение не может расшифровать кто-либо еще. Рисунок 2 иллюстрирует, как работает система кодирования с открытым ключом.
Рисунок 2 Шифрование открытым ключом
В схеме шифрования открытым ключом, каждый открытым ключ имеет соответствующий секретный ключ. Злоумышленник не может дешифровать сообщение, даже если он знает открытый ключ, используемый для шифрования. Только человек, имеющий секретный ключ, может дешифровать сообщение.
Шифрование открытым ключом основано на разделе математики, называемом теорией чисел, который доказывает, что определенные виды задач, такие как разложение на множители больших чисел, оказываются трудноразрешимыми. Другими словами, если число состоит из множества цифр, то может потребоваться слишком длительное время, чтобы найти наименьшее число (кроме 1), которое делит его нацело. Поскольку эти задачи алгоритмически трудны, то код, основанный на этих видах задач, должен выдерживать «атаки грубой силой» (brute force attack). Вычисления, требующиеся для взлома такого шифра, заняли бы слишком много времени, – возможно, триллионы лет, даже на очень быстром компьютере.
Один общий путь для коммуникации людей посредством шифрования открытым ключом – пакет программ под названием PGP, который означает Pretty Good Privacy (весьма хорошая приватность). PGP был создан американским программистом Филом Зиммерманом, – он хотел застраховать не только правительство, но и частных граждан, чтобы они могли взаимодействовать без страха быть прослушанным. Вы можете узнать об этом на International PGP Home Page.
Чтобы организовать безопасную почтовую коммуникацию посредством шифрования с открытым ключом, первое, что нужно сделать после инсталляции программного обеспечения на компьютере, – это запросить программу сгенерировать пару ключей для вас. Программа будет генерировать несколько больших случайных чисел, и использовать их для вычисления секретного и открытого ключа. Ваш секретный ключ должен быть сохранен в безопасном месте, куда только вы имеете доступ. Ваш открытый ключ можно давать кому угодно. Некоторые люди публикуют свой открытый ключ на личной веб-странице. Другие регистрируют свой открытый ключ в оперативных каталогах, предназначенных для этой цели. И, наконец, некоторые люди конфигурируют свою электронную почту так, чтобы присоединять их общий ключ к каждому отсылаемому сообщению, тем самым, давая возможность читателю закодировать ответ на него.
Теперь предположим, что ваш друг хочет послать вам секретное сообщение. Он шифрует сообщение, используя ваш открытый ключ, и шлет шифрованное сообщение по электронной почте. Злоумышленник может перехватить письмо, но он не сможет его прочитать. При получении сообщения вы используете секретный код для дешифровки. Если вы захотите послать ответ, вы можете закодировать его общим ключом вашего друга. Ваш друг декодирует его, используя свой секретный код. Некоторые программы электронной почты теперь содержат встроенную поддержку для PGP, поэтому шифрование и дешифрование присутствуют автоматически.
Шифрование с открытым ключом может гарантировать то, что человек, получающий сообщение, – именно тот, которому и предназначалось сообщение; оно может также использоваться, чтобы удостоверить, что отправитель сообщения – истинный автор сообщения. Используя пары секретных и общих ключей, может генерироваться цифровая подпись, которая удостоверяет истинность отправителя сообщения. Описанное будет более подробно рассмотрено в разделе 6.2.3 Идентификация .
Схемы гибридного шифрования
Хотя кодирование открытым ключом очень безопасно, оно имеет и недостатки. Этот метод шифрования и дешифровки сообщений требует много вычислений, поэтому он более медленный, чем другие виды шифрования. Кроме того, зашифрованное сообщение может быть немного длиннее, чем оригинальный текст, возможно даже вдвое длиннее, что, естественно, требует больше времени для передачи по сети. Эти соображения привели к развитию гибридных схем, в которых шифрование открытым ключом используется для отправки свежо-созданного ключа, называемого сеансовый ключ (session key), а затем сообщение шифруется, используя схему симметричного шифрования подобно RC4 или DES, на базе сеансового ключа. Поскольку сеансовые ключи генерируются случайным образом и выбрасываются после одного использования, то даже если злоумышленник сумел расшифровать одно сообщение методом «грубой силы», то он не сможет расшифровать другие сообщения той же партии. Таким образом, гибридная схема достаточно безопасна, и это дает ей преимущество перед более простыми схемами симметричного шифрования.
Большинство схем шифрования открытым ключом обычно являются гибридами такого вида. Например, SSL (Secure Socket Layer – протокол безопасных соединений), – гибридная схема. Подробнее о SSL рассказывается в разделе 6.2.3 Идентификация .