作者hichcock (快乐一整年 ^^~~~)
看板Math
标题Re: [其他] 加密的Kerckhoff原则共三个问题
时间Fri Aug 25 11:01:03 2023
※ 引述《znmkhxrw (QQ)》之铭言:
: 想请教三个密码理论的思考问题:
: 【问题一】
: Kerckhoff原则是在讲说:即使密码系统的任何细节被知道,只要金钥未泄漏应是安全的
: 用对称性加密的数学语言来说的话, 令M是明文空间, C是暗文空间, K是金钥空间
: 只要对任何k€K, f_k: M→C 是可逆函数, 就是一个对称性加密
: Kerckhoff原则就是说只要k藏住, 即便f_k的运作逻辑被知道都还算安全
: 也就是说, 即便f_k运作逻辑知道, 只要猜k的过程需要耗费非多项式时间, 就算安全
: 我的问题在於, 猜f_k的逻辑有比猜k容易?
: 我知道以f_k逻辑公开的话就可以给大家检查安全性, 甚至应用起来比较方便
: 但是今天如果我的应用是可以不用告诉对方f_k的逻辑的话, 是不是更加安全了?
: 甚至我f_k的设计就是independent of k, 即f_k=f
: 而要破解就是要猜出f是什麽, 这相对来讲更难吧?
: 比如M=C={0,1}^n, 则M跟C间的可逆函数多达 (2^n)! 个
: 有一个说法是这样的危险在於, 如果对方猜中你的f但是没跟你说
: 你就傻傻的一直认为我的资讯很安全
: 可是这个说法套到知道f_k逻辑但是不知道k也是一样的问题
: 如果今天对方猜中k然後没跟你说, 也是一样尴尬的情况...
: 总之, 在我"不用告诉对方f_k的逻辑"的应用中让对方猜测演算法本身就很/更安全了?
你可以看一下电影 "模仿游戏"
这边的说法是类似这样的情境
即使加密机器被取得的情况下
你还是无法轻易解出明文
: 【问题二】
: 不管加密算法是不是公开的, 破解者怎麽知道"我破解得到明文了"?
: 今天我的应用是我把双方才知道的讯息进行加密後传给对方
: 破解者拿到暗文後, 即便他猜出k或是猜出f, 他怎麽知道他猜对了?
: 举例来说, 我把我的生日加密後传给对方, 破解者使用不同的k或是f就会还原
: 到不同的明文, 他如果不知道我传的是"生日"的话, 每个明文对他而言都是无意义阿...
: 不过想想, 如果我的应用中只有双方知道我的明文代表什麽, 那根本也不用加密了XD?
: 直接传明文, 反正破解者也不知道代表什麽意思XD?
破解的意义是....
我知道你未来所有密文的明文
前提是...
我已经有了部分密文的相对明文
: 【问题三】
: 我是因为第三方算法商的授权才研究加密算法, 然後从实际应用的角度切入:
: (1) 这样设计的加密算法安全吗? 有没有可能被绕过?
: (2) 假设破解者猜到什麽, 他是不是就很容易破解?
: 可是我不可能去想到每个人可能破解我的设计方式...
: (3) 网路说编码不算加密, 但是从数学式来看他就是我【问题一】的未知f的一种
: 网路说LCG(线性同余法)拿来加密非常不安全, 但他也算是未知f的一种
: 只要对方猜不到我的f, 那就算安全的?
: (4) 在我的应用中是否"做到怎样"就很"安全"了, 不用到那麽复杂
: ...种种实务的思考, 因为是做小型嵌入式系统所以算法不能太复杂, 因此我才会想分析
: 这些後来设计"够了就好"的加密方式, 避免运算资源浪费
: 但是网路上几乎查不到这种"case by case"的讨论情况, 几乎都是讨论加密通论
: 也就是说实务上我只是想知道"在我目前这个应用, 这样设计安全吗"
: 想请问有没有这方面的分析SOP?
: 举我目前的应用是, 我们把第三方程式码放入产品的IC, 并且产品出厂前会被强迫烧录
: 资料. 当开机时会强制读取资料并解密变成明文, 然後在对比明文的IC编码是否相符
: 如果相符则启动我们的第三方程式码, 不符就不启动
: 因此如果烧录的资料是我们设计的暗文(这里应该可以叫产品金钥), 其中暗文是由
: 这颗IC的唯一编码产生(烧录时可以知道这颗IC的编码, 破解者也知道IC编码藏入金钥)
: 那程式码就会正常启动
: 如果是破解者窜改的资料, 那程式码就无法启动
: 简单说就是要烧录我们的产品金钥产生器的金钥才能够解码出金钥藏的IC编码
: 以数学语言来说, (这里不考虑窜改程式码绕过检验流程)
: 假设IC编码空间是{0,1}^n, 暗文空间是{0,1}^m, 其中m>>n
: 我的数学目标就是设计函数f:{0,1}^n→{0,1}^m, 满足:
: (1) f是一对一
: (2) f不好被猜出来
: (3) f的值域够乱够随机(这样暗文"看起来"才很复杂)
: (4) f限制了对应域为值域後的反函数要能实做出来
: 因此我就开始思考如何把小空间的点稀疏的打到大空间并且写的出反函数
: 可是每每设计出一个新的, 我都没办法有系统跟自信的说这样就安全...
: 因为我是设计者, 自然知道当破解者知道什麽资讯後就很容易解开
: 又或是有我根本没想到的破解方式, 整个顾虑又回到【问题三】开头的那四个问题
: 抑或是我这个目标根本不算是需要加密算法
: ----------------------------------------------------------
: 这些问题偏向想法交流的"why"部分
: 问题可能都没有唯一的定义, 再麻烦有兴趣跟时间的板友分享一下
: 前5个板友视情况奉上P币感谢~
利用金钥来进行加密保护的方式算是很常见的
但通常都不会做的很~ 难破解
只要能做到一定程度就可以 (防君子不防小人)
其实你可以直接参考一些简易的加密方式进行实做就好
--
不想因为什麽都不努力而後悔....
如果我因为什麽都不努力而後悔....
我更希望 勇敢尝试之後却失败了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.26.251 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Math/M.1692932469.A.A11.html
1F:推 znmkhxrw : 嗨h大谢谢回覆, 我也在此反馈: (1) 我认同那些[加 08/25 18:18
2F:→ znmkhxrw : 密算法安全性不应该依赖於算法本身]的理由 只是我 08/25 18:18
3F:→ znmkhxrw : 好奇当假设算法不会窃取的情况下 是不是不用key的 08/25 18:18
4F:→ znmkhxrw : 机制就已经很安全了 因为破解者要猜你的函数是什麽 08/25 18:18
5F:→ znmkhxrw : (2) 理解 (3) 对XD 防君子不防小人 而且人家有心破 08/25 18:18
6F:→ znmkhxrw : 解几乎是找到call check function的地方绕过去 只 08/25 18:18
7F:→ znmkhxrw : 是我在找寻一些加密方式时好像不是每一个都可以用 08/25 18:18
8F:→ znmkhxrw : 到现在的应用 我的这个比较像产品金钥 跟对称/非对 08/25 18:18
9F:→ znmkhxrw : 称加密的key好像没啥关系 但是好像又有点关系 所以 08/25 18:18
10F:→ znmkhxrw : 我才说好难严格定义跟问清楚QQ 08/25 18:18
11F:推 LPH66 : > 破解者要猜你的函数是什麽: 是的, 但难保你的函数 08/25 20:17
12F:→ LPH66 : 当中没有一些弱点, 碰巧给攻击者猜到的话可能会完蛋 08/25 20:18
13F:推 znmkhxrw : 嗨L大~了解, 所以演算法公开後就是每个人都能检验 08/25 22:38
14F:→ znmkhxrw : 等於集大家的力量去证实【这加密法只要key藏好就没 08/25 22:39
15F:→ znmkhxrw : 问题】? 08/25 22:39
16F:→ wohtp : 还有一点,人类历史上密码被破绝大多数都是间谍内鬼 08/26 02:20
17F:→ wohtp : ,像二战enigma那种凭空破解的例子绝无仅有。 08/26 02:20
18F:→ wohtp : 考虑到这个,需要保护的资讯当然越少越好啊。 08/26 02:20
19F:推 znmkhxrw : 这倒是没错, 只需要保护key确实很安全XD 08/26 06:20
20F:→ obarisk : 1. 这个陈述有问题,至少会有一个接收方知道f_k 08/26 09:29
21F:→ obarisk : 所以对接收方而言,只需要破解k 08/26 09:31
22F:推 znmkhxrw : @o大, 理解, 只是我假设接收方是自己人XDD 08/28 00:56