首页
社区
课程
招聘
[求助]数字签名问题
发表于: 2009-6-15 21:55 9361

[求助]数字签名问题

2009-6-15 21:55
9361
一个数字签名方案,要求A对消息m签名并秘密地将m发送给用户B,那么A是先签名再加密好,还是先加密再签名好啊??为什么啊??
    有人说先加密再签名的话,攻击方C可以用自己的签名去替换A的签名,这样就盗用了A的消息,但这样的话B方还是无法解密啊,此时是对C验证,应该使用与C共享的密钥或C的私钥对消息解密,但消息是用与A共享的密钥或A的公钥对消息加的密,虽然能验证时C发过来的,但仍然无法解密啊。。。
    有人能为小生解释解释吗??

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
看你发送者这个信息算不算秘密。算的话必须先签名后加密。
如果不算的话都行。但签名后加密比较好。除非要大家都能验证信息来源。

对于你的问题我们举个例子:
对于先加密后签名
ABC
A要把秘密给B。
那么
A有A的签名密匙和B的加密公匙
B有A的签名公匙和B的加密密匙

现在C加入。欺骗B说他也知道这个秘密(其实他不知道)
C把自己的签名公匙给B
因为C知道A的签名公匙,C可以把A给B的信息签名去掉再加上自己的签名
这个时候
B有用自己公匙加密的2条信息。明文是一样的。一个A签名一个C签名。B是无法知道谁真正知道秘密。

----
如果是先签名后加密。
因为C不可能知道加密密匙,所以不能解密后改签名。所以就不能欺骗B说他也知道秘密。

----
所以先加密后签名的缺陷不是C能知道秘密,而是B可能被欺骗。
因此签名都用在义务宣言上,表明自己说过的负责,不会不认帐。大家不会没事去冒名。(比如欠条)
如果对于别人会冒名的宣言。比如(出售机密。勒索也是这个性质~哈哈)如果签名没有被加密,B就可能和不知道秘密的人买秘密。hoho
2009-6-15 22:25
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
终于搞明白了,太谢谢了!我们后天就要考试。。。呵呵
2009-6-15 22:57
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我听到还有一种说法,好像也挺有道理的,就是当对消息先做签名再加密的话,如果A与B产生争议,仲裁的第三方可以比较方便的判断,否则第三方还需要得到密钥将消息解密。
2009-6-15 23:03
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
如果不算的话都行。但签名后加密比较好。除非要大家都能验证信息来源。

你这个情况就是后者
2009-6-15 23:11
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
6
我觉得谁先谁后都无所谓.
我们把签名和加密分开来说. 为了保证只有A和B都知道消息, 加密自然是用双方都知道的Key进行处理, 或是公开密钥体系的话, 用A的加密私钥再加B的加密公钥进行两轮加密.
签名时使用A的签名私钥进行签名.(其实如果用A的加密私钥进行加密的话, 签名已经可去省略了, 因为A的加密私钥只有A知道, 能用它来加密的只有A, 这本身就是一个签名认证).
对B来说, 用自己的加密私钥和A的加密公钥解密, 再用A的签名公钥进行验证即可.
对于第三人C来说, 如果想知道秘密, 他必须知道B的加密私钥; 如果想替换A的签名, 他必须能让B相信他提交的签名公钥是来自A的. 在公开密钥体系下, 这两件事都是难题.
2009-6-15 23:30
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
7
一个数字签名方案,要求A对消息m签名并秘密地将m发送给用户B,那么A是先签名再加密好,还是先加密再签名好啊?

都一樣。
为什么啊??
因為有 Signcryption 技術出來。
想知道先簽名 or 先加密的問題,請看  Reblocking RSA
2009-6-15 23:38
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
我没有理解。

C的目的不是冒名带你A签名。而是宣称C自己知道秘密啊。
比如:

A吧B的女儿绑架了。照了一个照片加上一些B家里的私人信息证明B的女儿在A手里。吧这些信息用B的加密公匙加密了。再用A的签名密匙签名。以电子邮件形式发给B。同时带上A的签名验证公匙
(A可能从B的朋友那拿的B加密公匙说有秘密要发给B,因为是公匙,B的朋友没有必要保密)

这个时候C截获了电子邮件。
用A的签名验证公匙去掉签名。在用自己的密匙签名。连同C的签名验证公匙发给B

这个时候B根本不知道谁绑架了他的女儿。

---
如果先签名后加密。C就不能做到让B相信他绑架的。
2009-6-15 23:54
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
如果没有加密,只有签名。因为签名可以用公匙去掉。所以任何人都可以知道明文。把明文重新写。在签名。就可以冒名绑架。

如果有加密。没有签名。任何人就可以直接拿着加密信息找B,说是他绑架的。只要他知道信和绑架有关。并不需要知道信的内容。

----
当然。可以在加密信息里写上绑架者的名字。把信交给B的时候报上名字。B就可以确信就是这个人绑架的。但这个名字就起到签名的作用了。还是先签名后加密。签名未必必须是公匙密码系统。
2009-6-16 00:02
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你说的有点混乱哦,
发送方A是使用的公钥加密,接收方B使用私钥解密的呦
2009-6-16 02:03
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
11
??什么地方不对啊??
加密是 先公钥处理 后密匙处理
签名是 先密匙处理 后公钥处理

不对吗?
2009-6-16 02:22
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
12
还是那句话, 签名和加密是两回事.
加密是保证信息不被第三方得知, 它只负责对信息(明文)进行处理, 并不关心这个信息(明文)中是否包括签名.
签名是保证信息来自特定的来源. 它可以对加密前的明文, 也可以针对加密后的密文; 当然, 在签名体系里, 肯定是要求签名者对信息(明文)负责, 即对明文签名的. 此外, 签名可以放在明文后面和明文一起加密, 也可以单独出来和明文分别传送, 也就是说, 签名本身不一定需要加密, 因此它在对信息加密前进行还是加密后进行都没有区别, 有区别的只是它对加密前的信息签名还是对加密后的信息签名.

你所举的绑架的例子中, 其实限制了两个条件: 1. A是对密文签名, 2. 签名和明文分别传送.
只有在这种情况下, C才可以把A的签名和签名公钥一起替换掉.
实际应用中, A肯定是对明文进行签名的, B用自己的私钥解密后检查明文签名, 自然知道C的签名是假的, A的签名是真的, 即使B不知道A和C的身份.
2009-6-16 22:29
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
13
哦, 我理解你的意思了.
因为签名本身没有被加密, 而且A的签名公钥是公开的, 因此无论A对明文还是密文签名, C都可以得到被签名的MD(信息摘要)值, 然后再用这个MD值重新做一个签名就行了. 这种情况下, C不需要知道明文的内容, 但可以假装知道明文的内容.
所以, 签名信息也需要用B的加密公钥进行加密, 以保证只能被B看到, 这是对签名信息的保护.
但结论还是一样的, 先对明文签名再对明文加密, 先对明文加密再对明文签名, 这两件事是没有区别的.
2009-6-16 22:38
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
14
恩,这是没区别的。(都对明文进行这也不算先后啊。算同时把。呵呵)估计是我表述错误。

不过还是感谢arab。

------
有一种情况(之接受指定目标的信息)需要对加密后的数据签名。比如

假设有一天高考试题用网络的话

出题的机构对试题加密后签名。
在考试当天发布解密密匙。

这样每个考场需要在解密之前确定试题来自出题机构。这里不存在仿冒的成分。有人仿冒考场也不会理之。
2009-6-17 13:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这个肯定是不行的,先后问题是有必要的;
如果先加密后签名的话,要验证签名,必须将签名和加密密文一起发送,这样,别人解惑后,如楼上所说,就可以将其签名扔掉,然后自己对加密密文重新进行签名发送
2011-11-30 17:12
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
16
问题是别人不可能解密, 请看6楼和13楼.
2011-12-1 11:17
0
游客
登录 | 注册 方可回帖
返回
//