V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  DevOps

Kryptonite - 用手机 App 来管理你的 SSH Private Key

  •  
  •   Livid · 2017-05-02 15:05:18 +08:00 via Android · 6987 次点击
    这是一个创建于 2798 天前的主题,其中的信息可能已经有所发展或是发生改变。
    26 条回复    2017-11-16 00:54:04 +08:00
    ryd994
        1
    ryd994  
       2017-05-02 15:11:26 +08:00 via Android
    手机 app 其实安全性和 U 盘存文件也没差了……
    还是 USB 智能卡靠谱……
    cppgohan
        2
    cppgohan  
       2017-05-02 15:24:02 +08:00
    有趣的应用. 不知道备份容易吗, 不然手机丢掉就又要折腾一波了. (他这个方案是 public 的, 感觉应该已经有现成的了)

    另外 1password 感觉也有可能做到这样的功能, 如果他们想的话. (但是缺点就是他的存储不能被完全 trust)

    @ryd994 usb 智能卡有现成做到的产品吗? 分享个链接?

    另外把 ssh private key 放在 keybase 的 filesystem 不知道是否够安全? https://keybase.io/docs/kbfs/understanding_kbfs
    fds
        3
    fds  
       2017-05-02 15:27:49 +08:00
    不错。之前放在同步盘里也不安全。试试看。
    Had
        4
    Had  
       2017-05-02 15:34:24 +08:00
    @ryd994 智能卡就怕丢,但是也安全,因为私钥自己都拿不到...
    fds
        5
    fds  
       2017-05-02 15:34:44 +08:00
    o 好吧 原来不是管理旧秘钥而是生成个新的然后加到各个地方……
    新私钥也不能导出呢,形式上还是比较安全的。
    sampeng
        6
    sampeng  
       2017-05-02 15:35:46 +08:00
    1password 已经够了。。。反正也能保存文件和文字。。。这不是自己折腾自己么。。
    cppgohan
        7
    cppgohan  
       2017-05-02 15:56:27 +08:00
    @sampeng 如果现在你用 1password, 登录用 private key 的话, 还是需要把 private key 放在文件系统啊
    @Had 智能卡是指 Yubikey? 还有其他选择吗?
    ryd994
        8
    ryd994  
       2017-05-02 18:03:58 +08:00 via Android
    @Had 备份啊………
    密钥进智能卡之前还是可以备份的

    @cppgohan PGP 智能卡都能用
    ryd994
        9
    ryd994  
       2017-05-02 18:09:41 +08:00 via Android
    @cppgohan 很明显不一样,举个例子
    如果恶意用户伪造界面中间人,你怎么看得出来?

    这里的好处是,相比电脑,手机环境更加可控,所以更安全一点。对很多情况也算得上是 trusted platform 了

    智能卡纯硬件,除非有硬件 bug,否则应该很靠谱。
    sampeng
        10
    sampeng  
       2017-05-02 18:16:32 +08:00
    @cppgohan 多一步而已。可以接受。。感觉还是没有解决特别的痛点。。。
    况且跨设备登陆。。。无论怎么搞都不安全。还不如 ssh 到一台跳板机集中跳转。
    ryd994
        11
    ryd994  
       2017-05-02 18:25:48 +08:00 via Android   ❤️ 1
    看了他们技术说明,我觉得他们这样做是有问题的。他们试图构建一个安全的文件系统,每次读取要求用户授权,然而文件系统里存的还是普通的 key 文件。那要是 ssh 客户端恶意,完全可以私下保存一份,根本无从控制。
    智能卡的优点在于,除了一开始那次 key to card,后面密钥从不被任何卡以外的地方知晓。这是智能卡协议所保证的。要签名的随机数据进,签名过的数据出。只需要保证最初 key to card 的平台可信就好。
    而且对安全性要求高的,可以让卡直接内部生成,缺点就是万一丢了,不可能恢复密钥。
    lslqtz
        12
    lslqtz  
       2017-05-02 18:28:29 +08:00
    还是 usb key 加密文件靠谱。。
    Lentin
        13
    Lentin  
       2017-05-02 19:30:27 +08:00
    不论安全性这玩意真方便啊,弄个试试~
    Had
        14
    Had  
       2017-05-02 20:23:27 +08:00
    @ryd994 当然是直接让智能卡生成啊 导入就有流出的风险
    honeycomb
        15
    honeycomb  
       2017-05-02 20:50:13 +08:00
    @ryd994

    智能卡在硬件上能保证私钥写进去以后就读不出来。
    Android 在稍微新一些的版本里提供了一个基于硬件的 keystore 接口,但是看上去 Kryptonite 没有使用它

    https://source.android.com/security/keystore/features
    https://developer.android.com/training/articles/keystore.html
    https://source.android.com/compatibility/android-cdd#9.11. Keys and Credentials
    atempcode
        16
    atempcode  
       2017-05-02 21:14:34 +08:00
    @honeycomb 就是用的 keystore:

    How is the SSH private key stored on my phone?
    On iOS, Kryptonite generates a 4096-bit RSA key pair using the Apple iOS Security framework or optionally an Ed25519 key pair using libsodium. Kryptonite stores the private key in the iOS Keychain with accessibility level “ kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly ”. To learn more about the security of Apple cryptography libaries and the Apple iOS Keychain see: https://www.apple.com/business/docs/iOS_Security_Guide.pdf.

    On Android, Kryptonite generates a 3072-bit RSA key pair (because of the long secure hardware key generation time). The private key is stored in secure hardware called the Android Keystore and cannot be extracted, even by Kryptonite. The Android Keystore performs private key operations as a black box.
    Tink
        17
    Tink  
       2017-05-02 21:26:09 +08:00
    这个和 authy-ssh 差不多?
    LukeXuan
        18
    LukeXuan  
       2017-05-02 21:29:55 +08:00
    @ryd994 他们的做法应该是把手机表现成智能卡一样的接口的
    honeycomb
        19
    honeycomb  
       2017-05-02 21:41:21 +08:00
    @atempcode
    谢谢!

    那就没有问题了

    @LukeXuan
    它们就是这么做的
    AlexaZhou
        20
    AlexaZhou  
       2017-05-02 21:56:08 +08:00
    太棒了。

    很久之前我构思过这样的 app,但当时不确定能实现出来,就没有继续下去,现在居然有人把这个做出来了,666。
    AlexaZhou
        21
    AlexaZhou  
       2017-05-02 22:07:01 +08:00
    但好像有一点不足,认证的过程中通讯应该使用了 app 的官方服务器做中转,如果是电脑直接跟手机通讯就完美了(比如使用 蓝牙 BLE )
    sobigfish
        22
    sobigfish  
       2017-05-02 22:24:51 +08:00
    私钥之所以 Private 就是不要传输
    LukeXuan
        23
    LukeXuan  
       2017-05-02 22:43:28 +08:00
    话说既然可以这么认真 ssh 那么 gpg 是不是理论上也可以?
    ryd994
        24
    ryd994  
       2017-05-02 23:36:34 +08:00 via Android
    @Had 鉴权密钥有备用登录途径的话可以这么搞,加密密钥这样搞哪天丢了就全完了。有可信环境的话,生成再导入问题不大,特别是个人,又不是高危人群
    RqPS6rhmP3Nyn3Tm
        25
    RqPS6rhmP3Nyn3Tm  
       2017-05-03 05:21:21 +08:00 via iPhone
    @cppgohan Yubikey 很好用
    renothing
        26
    renothing  
       2017-11-16 00:54:04 +08:00
    多此一举。OTP 不就好了吗。只要确保 OTP 设备不掉就 OK。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2312 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:57 · PVG 23:57 · LAX 07:57 · JFK 10:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.