3. 应用层安全——数字签名
3.1 数字签名
(1)数字签名细节
①A有一个密钥对(A的私钥SK和公钥PK)。发送文件前先使用哈希函数生成该文件的摘要,再使用A的私钥加密摘要(这个过程称为签名,私钥持有者才能做这个操作)。
②然后将加密后的摘要、A的公钥和文件(不加密该文件)一起发送给B。
③B收到后,将加了密的摘要使用A的公钥进行解密。同时B将收到的文件通过哈希函数生成一个摘要,比较这两个摘要,如果一样,就认为A的签名有效,说明该文件来源可靠,也没被修改过。
(2)优点
①能确定消息是否由发送方签名并发出来的,因为别人假冒不了发送方的签名。
②能确定消息的完整性,因为数字签名的特点代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化,不同的文件将得到不同的数字摘要。
3.2 数字证书颁发
(1)数字证书颁发机构
①在互联网上,通信双方自己生成的密钥对,将公钥出示给对方来验证自己的签名,一方很难断定对方的身份是否真实、合法。
②于是互联网上使用的密钥对是由专门的机构发放,在计算机中这些密钥对是以数字证书的形式出现的,其包含了使用者个人的信息、发证机构。
③电子商务认证授权机构(Certificate Authority,CA),也称为电子商务认证中心是负责发放和管理数字证书的权威机构。电子商务交易的双方可以不信任对方,但他们都是信任CA这是个权威机构,所以也信任由其颁发的数字证书。CA承担公钥体系中公钥合法性检验的责任。
(2)使用CA颁发的证书验证对方身份的合法性
①A向CA提交证书申请(注意,在这之前A须先信任CA证书颁发机构,见3.3节的操作!),CA核实A提交的信息,为A产生一个数字证书,该数字证书包含A的个人信息、A的私钥、A的公钥还有证书颁发者等信息。这个证书是用CA的私钥签名的(注意不是A的私钥!)。当然,A也可以从证书中单独导出A的公钥(经CA数字签名的)。
②A给B发送一个数字签名的文档,这时B首先核实A的身份,验证A出示的证书(A的公钥PKA)是否是CA颁发的。当然B计算机首先要有CA的公钥,然后,使用CA的公钥验证A证书是否来自CA的认证。
③验证通过后,再使用A的公钥验证由A签名的摘要。这样A和B虽然都是网络中的个人或企业,彼此可能互不信任,没办法知道对方的身份,只要A出示的证书是B信任的证书颁发机构颁发的,B就可以使用该证书机构的公钥验证A出示的证书(公钥)是否来自该CA,从而验证了A的身份。
3.3 实战:发送数字签名和数字加密的邮件
(1)安装证书颁发机构:(模拟互联网的CA机构)
①在Win2003CA虚拟机安装Windows组件,选中“应用程序服务器”和“证书服务”。由于用户需要通过访问证书颁发机构的网站申请证书,所以要同时安装“应用程服务器”,即IIS服务。
②在“CA类型”对话框中选择“独立根CA”(独立CA需要核实申请者信息真实性才颁发,而企业CA是通过企业内网的Active Directory(活动目录)来验证申请者的身份)
③在出现的“CA识别信息”对话框中输入CA的公用名称(如5ieduCA)、证书有效期默认值。
④在“证书数据库设置”对话框中指定证书数据库路径和证书数据库日志路径。
⑤安装完成后,可以从“开始”→“所有程序”→“管理工具”中打开证书颁发机构管理工具。同时,在IIS的默认网站目录下会生成一个虚拟目录CertSrv,网络中的计算机通过访问默认网站的该目录申请数字证书。
(2)申请和颁发电子邮件数字证书
①在WinXP1上申请电子邮件证书之前,首先要信任证书颁发机构,就是将CA的公钥添加到受信任的根证书颁分机构,这样就表示XP1信任了该证书颁发机构。方法是:下载一个CA证书:http//192.168.80.20/certsrv/,然后“下载一个CA证书、证书链或CRL”→“安装此CA证书链”。可以打开IE的“Internet选项”→“内容”→“证书”→“受信任的根证书颁分机构”选项卡下查看到“5ieduCA”,这意味着当前用户信任了该证书颁发机构,也就拥有了该机构的公钥。
②信任该机构以后,可以去申请电子邮件证书。返回主页,点击“申请一个证书”→“高级证书申请”→“创建并向此CA提交一个申请”,在对话框中输入识别信息:姓名、电子邮件、公司、部门,中国就写cn。(注意填写的信息不要有中文)→证书类型中选择“电子邮件保护证书”,同时选中“标记密钥为可导出”(这样用户可以备份该证书!)→“提交”
③在Win2003CA上审核WinXP1刚刚申请的证书,选中“挂起的申请”,然后选择刚才的申请,最后再“颁发”。
④WinXP1,返回申请的数字证书首页,点击“查看挂起的证书申请的状态”→“电子邮件保护证书”→选中刚审核下来的证书,再“安装此证书”。然后打开“Internet选项”,再次查看证书,在“个人”选项卡下,可以看到刚才安装的证书内容(如证书目的、颁发者、颁发给、有效期以及该证书的CA私钥))
(3)配置Outlook Express账户绑定数字证书
①在Outlook中添加邮件账号:[email protected]以便用该邮箱收发邮件。主要注意两处设置:A.接收邮件服务器的帐户名为net5iedu。B发送邮件服务器由于默认不允许匿名中继,所以要勾选“我的服务器要求身份验证”。(具体可参考搜狐的邮箱设置帮助)
②Outlook账号绑定数字证书:选择pop3.sohu.com账号,在“安全”选项卡中,选中用于数字签名的证书。(注意,如果看不到申请的数字证书,要检查当时申请数字证书时填写的电子邮件地址和Outlook中配置的电子邮件地址是否一样。如果不同,要重新申请证书)
③在“加密首选项”也选项该证书。因为用户发送签名的邮件时会把用户公钥一起发给接收者,接收者就可以使用这个公钥发送加密邮件。
(4)发送数字签名的邮件
①现在可以给[email protected]发送一封签名的邮件了,在Outlook中写好邮件后,选中工具栏中的“签名”,再点击“发送”。注意这时还不能选择“加密”,因为加密需要收件人的公钥,而现在还没有收件人的公钥。
②在WinXP2上配置[email protected]邮箱,并接收来自[email protected]的邮件时,发会现邮件前面带有一个签名的标记,同时查看该邮件时,会弹出“安全警告”。这是可以理解,因为WinXP2现在还没有添加对证书颁发机构的信任。可以参照前面的操作安装对证书颁发机构的信任。
③信任了证书颁发机构以后,就可以正常查看来自[email protected]的邮件了,只是这些邮件都会有带有数字签名的标记,同时还自动创建了一个联系人。
(5)发送加密的邮件
①经过上述发送一封数字签名的邮件后,由于邮件带有[email protected]的公钥,所以会在outlook界面的左侧“联系人”中出现“5iedu”,在右击出现的属性对话框中看到该数字证书。
②双击“5iedu”联系人,可以给该人发送一封加密的邮件。注意发送加密邮件时都是利用对方给的公钥来加密的。由于此时SantaClaus拥有了对方的公钥,所以就可以给5iedu发送加密邮件了。注意两点:A.查看加密邮件要用相应的私钥才可以解密,但SantaClaus并没有对方的私匙。因此,当发送完邮件后,是无法查看己发送邮件中刚刚发送的邮件。注意,是连自己发送的邮件都无法查看。B.由于SantaClaus没有自己的邮件证书,所以无法发送签名邮件。
③在WinXP1的Outlook查看来自SantaClaus的邮件,会看到该邮件是被加密的。但由于5iedu拥有证书的私钥,所以可以查看该邮件。但由于5iedu并没有SantaClaus的公钥,所以不能给SantaClaus发送加密邮件。