安全性与密码术一直是计算工业的重要组成部分。在过去几年中,两者的重要性显著提高。Microsoft's.NETFramework为开发人员提供了一个实现应用程序安全性的功能强大的全新工具包。本书为在基于.NET的平台上实现安全性和密码术特性提供了实用通俗的指导。作者提供了大量用C#和VisualBasic.NET编写的清晰且有针对性的示例,并详细阐述了这些代码的工作原理。全书逻辑清晰、条理清楚、易于理解。书中所有示例代码都可以从WWW.Objectinnovations.com/library/books/books dotnet.html站点中下载。
本书主要目的
强化密码术的基本理论,以便理解.NET Framework安全工具的功能
学会使用对称算法、非对称算法和数字签名。
掌握传统的加密编程以及XML加密和XML签名等新技术。
介绍如何将这些工具应用于ASP.NET安全性和Web服务安全性。
第1章 .NET密码术与安全性简介
1.1 本书的特点
1.2 密码术与安全性的特性
1.2.1 密码术与安全性的重要性
1.2.2 密码术与安全性的功能
1.3 WindOWS安全性的演化
1.4 .NETFramework与CLR
1.4.1 .NETFramework简化安全性的方法
1.4.2 可靠性与.NET平台
1.4.3 托管代码和类型安全
1.5 .NET密码术编程
1.6 .NET安全编程
1.6.1 基于角色的安全性和主名
1.6.2 CAS、证据、策略和权限
1.7 小结
第2章 密码术基础
2.1 安全性与保密
2.1.1 基本的密码术术语
2.1.2 秘密密钥与秘密算法
2.1.3 古典保密技术
2.1.4 穷举攻击工作因数
2.1.5 任意精度运算
2.2 隐写术
2.3 现代密码
2;3.1 密码术与.NETFramework
2.3.2对称密码术
2.3.3 非对称密码术
2.3.4密码算法
2.3.5 密码协议
2.4 密码攻击
2.5 人际交流与信任问题
2.5.1 风险和利益
2.5.2其他重要概念
2.6 小结
第3章 对称密码术
3.1 对称密码
3.1.1 DES
3.1.2 操作模式
3.1.3 TripleDES
3.1.4 Rijndael
3.1.5 RC2
3.2 使用对称密码术的.NET编程
3.2.1 主要的密码术类
3.2.2 SymmetricAlgorithm类
3.2.3 SymmetricAlgorithm的派生类
3.2.4 SymmetricAlgorithms示例
3.2.5 密码流
3.2.6 避免使用弱密钥
3.3 密钥交换问题
3.3.1 加密的散列代码和消息完整性
3.3.2 加密的散列函数和消息完整性
3.4 小结
第4章 非对称密码术
4.1 对称算法存在的问题
4.1.1 密钥交换问题
4.1.2 信任问题
4.2 非对称密码术的原理
4.2.1 使用非对称密码术
4.2.2密码锁模型
4.2.3 陷门单向函数
4.2.4 非对称加密方法的优点
4.2.5 非对称算法与对称算法的结合
4.3 现有的非对称算法
4.4 RSA:最常用的非对称算法
4.4.1 RSA基础
4.4.2 一个小型的RSA示例
4.5 可证性问题
4.6 使用非对称密码术的.NET编程
4.6.1 一个RSA算法示例
4.6.2 将密钥保存为XML格式
4.7 数字证书
4.8 小结
第5章 数字签名
5.1 散列算法
5.1.1 优秀散列函数的特征
5.1.2 .NET提供的散列算法
5.1.3 HashAlgorithm类
5.1.4 MD5和SHA类
5.1.5 KeyedHashAlgorithm类
5.1.6 对象标识符
5.2,;数字签名的工作原理
5.3 用作数字签名算法的RSA
5.4 数字签名算法
5.4.1 有关群论的一些数学概念
5.4.2 离散对数问题
5.4.3 DSA的工作原理
5.5 非对称算法类的层次结构
5.5.1 DSACryptoServiceProvider类
5.5.2 ——个DSA编程示例
5.6小结
第6章 XML密码术
6.1 XML加密
6.1.1 XML加密与SSL/TLS
6.1.2 XML加密规范
6.1.3 XML加密提供的功能
6.1.4 XML加密语法
6.1.5 XML加密的工作原理
6.1.6 XML加密中使用的类
6.1.7 传输非对称密钥信息
6.1.8 XmlEncryption示例
6.2 XML签名
6.2.1 XML签名规范
6.2.2 XML签名提供的功能
6.2.3 XML签名语法
6.2.4 XML签名中使用的类
6.2.5 EnvelopingXmlSignature示例
6.3 结合XML签名和XML加密
6.4 小结
第7章 .NET基于用户的安全性
7.1 身份验证与授权
7.2 .NET安全性模型
7.3 管理Windows的安全性
7.3.1 在Windows中定义用户和角色
7.3.2 在Windows中定义共享文件夹的权限
7.3.3 在Windows上定义NTFS的安全性
7.4 管理.NET的安全性
7.5 权限
7.5.1 1Permission接口
7.5.2 1Permission的继承层次结构
7.5.3 PrincipaiPermission类
7.6 基于用户的安全性
7.6.1 主名和身份对象
7.6.2 11dentity接口
7.6.3 11dentity实现类
7.6.4 Genericldentity类
7.6.5 Windowsldentity类
7.6.6 主名对象
7.6.7 1Principal接口
7.6.8 GenericPrincipal类
7.6.9 WindowsPrincipal类
7.7 实现基于用户的安全性的两种方法
7.7.1 强制式的基于用户的安全性
7.7.2 声明式的基于用户的安全性
7.8 凭据
7.9 安全性准则
7.9.1 最小权限原则
7.9.2 尽早建立安全策略
7.10 小结
第8章 .NET代码访问安全性
8.1 代码访问安全性的要求
8.1.1 成本与风险
8.1.2 风险范围
8.1.3 程序集的可信任性
8.1.4 调用非托管代码的风险
8.2 安全性、托管代码和CLR
8.2.1 Microsoft中间语言
8.2.2 可验证类型安全的代码
8.2.3 拒绝和要求权限
8.3 CAS的使用
8.3.1 灵活的安全性
8.3.2 引诱攻击与遍历堆栈
8.4 使用代码组管理安全策略
8.4.1 安全策略管理的基本概念
8.4.2 使用.NETFrameworkConllguration工具
8.4.3 Casp01.exe实用程序的使用
8.5 强制式CAS与声明式CAS
8.6 基于证据的安全性
8.6.1 Evidence类
8.6.2 获取当前的应用域Evidence对象
8.6.3 枚举Evidence对象
8.6.4 WalkingThruEvidence示例
8.6.5 通过ⅡS访问WalkingThruEvidence示例”
8.6.6 强制式CAS
8.7 代码访问权限
8.7.1 由CodeAccessPermission派生的类
8.7.2 CodeAccessPermission类
8.7.3 UrlldentityPermission类
8.7.4 使用代码访问权限
8.8 声明式代码访问权限
8.8.1 方括号特性声明语法
8.8.2 URL身份权限特性
8.8.3 SecurityAction类
8.9 权限请求
8;10 权限集
8.10.1 PermissionSet类
8.10.2 在配置文件中定义权限集
8.11 小结
第9章 ASP.NET安全性
9.1 基本安全机制
9.1.1 身份验证
9.1.2 授权
9.1.3 角色扮演
9.2 实现ASP.NET身份验证
9.3 ASP.NET配置
9.3.1 ASP.NET配置系统的用途与优点
9.3.2 配置的层次结构
9.3.3 说明
9.4 Forms身份验证
9.4.1 方法1:在Web.conflg文件中存储凭据
9.4.2 方法2:在XML文件中存储凭据
·9.4.3 Users.xml文件
9.4.4 login.aspx文件
9.4.5 方法3:在数据库中存储凭据
9.5 Forms身份验证类
9.6 Passport身份验证
9.7 WindOWS身份验证
9.8 实现ASP.NET授权
9.8.1 文件授权
9.8.2 URL授权
9.9 实现ASP.NET角色扮演
9.10 小结
第10章 Web服务安全,陛
10.1 设置Web服务安全性的基本技术
10.1.1 安全连接
10.1.2 身份验证和授权
10.1.3 用于HTTP的身份验证机制
10.2 使用SoapHeader基类验证Web服务
10.2.1 SOAP消息体系结构
10.2.2 使用VisualStudio.NET创建一个代理程序
10.2.3 XML安全技术
10.2.4 完整性
10.2.5 XML签名
10.2.6 数据保护和隐私
10.2.7 XML加密
10.2.8 XML密钥管理规范(XKMS)
10.2.9 安全断言标记语言(SAML)
10.2.10 通用型XMLWeb服务体系结构(GXA)
10.2.11 WS—Security
10.2.12 WS初始规范
10.2.13 WS后续规范
10.2.14 使用WS-Securib/的原因
10.2.15 安全性令牌传送
10.2.16 消息完整性
10.2.17消息机密性
10.2.18 相关的组织
10.3 小结
附录A 堆栈溢出安全攻击示例
附录B RSA密码的工作原理
附录C GNUGMP库的用法
附录D 密码术与安全性资源
附录E Web服务研究
PeterThorsteinson是一位系统分析家,有着10年以上从事编程、教学以及为软件开发研究指导性材料的经验。他的专业兴趣有C++、Java和Crt,以及ATL、COM+、.NET和J2EE。Peter拥有Manitoba大学的电子工程学学士学位,与他人合著了.NET Architecture and ProgrammingUsingVfsualC++和ApplicationDevelopmentUsingVisualBasic.NET,这两本著作均由PrenticeHall PTR出版。 G.Gnana ArunGanesh是一位开发人员、作家和.NET顾问,他领导了WebProdigies的.NET技术小组,同时也是InfomlT网站上.NET Reference Guide论坛的主持人。Arun是Objectlnnovations的特邀作家之一,主要从事基础软件技术的培训。他在各种与.NET相关的Web站点上已发表过至少50篇有关.NET技术的文章。
在过去几年中,安全性和密码术技术对于Windows用户和软件开发人员来说显得越来越重要。此外,在某些方面,32位Windows的安全和密码编码能力已经与许多安全性要求很高的微型和大型计算平台相当。现在,随着.NET的出现,实现计算平台的安全性变得更容易。当然,这要求我们投入大量的精力去理解.NET的概念,并学习更多必需的技巧来利用.NET所能提供的各种安全特性。实际上,本书的目的就在于此。虽然Win32CWindows库也提供了许多相同的功能,但是.NET的出现使得安全性和密码术编程比以往任何时候都更简单,功能也更强大。.NETSecurityFramework提供了一组强大的、使用更加简便的安全性和密码术类,本书对该架构进行了详细探讨。
本书全面阐述如何在.NET平台上实现密码术和安全性功能,实用性强,易于理解。本书是一本应用指南,提供了大量清晰的、有针对性的代码示例。
本书结构
本书共分10章,另有5个附录。第1章介绍.NET平台上的密码术和安全性,并在非技术层面分析各个主题,详细的讨论则留到后续章节;此外,还讨论了本书的编排思路,剖析了密码术和安全性两大主题间的联系:该章的目的不是提出技术难点或示例代码,而是引导您从概念层次上学习并总体上了解.NET平台上的密码术与安全性技术。第2章为后续章节讨论的主题提供了坚实的理论基础;还提出一个论点:所有的安全性都基于密码术,为了理解密码术的真正含义,就必须先掌握有关密码术概念的基本理论。第3章到第6章提供了大量的.NET编程示例,这些示例分别使用了对称算法、非对称算法、数字签名以及XML密码术。第7章和第8章分别从基于用户的安全性和代码访问安全性的角度介绍.NET编程。第9章介绍ASP.NET安全编程,第10章介绍Web服务安全编程。
本书编排精当,脉络清晰,介绍了.NET密码术与安全性的各个方面。附录包含一些补充内容,如安全攻击和其他与密码术相关的数学问题。
本书是一本实用指南,着眼于实际的.NET安全编程,而不是管理性的安全任务。采用实例引导方式,帮助您深刻认识安全性和密码术在现代软件开发中的重要性。通过学习本书,您将能够开始应用.NETSecurityFramework来构建重要的应用程序。
示例程序
在学习诸如.NET Security Framework的重要类库时,最好能多读、多写程序。为便于您学习,本书提供了许多演示.NET相关特性的小程序,这些程序都附有清晰的文本标签,并可以在随本书发售的软件中获取。本书的Web站点上也提供了这些示例程序的自压缩文件,解压时会创建一个默认根为c:\OI\NetSecurity的目录结构。示例程序从第2章开始,分别位于Chap02、Chap03…等目录中。章节的示例代码都位于相应的文件夹中。文件夹的名称用文本做了明确标识。
本书是.NET系列丛书之一,本系列其他丛书的示例程序位于\01文件夹下相应的目录中,这样,.NET系列丛书中的所有示例都被安装在同一个根目录下。这些程序只是作为学习指导,不能应用于任何商业软件。所有软件(包括使用指导)都不具有任何形式的授权。
Web站点本系列丛书的Web站点位于http://www.objectinnovations.com/dotnet.htmo这个Web站点提供了下载本书示例程序的链接。