И безопасность в технологии



Скачать 252.93 Kb.
Pdf просмотр
Дата15.02.2017
Размер252.93 Kb.
Просмотров178
Скачиваний0

КРИПТОГРАФИЯ
И БЕЗОПАСНОСТЬ
В ТЕХНОЛОГИИ
.NET

Prentice Hall PTR, Upper Saddle River, NJ 07458
www.phptr.com
PETER THORSTEINSON
G. GNANA ARUN GANESH
EXPERT PRACTITIONERS. SEASONED INSTRUCTORS
.NET
.NET
SECURITY AND
CRYPTOGRAPHY

Москва
БИНОМ. Лаборатория знаний
2015 3-е издание (электронное)
Перевод с английского
В. Д. Хорева под редакцией
С. М. Молявко
П. Торстейнсон, Г. А. Ганеш
КРИПТОГРАФИЯ
И БЕЗОПАСНОСТЬ
В ТЕХНОЛОГИИ
.NET

УДК 004.7
ББК 32.973.202
Т61
С е р и я о с н о в а н а в 2005 г.
Торстейнсон П.
Т61
Криптография и
безопасность в
технологии
.NET
[Электронный ресурс] / П. Торстейнсон, Г. А. Ганеш ; пер.
с англ. — 3-е изд. (эл.). — Электрон. текстовые дан. (1 файл pdf : 483 с.). — М. : БИНОМ. Лаборатория знаний, 2015. —
(Программисту). — Систем. требования: Adobe Reader XI ;
экран 10".
ISBN 978-5-9963-2952-6
Подробно излагаются вопросы реализации на .NET-платформе симметричной и асимметричной криптографии, цифровых подпи- сей, XML-криптографии, пользовательской безопасности и защиты кодов, ASP .NET-безопасности, безопасности Web-служб. Изложе- ние построено на разборе примеров конкретных атак на системы безопасности, богато снабжено текстами отлаженных программ.
Для программистов, занимающихся разработкой и настройкой систем безопасности на платформе .NET.
УДК 004.7
ББК 32.973.202
Деривативное электронное издание на основе печатного анало-
га: Криптография и безопасность в технологии .NET / П. Торстейн- сон, Г. А. Ганеш ; пер. с англ. — М. : БИНОМ. Лаборатория знаний,
2007. — 480 с. : ил. — (Программисту). — ISBN 978-5-94774-312-8.
Authorized Translation from the English language edition, entitled .NET SECURITY AND
CRYPTOGRAPHY; by PETER THORSTEINSON; and by G. GANESH; published by Pearson
Education, Inc, publishing as Prentice Hall. Copyright c
○ 2004 by Pearson Education, Inc. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. Electronic RUSSIAN
language edition published by BKL PUBLISHERS. Copyright c
○ 2013.
Авторизованный перевод издания на английском языке, озаглавленного .NET SECURITY
AND CRYPTOGRAPHY, авторы PETER THORSTEINSON и G. GANESH, опубли- кованного Pearson Education, Inc, осуществляющим издательскую деятельность под торговой маркой Prentice Hall. Copyright c
○ 2004 by Pearson Education, Inc. Все права защищены. Воспроизведение или распространение какой-либо части/частей данной книги в какой-либо форме, какими-либо способами, электронными или механическими,
включая фотокопирование, запись и любые поисковые системы хранения информации,
без разрешения Pearson Education, Inc запрещены. Электронная русскоязычная версия издана BKL Publishers. Copyright c
○ 2013.
В
соответствии
со
ст. 1299
и
1301
ГК
РФ
при
устранении
ограничений,
установленных техническими средствами защиты авторских прав, правообладатель
вправе требовать от нарушителя возмещения убытков или выплаты компенсации
ISBN 978-5-9963-2952-6
c
○ 2004, Pearson Education, Inc.,
Publishing as Prentice Hall
Proffessional Technical Reference.
Upper Saddle River, New Jersy 07458.
c
○ русское издание???, БИНОМ.
Лаборатория знаний???, 2007 4

Предисловие
5
Глава 1. Криптография и безопасность в .NET
9
Природа этой книги
10
Опасность подстерегает повсюду
11
Природа криптографии и других средств обеспечения безопасности
14
Почему криптография и средства обеспечения безопасности так важны
14
Что возможно и что невозможно сделать с помощью криптографии и средств обеспечения безопасности
16
Безопасность в Windows: возраст зрелости
21
Среда разработки .NET Framework и «виртуальная машина» CRL
22
Как .NET Framework упрощает решение проблем безопасности
23
Надежность и платформа .NET Framework
24
Управляемый код и безопасность типов
24
Программирование с использованием криптографии в .NET
26
Программирование с использованием средств обеспечения безопасности в .NET
26
Безопасность, основанная на механизме ролей
27
CAS, свидетельства, политика и разрешения
27
Итоги главы
28
Глава 2. Основы криптографии
29
Чтобы секреты оставались секретами
30
Основные термины криптографии
30
Секретные ключи против секретных алгоритмов
33
Классические методы сохранения тайны
34
Рабочий фактор атаки методом «грубой силы»
53
Арифметика произвольной точности
54
Стеганография
55
Современные шифры
57
Криптография и .NET Framework
57
Симметричная криптография
58
Асимметричная криптография
59
Криптографические алгоритмы
62
Криптографические протоколы
66
Криптоаналитические атаки
68
Человеческий фактор
69
Оглавление

Риск и выигрыш
69
Другие важные концепции
70
Итоги главы
71
Глава 3. Симметричная криптография
72
Симметричные шифры
72
DES
74
Операционные режимы
75
«Тройной» DES
84
Rijndael
85
RC2 86
Программирование при помощи средств симметричной криптографии .NET
87
Основные криптографические классы
87
Класс SymmetricAlgorithm
88
Классы, производные от SymmetricAlgorithm
89
Примеры программирования с использованием симметричных алгоритмов
93
Криптографические потоки
97
Выбор надежных ключей
98
Проблемы передачи ключей
100
Шифрованные хеши и целостность сообщения
102
Хеш-алгоритмы с ключом и целостность сообщения
105
Итоги главы
106
Глава 4. Асимметричная криптография
107
Проблемы, связанные с использованием симметричных алгоритмов
107
Проблема распределения ключей
108
Проблема доверия
108
Идея асимметричной криптографии
109
Использование асимметричной криптографии
110
Аналогия с кодовым замком
111
Односторонняя функция с «черным ходом»
112
Преимущества асимметричного подхода
114
Сочетание асимметричных и симметричных алгоритмов
115
Существующие асимметричные алгоритмы
116
RSA: самый распространенный асимметричный алгоритм
117
Основания RSA
117
Миниатюрный пример RSA
119
Предостережение: вопросы вероятности
121
Программирование при помощи
.NET Asymmetric Cryptography
123
Пример использования алгоритма RSA
123
Сохранение ключей в формате XML
129
Цифровые сертификаты
132
Итоги главы
132 474
Оглавление

Глава 5. Цифровая подпись
133
Хеш-алгоритмы
133
Характеристики хорошей хеш-функции
134
Хеш-алгоритмы, поддерживаемые в .NET
135
Класс HashAlgorithm
138
Классы MD5 и SHA
138
Класс KeyedHashAlgorithm
140
Идентификаторы объектов
140
Как работает цифровая подпись
141
RSA в качестве алгоритма цифровой подписи
143
Пример программы с использованием подписи RSA
144
Алгоритм цифровой подписи DSA
147
Математическое основание: теория групп
147
Задача о дискретных логарифмах
150
Как работает DSA
152
Иерархия класса AsymmetricAlgorithm
153
Класс DSACryptoServiceProvider
154
Пример программы с использованием DSA
154
Итоги главы
158
Глава 6. Криптография и XML
159
XML Encryption – шифрование XML
159
XML Encryption против SSL/TLS
160
Спецификация шифрования XML
161
Что обеспечивает шифрование XML
161
Синтаксис XML Encryption
162
Как работает шифрование XML
166
Классы, используемые в XML Encryption
167
Передача асимметричных ключей
171
Пример программы XmlEncryption
172
XML Signatures – подпись XML
184
Спецификация XML Signature
184
Что предусматривает спецификация XML Signature
185
Синтаксис XML Signature
185
Классы, используемые в XML Signatures
188
Программа EnvelopingXmlSignature
189
Сочетание XML Signing и XML Encryption
195
Итоги главы
196
Глава 7. Концепция безопасности, основанной на идентификации пользователей в .NET
197
Аутентификация и авторизация
198
Модель безопасности .NET
199
Администрирование безопасности на уровне Windows
200
Определение пользователей и ролей в Windows
201
Определение прав доступа к общей папке
201
Оглавление
475

Средства безопасности в NTFS
201
Администрирование безопасности на уровне .NET
205
Разрешения
206
Интерфейс IPermission
207
Иерархия наследования IPermission
208
Класс PrincipalPermission
209
Безопасность, основанная на идентификации пользователей
211
Объекты Principal и Identity
212
Интерфейс IIdentity
212
Классы, реализующие интерфейс IIdentity
212
Класс GenericIdentity
213
Класс WindowsIdentity
214
Объекты-принципалы
216
Интерфейс IPrincipal
217
Класс GenericPrincipal
218
Класс WindowsPrincipal
220
Два подхода к безопасности, основанной на идентификации пользователей
222
Императивный подход
222
Декларативный подход
229
Мандаты
231
Сетевые мандаты
232
Дисциплина безопасности
232
Принцип минимума полномочий
232
Раннее формулирование политики безопасности
233
Итоги главы
233
Глава 8. Доступ к коду в .NET
234
Необходимость в контроле доступа
234
Затраты против риска
235
Диапазон рисков
236
Степень доверия к сборке
238
Риски, связанные с обращением к традиционному коду
239
Безопасность, управляемый код и среда CLR
240
Промежуточный язык Microsoft
241
Верифицируемый код с контролем типов
241
Запросы разрешений
242
Использование CAS
243
Гибкий подход к обеспечению безопасности
243
Атака «с приманкой» и проход по стеку
244
Управление политиками безопасности при помощи групп кода
244
Основные концепции управления политиками безопасности
245
Использование средства конфигурирования .NET
Framework Configuration
246
Использование утилиты Caspol.exe
260 476
Оглавление

Императивный и декларативный подходы в CAS
264
Концепция безопасности, основанная на свидетельствах
264
Класс Evidence
264
Получение свидетельства текущего домена приложения
268
Перечисление объектов Evidence
268
Пример программы WalkingThruEvidence
269
Доступ к WalkingThruEvidence через IIS
272
CAS в императивном стиле
274
Разрешения доступа кода
278
Производные классы CodeAccessPermission
278
Класс CodeAccessPermission
279
Класс UrlIdentityPermission
283
Работа с разрешениями CAS
284
Декларативное разрешение доступа
290
Синтаксис объявления атрибутов с квадратными скобками
291
Атрибут Url Identity Permission
292
Класс SecurityAction
293
Запросы разрешений
294
Пример программы PermissionRequest
294
Наборы разрешений
296
Класс PermissionSet
296
Определение набора разрешений при помощи конфигурационного файла
302
Итоги главы
306
Глава 9. ASP.NET
307
Базовые механизмы безопасности
308
Аутентификация: Кто вы?
308
Авторизация: Дозволен ли вам доступ к этому ресурсу?
308
Заимствование прав: Приложение действует от чьего-то имени
308
Реализация механизма аутентификации в ASP.NET
309
Конфигурация ASP.NET
310
Как устроена система конфигурирования ASP.NET
и чем она хороша
311
Иерархия конфигурационных параметров
312
Описание
315
Аутентификация при помощи формы
318
Метод 1: хранение регистрационных данных в файле Web.config
319
Метод 2: хранение регистрационных данных в XML-файле
323
Файл Users.xml
323
Файл login.aspx
324
Метод 3: хранение регистрационных данных в базе данных
326
Классы для аутентификации при помощи форм
329
Аутентификация при помощи паспорта
331
Аутентификация Windows
338
Реализация авторизации ASP.NET
342
Оглавление
477

Авторизация на доступ к файлу
342
Авторизация на доступ к URL
343
Реализация заимствования прав ASP.NET
345
Итоги главы
345
Глава 10. Защита Web-служб
346
Основные техники защиты Web-служб
347
Защищенное соединение
347
Аутентификация и авторизация
353
Механизмы аутентификации в протоколе HTTP
353
Аутентификация Web-служб при помощи заголовков SOAP
356
Архитектура сообщения SOAP
356
Создание прокси при помощи Visual Studio .NET
358
Технологии безопасности XML
360
Целостность
360
XML Signature
361
Защита данных и конфиденциальность
364
XML Encryption
364
Cпецификация управления ключами XML
(XKMS – XML Key Management Specification)
367
Язык разметки утверждений безопасности SAML
(Security Assertion Markup Language)
367
Глобальная архитектура XML Web-служб
(Global XML Web Services Architecture – GXA)
368
WS-Security
369
Начальная спецификация WS
371
Следующие шаги спецификаций
372
Почему WS-Security?
372
Распространение маркеров безопасности
373
Целостность сообщения
375
Конфиденциальность сообщения
376
Организации
385
Итоги главы
387
Приложение A. Пример атаки на код: перекрытие стека
388
Приложение B. Как работает шифр RSA
392
Модульная арифметика
392
Пример программы BigRSA
393
Пример программы CrackRSAWorkFactorDemo
396
Приложение C. Использование библиотеки GNU GMP
400
Установка Cygwin
400
Тестирование библиотеки Cygwin
405
Установка GMP
408
Удаление Cygwin из системы
411 478
Оглавление

Приложение D. Ресурсы по криптографии и безопасности
412
Общетеоретические и концептуальные книги
412
Книги по криптографической математике
413
Книги – руководства по безопасности
414
Популярные книги по криптографии
415
Группы новостей по криптографии
416
Полезные Web-сайты на темы криптографии и безопасности
416
Приложение E. Исследование Web-служб
418
Зачем нужны Web-службы
418
Определение Web-служб
420
Фундамент Web-служб
420
Следующее поколение распределенных вычислений:
Web-службы
421
Преимущества Web-служб
422
Web-службы ASP.NET
422
Архитектура Web-служб
423
Модель кода для Web-службы
424
Разработка простой Web-службы
426
Concatenate.cs и Concatenate.asmx.cs
427
Директива @ WebService
431
Пространство имен System.Web.Services
432
Атрибут WebServiceAttribute
432
Класс WebService
433
Атрибут WebMethod
434
Управление сеансом
437
Протоколы
437
Доступ к Web-службе
438
Генерация прокси
438
Создание прокси-класса при помощи Wsdl.exe
439
Создание клиента Windows Form
440
Асинхронное программирование Web-служб
441
Два асинхронных метода (Begin и End)
442
Создание Web-службы ASP.NET «Калькулятор»
443
Web-службы все еще развиваются
446
Итоги
447
Предметный указатель
448
Оглавление
479

Предисловие
За последние несколько лет криптография в частности и технологии обес- печения безопасности вообще непрерывно повышали свою значимость для пользователей Windows и производителей программного обеспечения. С
другой стороны функции обеспечения безопасности (и криптографичес- кие функции в том числе) 32-разрядных систем семейства Windows стали сопоставимы с аналогичными функциями больших компьютерных плат- форм, где такие функции издавна имели высокий приоритет. Теперь же,
с широким внедрением .NET, реализация функций обеспечения безопас- ности на персональных компьютерах стала делом более простым, чем когда-либо ранее. Разумеется, все еще требуются значительные усилия,
для того чтобы понять и освоить базовые концепции, а также приобрести навыки, необходимые для обращения с соответствующими функциональ- ными возможностями .NET. (Кстати, это как раз и есть тема данной кни- ги.) И хотя многие из этих функций были доступны и раньше в скрытой форме библиотек Windows, именно появление платформы .NET делает программирование с использованием криптографии и других технологий обеспечения безопасности гораздо более простым, а его результаты – го- раздо более мощными, чем когда-либо ранее. Платформа .NET Security
Framework позволяет использовать широкий набор специальных клас- сов, которые относительно нетрудно освоить, и все эти возможности мы исследуем в нашей книге.
Книга призвана исчерпывающе осветить все практические вопросы в реализации криптографических и иных, связанных с безопасностью,
функциональных возможностей в приложениях .NET. Она представляет собой эффективное учебное пособие, содержащее множество ясных и на- глядных примеров исходного кода.
Организация книги
Структура книги включает в себя десять глав и пять приложений. Глава 1
вводит читателя в тематику криптографии и безопасности на платформе
.NET и содержит еще нетехнический обзор тех тем, которые гораздо де- тальней освещены в последующих главах. Также в этой первой главе приведены рассуждения о структуре книги и о том, как в ней соотносятся темы криптографических функций и других функций, связанных с безо- пасностью. Цель этой главы не состоит в том, чтобы достичь сколько-ни- будь глубокого понимания или изучить примеры кода, но она должна привести читателя к концептуальному пониманию криптографических и
других, связанных с безопасностью, технологий, на платформе .NET.
Глава 2 обеспечивает знакомство с теорией, достаточное для более глубо- кого понимания материала последующих глав. Главный ее посыл состоит в том, что все технологии безопасности основываются, в конечном счете,
на криптографии, а для многостороннего понимания криптографии необ- ходимо вначале освоить несколько базовых теоретических криптографи- ческих концепций. Главы 3, 4, 5 и 6 содержат детально проработанные примеры программирования в .NET, относящиеся к симметричным алго- ритмам, асимметричным алгоритмам, цифровым подписям и XML-крип- тографии, соответственно. Главы 7 и 8 описывают программирование в
.NET с использованием концепции идентификации пользователей и кон- цепции прав доступа к коду, соответственно. Глава 9 введет вас в тему программирования на основе технологии ASP.NET, а глава 10 познако- мит с программированием Web-служб на основе ASP.NET.
Все аспекты криптографии и безопасности в .NET рассматриваются в подходящем контексте и в должной последовательности в приложениях,
где они в реальности чаще всего применяются. Приложения к книге описывают несколько дополнительных тем таких, как способы атаки на выполняющийся код и некоторые математические темы, связанные с криптографией.
Эта книга задумана, как практическое учебное пособие с множеством примеров программ, которые иллюстрируют конкретные вопросы и кон- цепции. Мы здесь концентрируемся скорее на вопросах практического программирования задач безопасности в .NET, чем на системном админи- стрировании. Эта книга обеспечивает достаточно общей информации,
чтобы читатель понял, почему вопросы безопасности и криптография столь важны при разработке современного программного обеспечения.
Цель книги состоит в том, чтобы научить читателя создавать серьезные приложения с использованием платформы .NET Security Framework. Эта книга является частью серии «The Integrated .NET Series» от Object Inno- vations и Prentice Hall PTR.
Примеры программ
Лучший способ изучить какую-то серьезную библиотеку классов (напри- мер, такую, как .NET Security Framework) состоит в том, чтобы изучить и написать на ней много программ. В этой книге содержится большое число небольших программ, которые иллюстрируют каждую из исполь- зуемых на практике возможностей .NET Security Framework в отдельно- сти, что облегчает их понимание. Программы (полностью или частично)
приводятся в тексте книги (с переведенными комментариями и сообще- ниями), и все они имеются в программном приложении к книге (с ориги- нальными комментариями и сообщениями). Эти примеры программ представлены в виде самораспаковывающегося архивного файла на
Web-сайте этой книги. После распаковки архива будет создана структура каталогов по пути (по умолчанию) C:\OI\NetSecurity. Все примеры про-
6
Предисловие
грамм (они начинают появляться в книге, начиная с главы 2) распределе- ны по каталогам Chap02, Chap03 и так далее. Все примеры, относящиеся к одной главе, находятся в отдельных папках внутри каталога соответст- вующей главы. Имена папок ясно идентифицируют содержащиеся в них примеры программ.
Эта книга является частью серии «The Integrated .NET Series». При- меры программ для других книг этой серии находятся в своих каталогах внутри каталога \OI, поэтому все программы из всех книг серии будут на- ходиться в одном месте. Эти программы предназначены только для целей обучения, и их нельзя использовать ни в каком программном продукте.
Все программы, включая инструкции по их использованию, предостав- ляются на условиях «как есть», и любого рода претензии к ним не прини- маются.
Web-сайт
Web-сайт для книг этой серии находится по адресу http://www.objectin- novations.com/dotnet.htm.
Ссылка на этот Web-сайт приведена для загрузки примеров программ для этой книги.
Благодарности
Питер Торстейнсон (Peter Thorsteinson)
Мы хотели бы поблагодарить Джилл Хэрри (Jill Harry) из Прентис Холл за ее поддержку в начинании этого проекта. Также мы благодарны ре- дактору серии Роберту Обергу (Robert Oberg) за его ценную помощь.
Дж. Гнана Арун Ганеш (G. Gnana Arun Ganesh)
Я хотел бы поблагодарить моих родителей Дж. А. Гнанавел (G. A. Gnana- vel) и Дж. Н. Вадивамбал (G. N. Vadivambal) за их безграничную любовь,
терпение, поддержку и воодушевление. Также я благодарю мою сестру
Дж. Дж. Сарадха (G. G. Saradha) за ее любовь, нежность и товарищескую поддержку. Моя глубочайшая благодарность адресована моему доброму ангелу, д-ру Роберту Обергу (Robert Oberg), который воодушевлял меня на протяжении всего этого замечательного проекта. Также я благодарен мистеру Анидо Ди (Anido Dey), мистеру Нарайана Рао Сурапанени (Na- rayana Rao Surapaneni) и мистеру Виноду Кумару (Vinod Kumar) за то,
что они воодушевляли меня и побуждали двигаться вперед. Я хотел бы поблагодарить моего соавтора, Питера Торстейнсона (Peter Thorsteinson),
за его руководство и помощь. Наконец, позвольте мне поблагодарить Все- вышнего за то, что он предоставил мне такую возможность.
Предисловие
7

Мы хотели бы поблагодарить Эмили Фри (Emily Frey), Карен Гетман
(Karen Gettman) и всех наших редакторов за их конструктивную помощь в усовершенствовании этой книги. Также мы хотели бы поблагодарить всех наших рецензентов за их детальные комментарии, которые во мно- гом помогли обновить содержание книги.
Дж. Гнана Арун Ганеш (G. Gnana Arun Ganesh) является обладателем звания Microsoft .NET MVP (Most Valuable Professional – «наиболее цен- ный профессионал»), разработчиком, автором и консультантом по .NET.
Также он ведет группу .NET Technology в Arun Micro Systems, которая занимается различными фазами технологии .NET. Он работал с техноло- гией Microsoft .NET начиная с ее первоначальной бета-версии. Арун по- лучил степень бакалавра электроники и коммуникационной техники в университете Бхаратьяра (Bharathiar), в колледже Kongo Engineering.
Он является автором руководства .NET Reference Guide, опубликованно- го в InformIT. Он один из авторов Object Innovations (материалы для кур- са обучения фундаментальным программным технологиям). В качестве автора на темы .NET, он опубликовал более 50 статей о технологии .NET
на различных Web-сайтах, посвященных этой теме. Как активный участ- ник рецензирования в Prentice Hall, он написал множество технических рецензий, начиная с рецензии на книгу «C#: How to Program», написан- ную Харви и Полом Дейтел (Harry and Paul Deitel). Вот уже более двух лет, как администратор Arun Micro Systems, он обеспечивает онлайновое обучение .NET по всему миру.
4 июня 2003 года
8
Предисловие

Глава 1
Криптография и безопасность в .NET
Нечасто вы встретите книгу, в которой вопросы криптографии обсужда- лись бы одновременно с вопросами безопасности и при этом с одинаковым вниманием. Эти две темы, на первый взгляд, принадлежат к совершенно разным областям и обычно рассматриваются по отдельности. В конце кон- цов, насколько важны для системного администратора проблемы криптог- рафии, и как часто он задумывается над трудностями разбиения на множители произведения двух больших простых чисел? А как часто мате- матику приходится думать о конфигурации системы с точки зрения безо- пасности, о таких, например, вещах, как управление доступом к ветвям реестра Windows или к виртуальным каталогам Internet Information
Server (IIS)? Книги по криптографии, как правило, отличаются обилием математики и основываются на теоретических подходах. В противопо- ложность им, книги по безопасности компьютерных систем ориентиро- ваны не на программиста, они посвящены практическим рецептам выполнения таких, например, операций, как установка сервера сертифи- катов, создание учетных записей и тому подобное. Между этими двумя крайностями мы видим программиста .NET, озабоченного проблемами,
которые по своей природе не относятся ни к математике, ни к системно- му администрированию.
Тем не менее, программисты становятся все более заинтересованными во внедрении в свои программы как криптографических функций, так и функций, связанных с безопасностью системы. С одной стороны все функ- ции обеспечения безопасности так или иначе основываются на криптогра- фическом «фундаменте». В сущности, все реально применяемые протоколы и технологии безопасности такие, как Kerberos, шифрованная файловая система Windows, пакет Microsoft Certificate Server и все классы .NET Se- curity Framework, полностью основываются на криптографических прими- тивах. С другой стороны любое программное обеспечение, так или иначе связанное с системой безопасности, в какой-то момент времени обязатель- но соприкасается с конфигурацией параметров безопасности конкретной системы, на которой оно работает. В этой главе мы рассмотрим вопросы криптографии и безопасности в технологии .NET и получим общее пред- ставление о том, как эти две темы связаны между собой с точки зрения
.NET-программирования.
В следующих главах мы более детально изучим эти темы.

Природа этой книги
Эта книга написана специально для программистов, интересующихся во- просами криптографии и безопасности, но не для системных администрато- ров. Мы, следовательно, очень мало внимания уделим здесь тем навыкам,
которые требуются профессиональному «сисадмину». Однако каждый программист должен иметь некоторое представление о задачах админист- рирования, если он хочет разрабатывать эффективные приложения, и программист, работающий в области безопасности, тут не исключение.
Поэтому наша книга все же исследует некоторые аспекты администриро- вания в той мере, в какой они имеют отношение к .NET-программирова- нию в области безопасности. С другой стороны, книга не адресована профессиональным математикам и криптографам
1
и не слишком углуб- ляется в теоретические вопросы криптографии, однако уделяет все же некоторое внимание теории, поскольку даже ограниченное понимание теории криптографии весьма полезно для программиста.
В результате эта книга реализует смешанный подход к освещению предмета, сочетающий в себе основы теории криптографии и вопросы ад- министрирования систем с точки зрения безопасности на платформе
.NET. В первой главе мы начнем с обзора наиболее важных концепций безопасности и криптографии на платформе .NET, приведя примеры того, как реализуется система безопасности в приложениях .NET. В главе 2
мы рассмотрим теоретические основы криптографии, начиная с устройст- ва шифра и принципов криптоанализа простейших шифровальных сис- тем, известных с древних времен. Далее в главах 2, 4 и 5 мы продвинемся дальше, изучив технику программирования .NET применительно к трем основным криптографическим системам, используемым в наше время:
симметричные и асимметричные системы, а также цифровая подпись.
В этих трех главах приводятся развернутые примеры программного кода,
реализующего все эти системы при помощи классов .NET Security. В главе 6
продолжится исследование вопросов, связанных с шифрованием и циф- ровой подписью, но уже в контексте технологии XML. Главы 7 и 8 проде- монстрируют основные техники программирования, реализующие такие концепции .NET, как управление доступом на основе механизма ролей и управление доступом кода к ресурсам на основе свидетельств в программах
.NET. Разумеется, реалии распределенных приложений и среды Internet де- лают особенно важными, с точки зрения безопасности, многие специфиче- ские аспекты программ, и в главах 9 и 10 мы рассмотрим вопросы безопасности технологии ASP.NET и Web-сервисов, основанных на .NET.
10
Глава 1 1
Криптограф – это тот, кто разрабатывает и анализирует алгоритмы шифрования (но не тот, кто просто использует готовые библиотеки для встраивания в свою программу крип- тографических функций).

Опасность подстерегает повсюду
Если начать думать обо всех возможных опасностях, то можно стать па- раноиком. В конце концов, среднестатистический гражданин крайне ред- ко становится объектом расследования ЦРУ или ФБР (насколько мы знаем, конечно…) или мишенью международного шпионского заговора.
Если дать волю воображению, то многие потенциальные угрозы покажут- ся просто притянутыми за уши. В самом деле, почему бы ни обернуть свою голову алюминиевой фольгой для того, чтобы злонамеренные ино- планетяне не смогли прочитать ваши мысли? Тем не менее, как бы стран- но это ни звучало, угрозы безопасности наших данных подстерегают повсюду: чем важнее и ценнее данные, тем большее значение приобретают аспекты безопасности. На самом деле, в компьютерном мире данные на удивленье часто подвергаются самым разнообразным угрозам и рискам.
ПОСТАВЬТЕ СЕБЯ НА МЕСТО ЗЛОУМЫШЛЕННИКА
Наверное, вам доводилось слышать совет опытного рыбака: чтобы пой- мать рыбу, нужно думать, как рыба. Лично мне этот совет всегда казался немного странным, поскольку непонятно все же, как мыслит рыба. Одна- ко этот совет весьма полезен, если ваш противник – человек. Сказанное особенно верно, если речь идет о защите от потенциального злоумышлен- ника
1
, атакующего вашу систему: очень полезно изучить ситуацию с его точки зрения и попытаться представить себе возможный ход его мыслей.
Проблема заключается в том, что хорошим ребятам вроде нас с вами очень трудно мыслить так, как мыслит изобретательный злоумышлен- ник, в то время как на его стороне оказываются неисчерпаемые ресурсы:
изобретательность, время, энергия и знания. Зачастую все, что мы в со- стоянии сделать, это бежать вдогонку за мыслью злоумышленника. Шан- сы в этой игре неравны: одному единственному противнику достаточно найти одну единственную уязвимость, и вся система в опасности. В про- тивоположность этому, измученный защитник должен предусмотреть все возможные варианты нападения и для каждого варианта предпринять достаточные оборонительные меры. Для того чтобы получить общее пред- ставление о возможных угрозах, давайте рассмотрим несколько приме- ров потенциальных угроз.
Криптография и безопасность в .NET
11 1
Мы используем определение «злоумышленник, атакующий вашу систему» в отношении любого лица, которое стремится получить недозволенный доступ к системе с целью кра- жи, подделки или уничтожения данных. Такого злоумышленника часто называют «крэ- кер» (взломщик). Очень часто в качестве синонима для слова «крэкер» используют слово
«хакер», что абсолютно неверно, и чему мы обязаны сообщениям современных СМИ на технические темы. Под словом «хакер», вообще говоря, имеется в виду компьютерный эксперт или энтузиаст, отличающийся обширными знаниями, как правило, приобретен- ными самостоятельно, и предпочитающий в своей деятельности «партизанские», нерегу- лярные методы.

ПРИМЕРЫ УГРОЗ И СООТВЕТСТВУЮЩИХ ИМ КОНТРМЕР
Вероятно, нет никаких пределов числу всех возможных трюков и уловок,
которые может применить злоумышленник, атакующий вашу систему.
Угрозы, с которыми имеет дело программист, концептуально идентичны тем угрозам, которым подвергается пользователь электронной почты
(e-mail). Например, большинство людей не шифруют свои электронные сообщения, что можно представить, как отправку по обычной почте от- крытки вместо вложенного в конверт письма. В этом может заключаться определенный риск, поскольку такие электронные сообщения могут быть легко перехвачены на вашем почтовом сервере или на одном из маршру- тизаторов на пути сообщения. Другой вариант угрозы – почтовый вирус может причинить вам немало неприятностей, просто разослав ваши же,
ранее отосланные сообщения, по всем адресам в вашей адресной книге –
это может поставить вас в неудобное положение. Если бы корреспонден- ция, по крайней мере, важная ее часть, шифровалась, то подобных проб- лем не возникло бы. От перехваченных сообщений злоумышленник не получил бы никакой пользы, а действия описанного выше вируса не приве- ли бы ни к чему, кроме рассылки бессмысленных для получателей данных.
Существуют почтовые вирусы, которые создают разделяемые ресурсы
(общие папки) на вашем компьютере, предоставляя тем самым доступ к вашим папкам всем пользователям вашей локальной сети. Если бы пап- ки были зашифрованы, то не было бы никаких неприятностей. Конечно,
вы вовремя обновили свой антивирус, тщательно сконфигурировали поч- товую программу и установили все нужные «заплатки», устраняющие известные уязвимости в программном обеспечении, для того, чтобы вообще избежать встречи с почтовым вирусом. Но даже в этом случае шифрование почты и файловой системы создаст дополнительный уровень защиты, кото- рый очень пригодится в случае, когда все остальные меры окажутся тщетными. Примеры, о которых шла речь, иллюстрируют важность шифрования в мире электронной почты. По аналогии с этим должно быть понятно, что шифрование критических данных имеет огромное зна- чение вообще в любых программных технологиях.
Использование электронной подписи – еще один способ избежать из- лишних рисков. К сожалению, большинство пользователей электронной почты не используют электронную подпись в своей корреспонденции.
Если вы не подписываете свои наиболее важные сообщения, то кто-ни- будь может отправить сообщение от вашего имени, дискредитировав вас тем или иным образом. Если вы постоянно подписываете свои наиболее важные сообщения, то ваши корреспонденты будут ожидать наличия подписи и с подозрением отнесутся к любому фальшивому сообщению от вашего имени. Этот пример иллюстрирует роль цифровой подписи в электронной почте, но все сказанное можно распространить на любую об- ласть, в которой могут работать ваши программы.
12
Глава 1

ЛОЖНОЕ ЧУВСТВО БЕЗОПАСНОСТИ
К несчастью, людям свойственно считать само собой разумеющимся, что использование компьютера знакомым, привычным образом не заключает в себе никакой опасности, но это не так. Вот впечатляющий пример: ле- том 2002 года корпорация Microsoft в корейской версии пакета Visual
Studio .NET непредумышленно распространила копию червя «Nimda». К
счастью оказалось, что копия червя была включена в дистрибутив таким образом, что реальной опасности для чьей-либо системы он не представ- лял. Но кто вообще мог вообразить, что может быть что-то опасное в уста- новке такого известного приложения, полученного от столь надежного поставщика? Эта новость послужила тревожным сигналом
1
для програм- мистов во всем мире! Есть много примеров, доказывающих, что «само со- бой разумеющаяся» безопасность привычного программного обеспечения вовсе не разумеется сама собой. Как часто вам доводится слышать об об- наружении новых уязвимостей в программах и выпуске «заплат», лик- видирующих эти уязвимости? Увы, но подобные новости доходят до нас едва ли не ежедневно. А хорошая новость состоит в том, что .NET Securi- ty Framework и вообще вся платформа .NET способна обеспечить весьма эффективную защиту для программ и данных от множества потенциаль- ных угроз. К сожалению, все проблемы безопасности невозможно решить раз и навсегда, однако технология .NET делает огромный шаг в этом на- правлении, позволяя создавать программы, гораздо более безопасные,
чем когда-либо ранее.
Производители программного обеспечения, системные администрато- ры, программисты и пользователи – все мы должны проявлять бдитель- ность и принимать необходимые меры предосторожности. Каждый должен помнить, что возникающее иногда чувство безопасности – лож- ное чувство. Совершенно очевидно, что вопросы безопасности играют важную роль, и это должны признать все люди, чья профессиональная деятельность связана с компьютерами. Особенно важным все это стано- вится сейчас, когда компьютерные системы играют всевозрастающую роль во всех сферах жизни, и когда связи этих систем через Internet ста- новятся все более глобальными.
Криптография и безопасность в .NET
13 1
Много раньше, в истории развития системы UNIX, имел место еще один впечатляющий и убедительный пример подобного происшествия, когда стало ясно, что нельзя слепо доверять безопасности программного обеспечения, которое мы используем. Прочитайте на странице http://www.acm.org/classics/sep95
, что сказал Кен Томпсон, «отец» UNIX, на эту тему.

Природа криптографии и других средств обеспечения безопасности
Центральной темой этой книги являются криптография и различные сред- ства обеспечения безопасности на платформе .NET. Но если углубиться в эти темы, то легко потерять из виду главные вопросы, касающиеся самой природы криптографии и средств обеспечения безопасности:
q
Почему криптография и средства обеспечения безопасности так важны?
q
Что возможно и что невозможно сделать с их помощью?
Первый вопрос, в сущности, это вопрос типа «зачем нам это нужно?», а второй – это вопрос типа «что мы можем сделать при помощи этого?». Да- вайте, прежде чем углубиться в технические детали в последующих главах,
рассмотрим эти два фундаментальных вопроса. И далее, когда вы будете чи- тать остальную часть книги, не забывайте о существовании этих вопросов…
Почему криптография и средства обеспечения безопасности так важны
Все мы знаем много примеров из бизнеса, из истории войн, а порой даже из личного опыта, что встречаются ситуации, в которых немного более высокий уровень секретности очень помог бы делу и позволил бы избе- жать серьезных проблем. Можно вспомнить много случаев, когда дело обошлось бы без неприятностей и неудобств, если бы была проявлена чуть большая осторожность. Конечно, шифрование в состоянии обеспе- чить вам безопасность и секретность
1
в том, по крайней мере, что каса- ется компьютерных данных. Существует четыре основных аспекта, в которых рассматривается безопасность данных: секретность, аутенти- фикация, целостность и подтверждение обязательств (nonrepudiation).
Очевидно, что секретность во многих случаях может иметь большое зна- чение. Понятно, что секретность необходима в ситуациях, когда крити- ческую информацию необходимо скрыть от противника. Вы без труда также представите себе ситуацию, когда очень важно точно знать – с кем именно вы имеете дело (проблема аутентификации). Не менее важно ино- гда увериться в том, что информация, которую вы получили от кого-то или кому-то отослали, не может быть изменена злонамеренным третьим лицом (проблема целостности). Наконец, вам может потребоваться уверен- ность в том, что некто, с кем вы договорились о чем-то, не откажется от своих слов (подтверждение обязательств). Для решения всех перечисленных
14
Глава 1 1
В большинстве стран сокрытие или утаивание сведений, имеющих отношение к уголов- ному расследованию, является преступлением, поэтому в деле засекречивания данных необходим разумный подход: одно дело осторожность и предусмотрительность, но совсем другое – создание помех правосудию.
проблем (то есть секретности, аутентификации, целостности и подтверж- дения обязательств) можно реализовать соответствующие протоколы бе- зопасности, использующие цифровые подписи и цифровые сертификаты,
а так же симметричные алгоритмы шифрования, криптографические хеши и коды аутентификации сообщений (MAC – Message Authenticati- on Codes).
ЗАЧЕМ БЕСПОКОИТЬСЯ, ЕСЛИ ВАМ НЕЧЕГО СКРЫВАТЬ?
Зачем беспокоиться о безопасности данных, если вам нечего скрывать?
Этот вопрос иногда задают люди, которые наивно полагают, что в защите своей конфиденциальности нуждаются только преступники, террористы и шпионы, чьи грязные секреты нуждаются в сокрытии. Эта ошибочная точка зрения исходит из предположения, что обычному честному человеку мало, что необходимо скрывать в своей жизни, и что энергичная забота о конфиденциальности свидетельствует о нечистой совести. Здесь необходи- мо четко сознавать, что конфиденциальность – это совершенно нормаль- ная потребность всех законопослушных граждан, что особенно верно,
когда речь идет о гражданах государства, чьи власти далеки от идеала.
Чтобы немного яснее представить себе все аспекты этой проблемы, во- образите на минуту, что вам отказано в праве на конфиденциальность.
Например, ваше правительство запретило гражданам отправлять по поч- те письма в закрытых конвертах и обязало публиковать медицинские и банковские данные всех людей – как бы вы чувствовали себя в подобной ситуации? Как бы вам понравился запрет на сохранение в тайне ка- ких-либо сведений о себе, пусть даже с риском стать в результате жерт- вой преступников? Как бы вы чувствовали себя, если вся ваша переписка по электронной почте и все сведения о ваших посещениях сайтов в Web оказались бы доступными для всех интересующихся на поисковых сай- тах, таких, например, как www.google.com? Конечно, вам придется при- знать, что право на конфиденциальность совершенно нормально и законно для вполне обычных, законопослушных граждан, и что опреде- ленная степень конфиденциальности является фундаментальным и не- отъемлемым правом всех людей.
КАТЕГОРИИ БЕЗОПАСНОСТИ
Мы могли бы привести множество примеров из практики, однако, чтобы не повторяться и не путаться, рассмотрим общие категории, на которые можно разбить проблемы безопасности. Вам обязательно придут на ум из сообщений новостей или даже из собственной практики примеры каждой из этих категорий:
q утечки интеллектуальной собственности, нарушенные контракты,
сорванные сделки;
q созданный злоумышленником программный код – почтовые виру- сы, «логические бомбы», обычные программные вирусы и «троян- ские» программы;
Криптография и безопасность в .NET
15
q
программные техники несанкционированного доступа такие, как,
например, техника переполнения буфера;
q фальшивые сообщения
1
;
q нарушение договорных обязательств;
q ошибки в коде, угрожающие безопасности данных.
При надлежащем планировании и применении функциональные воз- можности платформы .NET в плане криптографии и безопасности способ- ны в огромной мере упростить решение всех этих проблем.
Что возможно и что невозможно сделать с помощью криптографии и средств обеспечения безопасности
Теперь мы приходим ко второму вопросу – а что вообще можно сделать при помощи криптографии и других средств защиты информации? Как ни важны все эти инструменты сами по себе, все же они – не панацея от всех проблем, связанных с безопасностью. Знание границ, в которые за- ключены возможности рассматриваемых средств, – необходимое знание в решении реальных проблем. Вначале давайте рассмотрим то, что мож- но сделать при помощи криптографии и других средств обеспечения безо- пасности данных.
ЧТО МОЖНО СДЕЛАТЬ ПРИ ПОМОЩИ КРИПТОГРАФИИ
И ДРУГИХ СРЕДСТВ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ ДАННЫХ
Криптография, как и другие технологии, связанные с обеспечением безо- пасности данных, в состоянии защитить данные лишь в той части, что связана с устройством программного обеспечения, которое используют люди, но она бессильна в той части, что связана с поведением самих лю- дей. Подобно тому, как в «традиционных» трагедиях вроде автомобиль- ных и авиакатастроф, наиболее частой причиной является человеческая ошибка, неудача мер по безопасности данных в компьютерном мире так- же чаще всего имеет своей причиной ошибку программиста или пользо- вателя. Средства, которые предоставляет платформа .NET в этом плане,
позволяют реализовать следующие разновидности защиты:
q обеспечение конфиденциальности информации;
q аутентификация пользователей;
16
Глава 1 1
Фальшивые сообщения могут принимать одну из многих форм. Например, перехват па- кетов в сеансе TCP-соединения, при котором атакующая сторона получает не предназ- наченные ей пакеты с данными, модифицирует их с каким-то злым умыслом
(например, изменение остатка на банковском счете) и пересылает их настоящему полу- чателю. Другой пример – подмена IP-адреса, когда атакующая сторона подделывает ад- рес источника в IP-пакетах и отправляет их получателю, выдавая себя за кого-то другого. Самая простая и грубая форма фальшивого сообщения – это сообщение элект- ронной почты e-mail, подделанное с целью ввести в заблуждение получателя.
q
целостность информации;
q противодействие нарушению договорных обязательств;
q контроль доступа к ресурсам;
q доступность служб.
Конфиденциальность информации обеспечивается шифрованием, кото- рое ограничивает доступ к информации, делая его возможным только для определенных пользователей. Аутентификация позволяет убедиться в том,
что пользователь действительно является тем, за кого он себя выдает. Цело- стность информации означает, что только авторизованные пользователи мо- гут создать или изменить сообщение, защищенное электронной подписью.
Противодействие нарушению договорных обязательств заключается в том,
что автор сообщения не сможет впоследствии отрицать факт отправки сооб- щения или спорить по поводу его содержания. Под «доступностью служб»
имеется в виду с одной стороны обычная надежность (то есть среднее время бесперебойной работы), а с другой – средства противодействия атакам типа
«отказ в обслуживании» (так называемые DOS-атаки).
Хотя механизмы квотирования, обычно встраиваемые в серверные приложения, еще не поддержаны явным образом в .NET, многие функ- циональные возможности среды выполнения («виртуальной машины»)
.NET позволяют значительно улучшить такую характеристику, как доступность служб.
ЧЕГО НЕЛЬЗЯ СДЕЛАТЬ ПРИ ПОМОЩИ КРИПТОГРАФИИ
И ДРУГИХ СРЕДСТВ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ ДАННЫХ
Все распространенные алгоритмы шифрования давно уже проанализиро- ваны с точки зрения строгой математики, однако реальная криптогра- фия применяется в реальном мире. А в реальном мире у нас всегда имеется потенциально слабое звено, которое мы любовно называем «по- льзователем
1
»… Любые криптографические алгоритмы, любые меры по безопасности системы, все, что в состоянии придумать математики, про- граммисты и системные администраторы, не в состоянии защитить сис- тему от недобросовестного или ленивого пользователя.
Не нами замечено, что программисты и системные администраторы довольно час- то фокусируются на алгоритмах и протоколах, в то время как причиной нарушения безопасности сплошь и рядом оказываются обычные челове- ческие слабости. Например, вы можете применить для шифрования в своем приложении сколь угодно сильные алгоритмы, но если пользова- тель напишет пароль на бумажке и прилепит эту бумажку к монитору,
чтобы не забыть пароль, как это нередко делают, то все ваши усилия ока- жутся напрасными: битва проиграна. Вот примерный список тех угроз
Криптография и безопасность в .NET
17 1
Некоторые, не слишком добродушные, программисты имеют привычку неодобрительно отзываться о пользователях, называя их «юзерами» (от англ. «user») или «юзверями».
Мы не поддерживаем подобную практику, поскольку не будь пользователей, не было бы работы и у нас, программистов.
для безопасности системы, которые связаны непосредственно с «челове- ческим фактором»:
q недостаточная подготовка, низкая дисциплина персонала;
q небрежность разного рода, например, плохой выбор пароля, компро- метация ключей или пересылка нешифрованных данных;
q излишняя доверчивость, неопытность и наивность;
q атаки, основанные на «социальной инженерии» и артистизме;
q взятки, запугивание, шантаж;
q плохое качество программ, ошибки в коде.
Криптография и прочие средства обеспечения безопасности – это не ремни безопасности. Нет никакого смысла в самой причудливой защите,
если эта защита не действует непрерывно и надежно. Очевидно, что неза- шифрованные данные не сохранят секретов, неподписанные данные лег- ко подделать или подменить. А насколько защищено приложение с доступом по паролю, если пароль легко угадать или подобрать? Эффек- тивные меры по обеспечению безопасности подразумевают дисциплину и бдительность. Другая проблема заключается в доверии: межсетевые эк- раны не защитят от собственного доверенного сотрудника, затаившего обиду на фирму. Для обеспечения реальной защиты необходима проду- манная политика безопасности, четкие процедуры и эффективная подго- товка пользователей.
В атаках на основе «социальной инженерии» используются психоло- гические или эмоциональные трюки и уловки. Проще выражаясь, вы должны относиться очень скептически к заявлениям типа «вы можете мне доверять», поскольку у людей, действительно достойных доверия, ред- ко бывает нужда в подобных заявлениях. Трудность здесь заключается еще и в том, что жертве «социальной инженерии», обманутой артистичным мо- шенником, потом трудно бывает признаться в факте компрометации защи- ты. В этой ситуации человеку легче все отрицать, чем признаться в собственной глупости или неосторожности. Поэтому никогда не следует терять бдительность, но если это все же случилось, то не позволяйте свое- му самолюбию испортить все окончательно.
Шантаж и угрозы, взятки и (не приведи, Господь!) пытки – это тоже своего рода атаки на основе «социальной инженерии», только возведен- ные в степень. Вы можете думать, что такие вещи случаются с людьми только в кино, но, увы, если ставки достаточно высоки, то все это может произойти и в жизни. Чтобы понять, почему это так, достаточно задумать- ся над экономическими аспектами раскрытия шифра. Предположим, что для раскрытия ключа к зашифрованным данным вам необходимо три ме- сяца процессорного времени на суперкомпьютере – это, примерно, 50 ты- сяч долларов. Предположим далее, что нанять бандита, который за пару часов добудет тот же самый ключ, пользуясь собственными методами убеждения, стоит 2 тысячи долларов. Теперь, если вы человек, не обреме- ненный моральными устоями (а такие люди существуют), какой путь вы изберете? Конечно вам следует держаться в рамках закона, тщательно выбирать свою компанию и избегать получения или дачи взяток. Но в том,
что касается еще более мрачных вариантов, то вряд ли человеку, попавшему
18
Глава 1
в подобный переплет, помогут чьи-либо советы. К счастью, пытки в боль- шинстве демократических стран – вещь весьма редкая, хотя есть немало стран, где это остается одной из тяжелых гуманитарных проблем
1
Разумеется, нельзя во всем винить пользователей. В вопросах безо- пасности есть несколько аспектов, которые никак не зависят от пользова- телей, но в которых криптографические методы также бессильны. Всегда остаются проблемы физической безопасности и угроза побочной утечки информации. В том, что относится к безопасности, есть вещи, зависящие от толщины стен, крепости дверей и размера замков, а также от калибра винтовки. Под побочной утечкой мы понимаем здесь любые возможно- сти, ведущие к снятию информации непредвиденным способом.
При помощи криптографических алгоритмов невозможно предотвра- тить физическое вторжение, такое, как проникновение со взломом и кра- жа, и также неразумно ждать от обычного пользователя, чтобы он это предотвратил. Очевидно, что проблемы физической безопасности дол- жны решаться физическими же методами. Возможно, вам не требуется такой уровень защиты, какой существует в центре управления системы
NORAD в Шейенских горах, но какой-то минимальный уровень защиты требуется всегда. Вам не хотелось бы, чтобы вашу переписку по e-mail читала приходящая няня? А что, если ваш компьютер просто украдут?
По всей вероятности, каждому требуется, по меньшей мере, парольная защита и запираемая дверь между его компьютером и внешним миром.
Изучая вопросы физической безопасности, помните, что кража или акт вандализма угрожает вашей системе не только со стороны пришель- цев из внешнего мира. Внутренняя безопасность может быть сопряжена с точно такими же проблемами, что и безопасность внешняя. Любую компьютерную систему необходимо защищать в соответствии с тем, на- сколько ценный ресурс она собой представляет, и насколько она подвер- жена потенциальным угрозам.
Побочная утечка информации принимает самые причудливые формы, в которых физические аспекты функционирования компьютеров могут дать злоумышленникам шансы, которых вы не предвидели. Например, что мо- жет произойти с простыми текстовыми данными, копия которых осталась в системном файле подкачки или в дампе памяти, сгенерированном в результа- те системного сбоя? Если вы недостаточно предусмотрительны, то здесь най- дутся возможности для злоумышленников. Другая возможность связана с радиочастотным излучением работающего компьютера, которое при исполь- зовании технологии Tempest
2
может стать источником утечки информации.
Если представить себе миллионы электронных переключателей, которые срабатывают внутри компьютера каждую микросекунду, то кажется не- вероятным, что таким способом можно получить какую-то осмысленную информацию. Тем не менее, на практике уже было продемонстрировано,
что изображение на экране монитора компьютера можно воспроизвести
Криптография и безопасность в .NET
19 1
Более детально с положением дел в этой печальной области вы можете ознакомиться на сайте http://www.amyesty.org/.
2
«Tempest» означает Transient Electromagnetic Pulse Emanation Standard (Стандарт элект- ромагнитного импульсного излучения переходных процессов) – это набор секретных тех- нологий, разработанных военными США для анализа паразитных электромагнитных излучений, исходящих от аналоговых и цифровых электронных устройств.

[ . . . ]

Минимальные системные требования определяются соответствующими требо-
ваниями программы Adobe Reader версии не ниже 11-й для платформ Windows,
Mac OS, Android, iOS, Windows Phone и BlackBerry; экран 10"
Справочное электронное издание
Серия: «Программисту»
Торстейнсон Питер
Ганеш Дж. Гнана Арун
КРИПТОГРАФИЯ И БЕЗОПАСНОСТЬ В ТЕХНОЛОГИИ .NET
Ведущий редактор
Л. Черепанова
Художник
Ф. Инфантэ
Компьютерная верстка
Л. Черепанова, Л. Катуркина
Подписано к использованию 19.03.15. Формат 145
×220 мм
Издательство «БИНОМ. Лаборатория знаний»
125167, Москва, проезд Аэропорта, д. 3
Телефон: (499) 157-5272
e-mail:
info@pilotLZ.ru
,
http://www.pilotLZ.ru

Эта книга позволит читателям:
• освоить базовые принципы криптографии, что даст возможность осмысленно применять криптографические средства .NET Framework;
• научиться применять симметричные и асимметричные алгоритмы,
а также цифровые подписи;
• овладеть как традиционными способами программного шифрования,
так и новыми технологиями, такими как шифрование XML и цифровая подпись XML;
• научиться применять все эти инструменты для обеспечения безопасности Web-служб и приложений ASP .NET.
Об авторах
Питер Торстейнсон — системный аналитик, занимавшийся программированием, обучением разработке программного обеспечения и созданием материалов для такого обучения более 10 лет.
Он интересуется всеми аспектами C++, Java и C#, а также ATL, COM+,
.NET и J2EE. Питер имеет степень бакалавра в области электротехники,
а также является соавтором книг «.Net Architecture And Programming
Using C++» и «Application Development Using Visual Basic .NET»
(обе они выпущены издательством Prentice Hall PTR).
Дж. Гнана Арун Ганеш — разработчик, автор и консультант по .NET.
Он руководит группой .NET Technology на Web Prodigies и отвечает за область .NET Reference Guide на InformIT.
Арун — один из авторов материалов для курса обучения Object
Innovations, обеспечивающих подготовку по фундаментальным программным технологиям. Он опубликовал более 50 статей по теме технологий .NET на многих Web-сайтах этой тематики.

Каталог: pdf
pdf -> Семантическое пространство компьютерных игр: опыт рекон
pdf -> Влияние компьютерных игр на человека
pdf -> О состоянии и перспективах внедрения в учебный процесс инновационных технологий в нф башГУ
pdf -> Russian Federation) Психология компьютерных ролевых игр с моральным выбором и программа исследования (на примере серии «Fable») Колесников Е. В
pdf -> Развитие дизайна в сфере игровой индустрии
pdf -> История развития графической визуализации в индустрии компьютерных игр
pdf -> Анализ современного состояния потребительского рынка в россии и за рубежом


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал