• 从数学到密码学(十四)


    公钥的应用--加解密(二)

    加解密的问题搞定以后,我们还剩下一个重要的问题未解决:公钥的分发。有的同学可能有印象,会说,你这个公钥不是到处公布吗,有什么问题?请注意,公布公钥的时候同时要说明公钥拥有者的身份。

    如果有人别有用心(记为Eve),自己偷偷地生成一个公钥Y(记住,生成公钥的同时也会得到对应的私钥X),然后冒充Alice的身份,在网上发布消息说,Alice的公钥是Y。那么会产生什么后果?

    假设Bob不知情,相信了这条消息,他想给Alice发送一条加密消息(Bob不想让别人看到消息内容),即使Alice收到这条加密消息,也不能解密得到明文(Alice用自己的私钥解密只能得到一堆乱码),相反如果被Eve截获,则Eve能解密得到明文,因为它有对应的私钥。

    哦,我知道了,你肯定会说,原因在于Bob过于相信Eve散发的那条假消息(即Alice的公钥是Y)。如果Bob事先通过可信的渠道(比如说见面的方式)得到Alice的公钥,就不会出现这种情况了。

    对的,你说到了关键点上。但是,这只是理想状态。现实往往是,Bob与一个事先不认识的人(或者说虽然认识,但手头没有对方的公钥)通信,比如他们临时进行网络交易。Bob知道对方的名字(比如Carol----请注意这个名字甚至可以是假的,但Bob仍不会受骗,后面将详细解释,我们估且认为Carol这个人和名字确实真正存在),Bob需要Carol的公钥(以进行后续的加密),这时Carol只能临时传输公钥给Bob。Bob如何相信他收到的公钥(记为Y)没有被攻击者Eve篡改----请注意,在我们设定的网络攻击模型,任意消息可以随意被修改。现在,你无话可说了吧,还是回到原来的问题上,想想怎样解决它。

    我们换一下思路,公钥分发面临的问题其实很简单,就是要让Bob相信,Bob(经过“险恶”的Internet)收到的公钥Y确实就是Carol本人真正的公钥。谁能让Bob相信呢?只能是Carol,因为他是唯一的利益相关方。换句话说,Carol要做的,就是提供足够的证据让Bob相信,他收到的公钥确实是Carol本人的。本质上,这是一个如何证明某某事物真实性的问题(在本例中,就是要证明【Carol的公钥是Y】的真实性)。

    回到现实生活中,甲要让乙相信,2012年是世界末日。甲直接告诉乙,乙不相信,认为甲在骗他,甲该怎么办呢?甲很聪明,找了个乙信任的人丙,让丙告诉甲:2012年是世界末日。请注意,这里多出了个第三方:丙,而且是乙相信(或信任)的第三方。我们也不管甲是如何让丙对乙说了这么一番话,无论甲用了哪种手段,威逼利诱,等等。总之。现在乙相信了“2012年是世界末日”这个事实,因为这是乙信任的人----丙----说的。乙决定不再工作,把所有的动产不动产全部变现,每天吃好、喝好、玩好、睡好,享受2011剩下的不多的日子……

    现在你明白了吧,Carol面临和甲一样的处境(只不过Bob不敢轻易相信自己收到的公钥Y的真实性)。Carol听说了甲、乙、丙的故事,也决定请Bob信任的第三方Trent,由Trent来告知Bob:嗨,Bob,Carol的公钥就是Y。但是Trent很忙,他没办法临时给Carol做证明。Carol早就预料到了这一点,他心想,不就是让Trent给Bob一个证明(即证明Carol的公钥是Y)吗?既然Trent可能临时没时间做证明,我何不请Trent提前做个证明呢。于是Carol事先请Trent写了份书面证明,其内容如下:现证明,Carol的公钥是Y,证明人:Trent。然后Trent在证明材料末尾签上他的大名。

    请注意其中的关键细节,仅有要证明的内容(即”Carol的公钥是Y“)是无法让Bob相信内容的真实性,还必须要有证明人的可信证据,比如这里是Trent的签名。

    到此处,让Bob相信收到的公钥Y是Carol本人的公钥,这一问题就归结为,Carol给Bob发送公钥的同时,再提供一份Carol的公钥证明。

    然而,问题又产生了。如何让Bob确信,Carol传给Bob的这份公钥证明是可信的?请注意,即使是Trent开具的公钥证明也是通过Internet来传递。
    我们是否按下葫芦又起了瓢?是不是将焦点从一个信任问题(如何让Bob相信对方的公钥)转向另一个信任问题(如何让Bob相信一份证明)?

    请看下一节:数字签名

  • 相关阅读:
    jquery表格伸展
    jquery单选框 复选框表格高亮 选中
    jquery表单验证
    jquery下拉框实现将左边的选项添加到右边区域
    jquery checkbox选中状态
    关于.net页面提交后css样式不生效的发现
    asp.net页面后退,重复弹出上一页对话框处理办法
    这几天做完简易酒店管理系统,对Sql Server执行计划的浅显了解
    温故而知新--sql存储过程复习
    网站前端性能优化之javascript和css
  • 原文地址:https://www.cnblogs.com/efzju/p/2250553.html
Copyright © 2020-2023  润新知