github 要开启两阶段认证了,有什么好方案吗

可以存 .authinfo.gpg 用gpg 加密,我现在部分密码存到这里。 emacs 能做到自动加解密gpg。 可以参考我的配置:https://git.sr.ht/~jixiuf/vmacs/tree/master/conf/conf-gpg.el#L108 ~jixiuf/dotfiles: gnupg/gpg-agent.conf - sourcehut git ~jixiuf/dotfiles: gnupg/gpg.conf - sourcehut git

3 个赞

emmm 那你还在用 Mojave 以前的是有点老了。主要还是 OS 太旧的话 Swift 的功能也不太好用。

早一点的版本就要用 Objective-C 调用 CommonCrypto 了。你提的那个软件就是这么实现的。

gpg 我没有用,一个是因为我用的包管理器没法降到 2.4 以前的,另一个是 auth source 也能用 macOS 的 keychain.

设置

(setq auth-sources '(macos-keychain-internet macos-keychain-generic))

可以通过 security 命令从 auth source 调用 macOS 的 keychain,用的人估计很少,因为 Emacs 29.1 有个 bug 到发布都没人发现,但我刚提交了个䃼丁到主线。这个命令的格式没怎么变过,很早的 OS X 也能用。

我主要的頋虑还是 Emacs 可编程性太强了,auth souce 的缓存从 elisp 是完全可见的,万一有人插入了个恶意 elisp 代码把密码发出去了也不是不可能。

1 个赞

souchut 托管的文件不能公开访问?

你也太听话了吧,唉 :expressionless:

硬要认真说,这个规定只是说你要想发布具有“网络服务”的 App 必须备案。
它没限制普通用户安装任何 App,而且 TOTP App 是不需要联网的。

它要是真管的那么宽,那么程序员必须持证编程,否则开发出来的程序违法。

在我看来此举非常正确,密码不应该作为唯一可靠凭证。

1 个赞

这话是没错,但要让人可以选。 强制的“为你好”其实是“耍流氓”。

安卓平台上有开源的 freeopt+ 可以用

2FA 是不是只影响web页面登陆?命令行 push/pull 之类的不影响吧?

不影响,申请新的 PAT 时才要再次认证。

按你这个理解,强制让你用密码也是耍流氓。
强制使用 2FA 就是因为现在发现密码不足以保护账号,作为负责任的服务商就应该强制用户使用 2FA。

GitHub 很早之前就禁止了密码作为 git 凭据了

为什么是密码不足以保护账号,GitHub不是还给每个账号发了github-recovery-key了吗,这不也相当于密码?

这些各式各样的保护措施是不是归结到底都是账号与密码匹配以进行保护?

1 个赞

添加新的 ssh key, gpg key,和删除 repo 时需要验证一下。

现在好了, 不知什么时候改成private 的了。

因为

  1. 大部分人会在不同的网站上使用相同密码或者相同模式的密码
  2. 拖库撞库后攻击者可以靠暴力破解来获取密码
  3. 当攻击者掌握密码后,就可以在用户不察觉的情况下完全掌握帐户

也就是如果仅靠密码,安全性取决于服务提供者,比如如果 GitHub 遭受攻击或信息泄漏,则攻击者就可以掌握不止 GitHub 一个帐户,大概率还可以掌握你使用相同密码模式的其它帐户,或者通过社工来攻击你的其它帐户。而且影响范围是全部 GitHub 用户。

所以为了解决一个站点遭受攻击就影响所有用户的问题,二次验证应运而生。
它的思路是,用户通过保护自己本地设备的安全,就可以保护帐号安全。攻击者至少需要掌握你的二次验证设备,比如手机,才可以掌握你的帐户。
而在远程直接攻击你的个人设备难度是很大的,因为这些设备甚至可以是完全离线的,除非你被针对上了。

这个恢复密钥应该妥善保存在本地离线环境,人类无法记忆。也就是攻击者必须入侵你这个本地设备才能成功窃取到恢复密钥,所以同理,攻击难度和攻击二次验证设备相同。

同理的还有非对称密钥,它同样依靠本地设备存储凭据。


有了 TOTP 这类二次验证还不够,因为攻击者还可以通过钓鱼/社工(比如骗你发验证码给他)等手段来获取你的 TOTP code。
如果你想更进一步保护帐号的话,就应该使用不可共享型二次验证设备,比如生物特征识别,还有我上面提到的 yubikey 验证设备。这类设备在物理上无法共享给攻击者,从而更好地避免社工和钓鱼攻击。

1 个赞

我:网页密码随机生成的并加密保存

恢复密钥偷懒直接明文保存,反而更不安全了


最主要的是 GitHub 上我完全没啥想保护的信息,开源协议里都写了 no warranty,更不指望有人直接用我代码,为了保证这些商业公司能安全使用开源代码,为什么要麻烦我。审计代码安全应该是用我的代码的人自己的责任。

不说加密硬件要花钱,如果用手机做 2FA,万一我没有手机,是不是还要给我报销手机的费用。

1 个赞

保护帐号本身,和保护帐号里面的信息是不同的。

比如你的帐号被攻击了,那攻击者可以删除你的仓库,发表一些非你本人想法的言论。这些不会影响到你已经存在的开源项目,但是这显然影响到你个人了。

当然强制不强制使用 2FA 也不只是安全上的决策,肯定也有产品上的考虑。比如本站就不强制使用 2FA,因为搞起来麻烦,新用户很可能懒得注册了。

因为我们这样的论坛没有审查言论的需求,不需要实名也不提供付费服务,账号和 IRC nickname 差不多,甚至不算属于用户的个人财产,只是用来发贴的身份,账号密码忘了重新注册个就行了。

1 个赞

我在用的是一个自由开源且跨平台的软件:keepassxc,有 TOTP 支持。

Bitwarden 也支持,虽然我没用过。

顺手引用 Linux 中国的这篇密码管理器横评:

不过,尽管上述两个软件都支持安卓(不清楚 iOS),我不认为手机是一个存放密码/凭证的足够安全的地方。

  • 【开源】keepass 能通过插件
  • 【开源】bitwarden
  • 苹果的密码功能能存储 OTP

P.S. 隔壁 spacevim 因为强制 2FA 放弃了 GitHub 用自己的网站作为 Git 仓库,然而那个网站被 :x: 了。

安卓上我用了一个软件叫:神锁离线版