跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请问如何保存密钥比较安全?
未分類
15 5 月 2020

请问如何保存密钥比较安全?

请问如何保存密钥比较安全?

資深大佬 : sudoy 0

大家好,我用 Python 的 Tkinter 写了个桌面程序,这个程序调用快递公司的 API,所以有 API 密钥。目前直接把密钥保存在.env 文件里面,然后 os.getevn()获取。请问有什么更安全的办法保存这些密钥?谢谢

大佬有話說 (24)

  • 資深大佬 : z7356995

    那就把密钥再加密一下,,读取时读过来再解密

  • 資深大佬 : msg7086

    没有太好的办法。程序所在的电脑上是可以破解拿到 API 秘钥的。

  • 資深大佬 : systemcall

    你的电脑如果可以保证使用那个程序的时候会偷隐私的东西没有打开的话,可以上智能卡。
    便宜点的方法,我见过刷磁卡的,也见过拿扫码枪扫条码的,都可以与电脑本身隔离,前提是电脑在读密钥的时候是安全的。

  • 主 資深大佬 : sudoy

    直接把密钥写在到代码里面,编译成二进制( exe ),这样应该安全吧。其实主要是担心不小心把软件传给别人,另外原本想设置成环境变量,但是又太明显

  • 資深大佬 : Juszoe

    每次启动的时候输入密钥,只保存在内存中

  • 資深大佬 : doyel

    自建私有 sync 工具

  • 資深大佬 : baobao1270

    密钥保存在服务器上,桌面端请求服务端,服务端再去调用快递 API 把结果返回客户端。

    #4 如果不加壳的话,string 是明文储存在 PE 文件里的

  • 資深大佬 : Juszoe

    又看了一眼,原来是桌面程序,密钥肯定要存到你的服务器上,而不是让用户自己调用快递公司的 API

  • 主 資深大佬 : sudoy

    谢谢大家回复!可能我讲的不够清楚,这个是个桌面软件,做成 exe 直接运行的,是给公司内部使用。我想达到的目的就是:1 )密钥只在所安装的电脑上保存,这样为了防止哪天不小心把软件拷贝到别的电脑,连密钥也带过去。这点环境变量可以解决,因为拷贝文件夹的时候环境变量拷贝不走。2 )保存在本地电脑的时候加密一下,别人就算看到这个密钥,也没法拿去别的电脑直接用。我能想到的办法是,把密钥加密然后设置成环境变量。每次启动软件的时候,用户需要输入一个密码,这个密码用来解密环境变量里面的密钥,然后读取到缓存以供软件使用。

  • 資深大佬 : jimmyismagic

    加密一下,启动时输入密码解密,放在内存中,可以设置一下超时时间,比如 30 分钟要重新输入密码

  • 主 資深大佬 : sudoy

    @jimmyismagic 多谢

  • 資深大佬 : crab

    如果是限制电脑加入 cpuid mac 地址 硬盘 id 主板这类作为 key 解密。

  • 資深大佬 : namelosw

    最好写个简单的 Web server 配合这个桌面程序,然后 key 在服务端才比较万无一失。

    内存这种东西也是可以 Debug 出来的。比如你想知道桌面微信里面存的什么,用 LLDB 就能拆出来你自己加密的 key,然后用 Alfred 就能解了。

    我没试过 Python 程序,但是想象应该比二进制的只能更简单,或者一样。

    当然毕竟内网如果你觉得用户都比较傻,弄个 Base64 啥的糊弄鬼子也不是不行……

  • 資深大佬 : namelosw

    @namelosw 噗,口误,刚设置了个 Alfred workflow,结果 Charles 就说成 Alfred 了。

  • 資深大佬 : weizhen199

    KeePass 配合 onedrive gd 这种?

  • 資深大佬 : herexf

    @weizhen199 你是没看上下文吧,哈哈

  • 資深大佬 : learningman

    @sudoy 最不安全了。。。

  • 資深大佬 : disk

    密钥拿电脑的 mac 地址或主板 cpu 序列号什么的作为密码加密下再存就行了。纯本地防君子不防小人,不能要求太多。

  • 資深大佬 : Kobayashi

    已知方法:1 )如果是分享代码的话。自己保存在本地,.gitignore 忽略 .env ,代码里放个 .env.example. 2 )部署类似,但是使用 AWS secret manager 。这种情况还可能需要 aws key 。

  • 資深大佬 : yousabuk

    最厉害的招式是什么?
    没有招式

    什么样的招式不会被破解?
    没有招式

  • 資深大佬 : elfive

    @sudoy 以字符串的形式存在 exe 里,容易被扫出来的……你只需要在代码里动态生成这个 key 就能加大难度了,不行就再套个壳,免费壳不行就商业壳,基本就能阻挡大部分有一定经验的人了。除非他懂汇编,懂汇编,能脱壳,对这种人基本无解。

  • 主 資深大佬 : sudoy

    谢谢小伙伴们~ 还有这么多热心支招的 :thumb

  • 資深大佬 : renmu

    在公司局域网搭个验证服务器,可以每次开机查询一遍。

  • 資深大佬 : weizhen199

    @herexf (⊙﹏⊙)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具