密码技术(九、一)之数字签名

数字签名

   ——消息到底是谁写的

数字签名

从消息认证码到数字签名

  • 消息认证码的局限性
     通过前面介绍的消息认证码,我们尅识别消息是否被篡改或者发送者身份是否被伪装,也就是可以校验消息的完整性,还可以对消息进行认证。然而,消息认证码是无法防止否认
     消息认证码值之所以无法防止否认,是因为消息认证码需要在发送者和接收者两者之间共享同一个密钥。因为密钥是共享的,所以能够使用消息认证码计算出正确的MAC值并不只有发送者,接收者也可以计算出正确的MAC值。由于双方都能计算出正确的MAC值,因此对于第三方来说,我们是无法证明这条消息的确是由发送者生成的。
  • 通过数字签名解决问题
     我们假设发送者使用密钥是一个只有自己才知道的私钥。当发送者发送消息时,用私钥生成一个“签名”。相对地,接收者则使用一个和发送者不同的密钥对签名进行验证。接收者的密钥无法根据消息生成签名,却可以对签名进行验证,也就是说可以知道这个签名是由发送者的密钥计算出来的。这就是数字签名

签名的生成和验证

 在数字签名技术中,出现了下面的两种行为。

  • 生成消息签名的行为
  • 验证消息签名的行为

生成消息签名 这一行为是由消息的发送者Alice来完成的,也称为“对消息签名”。生成签名就是根据消息内容计算数字签名的值,这个行为意味着“我认可该消息的内容”
验证数字签名 这一行为一般是由消息的接收者Bob来完成的,但也可以由验证消息的第三方来完成,这里的第三方在之前一直被命名为验证者Victor。验证签名就是检查该消息的签名是否真的属于Alice,验证的结果可以是成功或者失败,成功就意味着这个签名是否属于Alice的,失败则意味着这个签名不是属于Alice的。
 在数字签名中,生成签名和验证签名者两个行为需要使用各自专用高德密钥来完成。这不就是公钥密码么,在公钥密码中,密钥分为加密密钥和解密密钥,用加密密钥无法进行解密。此外,解密密钥只能由需要解密的人持有,而加密密钥则是任何需要加密的人都可以持有的。实际上,数字签名就是通过将公钥密码“反过来用”而实现的。

公钥密码与数字签名的密钥使用方式.png

公钥密码与数字签名

 先回顾一下前面说的公钥密码


用公钥进行加密(公钥密码)x.png

  数字签名中也会使用到公钥和私钥,不过,这两个密钥多的用法和公钥密码是相反的,即用私钥加密相当于生成签名,而用公钥解密则相当于验证签名

用私钥进行加密(数字签名).png

 用私钥进行加密这一行为只能由持有私钥的人完成,正事基于这一事实,我们才可以将用私钥加密的密文作为签名来对待。
 由于公钥是对外公开的,因此任何都能够用公钥进行解密,这就产生了一个很大的好处,即任何人都能对签名进行验证。
公钥密码中,任何人都能进行加密(公钥密码).png

数字签名中,任何人都能够验证签名(数字签名).png

数字签名的方法

 下面我们来介绍两种生成和验证数字签名的方法

  • 直接对消息签名的方法
  • 对消息的散列值签名的方法
     直接对消息签名的方法比较容易理解,但是在实际过程中,我们并不会使用;对消息散列值签名的方法,稍微复杂一点,但实际过程中,我们一般都是使用这种方法。

直接对消息签名的方法

Alice对消息签名,Bob验证签名.png
  1. Alice用自己的私钥对消息进行加密
  2. Alice将消息和签名发送给Bob
  3. Bob用Alice的公钥对收到的签名进行解密
  4. Bob将签名解密后得到的消息与Alice直接发送的消息进行对比。

对消息的散列值签名的方法

Alice对消息的散列值签名,Bob验证签名.png
  1. Alice用单向散列函数计算的消息的散列值。
  2. Alice用自己的私钥对散列值进行加密。
  3. Alice将消息和签名发送给Bob。
  4. Bob用Alice的公钥对收到的签名进行解密。
  5. Bob将签名解密后得到的散列值与Alice直接发送的消息的散列值进行对比。


    Alice对消息的散列值签名,Bob验证签名(按时间顺序).png

对数字签名的疑问

疑问:
用私钥加密消息得到签名,然后再用公钥解密消息并验证签名,密文为什么能欧具备验证签名的意义呢?
解答:
虽然实际进行的处理内容是用私钥进行加密,但这里的加密并非是为了保证机密性而进行的。
数字签名时利用了“没有私钥的人事实上无法生成使用该私钥所生成的密文”这一性质来实现的。这里所生成的密文并非被用于保证机密性,而是被用于代表一种只有持有该密钥的人才能够生成的信息
这样的信息一般称为认证符号(authenticator),消息认证码也是认证符号的一种,数字签名也是一样的。数字签名时通过使用私钥进行加密来产生认证符号的。


疑问:
消息没有经过加密就发送了,这样不就无法保证消息的机密性了吗?
解答:
的确如此,数字签名的作用本来就不是保证机密性。
如果需要保证机密性,则可以不直接发送消息,而是将消息进行加密之后再发发送。


疑问:
数字签名只不过是计算机上一种数据,貌似很容被复制。但如果可以轻易复制出相同的内容,那还能用作签名吗?
解答:
虽然叫作签名,但它也仅仅是计算上的一种普通的数据而已。数字签名可以附加在消息的末尾,也可以和消息分离,单独作为文件来发送,但无论如何,我们都可以像复制普通文件一样,很容易的复制出任意个内容相同的副本。
但是,签名可以被复制,并不意味着签名就没有意义,因为签名所表达的意义是特定的签名者对特定的消息进行了签名,即便签名被复制,也不会改变签名者和消息的内容。
真正重要的是特定签名者与特定的消息绑定在了一起这一事实。


疑问:
数字签名只不过是普通的数据,消息和签名两者都是可以任意修改的,这样的签名还有意义吗?
解答:
的确,签名之后也可以对消息和签名进行修改,但是这样修改之后,验证签名就会失败,进行验证的人就能够发现这一修改行为。数字签名所要实现的并不是防止修改,而是识别修改。修改没问题,但验证签名会失败。
追问:
能不能同时修改消息和签名,是的验证签名能够成功呢?
解答:
事实上是做不到的。
以对散列值签名为例,只要消息被修改1个比特,重新计算的散列值都会发生很大的变化,要拼凑出合法的签名,必须在不知道私钥的前提下对新产生的散列值进行加密,事实上这是无法做到的,因为不知道私钥就无法生成用该私钥才能生成的密文。


疑问:
如果得到了某人的数字签名,应该就可以把签名的部分提取出来附加在别的消息后面,这样的还有效吗?
解答:
的确,可以将签名部分提取出来并附加到别的消息后面,但是严重签名会失败。总之,将一份签名附加在别的消息后面,验证签名就会事变。


疑问:
如果是纸质的借据,只要将原件撕毁就可以作废。但是带有数字签名的借据只是计算机文件,将其删除也无法保证确实已经作废,因为不知道其他地方是否还有副本。无法作废的签名是不是非常不方便呢?
解答:
的确,带有数字签名的借据即便删除掉也无法作废,要作废带有数字签名的借据,可以重新创建一份相当于收据的文书,并让对方在这份文书上加上数字签名。


疑问:
消息认证码无法防止否认,为什么数字签名就能够防止否认呢?
解答:
防止否认与“谁持有密钥”这一问题密切相关。
在消息认证码中,发送者和接收者都能够计算MAC值,相对地,在数字签名中,能够生成签名的密钥(私钥)只有发送者才持有,因此发送者没法说,“这个签名不是我生成的”,当然了,如果数字签名的发送者说“我的私钥被盗了”,也是有可能进行否认的。


疑问:
纸质借据如果不签名盖章的话,总是觉得不太放心。数字签名真的能够有效代替现实世界中的签名和盖章吗?
解答:
数字签名技术有很多优点,例如不需要物理交换文书就能够签订合同,以及可以对计算机的任意数据进行签名等。然后对于实际上能不能代替签名这个问题还是有一些不安的因素。其中一个很大的原因恐怕是签订合同、进行认证这样的行为是一种社会的行为。
数字签名技术在未来将发挥重要的作用,但是单词认为数字签名笔普通的印章或手印签名更可信是很危险的。一种新技术只有先被人民广泛认知,并对各种问题制定相应的解决办法只好,才能被社会真正接受。


该系列的主要内容来自《图解密码技术第三版》
我只是知识的搬运工
文章中的插图来源于原著

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容