V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
click
V2EX  ›  问与答

有没有靠谱的 2FA 验证器推荐?

  •  
  •   click · 317 天前 · 3386 次点击
    这是一个创建于 317 天前的主题,其中的信息可能已经有所发展或是发生改变。
    被 Microsoft Authenticator 坑惨了!
    最近换机发现 Microsoft Authenticator 没法跨平台备份/恢复,iOS 平台和安卓平台不互通。

    需求:
    1.支持跨平台备份/恢复。
    2.不用翻墙。
    38 条回复    2024-01-27 00:08:42 +08:00
    TossPig
        1
    TossPig  
       317 天前   ❤️ 2
    Vaultwarden
    xinge666
        2
    xinge666  
       317 天前 via iPhone   ❤️ 1
    https://2fas.com/

    全平台,还支持浏览器插件
    BigShot404
        3
    BigShot404  
       317 天前
    我用 Authy

    https://authy.com/
    ladypxy
        4
    ladypxy  
       316 天前 via iPhone
    Authy
    ab
        5
    ab  
       316 天前
    google authenticator + 苹果密码
    前者扫完再用 ios 相机也扫一次。
    后者既可当做备份也可以方便 safari 使用。
    bobryjosin
        6
    bobryjosin  
       316 天前 via Android
    yubico authenticator 需要你有一个 yubikey ,全平台都有客户端,离线不联网,代价是出门需要额外带一个硬件,丢失损坏不能恢复存储的 2fa ,我一般是两个 yubikey+authy 都存一份。
    SenLief
        7
    SenLief  
       316 天前   ❤️ 1
    密码管理器不是都带 totp
    arfaWong
        8
    arfaWong  
       316 天前
    自建 bitwarden
    gletec
        9
    gletec  
       316 天前 via Android
    密码管理器自带 totp 记录。而且很多是支持自动填入的,都不需要你自己手动输入。
    netnr
        10
    netnr  
       316 天前 via Android
    在用 Aegis ,而且可以导出
    uuhhme
        11
    uuhhme  
       316 天前 via Android
    ente 跨平台,支持导出二维码,现在用的挺好。同时 iCloud 钥匙串备份一份,无忧
    qistchan
        12
    qistchan  
       316 天前
    自建 bitwarden+1 ,自带 TOTP
    surbeta
        13
    surbeta  
       316 天前
    Authy,用了很多年了
    n2l
        14
    n2l  
       316 天前
    Authy PC 版好像得挂代理才能上去。
    lisxour
        15
    lisxour  
       316 天前
    可以手动导出,https://www.v2ex.com/t/979314
    vacuitym
        16
    vacuitym  
       316 天前
    用的 Google 的
    zjcoding
        17
    zjcoding  
       316 天前
    google ,可以导入导出
    youngkingdom
        18
    youngkingdom  
       316 天前
    自建 bitwarden+1
    woshicixide
        19
    woshicixide  
       316 天前
    用的微软的 authenticator
    wuxiao2522
        20
    wuxiao2522  
       316 天前
    Authy
    woshicixide
        21
    woshicixide  
       316 天前
    被你这么一说也想换了
    lw0717
        22
    lw0717  
       316 天前
    我也被 Microsoft Authenticator 坑过,换了 Google 的
    nothingistrue
        23
    nothingistrue  
       316 天前
    Microsoft Authenticator Q&A 第一个就是,不能在 Android 和 iOS 之间切换。事实上你刚开始看到 iOS 备份需要 icloud ,Android 备份不需要,就该猜到两个平台之间的备份是独立的。Microsoft Authenticator 的 2FA 只是附加功能,它的主功能是 Microsoft Account 的免密登录器,这是物理密钥,它的「备份/恢复」不是复制粘贴,而是密钥迁移,这要想跨平台就太为难了。

    TOTP 2FA ,虽然技术上不是物理密钥(它的密钥可以随意复制),但你最好还是别搞什么跨平台同步。想要跨平台同步就没法用平台私有的文件系统加密防护,同步服务商只能在自己的服务端用主密码来保护密钥(不负责人的甚至会明文存储密钥),一旦服务商发生泄漏你就乐开花了——重置 2FA 可比重置密码的操作繁琐多了。

    最好还是各用各的,这样除了安全性高之外,还天然给你的众多 2FA 多了一套备份。 Microsoft Authenticator 是使用相同的主帐号来在多个设备中断上各用各的的。
    weidaizi
        24
    weidaizi  
       316 天前
    https://github.com/MuggleWei/yoauth

    我用自己写的,一个本地的,纯命令行终端下的 TOTP generator ;支持 linux/windows/mac/android ,要备份直接复制本地数据文件就 ok 了
    ztxcccc
        25
    ztxcccc  
       316 天前
    歪一下楼,之前谷歌那个更新了以后很多人反馈同步有问题,现在解决了吗?我还在用很旧的版本
    mikaelson
        26
    mikaelson  
       316 天前
    我倒是想问有没有能自动填充的?
    虽然用的浏览器插件,但是每次都要点一下。。。。

    还有就是,比如 jumpserver 这一类的跳板机,有办法在用本地 ssh 客户端的时候也能自动填充吗。。。太麻烦了
    mhqschen
        27
    mhqschen  
       316 天前
    @woshicixide #19 那么多血淋淋的案例,怎么还敢用
    click
        28
    click  
    OP
       316 天前
    @gletec
    @arfaWong
    @qistchan
    @youngkingdom
    感谢回复。bitwarden 的 TOTP 是要付费的吧
    click
        29
    click  
    OP
       316 天前
    @ab
    @vacuitym
    @zjcoding
    感谢回复。Google 要翻墙。虽然说我可以翻,但也不是一直挂着
    arfaWong
        30
    arfaWong  
       316 天前
    @click #28 自建的就是免费用的
    MuSeCanYang
        31
    MuSeCanYang  
       316 天前
    2 FAS
    zjcoding
        32
    zjcoding  
       316 天前
    @click #29 不用啊,只是下载的时候需要,用的时候不需要联网的
    qistchan
        33
    qistchan  
       316 天前
    @click 自建的免费
    NoOneNoBody
        34
    NoOneNoBody  
       316 天前
    import pyotp
    totp = pyotp.TOTP(...)
    print(totp.now())
    CodeCodeStudy
        35
    CodeCodeStudy  
       316 天前
    php 的代码,不依赖第三方库

    ```php
    <?php

    class TOTP {
    private static $base32Map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';

    private static function base32Decode($in) {
    $l = strlen($in);
    $n = $bs = 0;

    for ($i = 0; $i < $l; $i++) {
    $n <<= 5;
    $n += stripos(self::$base32Map, $in[$i]);
    $bs = ($bs + 5) % 8;
    @$out .= $bs < 5 ? chr(($n & (255 << $bs)) >> $bs) : null;
    }

    return $out;
    }
    public static function getOTP($secret, $digits = 6, $period = 30, $offset = 0) {
    if (strlen($secret) < 16 || strlen($secret) % 8 != 0)
    return ['err' => 'length of secret must be a multiple of 8, and at least 16 characters'];
    if (preg_match('/[^a-z2-7]/i', $secret) === 1)
    return ['err' => 'secret contains non-base32 characters'];
    $digits = intval($digits);
    if ($digits < 6 || $digits > 8)
    return ['err' => 'digits must be 6, 7 or 8'];

    $seed = self::base32Decode($secret);
    $time = str_pad(pack('N', intval($offset + time() / $period)), 8, "\x00", STR_PAD_LEFT);
    $hash = hash_hmac('sha1', $time, $seed, false);
    $otp = (hexdec(substr($hash, hexdec($hash[39]) * 2, 8)) & 0x7fffffff) % pow(10, $digits);

    return ['otp' => sprintf("%'0{$digits}u", $otp)];
    }
    }

    echo TOTP::getOTP('xxx')['otp'];
    ```
    LCD
        36
    LCD  
       316 天前 via Android
    试一下,freeotp
    sayoll
        37
    sayoll  
       313 天前
    click
        38
    click  
    OP
       302 天前
    感谢大家的回复,最后我还是用回了 MS Authenticator 。因为微软账户好像只支持 MS Authenticator
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:13 · PVG 04:13 · LAX 12:13 · JFK 15:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.