【问题标题】:How do I validate a pip package's PGP key?如何验证 pip 包的 PGP 密钥?
【发布时间】:2020-09-28 03:14:59
【问题描述】:

我正在使用pycryptodomme 库。 documentation 状态

PyPI 上的所有源包和轮子都经过加密签名。可以使用以下 PGP 密钥对其进行验证:

我是通过pip安装的

pip install pycryptodome

我尝试直接通过

下载轮文件
pip download pycryptodome

没有*.sig*.asc 文件。当我使用建议here 直接检查轮文件时,我什至看不到它。

问题:

如何按照文档的建议检查轮文件的签名?

【问题讨论】:

    标签: python pip gnupg python-wheel


    【解决方案1】:

    The docs 已过时。

    PyPI 上的所有源包和轮子都经过加密签名。

    这不再是真的。 PGP 签名从旧后端切换到仓库时从 PyPI 中删除:

    https://github.com/pypa/warehouse/issues/3356#issuecomment-375303794

    https://pyfound.blogspot.com/2018/03/warehouse-all-new-pypi-is-now-in-beta.html

    遗留 PyPI 关闭后将消失的事情:

    包的 GPG/PGP 签名

    【讨论】:

    • 新版PyPI有没有类似的方法用来验证包的完整性?
    • @irritable_phd_syndrom 我不知道。有 PEP 458 但我不知道它是否已实施。无论如何,这是一个不同的安全威胁。
    • PGP 签名不会被丢弃,发行包维护者没有其他方法可以验证从 PyPI 中提取的内容的真实性。它从 PyPI WUI 和 API 中删除,但仍支持 gpg:您只需将“.asc”附加到相关文件即可。例如:files.pythonhosted.org/packages/aa/4e/…
    【解决方案2】:

    您必须通过获取文件的 URL 然后将 .asc 附加到该文件来手动下载它。

    例如,borgbackup 项目可以在 PyPI 的网站上查看:

    点击“下载文件”按钮,您可以选择从以下 URL 下载最新的 tarball:

    或者,您也可以使用 cURL 对 PyPI "simple" API 获取此 URL

    user@disp5066:~$ curl -s https://pypi.org/simple/borgbackup/ | grep -i borgbackup-1.1.13.tar.gz
        <a href="https://files.pythonhosted.org/packages/97/68/27d96a12f54894223ad6676ce4d215ad61771e3e723580f3ee6e609e17b7/borgbackup-1.1.13.tar.gz#sha256=164a8666a61071ce2fa6c60627c7646f12e3a8e74cd38f046be72f5ea91b3821">borgbackup-1.1.13.tar.gz</a><br/>
    user@disp5066:~$ 
    

    要获取此文件的签名,只需将.asc 附加到 URL:

    user@disp5066:~$ wget https://files.pythonhosted.org/packages/97/68/27d96a12f54894223ad6676ce4d215ad61771e3e723580f3ee6e609e17b7/borgbackup-1.1.13.tar.gz.asc
    --2020-07-02 07:51:12--  https://files.pythonhosted.org/packages/97/68/27d96a12f54894223ad6676ce4d215ad61771e3e723580f3ee6e609e17b7/borgbackup-1.1.13.tar.gz.asc
    Resolving files.pythonhosted.org (files.pythonhosted.org)... 151.101.37.63, 2a04:4e42:9::319
    Connecting to files.pythonhosted.org (files.pythonhosted.org)|151.101.37.63|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 862 [application/octet-stream]
    Saving to: ‘borgbackup-1.1.13.tar.gz.asc’
    
    borgbackup-1.1.13.t 100%[===================>]     862  --.-KB/s    in 0s      
    
    2020-07-02 07:51:14 (37.2 MB/s) - ‘borgbackup-1.1.13.tar.gz.asc’ saved [862/862]
    
    user@disp5066:~$ cat borgbackup-1.1.13.tar.gz.asc 
    -----BEGIN PGP SIGNATURE-----
    
    iQJHBAABCgAxFiEEL4Gv+6sE4R/o7mXUJDrPqVH3jgEFAl7cGqwTHHR3QHdhbGRt
    YW5uLWVkdi5kZQAKCRAkOs+pUfeOAd9ND/4nm2O7CK5a4aK41jAI1NisbgEtEJup
    SiD6bvMKpo3VU0P/3Y6pUibKOGzaRImBTB04qS3LlgjB0mCp1RSVsj/Hn+yCNw+k
    hfUH7E7JgAkq96Vkv1dcYgaJ9nhzuIAkEf0aDyzSo8HkBvGGN0/tfCQ7Nr7hI21u
    v5qupIyu7KZrBwY389l7+6yJ9G5qCtHU0fDALRYyjsX+WphrAaizrhFZJO7Km8VZ
    gZhAz3WUDPFwgNMb1mToUxpI2ZpnYnRxVBwjnX0Ps77ua4F5OsYM+hYwH5eX9bS9
    gmb+W3NjUNjVVj4z+OgN8FGbCTeFVQ6E+IVdm55D4ZRU8KarvFoKOI7HS4GP/3iv
    4iWqDaYBMRShnUTk1FKFCKjTb5tXewUGPwio+4bpgUyfJj0OWj1ecMqeF5VAslWz
    6pZnsUqLpTFuHUA6dr18TKX4U+c6rdXVM7BhNZe2XtjaQwau6Wz9nC1xhZyFNl1q
    CHY7jmLhsfP8GXkh31X9bJrKSZMyYRYat2e7kOroIJczRcHG9T708T+KzsfAb+6w
    pWZbfWNfCbCmVQehyhDvNepB3IB5w6ijrZwKTamHAnYBVkAUD/aYwDQJf4nAL4YI
    7JXBRpLlCVQGRUQdClqy8QjzpSZs5/Dbetvy5of753JbVjFQtGO2gLLp0wL0HB0v
    vIZv3dfBDvfcXQ==
    =F4gj
    -----END PGP SIGNATURE-----
    user@disp5066:~$ 
    

    另见:

    1. https://github.com/borgbackup/borg/issues/4213
    2. https://security.stackexchange.com/questions/232855/does-pythons-pip-provide-cryptographic-authentication-and-integrity-validation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-10
      • 2020-06-15
      • 2020-12-13
      • 2011-01-21
      • 2021-09-04
      • 2012-05-06
      • 2019-05-26
      • 1970-01-01
      相关资源
      最近更新 更多