作者znmkhxrw (QQ)
看板Math
标题[其他] 没有杂凑函数的数位签章
时间Sat Apr 16 03:32:02 2022
想请问在 [
不考虑计算量跟速度] 下
如果直接对整个讯息做只有非对称加密的数位签章 会有被窜改然後不被发觉的可能性吗?
我觉得没有, 即杂凑函数只是让计算量降低而已, 推论请见下:
假设我使用的非对称加密是RSA,
公钥是K = (N, e), 私钥是k =(N, d), 其中公钥是传送者, 接受者, 窜改者都看得到,
私钥只有传送者看得到
今天我有讯息m跟用k加密的讯息m_k, 传送数对(m, m_k)出去
接着有窜改者拦截到讯息後把m改成M, 改传送(M, X)过去, 但是他瞒不过接受端的人啊..
.因为:
1. 若X=m_k, 接受者用K把m_k解密後得到m, 就发现m不等於M, 因此认定M无效
2. 若X=乱码, 接受者用K把乱码解密也是乱码当然不等於m, 因此认定M无效
3. 若X=M_k, 接受者是可以把M_k解密後得到M, 然後得到误导後的资讯M=M, 但是X=M_k相
当於他要
破解RSA去得到私钥k, 这当作不可能
因此我认为杂凑函数在
确认是正确讯息上是不需要的
查了很多中英文关键字没找到类似的, 我纯粹好奇任何一个算法一定都有其必然理由, 少
了之後会有什麽影响, 多了是为了什麽好处之类的...
所以数位签证的杂凑函数是:
(1) 同时降低计算量与确认讯息正确性
(2) 只有降低计算量
(1)或(2)对我来说差很多所以想厘清XD
谢谢帮忙~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.102.225.191 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Math/M.1650051124.A.8FA.html
※ 编辑: znmkhxrw (59.102.225.191 台湾), 04/16/2022 03:33:19
1F:→ int0x80 : 跟传整个m_k相比 的确在正确性上不会比较安全04/16 03:58
2F:→ int0x80 : 毕竟杂凑函数是公开的 只要有能力造一组合法(M,X)04/16 04:00
3F:→ int0x80 : 就能造出合法的用杂凑的签章04/16 04:02
4F:推 AndyLee76 : 的确hash不是必要,这点在维基上有写04/16 09:11
5F:→ AndyLee76 : 只是hash内容远小於原文,在计算加密上比较快04/16 09:15
谢楼上i, A大分享
6F:推 ilway25 : 估狗 why hash before signing 有很多回答04/16 09:51
7F:推 ilway25 : 例如有可能可以伪造签名,维基 Existential forger04/16 09:56
8F:→ ilway25 : y04/16 09:56
谢谢关键字, 我是查digital signature without hash, 我再试试看你的关键字
另外wiki讲的hash有三个功能, efficiency, compatibility, integrity
前两者是实务问题不论, 他在integrity那边讲说如果直接加密原文, 那分的多段可能被
窜改者删除或是换顺序
但是这样的话接受者在解密後也会发现跟一起送来的正确讯息m有出入, 或是跟误导的错
误讯息M不合, 不管哪种case接受者都会认为是无效签名
不过existential forger应该就是有办法蒙骗过去, 我再看看, 谢谢
9F:→ int0x80 : 睡醒突然发现昨天讲错了抱歉 造的出合法(M,M_k)不代04/16 10:42
※ 编辑: znmkhxrw (114.137.187.125 台湾), 04/16/2022 10:54:31
10F:→ int0x80 : 表能造出加密的hash(M) 04/16 10:45
11F:推 LPH66 : 这里的 integrity 应该是指这种状况:04/17 01:11
12F:→ LPH66 : 现代的加密函数都是所谓区块加密, 会把讯息切成固定04/17 01:12
13F:→ LPH66 : 长度个别加密, 那我想要窜改的话我只要把对应区块04/17 01:13
14F:→ LPH66 : 给换成我造的东西就好 (注意是一起换, 接收方不可能 04/17 01:13
15F:→ LPH66 : 知道讯息当中哪些是正确的) 04/17 01:14
16F:→ LPH66 : 上面提的 Existential Forgery 也是一样道理04/17 01:17
17F:→ LPH66 : 接收方不知道什麽是正确讯息, 所以可以造一个我要的04/17 01:17
18F:→ LPH66 : 签章出来, 其讯息可以任意指定 04/17 01:17
19F:→ LPH66 : 至於什麽时候有可能接收方不知道正确讯息04/17 01:19
20F:→ LPH66 : 一个例子可能是某些通讯协定中有加密 nonce 的过程04/17 01:19
21F:→ LPH66 : 既然是 nonce 那所有组合都是合法讯息04/17 01:20
谢谢L大分享, 我之後查阅existential forgery後, 发现他是只要窜改者能够产生出一组
合法的(message, signature)就算是有existential forgery, 其中message
不一定要有意
义
我一开始觉得怪的点在於, 今天如果数位签章是采用标准的RSA但是没有用hash, 虽然窜
改者可以造出一堆合法的(m, s), 但是m几乎是乱码, 这样接受者接受到後也会认为无意
义, 这样的话好像没有防的必要了
也就是说, existential forgery单纯定义在有存在合法的窜改者产生的(m, s)的话, 确
实无hash的标准RSA当数位签章会有问题
但是如果窜改者要
任意的伪造合法且
有意义的讯息(M, s), 那没hash的RSA也够防止这点
发生了, 因为要任意造有意义的讯息M, 必须存在s满足
M = s^e (mod N), 然後再吧(M, s
)送出去, 但是对於任何M要找到s满足绿色的条件式, 应该是不好找甚至不存在吧...
※ 编辑: znmkhxrw (123.240.192.135 台湾), 04/17/2022 01:55:33
22F:推 LPH66 : 「有意义的讯息」这个想法是个误区 04/17 17:18
23F:→ LPH66 : 我上面有提到的状况就有提到是存在一些状况 04/17 17:18
24F:→ LPH66 : 任何讯息都是有意义的讯息 04/17 17:19
25F:→ LPH66 : (例如我上面提的对 nonce 签章以产生协定资料等) 04/17 17:19
26F:→ LPH66 : 在这层意义上, 使用 hash 的意义才正是要试着把 04/17 17:21
27F:→ LPH66 : 「任何讯息都有意义」这个条件给打破 04/17 17:22
28F:→ LPH66 : 藉由其中一部份资料的相关性来制造出能够拒绝的状况04/17 17:23
了解了, 确实有些情况下任何讯息都是有意义的, 而如果要严格定义何谓有意义的, hash
在这边就帮的上忙, 换言之hash好像帮忙定义出何谓有意义的讯息, 好聪明!
谢谢回答~
※ 编辑: znmkhxrw (123.240.192.135 台湾), 04/17/2022 18:11:18