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

关于 使用 YubiKey PIV 功能作为软件系统授权的 USBKey 的可行性的相关问题

  •  
  •   wzw · 215 天前 · 722 次点击
    这是一个创建于 215 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景:

    • 需要将一个使用 Golang 编写的 Web 应用私有化部署到客户服务器上,并需要使用 USBKey 进行软件系统授权。
    • 一些机器可以联网,一些机器不能联网,但需要定期进行联网更新。
    • 数量较少,未来大约几十个量级,因此价格并不是非常敏感。

    方案:

    • 使用 YubiKey 的 PIV 功能中的 PIN 功能,如下图所示。
    • 每个 YubiKey 都有一个唯一的序列号 SN ,可以将其与授权模块和到期日期进行绑定。
    • 在程序启动和关键操作时,会验证 PIN 和 Management Key 是否正确。
    • 序列号 SN/PIN/Management Key 将直接硬写到程序中,一一对应。

    问题:

    • YubiKey 目前应该是无法被复制的,因此应该是安全的吗?
    • 程序可以直接调用 https://github.com/go-piv/piv-go 来读取 SN 并验证 PIN 和 Management Key ,这种方式是否安全?(这个包的一个缺点是它不是纯 Go 包, 导致不能交叉编译, 准备单独写一个组件来调用)
    • 是否有更好的方案可以同时保证安全性和便利性?

    YubiKey

    8 条回复    2023-09-25 16:16:43 +08:00
    dallaslu
        1
    dallaslu  
       215 天前
    "...与授权模块和到期日期进行绑定",是另有一个离线的授权文件吗,还是存储在更新服务器上?

    "SN/PIN/Management Key 将直接硬写到程序中",如果 key 丢了,要重新打包、重新部署吗?

    我有点怀疑仅靠 SN 和 PIN 的方案,可以用软件模拟来绕过。

    考虑一下用 PGP ,卡内生成私钥的才是不可复制的。授权时,用开发者的 PGP 对授权的机密数据加密给客户的 Yubikey ,这份 License 可用对应的 Yubikey 离线验证。软件运行或检查更新时,尝试解密验证授权文件。
    wzw
        2
    wzw  
    OP
       215 天前
    @dallaslu
    1. "...与授权模块和到期日期进行绑定",是另有一个离线的授权文件吗,还是存储在更新服务器上?
    >>> 这个不是文件, 是读取序列号, 然后和程序里面去比对.
    2. "SN/PIN/Management Key 将直接硬写到程序中",如果 key 丢了,要重新打包、重新部署吗?
    >>> 在机房,正常丢不了吧. 丢了就是重新买一个 Key, 重新买授权咯. 程序里面多内置了一些 Key.
    3. 我有点怀疑仅靠 SN 和 PIN 的方案,可以用软件模拟来绕过。
    >>> 所以我也特意来问问这个问题, 关键如何绕过我也不知道, 特来这里问问比较了解的人
    4. PGP
    >>> 我去研究一下, PIN 安全的话, 也挺好用的
    cheneydog
        3
    cheneydog  
       215 天前
    把设备和 YubiKey 通信的包抓一下,用软件模拟一个 YubiKey ,是不是就无限复制了?
    建议还是得要用非对称加密技术
    baobao1270
        4
    baobao1270  
       215 天前
    1. 不知道你的用户群体是国内还是国外,如果是国内,那么用 YubiKey 成本太高了,同时也存在违反密码法的风(禁止使用国外生产的硬件加密产品)
    2. PIN 似乎是用于 PIV 内部操作的,个人感觉外部程序不应该直接使用。SN 码容易伪造,也不可靠。
    3. 建议使用 PIV 的非对称加密机制来做。
    dallaslu
        5
    dallaslu  
       215 天前
    wzw
        6
    wzw  
    OP
       215 天前 via iPhone
    @baobao1270 #4 量不多,价格还好,目前还是讨论为主。看来偷懒不是很安全,稳妥
    wzw
        7
    wzw  
    OP
       215 天前 via iPhone
    @cheneydog #3 这方面接触不多,可能需要时间学习下,晚点问问 ChatGPT ,或者你给我关键词,谢谢
    wzw
        8
    wzw  
    OP
       215 天前 via iPhone
    @dallaslu #5 挺难买,经常没货
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1239 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:41 · PVG 07:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.