click
V2EX  ›  问与答

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

  •  
  •   click · Jan 12, 2024 · 5946 views
    This topic created in 1034 days ago, the information mentioned may be changed or developed.
    被 Microsoft Authenticator 坑惨了!
    最近换机发现 Microsoft Authenticator 没法跨平台备份/恢复,iOS 平台和安卓平台不互通。

    需求:
    1.支持跨平台备份/恢复。
    2.不用翻墙。
    38 replies  •  2024-01-27 00:08:42 +08:00
    TossPig
    TossPig
    Jan 12, 2024❤️2
    1
    Vaultwarden
    TaurusXin
    TaurusXin
    Jan 12, 2024 via iPhone❤️1
    2
    https://2fas.com/

    全平台,还支持浏览器插件
    BigShot404
    BigShot404
    Jan 12, 2024
    3
    我用 Authy

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

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

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

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

    还有就是,比如 jumpserver 这一类的跳板机,有办法在用本地 ssh 客户端的时候也能自动填充吗。。。太麻烦了
    mhqschen
    mhqschen
    Jan 12, 2024
    27
    @woshicixide #19 那么多血淋淋的案例,怎么还敢用
    click
    click
    OP
    Jan 12, 2024
    28
    @gletec
    @arfaWong
    @qistchan
    @youngkingdom
    感谢回复。bitwarden 的 TOTP 是要付费的吧
    click
    click
    OP
    Jan 12, 2024
    29
    @ab
    @vacuitym
    @zjcoding
    感谢回复。Google 要翻墙。虽然说我可以翻,但也不是一直挂着
    arfaWong
    arfaWong
    Jan 12, 2024
    30
    @click #28 自建的就是免费用的
    MuSeCanYang
    MuSeCanYang
    Jan 12, 2024
    31
    2 FAS
    zjcoding
    zjcoding
    Jan 12, 2024
    32
    @click #29 不用啊,只是下载的时候需要,用的时候不需要联网的
    qistchan
    qistchan
    Jan 12, 2024
    33
    @click 自建的免费
    NoOneNoBody
    NoOneNoBody
    Jan 12, 2024
    34
    import pyotp
    totp = pyotp.TOTP(...)
    print(totp.now())
    CodeCodeStudy
    CodeCodeStudy
    Jan 12, 2024
    35
    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
    LCD
    Jan 12, 2024 via Android
    36
    试一下,freeotp
    click
    click
    OP
    Jan 27, 2024
    38
    感谢大家的回复,最后我还是用回了 MS Authenticator 。因为微软账户好像只支持 MS Authenticator
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2260 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 00:12 · PVG 08:12 · LAX 16:12 · JFK 19:12
    ♥ Do have faith in what you're doing.