Глава 9 введет вас в тему программирования на основе технологии ASP.NET, а глава 10 познакомит с программированием Web-служб на основе ASP.NET. <...> Разумеется, реалии распределенных приложений и среды Internet делают особенно важными, с точки зрения безопасности, многие специфические аспекты программ, и в главах9и10мы рассмотрим вопросы безопасности технологии ASP.NET и Web-сервисов, основанных на . <...> NET 15 проблем (то есть секретности, аутентификации, целостности и подтверждения обязательств) можно реализовать соответствующие протоколы безопасности, использующие цифровые подписи и цифровые сертификаты, а так же симметричные алгоритмы шифрования, криптографические хеши и коды аутентификации сообщений (MAC – Message Authentication Codes). <...> Симметричные криптографические алгоритмы такие, как DES (Data Encryption Standard – Стандарт шифрования данных), активно применялись в банковских и правительственных приложениях уже в конце 70-х. <...> В начале 90-х в UNIX-системах уже была внедрена симметричная и асимметричная криптография в различных протоколах и технологиях, как, например, в протоколе сетевой идентификации Kerberos. <...> NET Управляемый код и безопасность типов Код, который используют службы CLR, называется управляемым (managed) кодом. <...> В принципе возможно, используя язык С# и зарезервированное слово unsafe, создать небезопасный код, но другие языки такие, как VB.NET, в принципе могут создавать только управляемый код с безопасными типами. <...> Мы познакомимся со всем этим очень подробно в последующих главах, пока же давайте сделаем краткий обзор основных функций, выполняемых криптографическими классами: симметричные алгоритмы шифрования DES, 3DES и RC2; криптографические потоки; асимметричный алгоритм RSA; цифровая подпись на основе RSA и DSA; хеш-алгоритмы, включая MD5, SHA1, SHA-256 и другие; коды аутентификации сообщений (MAC); алгоритм хеша с ключом; XML-шифрование; XML-подписи; генераторы псевдослучайных последовательностей2; безопасность в ASP.NET; безопасность <...>
Криптография_и_безопасность_в_технологии_.NET_(2).pdf
УДК 004.7
ББК 32.973.202
Т61
С е р и я о с н о в а н а в 2005 г.
Торстейнсон П.
Т61 Криптография и безопасность в технологии .NET /
П. Торстейнсон, Г. А. Ганеш ; пер. с англ.—5-е изд.,
электрон.—М. : Лаборатория знаний, 2024.—482 с. —
(Программисту).—Систем. требования: Adobe Reader XI ;
экран 10".—Загл. с титул. экрана.—Текст : электронный.
ISBN 978-5-93208-734-3
Подробно излагаются вопросы реализации на .NET-платформе
симметричной и асимметричной криптографии, цифровых подписей,
XML-криптографии, пользовательской безопасности и защиты
кодов, ASP .NET-безопасности, безопасности Web-служб. Изложение
построено на разборе примеров конкретных атак на системы
безопасности, содержит большое количество текстов отлаженных
программ.
Для программистов, занимающихся разработкой и настройкой
систем безопасности на платформе .NET.
УДК 004.7
ББК 32.973.202
Деривативное издание на основе печатного аналога: Криптография
и безопасность в технологии .NET / П. Торстейнсон,
Г. А. Ганеш ; пер. с англ.—М. : БИНОМ. Лаборатория знаний,
2007.—479 с. : ил.—(Программисту).—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 © 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 © 2013.
Авторизованный перевод издания на английском языке, озаглавленного .NET SECURITY
AND CRYPTOGRAPHY, авторы PETER THORSTEINSON и G. GANESH, опубликованного
Pearson Education, Inc, осуществляющим издательскую деятельность под
торговой маркой Prentice Hall. Copyright © 2004 by Pearson Education, Inc. Все права
защищены. Воспроизведение или распространение какой-либо части/частей данной
книги в какой-либо форме, какими-либо способами, электронными или механическими,
включая фотокопирование, запись и любые поисковые системы хранения информации,
без разрешения Pearson Education, Inc запрещены. Электронная русскоязычная версия
издана BKL Publishers. Copyright © 2013.
В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений,
установленных техническими средствами защиты авторских прав, правообладатель
вправе требовать от нарушителя возмещения убытков или выплаты компенсации
© 2004, Pearson Education, Inc.,
Publishing as Prentice Hall
ISBN 978-5-93208-734-3
© русское издание, Лаборатория
знаний, 2015
Proffessional Technical Reference.
Upper Saddle River, New Jersy 07458.
Стр.5
Оглавление
Предисловие
Глава 1. Криптография и безопасность в .NET
Природа этой книги
Опасность подстерегает повсюду
Природа криптографии и других средств обеспечения
безопасности
Почему криптография и средства обеспечения безопасности
так важны
Что возможно и что невозможно сделать с помощью криптографии
и средств обеспечения безопасности
Безопасность в Windows: возраст зрелости
Среда разработки .NET Framework
и «виртуальная машина» CRL
Как .NET Framework упрощает решение проблем безопасности
Надежность и платформа .NET Framework
Управляемый код и безопасность типов
Программирование с использованием криптографии в .NET
Программирование с использованием средств обеспечения
безопасности в .NET
Безопасность, основанная на механизме ролей
CAS, свидетельства, политика и разрешения
Итоги главы
Глава 2. Основы криптографии
Чтобы секреты оставались секретами
Основные термины криптографии
Секретные ключи против секретных алгоритмов
Классические методы сохранения тайны
Рабочий фактор атаки методом «грубой силы»
Арифметика произвольной точности
Стеганография
Современные шифры
Криптография и .NET Framework
Симметричная криптография
Асимметричная криптография
Криптографические алгоритмы
Криптографические протоколы
Криптоаналитические атаки
Человеческий фактор
5
9
10
11
14
14
16
21
22
23
24
24
26
26
27
27
28
29
30
30
33
34
53
54
55
57
57
58
59
62
66
68
69
Стр.474
474
Оглавление
Риск и выигрыш
Другие важные концепции
Итоги главы
Глава 3. Симметричная криптография
Симметричные шифры
DES
Операционные режимы
«Тройной» DES
Rijndael
RC2
Программирование при помощи средств симметричной
криптографии .NET
Основные криптографические классы
Класс SymmetricAlgorithm
Классы, производные от SymmetricAlgorithm
Примеры программирования с использованием
симметричных алгоритмов
Криптографические потоки
Выбор надежных ключей
Проблемы передачи ключей
Шифрованные хеши и целостность сообщения
Хеш-алгоритмы с ключом и целостность сообщения
Итоги главы
Глава 4. Асимметричная криптография
Проблемы, связанные
с использованием симметричных алгоритмов
Проблема распределения ключей
Проблема доверия
Идея асимметричной криптографии
Использование асимметричной криптографии
Аналогия с кодовым замком
Односторонняя функция с «черным ходом»
Преимущества асимметричного подхода
Сочетание асимметричных и симметричных алгоритмов
Существующие асимметричные алгоритмы
RSA: самый распространенный асимметричный алгоритм
Основания RSA
Миниатюрный пример RSA
Предостережение: вопросы вероятности
Программирование при помощи
.NET Asymmetric Cryptography
Пример использования алгоритма RSA
Сохранение ключей в формате XML
Цифровые сертификаты
Итоги главы
69
70
71
72
72
74
75
84
85
86
87
87
88
89
93
97
98
100
102
105
106
107
107
108
108
109
110
111
112
114
115
116
117
117
119
121
123
123
129
132
132
Стр.475
Оглавление
475
Глава 5. Цифровая подпись
Хеш-алгоритмы
Характеристики хорошей хеш-функции
Хеш-алгоритмы, поддерживаемые в .NET
Класс HashAlgorithm
Классы MD5 и SHA
Класс KeyedHashAlgorithm
Идентификаторы объектов
Как работает цифровая подпись
RSA в качестве алгоритма цифровой подписи
Пример программы с использованием подписи RSA
Алгоритм цифровой подписи DSA
Математическое основание: теория групп
Задача о дискретных логарифмах
Как работает DSA
Иерархия класса AsymmetricAlgorithm
Класс DSACryptoServiceProvider
Пример программы с использованием DSA
Итоги главы
Глава 6. Криптография и XML
XML Encryption – шифрование XML
XML Encryption против SSL/TLS
Спецификация шифрования XML
Что обеспечивает шифрование XML
Синтаксис XML Encryption
Как работает шифрование XML
Классы, используемые в XML Encryption
Передача асимметричных ключей
Пример программы XmlEncryption
XML Signatures – подпись XML
Спецификация XML Signature
Что предусматривает спецификация XML Signature
Синтаксис XML Signature
Классы, используемые в XML Signatures
Программа EnvelopingXmlSignature
Сочетание XML Signing и XML Encryption
Итоги главы
Глава 7. Концепция безопасности, основанной
на идентификации пользователей в .NET
Аутентификация и авторизация
Модель безопасности .NET
Администрирование безопасности на уровне Windows
Определение пользователей и ролей в Windows
Определение прав доступа к общей папке
133
133
134
135
138
138
140
140
141
143
144
147
147
150
152
153
154
154
158
159
159
160
161
161
162
166
167
171
172
184
184
185
185
188
189
195
196
197
198
199
200
201
201
Стр.476
476
Оглавление
Средства безопасности в NTFS
Администрирование безопасности на уровне .NET
Разрешения
Интерфейс IPermission
Иерархия наследования IPermission
Класс PrincipalPermission
Безопасность, основанная на идентификации пользователей
Объекты Principal и Identity
Интерфейс IIdentity
Классы, реализующие интерфейс IIdentity
Класс GenericIdentity
Класс WindowsIdentity
Объекты-принципалы
Интерфейс IPrincipal
Класс GenericPrincipal
Класс WindowsPrincipal
Два подхода к безопасности, основанной
на идентификации пользователей
Императивный подход
Декларативный подход
Мандаты
Сетевые мандаты
Дисциплина безопасности
Принцип минимума полномочий
Раннее формулирование политики безопасности
Итоги главы
Глава 8. Доступ к коду в .NET
Необходимость в контроле доступа
Затраты против риска
Диапазон рисков
Степень доверия к сборке
Риски, связанные с обращением к традиционному коду
Безопасность, управляемый код и среда CLR
Промежуточный язык Microsoft
Верифицируемый код с контролем типов
Запросы разрешений
Использование CAS
Гибкий подход к обеспечению безопасности
Атака «с приманкой» и проход по стеку
Управление политиками безопасности при помощи
групп кода
Основные концепции управления политиками безопасности
Использование средства конфигурирования .NET
Framework Configuration
Использование утилиты Caspol.exe
201
205
206
207
208
209
211
212
212
212
213
214
216
217
218
220
222
222
229
231
232
232
232
233
233
234
234
235
236
238
239
240
241
241
242
243
243
244
244
245
246
260
Стр.477
Оглавление
477
Императивный и декларативный подходы в CAS
Концепция безопасности, основанная на свидетельствах
Класс Evidence
Получение свидетельства текущего домена приложения
Перечисление объектов Evidence
Пример программы WalkingThruEvidence
Доступ к WalkingThruEvidence через IIS
CAS в императивном стиле
Разрешения доступа кода
Производные классы CodeAccessPermission
Класс CodeAccessPermission
Класс UrlIdentityPermission
Работа с разрешениями CAS
Декларативное разрешение доступа
Синтаксис объявления атрибутов с квадратными скобками
Атрибут Url Identity Permission
Класс SecurityAction
Запросы разрешений
Пример программы PermissionRequest
Наборы разрешений
Класс PermissionSet
Определение набора разрешений при помощи
конфигурационного файла
Итоги главы
Глава 9. ASP.NET
Базовые механизмы безопасности
Аутентификация: Кто вы?
Авторизация: Дозволен ли вам доступ к этому ресурсу?
Заимствование прав: Приложение действует от чьего-то имени
Реализация механизма аутентификации в ASP.NET
Конфигурация ASP.NET
Как устроена система конфигурирования ASP.NET
и чем она хороша
Иерархия конфигурационных параметров
Описание
Аутентификация при помощи формы
Метод 1: хранение регистрационных данных в файле Web.config
Метод 2: хранение регистрационных данных в XML-файле
Файл Users.xml
Файл login.aspx
Метод 3: хранение регистрационных данных в базе данных
Классы для аутентификации при помощи форм
Аутентификация при помощи паспорта
Аутентификация Windows
Реализация авторизации ASP.NET
264
264
264
268
268
269
272
274
278
278
279
283
284
290
291
292
293
294
294
296
296
302
306
307
308
308
308
308
309
310
311
312
315
318
319
323
323
324
326
329
331
338
342
Стр.478
478
Оглавление
Авторизация на доступ к файлу
Авторизация на доступ к URL
Реализация заимствования прав ASP.NET
Итоги главы
Глава 10. Защита Web-служб
Основные техники защиты Web-служб
Защищенное соединение
Аутентификация и авторизация
Механизмы аутентификации в протоколе HTTP
Аутентификация Web-служб при помощи
заголовков SOAP
Архитектура сообщения SOAP
Создание прокси при помощи Visual Studio .NET
Технологии безопасности XML
Целостность
XML Signature
Защита данных и конфиденциальность
XML Encryption
Cпецификация управления ключами XML
(XKMS – XML Key Management Specification)
Язык разметки утверждений безопасности SAML
(Security Assertion Markup Language)
Глобальная архитектура XML Web-служб
(Global XML Web Services Architecture – GXA)
WS-Security
Начальная спецификация WS
Следующие шаги спецификаций
Почему WS-Security?
Распространение маркеров безопасности
Целостность сообщения
Конфиденциальность сообщения
Организации
Итоги главы
Приложение A. Пример атаки на код: перекрытие стека
Приложение B. Как работает шифр RSA
Модульная арифметика
Пример программы BigRSA
Пример программы CrackRSAWorkFactorDemo
Приложение C. Использование библиотеки GNU GMP
Установка Cygwin
Тестирование библиотеки Cygwin
Установка GMP
Удаление Cygwin из системы
342
343
345
345
346
347
347
353
353
356
356
358
360
360
361
364
364
367
367
368
369
371
372
372
373
375
376
385
387
388
392
392
393
396
400
400
405
408
411
Стр.479
Оглавление
479
Приложение D. Ресурсы по криптографии и безопасности
Общетеоретические и концептуальные книги
Книги по криптографической математике
Книги – руководства по безопасности
Популярные книги по криптографии
Группы новостей по криптографии
Полезные Web-сайты на темы криптографии
и безопасности
Приложение E. Исследование Web-служб
Зачем нужны Web-службы
Определение Web-служб
Фундамент Web-служб
Следующее поколение распределенных вычислений:
Web-службы
Преимущества Web-служб
Web-службы ASP.NET
Архитектура Web-служб
Модель кода для Web-службы
Разработка простой Web-службы
Concatenate.cs и Concatenate.asmx.cs
Директива @ WebService
Пространство имен System.Web.Services
Атрибут WebServiceAttribute
Класс WebService
Атрибут WebMethod
Управление сеансом
Протоколы
Доступ к Web-службе
Генерация прокси
Создание прокси-класса при помощи Wsdl.exe
Создание клиента Windows Form
Асинхронное программирование Web-служб
Два асинхронных метода (Begin и End)
Создание Web-службы ASP.NET «Калькулятор»
Web-службы все еще развиваются
Итоги
Предметный указатель
412
412
413
414
415
416
416
418
418
420
420
421
422
422
423
424
426
427
431
432
432
433
434
437
437
438
438
439
440
441
442
443
446
447
448
Стр.480