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

Github 为什么会允许任何人下载你的 public key?

  •  
  •   20150517 · 2015-08-05 22:18:14 +08:00 · 5386 次点击
    这是一个创建于 3399 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如linus torvalds的公钥
    https://github.com/torvalds.keys

    公钥泄露了是没什么大问题,但是别人却可以这样鉴别你的身份,为什么github要这么设计,用处在哪?

    第 1 条附言  ·  2015-08-05 22:51:44 +08:00
    注意,问题不是公钥泄露有什么安全问题,问题是公布在网站是什么意义?什么用处
    第 2 条附言  ·  2015-08-06 02:03:19 +08:00
    我语文是数学老师教的,我错了,我表达是有问题,我感兴趣的是,为什么他要把你公钥做成一个页面。。。。
    43 条回复    2015-08-06 23:24:42 +08:00
    typcn
        1
    typcn  
       2015-08-05 22:19:01 +08:00
    jybox
        2
    jybox  
       2015-08-05 22:21:52 +08:00
    只有公钥(里面不包含你在 Github 上的备注)没有任何危害的,不然你可以想一想攻击者可以用这些公钥做什么。
    20150517
        3
    20150517  
    OP
       2015-08-05 22:24:45 +08:00 via Android
    2048位的公钥是真算不出私钥吗?云计算也不行?把linus私钥搞到,是不是可以植入代码到linux kernel里了,控制全世界了?
    freeznet
        4
    freeznet  
       2015-08-05 22:27:32 +08:00   ❤️ 1
    今天刚好有人利用github的key数据和ssh的特性写了个PoC, 感兴趣的可以试试 ssh whoami.filippo.io 就能看到一些好玩的信息了
    同时也可以看看 https://blog.benjojo.co.uk/post/auditing-github-users-keys 这篇文章
    20150517
        5
    20150517  
    OP
       2015-08-05 22:37:31 +08:00 via Android
    @jybox 要是碰撞了呢?
    elvodn
        6
    elvodn  
       2015-08-05 22:43:58 +08:00
    公钥不就是为了让别人验证身份的吗
    Tink
        7
    Tink  
       2015-08-05 22:46:35 +08:00 via iPhone
    对啊,我也好好奇公钥不就是为了让别人鉴别的么。。?
    TrustyWolf
        8
    TrustyWolf  
       2015-08-05 22:48:34 +08:00
    @20150517 目前已知碰撞出来的最长位数貌似是700多,1024位的基本都是安全的,Github说明文档的推荐值是4096位,这已经是变态级别的了。
    AstroProfundis
        9
    AstroProfundis  
       2015-08-05 22:49:39 +08:00
    PUBLIC key
    20150517
        10
    20150517  
    OP
       2015-08-05 22:50:58 +08:00 via Android
    @elvodn
    @Tink

    问题不是公钥泄露有什么问题,问题是github为什么要把你公钥显示在网站上?
    jetbillwin
        11
    jetbillwin  
       2015-08-05 22:51:06 +08:00
    You know, it's public key man.
    iptux
        12
    iptux  
       2015-08-05 22:52:05 +08:00
    已从 2048 位全面升级至 8192 位
    qinix
        13
    qinix  
       2015-08-06 00:35:13 +08:00 via iPhone
    公钥本来不就是应该公开发布出来的么,以前发pgp加密邮件的时候、验证签名、解密都是用公钥
    9hills
        14
    9hills  
       2015-08-06 00:40:02 +08:00 via iPad
    @20150517 算不出,能算出请去拿图灵
    9hills
        15
    9hills  
       2015-08-06 00:41:22 +08:00 via iPad
    @20150517 我以前把GPG公钥放博客上。。。

    这个没啥吧。
    20150517
        16
    20150517  
    OP
       2015-08-06 00:44:28 +08:00 via Android
    @9hills 可我问的不是公钥安不安全啊?
    msg7086
        17
    msg7086  
       2015-08-06 00:55:08 +08:00
    @20150517 公钥的目的就是公开。
    不公开就失去了公钥的目的了。
    很难理解么。
    ryd994
        18
    ryd994  
       2015-08-06 01:18:56 +08:00 via Android
    不公开叫什么公钥
    yangff
        19
    yangff  
       2015-08-06 01:20:06 +08:00 via Android
    @20150517 公开了才知道这个公钥是你的啊。。不然公开了干嘛。。
    20150517
        20
    20150517  
    OP
       2015-08-06 01:27:53 +08:00 via Android   ❤️ 1
    @msg7086 我当然知道是为了公开,公开的用处是?我问的是怎么使用这个功能?为什么很多人没看懂问题就开始说公钥就是为了公开这种废话。。。

    @yangff
    @ryd994
    shanigan
        21
    shanigan  
       2015-08-06 01:53:41 +08:00
    @20150517 https://en.wikipedia.org/wiki/Public-key_cryptography

    加密的例子:我可以用你的公钥加密我的邮件,然后发给你,然后你可以用你的私钥来解密读取。
    签名的例子:我想大众提供一个软件安装包,用我的私钥签名,你下载之后可以用我的公钥来验证你下载的安装包确实是我提供的。
    Pastsong
        22
    Pastsong  
       2015-08-06 01:56:58 +08:00
    这个问题问得有问题,要问的应该是公钥有什么用
    kiritoalex
        23
    kiritoalex  
       2015-08-06 01:59:40 +08:00 via Android
    我一般用4096位的,感觉没什么压力啊
    20150517
        24
    20150517  
    OP
       2015-08-06 02:01:14 +08:00 via Android
    @shanigan
    @Pastsong
    好吧 我语文是数学老师教的,我当然知道公钥是什么用,rsa算法质数什么我大学还自己写过,我问的是,为什么github要搭这个接口,让大家的公钥显示在你的id上
    kiritoalex
        25
    kiritoalex  
       2015-08-06 02:01:59 +08:00 via Android
    @shanigan 正解
    msg7086
        26
    msg7086  
       2015-08-06 03:02:50 +08:00
    @20150517 为什么你连我们说的废话都不明白还来问这么废话的问题呢
    公开的用处是?
    你说这种废话问题你怎么能问的出来。
    公开的用处就是公开,就是让人知道,这就是作用。这么简单的道理都不明白?
    20150517
        27
    20150517  
    OP
       2015-08-06 03:06:58 +08:00 via Android
    @msg7086 好吧,我语文不好, 我问的不是为什么公钥要公开,我问的是,他做这接口派什么用处?
    20150517
        28
    20150517  
    OP
       2015-08-06 03:09:22 +08:00 via Android
    @msg7086 因为显然他做成这样一个http接口,而不是帖在你的profile上,不仅仅是为了公开显示,是为了提供api调用用的,但这功能 怎么用的?
    msg7086
        29
    msg7086  
       2015-08-06 03:12:32 +08:00
    @20150517

    发布帖里说得很清楚了。

    Postmodern
    ‏@postmodern_mod3

    TIL @github exposes the ssh public keys for users. https://github.com/defunkt.keys Handy for adding devs to servers/repos.
    下午6:57 - 2013年2月9日

    [1]: https://twitter.com/postmodern_mod3/status/300438256200339456
    msg7086
        30
    msg7086  
       2015-08-06 03:14:38 +08:00   ❤️ 1
    Today I learned from @postmodern_mod3 that GitHub exposes public ssh keys for its users. For example, if you wanted my public keys: https://github.com/adamstac.keys

    So never again should you have to ask, “What’s your public ssh key?” You can just
    ※ curl -O https://github.com/<username>.keys
    their public keys from GitHub and move on.

    [1]: https://changelog.com/github-exposes-public-ssh-keys-for-its-users/
    20150517
        31
    20150517  
    OP
       2015-08-06 03:17:54 +08:00 via Android
    @msg7086 这才是我要的答案啊
    msg7086
        32
    msg7086  
       2015-08-06 03:18:52 +08:00
    @20150517
    (1) 搜索只需要1分钟就能知道答案
    (2) 你需要学会提问
    wuchizhitu1988
        33
    wuchizhitu1988  
       2015-08-06 09:18:20 +08:00
    我天。。。好理直气壮的伸手党啊 google首页结果都看不到?
    julyclyde
        34
    julyclyde  
       2015-08-06 10:29:48 +08:00
    啊?提供下载的是ssh public key啊?这个好像没什么意义啊……
    提供GPG public key还差不多
    julyclyde
        35
    julyclyde  
       2015-08-06 10:35:26 +08:00
    人家问的是,把SSH key公开并不能像GPG key一样提供“别人加密文件给key的主人”这种用途,因为目前并没有常见的用SSH key去做文件加密的软件,SSH public key的用途目前还仅仅限于ssh通信中的身份认证。而@msg7086 等几位却曲解为“公钥本来就没啥可保密的呀”。等有人出来回答之后,你们又开始说“只需要1分钟就能知道答案,你需要学会提问”

    我建议你们还是多学学语文
    msg7086
        36
    msg7086  
       2015-08-06 11:17:36 +08:00
    @julyclyde 你曲解我的意思了。我建议你还是多学学语文。
    msg7086
        37
    msg7086  
       2015-08-06 11:39:14 +08:00   ❤️ 1
    @julyclyde 我索性把整件事情讲讲清楚吧,免得睡觉了又断开对话。

    首先楼主标题里写了「为什么会允许任何人下载你的 public key」,顶楼写了「公钥泄露了是没什么大问题 但是别人却可以这样鉴别你的身份」,很明显着重提到了安全性,所以下面所有的楼层都在围绕着楼主提到的安全性问题展开讨论。楼主真正想知道的问题,为什么GitHub做了这样一个接口来提供这个数据,只占了顶楼不到四分之一的内容。下面歪楼简直是无可厚非。

    顺便你35楼的第一句话,「人家问的是,……」,说了2行却还是没把问题说清楚。建议你咨询语文老师,疑问句应该怎么写。

    第二句话,你说我等曲解为「公钥本来就没啥可保密的」。然而我说的是「公钥的目的/作用就是公开」。前者你说的这句是公钥的性质,而后者我说的这句是公钥的用途,这都能让你混在一起我也是服了。

    第三句话,「有人出来回答之后,你们又开始说……」抱歉,回答的人是我,回复这句话的人也是我。
    另外这句话我也不觉得有什么问题。我把楼主贴的github地址扔进谷歌,搜索,点开结果,复制,粘贴,点下回复键。很难吗?

    我不喜欢对人很mean。我尽可能在我的范围内用更温和的口气来回答问题。如果作为一个提问者,对着回答者就是一通「你们说的都是废话」,我也就呵呵了。至于你半途跳出来说了几句有的没的还让人「多学学语文」,我也就更呵呵了。
    20150517
        38
    20150517  
    OP
       2015-08-06 12:05:34 +08:00 via Android
    @msg7086 算了 没什么好吵的,我是的问的有问题,我当时手机写的,写的比较简单,没考虑太多的后果,因为正好下班,确实没来及谷歌,就是觉得好奇,想让大家分享下

    向大家表示抱歉
    julyclyde
        39
    julyclyde  
       2015-08-06 16:24:11 +08:00
    @msg7086 SSH public key那是给服务器鉴别用户的身份用的。如果某人要给别人开ssh登录权限,也应该直接找这个用户索取,而不是在公开渠道获得,因为并没有可靠的证据证明这个key就是这个人的。而SSH public key目前并不能用于其它密码术软件,所以也不存在加密文件或者签署数字签名的用法。

    当然在github这种场景里确实有Handy for adding devs to servers/repos. 这种做法,但lz和我都没想到。你如果有心指点,就直接举出来,犯不着拿与此根本无关的人对人的身份鉴别来说事。
    julyclyde
        40
    julyclyde  
       2015-08-06 16:25:14 +08:00
    很多人都在回答:public key公开对安全无害。问题是lz根本就没问安全相关的问题,只是问这个看起来对外人没什么用的东西为什么被公开了,公开它的意义在哪儿
    msg7086
        41
    msg7086  
       2015-08-06 20:39:50 +08:00
    @julyclyde 你还是没明白哪

    公钥,不管是SSH公钥也好SSL公钥也好。公钥的目的就是鉴别身份。
    比如我的公钥是AABB,那你怎么知道AABB这个公钥就是我的?
    当然是公开传播以后你才知道。而且是公开范围越大,知道得人越多,才越能证明我的公钥的可信度。
    最好是有著名网站、著名机构为公钥背书,这样公钥的可信度就越大。

    比如GPG就是把公钥上传到GPG的服务器去。而且通常这还不够,还需要现实生活中的其他朋友为你背书,说,大家看,这个GPG公钥,真的就是某某他本人的公钥。
    SSL证书也是这样,要各大SSL机构为其背书,说,大家看,这个SSL证书是我签的,我能证明这张证书背后的就是某某网站本身。

    同理这里SSH公钥也是这样。用户把公钥保存在GitHub服务器上,本身GitHub与用户之间就有鉴权行为,保证公钥只能由用户本人上传。那么本质上来说GitHub就是在为用户公钥的真实性背书了。对于第三方来说,确权行为不再需要用户本人参与,而直接找GitHub背书过的公钥就行了。

    以上这些就是我从17楼发言往下的推论。推出的结果和29楼没什么太大的区别。

    另外你说的「如果有心指点,就直接举出来」,而我确实就是这么做了。27、28楼,楼主确认了提问的主题以后我在5分钟内就针对问题给出了结果,不知你有何不满意的。
    楼主的提问明显的没有抓准重点,导致后面一排人歪楼。如果90%的读者都无法抓住你提问的重点,请问是90%的人语文水平都不合格,还是楼主没有好好表达清楚呢?
    julyclyde
        42
    julyclyde  
       2015-08-06 23:19:35 +08:00 via iPad
    @msg7086 你在前面的回复里并没有表达github的CA角色,这正是我批评你的表达的点

    另外,github这个CA角色,虽经你提起,我有了些理解,还是认为这用途太窄了,实在不值去做
    msg7086
        43
    msg7086  
       2015-08-06 23:24:42 +08:00
    @julyclyde 您批评得好,请收下我的膝盖。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5385 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.