试问 sha256 后能否公开数据😂

2021-10-05 19:57:26 +08:00
 d5

假设有一组账号密码形式的数据,形式为

202104050006-abcdf
202104050007-lpdog
202104050008-xmfrj

每一行数据进行sha256,存于一个文件 data.txt 当中。

6acb3db4372b25120478f1ebba3cb7c676e54498aadb95ce5535b771241a4f38
a571db9107d9b35f41e4a0a6f02d841539ce8064ca9ba9c87c4e5cad83801fb0
4ac22a8f2694e927475d1358d484776750f36242fb5a0c6ee622d1572dbedc12

能否直接将加密后的 data.txt 数据发布在公网 Github 仓库中给所有人可见,利用 Github Action,对用户输入账号和密码并触发的 Action(Pipeline),进行校验。账号-密码组合确实存在于这个 data.txt 文件当中的,予以放行后序步骤。

https://i.imgur.com/w5Sfy3d.jpg


主要是不想维护数据库或服务器或 HTTP 接口。充分利用 Github Issue Template / Github Discussions / Github Action / 等特性实现相关的社区自治功能。

感谢各位的解答,国庆愉快!🇨🇳

2675 次点击
所在节点    程序员
11 条回复
AoEiuV020
2021-10-05 20:08:42 +08:00
可以,sha 不可逆,只要密码别太短,否则可以拖走离线暴力破解,建议直接 20 位以上字母数字,让人直接复制粘贴使用,
action 最大的安全问题是,对方有没有 push 修改 action yml 文件的权限,
rekulas
2021-10-05 20:09:23 +08:00
有一定泄露风险问题,泄露概率负相关于加密字符串难度,因为别人可以直接本地暴力运算指定账号密码,从你给的示例来看难度似乎不太高。
绕过 actions 应该是很难的,除非代码有 bug,输入参数直接 hash,不存在攻击可能性
rekulas
2021-10-05 20:12:30 +08:00
建议给每个用户添加盐值,越复杂越好,基本就不可破解了
ysc3839
2021-10-05 20:21:27 +08:00
hash 密码的话建议直接用 Argon2 。
rpman
2021-10-05 20:22:46 +08:00
首先你要假设 github action 的执行是可以信赖的
然后加盐逻辑会暴露.. 得要求用户密码位数够长
d5
2021-10-05 20:27:43 +08:00
@AoEiuV020 @rekulas 十分感谢两位老哥的解答,接上文:

给<每一个用户>加盐,如何在没有外部服务的情况下完成自动化验证呢?每个用户的盐应该怎么管理。

如果给<每一个用户>加相同的盐,或者对 data.txt 用公钥再次加密一次。执行 Action 的时候,从 Secrets 里取盐来计算或者取私钥来解密。这个盐或者私钥只有少数 Maintainer 拥有,能否实现相对安全。
Trim21
2021-10-05 20:31:41 +08:00
可以把账号密码放在一个 private repo 里面,然后设置一个 personal access token 去读…这样就不用自己额外维护接口了
rekulas
2021-10-05 20:38:19 +08:00
@d5 这样应该可以,如果不依赖外部服务,盐起不了防范暴力破解的作用,但 secrets 可以,非对称也不是必须的,只需要用 secrets 也作为 hash 参数就足够安全了
举例,库配置定义个 TOKEN
```
SHA_SAFE_TOKEN=ec4fa26383768f35a34c3962faea2e91
```
公开库记录密码值 sha256("202104050006-abcdf"+SHA_SAFE_TOKEN)
登录验证的时候保证 sha256(input+SHA_SAFE_TOKEN) == 记录值即可
只要 SHA_SAFE_TOKEN 不泄露,就绝对安全
rekulas
2021-10-05 20:41:42 +08:00
又考虑了下,写入用户密码的时候如果不依赖外部服务,可能是需要非对称加密才行,只需要隐藏私钥就行了,目前的计算环境下足够可靠,只要 github 自身不泄露的话...
d5
2021-10-05 20:46:15 +08:00
@ysc3839 @rpman 感谢老哥指导我还得补习下知识,目前确实是假设的 github action 的执行是可以信赖的。

@Trim21 卧槽老哥的方法非常鬼才,非常奇技淫巧,也是非常非常好的方法

@rekulas 是这个意思,感谢指导,确实我的语文表达还是让各位大神看懂了😂

再次感谢🙏
eason1874
2021-10-05 23:00:40 +08:00
密码摘要用 bcrypt 更好

bcrypt 是密码散列,慢散列。同样内容,bcrypt 比其他散列更抗爆破

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

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

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

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

© 2021 V2EX