V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
20150517
V2EX  ›  问与答

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

  •  
  •   20150517 · Aug 5, 2015 · 5896 views
    This topic created in 3923 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    @yangff
    @ryd994
    shanigan
        21
    shanigan  
       Aug 6, 2015
    @20150517 https://en.wikipedia.org/wiki/Public-key_cryptography

    加密的例子:我可以用你的公钥加密我的邮件,然后发给你,然后你可以用你的私钥来解密读取。
    签名的例子:我想大众提供一个软件安装包,用我的私钥签名,你下载之后可以用我的公钥来验证你下载的安装包确实是我提供的。
    Pastsong
        22
    Pastsong  
       Aug 6, 2015
    这个问题问得有问题,要问的应该是公钥有什么用
    kiritoalex
        23
    kiritoalex  
       Aug 6, 2015 via Android
    我一般用4096位的,感觉没什么压力啊
    20150517
        24
    20150517  
    OP
       Aug 6, 2015 via Android
    @shanigan
    @Pastsong
    好吧 我语文是数学老师教的,我当然知道公钥是什么用,rsa算法质数什么我大学还自己写过,我问的是,为什么github要搭这个接口,让大家的公钥显示在你的id上
    kiritoalex
        25
    kiritoalex  
       Aug 6, 2015 via Android
    @shanigan 正解
    msg7086
        26
    msg7086  
       Aug 6, 2015
    @20150517 为什么你连我们说的废话都不明白还来问这么废话的问题呢
    公开的用处是?
    你说这种废话问题你怎么能问的出来。
    公开的用处就是公开,就是让人知道,这就是作用。这么简单的道理都不明白?
    20150517
        27
    20150517  
    OP
       Aug 6, 2015 via Android
    @msg7086 好吧,我语文不好, 我问的不是为什么公钥要公开,我问的是,他做这接口派什么用处?
    20150517
        28
    20150517  
    OP
       Aug 6, 2015 via Android
    @msg7086 因为显然他做成这样一个http接口,而不是帖在你的profile上,不仅仅是为了公开显示,是为了提供api调用用的,但这功能 怎么用的?
    msg7086
        29
    msg7086  
       Aug 6, 2015
    @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  
       Aug 6, 2015   ❤️ 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
       Aug 6, 2015 via Android
    @msg7086 这才是我要的答案啊
    msg7086
        32
    msg7086  
       Aug 6, 2015
    @20150517
    (1) 搜索只需要1分钟就能知道答案
    (2) 你需要学会提问
    wuchizhitu1988
        33
    wuchizhitu1988  
       Aug 6, 2015
    我天。。。好理直气壮的伸手党啊 google首页结果都看不到?
    julyclyde
        34
    julyclyde  
       Aug 6, 2015
    啊?提供下载的是ssh public key啊?这个好像没什么意义啊……
    提供GPG public key还差不多
    julyclyde
        35
    julyclyde  
       Aug 6, 2015
    人家问的是,把SSH key公开并不能像GPG key一样提供“别人加密文件给key的主人”这种用途,因为目前并没有常见的用SSH key去做文件加密的软件,SSH public key的用途目前还仅仅限于ssh通信中的身份认证。而@msg7086 等几位却曲解为“公钥本来就没啥可保密的呀”。等有人出来回答之后,你们又开始说“只需要1分钟就能知道答案,你需要学会提问”

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

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

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

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

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

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

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

    当然在github这种场景里确实有Handy for adding devs to servers/repos. 这种做法,但lz和我都没想到。你如果有心指点,就直接举出来,犯不着拿与此根本无关的人对人的身份鉴别来说事。
    julyclyde
        40
    julyclyde  
       Aug 6, 2015
    很多人都在回答:public key公开对安全无害。问题是lz根本就没问安全相关的问题,只是问这个看起来对外人没什么用的东西为什么被公开了,公开它的意义在哪儿
    msg7086
        41
    msg7086  
       Aug 6, 2015
    @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  
       Aug 6, 2015 via iPad
    @msg7086 你在前面的回复里并没有表达github的CA角色,这正是我批评你的表达的点

    另外,github这个CA角色,虽经你提起,我有了些理解,还是认为这用途太窄了,实在不值去做
    msg7086
        43
    msg7086  
       Aug 6, 2015
    @julyclyde 您批评得好,请收下我的膝盖。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2556 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 06:54 · PVG 14:54 · LAX 23:54 · JFK 02:54
    ♥ Do have faith in what you're doing.