看来还是有公司喜欢把重要数据用 Base64 “加密”啊...

2018-12-02 01:06:59 +08:00
 yuzo555

19682 次点击
所在节点    程序员
125 条回复
binux
2018-12-03 03:38:59 +08:00
@bwangel 你这就属于思维僵化了,楼上讲的很清楚了,除非你否认凯撒置换不是加密算法,base64 和它没任何区别,或许安全性还更高点。它是不是加密算法,和该不该用 base64 加密没有任何关系。我从来没有推荐这么干。
limbo0
2018-12-03 04:27:11 +08:00
@bwangel base64,不就是你说的对称加密吗,只不过是被好多人知道的方法罢了
RqPS6rhmP3Nyn3Tm
2018-12-03 04:51:06 +08:00
古典密码学也是密码学啊
把 base64 换成凯撒加密是不是就觉得不别扭了
annielong
2018-12-03 09:19:01 +08:00
个人认为,base64 本质是编码,但是也干了加密的活,不必纠结于这个的分类,而且如果自定义 base64 的话,一般人也无法还原不是,
someonedeng
2018-12-03 12:40:36 +08:00
承包了我的 12 月笑点
disk
2018-12-03 13:48:28 +08:00
@BXIA 如果 base64 发明时间早,说不定也成了古典密码,可它被设计成现在这个用途,被标准定义为编码,也就这样了。生活中把 base64 称为加密问题不大,不必纠结于叫法。
no1xsyzy
2018-12-03 14:42:36 +08:00
@bwangel 现代密码学核心不是密钥算法分离,而是中间人无法获得任何信息(我不记得术语了)。就是说单通过监听内容无法知道关于这段内容的任何信息,目前主要包括“其中是否含有信息”、“加密的方式是什么”、“明文中 1 多还是 0 多”、“明文中是否有 1 ”。
更强的包括“这段信息是否被加密了”( obfs 伪装成特定连接)、“明文长度多少”(可以 pad,但范围有限)。
再强的就像是歧义性解读(采用不同的密钥能够解密出不同的可用的信息,几乎不可能在目前的体系下完成,文艺作品中会出现,比如 《魔禁》 和 《 B: the beginning 》)。

密钥算法分离算是自由软件运动的一部分?至少主张和开源那派基本一致:同行审计。这不是密码学或者说学术的一环,而是错误与风险控制的一环。
no1xsyzy
2018-12-03 14:52:43 +08:00
@no1xsyzy 以这一标准来看,base64 弱得根本不能算加密,因为你在知道 base64 是什么的情况下可以很容易判断它是不是 base64。欧洲语言还更强一点,就算了解了所有这些语言,看到一堆拉丁字母还是摸不着头脑。每次谷歌翻译想看看是什么语言都是混乱的,一段文字 ABC,A/B/C/AB/BC/ABC 可以是六个不同的语言。——这算不算歧义性解读呢(狗头)
flyobj
2018-12-03 15:00:44 +08:00
把 base64 的字符表顺序打乱了 那它就是相对安全的加密算法了! 用惯默认字符表,都忘记了 其实那 64 个 string 就是 base64 的密钥!
FrankHB
2018-12-03 15:04:27 +08:00
@bwangel 老实说这个链接我还真没 Google,也没扔书签里,而是从
https://github.com/FrankHB/pl-docs/blob/master/zh-CN/typing-vs-typechecking.md#类型--分类
这个最近老是出现在浏览器地址栏的半成品坑里里挖出来的(但是为了避免王婆嫌疑还是放其它参考了)。另外,LtU 的那个链接实际上指向的评论是
http://lambda-the-ultimate.org/node/4554#comment-71474
对 PL 不太了解的非预期读者可能不太好找所以这里补正。

不过我承认,Rob Pike 和 Ken Thompson 以外的几位的名字我拼写起来确实不大熟练……(

对正题的观点和你的意见基本一致。

补充 @binux 钻牛角尖观点的对应:

0.从历史的角度来看,我基本同意上面 @azuis 的分析,不过既然是历史角度,也得考虑 Base64 是干什么用的了—— Base64 本来也不是为了作为 cipher 而被发明的。为了说明密码学理论研究方法的普适性,把 Base64 这样的编码当作 trivial 情形下考虑是能说得通的,但在分析个案时没有意义。
1.基于 Base64 的原始用途,就公认的 Base64 自身来讲,几乎所有有效的用例都没被作为 encyrption,在这个案例中看来也不是。要能起到 encryption 的预期作用,需要 Base64 以外的假设,所以把 Base64 排除出 encryption 是合理的,强行推广到平凡情形才不自然。
2.Base64 也不是当代 cryptosystem 意义下的 encryption。即便用类似经典密码的方式提供 key generation,密钥空间也成问题。提供 2 variants,顺带给了 1-bit key 咯?攻击成本是 O(1)诶,就算能作为密码学研究的对象,能提供多少 encryption 的预期性质?稍微不那么 trivial 是你自己发明其它 variant ——但这样不和通行版本兼容的编码,还好意思叫 Base64 ?
3.@disk 能把 Base64 叫成“加密”的,八成是根本不清楚 Base64 是啥玩意儿,根本不会有上面的分析的认知。能直接把 Base64 当加密算法扔在“加密系统”里的真·勇士,也就是笑话了。但是,因为外行叫法的偏差而使用户到开发者普遍对冒牌的“加密”有什么奇怪的预期,这就不那么好笑了。说到底,本贴 LZ 会遇到这个问题,主要原因就是这样。特别地,我不觉得把“加密”换成“编码”的说法会费什么事,所以我不理解有什么意义继续放任以讹传讹。
tourist2018
2018-12-03 15:25:52 +08:00
不讨论加密的问题,这个妹子的要求让人有点搞不懂,这啥意思?
internelp
2018-12-03 15:27:03 +08:00
这个不是广告吗。。。
NotNil1
2018-12-03 15:30:22 +08:00
楼主快点写 TimeStamp 这个页签 ,想用
Hardrain
2018-12-03 15:31:37 +08:00
@binux 对现代密码学而言,要保密的是密钥,不是加密算法。
仅这一点就可以说 base64 不是加密算法。
doracoinC
2018-12-03 15:37:18 +08:00
想看后续
binux
2018-12-03 15:48:13 +08:00
@FrankHB 1. 我当然知道 base64 本来的设计用途,我只是给了另一个,有意思的思考角度。而且设计用途不是非此即彼的,就像二战时美军使用印第安人的语言传输秘密信息。那这时的语言就只能是语言,不能是 encryption 了吗?
2. 就我对英文维基条目的阅读理解,符号表并不是 base64 定义成立的一部分。而且即使只替换 62,63 的两个变种,使得强度很弱,那难道弱密钥的加密就不是加密了吗?使用 3 和 5 的小质数 RSA 就不是加密算法了?
3. 我不断强调了 base64 有多弱,它只是符合定义罢了,我不觉得有人看了我的评论会产生什么奇怪的期待。
Sapp
2018-12-03 15:53:37 +08:00
@rayhy 这应该是会给钱的,只要你找他要,他肯定会给你一些,估计是个小白
binux
2018-12-03 16:01:03 +08:00
@Hardrain #94 上面喜欢用 Go 的例子,那么还是 Go 的例子,base64 是需要制定 Encoding 的, which is a 64-byte string,你是可以打乱编码的字符顺序的,这就是你的密钥。
https://golang.org/pkg/encoding/base64/#NewEncoding
Phariel
2018-12-03 16:05:14 +08:00
羡慕有两个微信号的人 自己跟自己玩的不亦乐乎
(*≧▽≦)
fannuoer
2018-12-03 16:15:14 +08:00
笑死了,哈哈哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/513457

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX