做了一个用于登录 SSH 的 USB Key,成本低至 9.9 元 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
44670
V2EX    分享创造

做了一个用于登录 SSH 的 USB Key,成本低至 9.9 元

  •  7
     
  •   44670 2022-01-26 22:47:01 +08:00 13097 次点击
    这是一个创建于 1422 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于直接用密码不方便并且不安全,相信很多人都会配置使用公私钥来登录 SSH 主机。
    然而,直接在电脑里存储私钥文件实际上是非常不安全的:电脑上任何一个能读取用户目录的软件都有可能偷走私钥然后做坏事。
    比较可信赖的方式是做一个专门的 USB Key 设备,实现 SSH 登录时用到的公私钥认证算法,这样一来电脑上就不会存储私钥了。
    YubiKey 支持 SSH 登录,但是除了价格问题以外,另一个问题是 YubiKey 对 SSH 登录的支持不是原生的,在 Windows 下需要依赖 Windows Crypto API/SmartCard API 这些黑箱,其它平台上也需要 OpenPGP 这样的软件套一至多层实现,配置起来可能会很复杂并且总觉得不够可靠。

    所以我觉得有必要自己做一个专门用于登录 SSH 的 USB Key ,并且尽量简化功能和降低成本。

    基于以下几点原因,最后选择了 ESP32/ESP32-C3 芯片:
    1. ESP32 系列自带安全启动、存储加密功能,一定程度上可以防止硬件上的秘密被物理读取。
    2. 价格非常便宜,目前淘宝上卖得最多的一家 ESP32-C3 开发板只需 9.9 元(限购 10 件)。
    3. 有 WiFi/BLE 功能,未来或许可以做成无线的。

    已经在 ESP32 开发板上测试通过,几乎所有的 ESP32/ESP32-C3 开发板都可以直接使用。

    也在计划做自己的硬件,打算提供一个带灯的按钮,用户按下物理按钮可以确认登录操作。

    PC 端用 Go 实现了一个 ssh-agent ,可以转发 SSH 身份认证请求到设备端、由设备端完成签名操作。

    特点:
    1. 设备端只专注 ed25519 签名一件事情,代码<1K LOC (不含第三方库),容易审计。
    2. 私钥完全在设备端产生,不会传递到外部,不依赖 Windows Crypto API/SmartCard API 之类的黑箱。
    3. 私钥通过 SHA256 算法,结合设备端存储的随机种子+用户密码产生。设备本身不存储 /验证某个特定的用户密码,用户每次输入不同的密码即可以直接使用不同的 ed25519 公私钥对。
    4. 使用外部的独立 USB 转串口芯片,避免软件 USB 协议栈的潜在漏洞影响设备的安全性。
    5. 可以通过单一的 Go 写的工具,实现设备的初始化、ssh-agent 等全部功能,不需要安装额外的软件。

    使用方法:
    1. 安装 ESP-IDF 环境、构建 44Key 项目后刷入任意一个 ESP32/ESP32-C3 开发板里。
    2. 运行 44KeyTool -port COMx -format ,初始化设备。需要在键盘上随便输入些字符,用于给设备端生成随机种子提供一部分熵。(在设备管理器里确认具体的串口号,替换 COMx )
    3. 运行 44KeyTool -port COMx ,输入自己的密码后,即可开启 ssh-agent ,此时终端会显示输出公钥。
    4. 把公钥添加到目标服务器的~/.ssh/authorized_keys ,下次就可以直接用 USB Key 登录啦。

    项目地址:
    硬件(准备中): https://oshwhub.com/44670/miniusbkey
    固件: https://github.com/44670/44Key
    PC 端软件: https://github.com/44670/44KeyTool

    目前是一个可以在 Windows 上工作的原型,实现了 SSH 认证所需的全部功能,不过安全启动和存储加密还没默认启用。

    欢迎提供各种想法!
    第 1 条附言    2022-02-25 14:41:52 +08:00
    EDIT:
    做了一款带屏幕的硬件:
    103 条回复    2023-08-14 20:05:58 +08:00
    1  2  
    adoal
        1
    adoal  
       2022-01-26 22:48:38 +08:00
    好新潮,居然用 RISC-V
    44670
        2
    44670  
    OP
       2022-01-26 22:50:00 +08:00
    @adoal RISC-V 很便宜!
    thedrwu
        3
    thedrwu  
       2022-01-26 22:54:42 +08:00 via Android
    yubkey 嫌太贵,之前有人用这个搞过 1$的 openpgp key 。看了一眼过程,没 3d 打印机打印壳。放弃
    44670
        4
    44670  
    OP
       2022-01-26 22:58:07 +08:00
    @thedrwu M5Stack 做了好多款带外壳的开发板,不过价格稍微贵了点。
    adoal
        5
    adoal  
       2022-01-26 23:00:21 +08:00   3
    不是很建议用 CH340 ,一来这玩意需要装厂家的私有协议驱动,二来它不加外部闪存的话 USB 没有序列号字段(它的阉割版 CH341 甚至连加闪存放序列号的可能性都没有),换换槽插可能 COM 端口号就变掉了。最好是选一个用 CDC/ACM 协议的,并带序列号字段的。MCU 的 USB 协议栈一般都有 CDC/ACM 的 sample ,不过你担心协议栈实现不靠谱的话那不太好找,容易买到的大概只有 Holtek 的。
    44670
        6
    44670  
    OP
       2022-01-26 23:01:48 +08:00
    @adoal 在考虑外挂一个便宜的 USB MCU ,bl702 那种似乎还不错。
    44670
        7
    44670  
    OP
       2022-01-26 23:02:56 +08:00   2
    @adoal 有一个新出的 CH343P ,内置 EEPROM 可以配置 VID/PID ,淘宝上 9.9 ESP32C3 开发板用的正好就是那个。
    mineralsalt
        8
    mineralsalt  
       2022-01-26 23:12:25 +08:00
    没这个必要吧, 如果个人电脑数据都沦陷了, 那那那, 不用活了
    adoal
        9
    adoal  
       2022-01-26 23:20:19 +08:00
    @44670 查了一下居然是 CDC/ACM 和私有双协议的……
    44670
        10
    44670  
    OP
       2022-01-26 23:23:22 +08:00
    @adoal M1 Mac 也能支持了
    rockyzhang
        11
    rockyzhang  
       2022-01-26 23:28:23 +08:00
    EdDSA 默认用了 SHA-512 吧,用不着再弄一个 SHA-256 的库了,好像 MCU 也带 SHA 硬件加速器和 TRNG
    https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf
    44670
        12
    44670  
    OP
       2022-01-26 23:38:55 +08:00
    @rockyzhang 感谢提醒!

    确实可以把 ed25519-donna 的 sha2 实现替换掉(之前以为 ed25519 用的是 sha3 )。

    ESP32 自带了 SHA 加速器,不过应该不打算去用那个。

    硬件 TRNG 利用了 RF 电路的无线噪声,似乎得初始化整个 WiFi 才可用。

    目前用的是 esp32 bootloader 使用的 RNG ,熵源是内部的 ADC 电路。ESP-IDF 文档推荐在不用 WiFi 的情况下可以用这个。
    shunia
        13
    shunia  
       2022-01-27 00:31:31 +08:00   19
    每次看你们这些搞硬件的聊天,都有一种我妈看我写代码的既视感
    november
        14
    november  
       2022-01-27 00:43:24 +08:00 via iPhone
    ssh -i /u 盘 /.ssh/key user@domain
    cweijan
        15
    cweijan  
       2022-01-27 01:07:56 +08:00
    666, 很酷的想法
    zagfai
        16
    zagfai  
       2022-01-27 02:29:22 +08:00
    @november 根本不是一回事。。。。
    lucifer9
        17
    lucifer9  
       2022-01-27 07:26:43 +08:00 via iPhone   1
    不是,你们生成 ssh key 都不用 passphrase 的?
    ktqFDx9m2Bvfq3y4
        18
    ktqFDx9m2Bvfq3y4  
       2022-01-27 07:59:14 +08:00 via iPhone   1
    @shunia #13 对于软件开发人员来说,就像产品经理看代码。稍稍好那么一丢丢。
    zliea
        19
    zliea  
       2022-01-27 08:49:53 +08:00
    我觉得还是做一个手机蓝牙的 ssh key 吧。
    讲道理有硬件一是不方便,二是绝大部分人都是把 Key 插在电脑上不动了,其实和扔计算机上没毛线区别。
    如果担心 ssh key 被读取,ssh key 有加密。
    zliea
        20
    zliea  
       2022-01-27 08:52:45 +08:00
    @lucifer9 一般自己电脑上不加,只有远程的机器上加一个。
    ysc3839
        21
    ysc3839  
       2022-01-27 09:05:03 +08:00 via Android
    @adoal 个人在用 HT42B534 的 USB 串口,这个是直接用 USB CDC 协议的。不选 CH340 是因为以前用的是 PL2303 的,然后厂家在新驱动里去掉了旧芯片的支持,用旧驱动时不时会蓝屏,最终只能直通进 Linux 虚拟机里用,超麻烦。
    loading
        22
    loading  
       2022-01-27 09:17:50 +08:00   1
    前段时间做了个 canokey ,还没正式用,焊接难度爆表( t12 小 k 头)
    https://github.com/canokeys/canokey-hardware
    knightdf
        23
    knightdf  
       2022-01-27 09:34:16 +08:00
    @lucifer9 自己电脑从来不加,麻烦自己
    lucifer9
        24
    lucifer9  
       2022-01-27 09:43:49 +08:00
    @knightdf 麻烦在哪里呢,不管是 ssh-agent 还是 gpg-agent 不都挺方便的么,当然要是经常重启自己机器那当我没说
    BQsummer
        25
    BQsummer  
       2022-01-27 10:27:02 +08:00
    @shunia 我妈问我整天画蚯蚓干啥
    cnkuner
        26
    cnkuner  
       2022-01-27 10:31:06 +08:00
    问一下,硬件出问题了怎么办,比如产品的 USB 挂了。
    Dreax
        27
    Dreax  
       2022-01-27 10:33:43 +08:00
    @44670 https://github.com/cnlohr/espusb 有人做了纯软件 USB 不知道怎么样
    t123yh
        28
    t123yh  
       2022-01-27 10:41:09 +08:00 via Android
    @44670 esp32s2 支持 USB
    cccer
        29
    cccer  
       2022-01-27 10:42:14 +08:00
    @cnkuner 硬件 KEY 一般都是设置 2-3 个,主 KEY 坏了可以先用备用的登录。
    ihipop
        30
    ihipop  
       2022-01-27 10:53:32 +08:00 via Android
    要是坏了,和所有机器失联。。
    什么⊙⊙?备份一个秘钥在机器上?那有什么意义?
    CallMeReznov
        31
    CallMeReznov  
       2022-01-27 10:57:41 +08:00
    CH340 在 centos 的驱动甚至需要自己重新编译替换,否则工作上不是太顺利
    具体可以看这个
    https://github.com/juliagoda/CH341SER
    jiezhi
        32
    jiezhi  
       2022-01-27 11:17:56 +08:00
    不懂硬件,能不能用个虚拟磁盘(可加密)模拟这个 USB ?用的时候挂载,不用的时候卸载。
    adoal
        33
    adoal  
       2022-01-27 11:25:55 +08:00 via iPhone   3
    @jiezhi USB key 和 U 盘的区别。前者是个计算设备,私钥不出 key ,电脑上获取不到私钥内容,后者哪怕盘是加密的但文件总要被原样读入到电脑一次。
    jiezhi
        34
    jiezhi  
       2022-01-27 11:28:15 +08:00
    @adoal #33 明白了
    yolee599
        35
    yolee599  
       2022-01-27 11:28:56 +08:00
    使用串口还要安装驱动,USB CDC 的话也要驱动,而且换一个 USB 接口串口号就变了。最好用 USB HID ,免驱,通过 VID/PID 识别设备,不用关心串口号的问题
    EPr2hh6LADQWqRVH
        36
    EPr2hh6LADQWqRVH  
       2022-01-27 11:33:02 +08:00
    像这种设备能够很好抵御灰尘水淹撞击强磁静电吗。。

    我的 AMD 显卡现在猫从旁边过就能挂逼,已经 PTSD
    adoal
        37
    adoal  
       2022-01-27 11:38:38 +08:00 via iPhone   1
    @yolee599 串口号变的原因是握手时返回的设备 ID 里没有序列号字段,这个不难解决。至于驱动,Windows 10 已经带公版 sys 和 inf 了,7 和 8 里其实有 sys ,只是缺一个不挑 VID/PID 的 inf 而已,这个倒也也不难解决。
    44670
        38
    44670  
    OP
       2022-01-27 11:56:39 +08:00
    @lucfer9 那个如果密码简单的话是容易被暴力破解的,设置复杂的密码又会容易觉得麻烦。
    44670
        39
    44670  
    OP
       2022-01-27 11:58:07 +08:00
    @t123yh 软件的 USB 协议栈容易出现安全问题,iPhone 和 Switch 的 bootrom 都有翻车的历史。
    44670
        40
    44670  
    OP
       2022-01-27 12:01:28 +08:00
    @cnkuner 我的理解是 SSH Key 一般是即抛型的,如果丢失了就应该在服务器上重新设置别的公钥。

    如果加密货币硬件钱包的话,会在生成密钥的同时输出一套助记词,可以把它写在纸上用于找回私钥。
    44670
        41
    44670  
    OP
       2022-01-27 12:58:54 +08:00
    @ysc3839 PL2303 是真的垃圾,厂商自己在上传 Windows Update 的驱动里下毒淘汰旧芯片,也没人管管。

    以后再也不会用这家公司的产品。
    adoal
        42
    adoal  
       2022-01-27 13:21:21 +08:00 via iPhone
    @44670 但是看 C3 的 spec 里的说法,它的 CDC uart 好像是芯片内置的,而且是单一的 CDC 功能,所以可能并不是 SDK 里的软件实现
    44670
        43
    44670  
    OP
       2022-01-27 13:26:40 +08:00
    @adoal C3 有两个 USB 硬件(不过只能同时使用一个),一个是硬件 USB JTAG+CDC ,另一个是给软件协议栈用的。

    第一版硬件我用的是自带的 USBCDC ,然而它的问题非常多,在很多情况下都有可能把上位机或者下位机陷入死锁的状态。

    那个 USB CDC 是用一个 FIFO 和 MCU 通信的,然而那个 FIFO 不管是空了还是满了都会把上下两端堵死。

    所以下一版硬件我还是换成了外挂芯片的方案(这大概也是淘宝上的 ESP32-C3 开发板、包括乐鑫官方的,都用了独立 USB-UART 芯片的原因)。
    44670
        44
    44670  
    OP
       2022-01-27 13:27:07 +08:00
    @44670 说错了,C3 只有一个 USB CDC ,S3 有两个。
    lucifer9
        45
    lucifer9  
       2022-01-27 14:09:21 +08:00 via iPhone
    @44670 #38 几周或者一个月输入一次还行吧,还省得长时间不用自己都忘了
    lingex
        46
    lingex  
       2022-01-27 14:20:47 +08:00
    XC6206 额定 200mA,
    C3 WiFi 发送时最大要求 350mA, 未来扩展可能不太够哦
    iamwho
        47
    iamwho  
       2022-01-27 14:25:34 +08:00
    把 ssh key 存入 keepass ,成本低至 0 元。
    44670
        48
    44670  
    OP
       2022-01-27 14:30:02 +08:00
    @lingex 好像是的!有好用的 LDO 推荐么?

    @iamwho 这个好像和之前提到的加 passphase 存储私钥没有区别。
    xuboying
        49
    xuboying  
       2022-01-27 14:44:26 +08:00
    这个思路很 cool!
    但是如果只是用来做 sshkey 认证,和已经使用了 2FA 的 ssh 认证相比,是不是并没有提高太多安全性?
    有没有别的地方可以应用这个技术?
    lingex
        50
    lingex  
       2022-01-27 14:54:27 +08:00
    @44670 #48 可以换 SPX3819 500mA
    hihanley
        51
    hihanley  
       2022-01-27 15:00:06 +08:00
    持续关注
    leavic
        52
    leavic  
       2022-01-27 15:02:46 +08:00
    我不用这类玩意的原因是不能备份,一旦硬件损坏极其操蛋。
    44670
        53
    44670  
    OP
       2022-01-27 15:18:34 +08:00
    @lingex 目前暂且换成了 JLC 可以贴片的 AMS1117 ,
    sipex 的怎么样,容易坏么?
    44670
        54
    44670  
    OP
       2022-01-27 15:20:17 +08:00
    @xuboying 我也是第一次看到 ssh 也可以用 2FA ,但是感觉这样有点多余并且似乎没有解决问题(仍然是 Secret 明文存储在设备上,不过变成了多个)
    starqoq
        55
    starqoq  
       2022-01-27 15:26:19 +08:00
    而且你买到的 CH343P 绝大部分是山寨的。没错,山寨芯片,只能用旧版驱动,一更新驱动就不工作了。
    lingex
        56
    lingex  
       2022-01-27 15:30:35 +08:00
    @44670 #53 我用来给双核的 ESP32 供电,用了 4~5 片,还没碰到过坏的。
    agagega
        57
    agagega  
       2022-01-27 15:32:46 +08:00
    比较合理的验证方式是硬件 Key+二次验证( Windows Hello/Touch ID )
    44670
        58
    44670  
    OP
       2022-01-27 15:36:19 +08:00
    @agagega 可以在设备上做一个按钮,对登录操作进行二次确认。

    @starqoq 有山寨的是 CH340 、CH343P 是最近新出的芯片。
    dreampet
        59
    dreampet  
       2022-01-27 15:37:40 +08:00
    还有一个方案:
    使用 ESP-8266 模块(比如,ESP8266-12F 价格 6 元), 然后通过软件协议栈( https://github.com/cnlohr/espusb)模拟 USB HID 协议,直接免驱使用
    xuboying
        60
    xuboying  
       2022-01-27 15:38:48 +08:00
    @44670 #54 你启发了我考虑使用 TPM2.0 作为 sshkey 存储。https://donjon.ledger.com/ssh-with-tpm/

    不管大家的需求如何,还是很赞赏你的思路,在程序员眼里感觉搞硬件很牛!
    44670
        61
    44670  
    OP
       2022-01-27 15:43:59 +08:00
    @xuboying TPM 这个感觉好多问题啊。。
    TPM 的固件本身就是由厂商各自实现的黑箱,并且 TPM 和 CPU 的数据通信、认证流程也未必是安全的,总之一堆问题,感觉安全性还不如 passphase 保护的密钥文件。

    M1 mac 的 Secure Enclave 是可以考虑的!然而目前它只支持一个认为有问题的椭圆曲线,不支持 RSA/ed25519 之类的。


    @dreampet 第一次发现 esp8266 有 usb ,学到了。
    不过 esp8266 没有安全启动 /Flash 加密的功能,所以没有考虑。并且目前 C3 和 8266 差不多便宜。
    rockyzhang
        62
    rockyzhang  
       2022-01-27 16:14:41 +08:00
    @44670 TPM 一般都有认证流程的,都需要 EAL 4+的安全认证,ESP32 还远远不到,也就是拿了个 secure-boot 的东西,签名算法的时候可以被侧信道攻击,不过没有别人物理接触,还可以认为问题不大
    xuboying
        63
    xuboying  
       2022-01-27 16:23:26 +08:00
    @44670 #61 好吧,持续关注

    给一个建议。实现一个 firefox 或者其他浏览器扩展,让 firefox 的密码存储调用这个 usb 设别。并把密码保存在 usb 设备上,不知道是否可行。。。
    iamwho
        64
    iamwho  
       2022-01-27 16:23:31 +08:00
    @44670 多两层啊
    adoal
        65
    adoal  
       2022-01-27 16:25:28 +08:00
    @44670 理论上应该是 key 找不回了就应该生成新的,服务器端重置公钥,但实操中真遇到这种事就伤筋动骨搞死人了……甚至,按理说,在不使用硬件的情况下,都应该每个终端上生成自己独用的并加到服务器,而不应该把别的终端上的私钥拷出来……然并卵
    44670
        66
    44670  
    OP
       2022-01-27 16:27:46 +08:00
    @rockyzhang 问题在于 TPM 检查的是操作系统内核的完整性,而不是用户身份,甚至不会检查操作系统的登录口令。即使操作系统内核是完整的,也无法避免上面运行恶意软件,所以感觉安全性还不如 passphase 保护的密钥文件。
    并且 CPU 和 TPM 的通信多数情况下是明文的,有人简单嗅探一下就拿到了 Key 。
    CPU 内置的 TPM 可以避免明文通信的问题,但是其它的问题还是存在。EAL4 只是认证芯片是否达到了设计目标,没有对固件做审计(好像 EAL6 会做),并且也不能保证整个安全体系就是没问题的。

    Secure Enclave 至少可以强制指纹 /人脸认证。


    ESP32 早期版本的安全启动存在侧信道漏洞,厂商声称新出的 ESP32 芯片缓解了侧信道攻击的问题,不过还没有人测试。感觉要完全防御侧信道攻击还需要很多工作。
    44670
        67
    44670  
    OP
       2022-01-27 16:30:03 +08:00
    @xuboying 可以用 sha256(secretKey+网站域名)来给每个网站生成独立的密码!

    不过 mozilla 最近似乎出问题了,到处给山寨币代言。我自己是打算逐渐从 firefox 换到别的浏览器。
    44670
        68
    44670  
    OP
       2022-01-27 16:32:40 +08:00
    @adoal 如果真的真的需要备份的话,可以考虑硬件上加一个屏幕,提供一次显示助记词的机会。
    但是这样成本又增加了,不太想做。
    riiygh
        69
    riiygh  
       2022-01-27 17:08:19 +08:00
    用 pam_oath 是不是也可以。
    crayygy
        70
    crayygy  
       2022-01-27 17:57:31 +08:00
    硬件 key 最怕的是不是硬件丢失这个问题...
    KagurazakaNyaa
        71
    KagurazakaNyaa  
       2022-01-27 18:31:46 +08:00
    @crayygy 确实,做大了不方便携带,做小了容易丢
    wooyuntest
        72
    wooyuntest  
       2022-01-27 18:37:58 +08:00
    @ztechstack yubikey 做 ssh 认证的时候,会要求用户去物理触摸一下 yubikey 来完成签名,否则 yubikey 不会签名。这样来防御远程调用一直插着的 key 来签名。而且如果是设定的时间窗口内第一次使用 key 来签名,在要求触摸之前,openpgpagent 还会要求用户输入 PIN 码来解锁 yubikey ,解锁以后并触摸 yubikey 才能完成签名。
    mlboy
        73
    mlboy  
       2022-01-27 18:56:33 +08:00
    不懂就问,这和银行 u 盾原理一样吗?
    parametrix
        74
    parametrix  
       2022-01-27 19:17:14 +08:00
    @mlboy 本质上是一样的
    pmispig
        75
    pmispig  
       2022-01-27 22:55:27 +08:00
    硬件 key 损坏丢失不是什么问题。怕损坏可以配置多个硬件,并且预留一个 txt 私钥,放到 U 盘里锁起来。
    丢失可以直接在服务器去掉这个 key
    44670
        76
    44670  
    OP
       2022-01-27 23:48:58 +08:00
    @pmispig 最好写在纸上,U 盘的数据保持时间还不如 esp32 板子。
    xuboying
        77
    xuboying  
       2022-01-28 00:10:57 +08:00
    开个脑洞
    既然 OP 这么在意 key 的安全,愿意制作硬件,干脆再更进一步,让硬件每隔一分钟算一个新的 sshkey ,服务器修改一下 pem 认证模块,支持动态 sshkey 认证,实现类似 4096 位长的 2fa 效果。
    还可以更进一步修改一下 ssh 协议,服务器每隔一分钟请求客户端认证一次,失败就 kickout 。
    ZeroClover
        78
    ZeroClover  
       2022-01-28 11:07:03 +08:00
    我选择直接 SSH Certificate ,基本不需要关心上述全部问题。
    44670
        79
    44670  
    OP
       2022-01-28 11:57:38 +08:00
    把 USB 串口芯片换成了 CH554 ,一个带 USB 功能的 8051 MCU ,价格还便宜一些。
    rockyzhang
        80
    rockyzhang  
       2022-01-28 12:20:57 +08:00
    @44670 我记得是上一代不是侧信道问题,而是被 Fault Injection 了,后来找了 Riscure 做了 Secure-Boot 代码的加强。DPA 这块似乎没有说。
    44670
        81
    44670  
    OP
       2022-01-28 12:53:50 +08:00
    @rockyzhang 原来如此。感觉侧信道还是很难防御的,在考虑要不要增加一块 ATSHA204A 。
    laydown
        82
    laydown  
       2022-01-28 13:10:59 +08:00
    ssh 上 2fa ,只需要带手机就行了,也不用多余的硬件去插本地机器物理端口,随便哪台联网机器哪个平台都能用。

    楼主的是一种思路,但不觉得很实用。
    knightgao2
        83
    knightgao2  
       2022-01-28 14:46:57 +08:00
    做出来了踢我下,我来小白鼠
    44670
        84
    44670  
    OP
       2022-01-28 15:18:40 +08:00
    @knightgao2 现在就可以在淘宝 9.9 元的 ESP32-C3 开发板上运行了。不过大概年后才能发货。
    2NUT
        85
    2NUT  
       2022-01-28 19:49:26 +08:00
    很有意思表示关注

    其实银行送的 u 盾 是一次加密硬件普及机会
    SteveLee
        86
    SteveLee  
       2022-01-29 17:58:30 +08:00
    看起来很有意思的项目,前两天整了个[Canokey]( https://blog.lyh.moe/2022/01/02/%E6%95%B4%E4%BA%86%E4%B8%AA%E5%B0%8F%E4%B8%9C%E8%A5%BF-Canokey/#more),这东西算是个 Yubikey 的平替。
    OpenSSH 现在有 FIDO2 的支持,所以像是 Yubikey 这样的设备可以用来做 SSH 密钥。
    不过不管是 Canokey 还是 Yubikey 还是太贵了,楼主这个项目成本很低,关注下
    44670
        87
    44670  
    OP
       2022-02-12 10:26:57 +08:00
    买的 9.9 元 ESP32C3 开发板到货了,成功刷入并开启加密。
    zbinlin
        88
    zbinlin  
       2022-02-14 20:22:50 +08:00
    涨价了吗?没搜到 9.9 的
    44670
        89
    44670  
    OP
       2022-02-14 23:00:41 +08:00   1
    @zbinlin 我买的那个 9.9 的似乎下架了,其它的价格在 18 元左右。
    44670
        90
    44670  
    OP
       2022-02-25 14:41:03 +08:00
    今天逛淘宝的时候发现 9.9 的开发板又可以买了。

    另外自己做了一套带屏幕的硬件,成本略高不过还能控制在 30 元之内。

    ![image]( )

    带屏幕的好处是可以在设备端查看、备份助记词,设备丢失后还能通过助记词恢复。
    run2
        91
    run2  
       2022-02-27 16:15:26 +08:00
    @44670 哪家集成的的 ESP32C3 ,求搜索关键词。
    我买的要安装 ch34X 驱动 就很不爽
    run2
        92
    run2  
       2022-02-27 18:30:58 +08:00
    @44670 我看 CH343G datasheet www.wch.cn/products/CH343.html 上 pin 2 是 txd 啊
    我不懂装懂的问:是不是接反了?
    44670
        93
    44670  
    OP
       2022-02-28 00:28:41 +08:00   1
    @sobigfish openluat ,他们家 9.9 的板子是集成免驱动的 CH343P 的

    pin2 确实是 txd ,但是 RXD 、TXD 是要交叉接的。
    naiba
        94
    naiba  
       2022-02-28 21:25:22 +08:00
    硬件靠谱可以改称冷钱包了
    44670
        95
    44670  
    OP
       2022-03-03 18:36:50 +08:00
    @naiba 自带 WiFi ,甚至可以在设备上完成交易。
    wc7086
        96
    wc7086  
       2022-06-19 17:28:57 +08:00
    @44670 为什么好几个电阻是空的
    wc7086
        97
    wc7086  
       2022-06-19 17:34:37 +08:00
    有没有考虑加上 gnupg
    44670
        98
    44670  
    OP
       2022-06-19 21:19:14 +08:00
    @wc7086 有些电阻不是必需的,做样品的时候懒得焊接了。gnupg 在考虑中。
    wc7086
        99
    wc7086  
       2022-06-19 21:31:41 +08:00
    还有一点,我觉得无线没必要用 wifi 或蓝牙,徒增功耗和体积,不如用 NFC 。而且 wifi/蓝牙的安全风险都比 NFC 大。
    44670
        100
    44670  
    OP
       2022-06-19 21:37:18 +08:00
    @wc7086 NFC 的话难以兼容 PC ,目前暂时没启用无线功能。
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2667 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 11:47 PVG 19:47 LAX 03:47 JFK 06:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86