【问题标题】:How do I get the *.changes file for a debian package?如何获取 debian 软件包的 *.changes 文件?
【发布时间】:2018-04-29 16:46:26
【问题描述】:

我知道我可以使用以下命令将 Debian 软件包源文件下载到当前目录:

$ apt-get source tree
...
$ ls -lahn
total 88K
drwx------  3 10335 11111 4,0K Apr 29 15:24 .
drwxrwxrwt 16     0     0  20K Apr 29 16:39 ..
drwxr-xr-x  5 10335 11111 4,0K Apr 29 15:24 tree-1.7.0
-rw-r--r--  1 10335 11111 5,9K Oct 25  2014 tree_1.7.0-3.debian.tar.xz
-rw-r--r--  1 10335 11111 1,8K Oct 25  2014 tree_1.7.0-3.dsc
-rw-r--r--  1 10335 11111  46K Apr 27  2014 tree_1.7.0.orig.tar.gz

我也知道*.dsc 文件(通常)带有我可以检查的签名:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 3.0 (quilt)
Source: tree
Binary: tree
Architecture: any
Version: 1.7.0-3
Maintainer: Florian Ernst <florian@debian.org>
Homepage: http://mama.indstate.edu/users/ice/tree/
Standards-Version: 3.9.5
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/tree.git
Vcs-Git: git://anonscm.debian.org/collab-maint/tree.git
Build-Depends: debhelper (>= 8), dpkg-dev (>= 1.16.1~)
Package-List:
 tree deb utils optional arch=any
Checksums-Sha1:
 35bd212606e6c5d60f4d5062f4a59bb7b7b25949 47082 tree_1.7.0.orig.tar.gz
 d9c3f9d6882e6a26f2428db6528de2a1c9a620da 5944 tree_1.7.0-3.debian.tar.xz
Checksums-Sha256:
 6957c20e82561ac4231638996e74f4cfa4e6faabc5a2f511f0b4e3940e8f7b12 47082 tree_1.7.0.orig.tar.gz
 1af303c6b9fc640c8346a6c21f45fa6275e7fa7df9f6656af16b504a1a261732 5944 tree_1.7.0-3.debian.tar.xz
Files:
 abe3e03e469c542d8e157cdd93f4d8a6 47082 tree_1.7.0.orig.tar.gz
 1bf74f9218c1b300de1246043b421173 5944 tree_1.7.0-3.debian.tar.xz

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBCAAGBQJULE31AAoJEAY3Qbr13R7OYnYQALFkasPqrvRt4lPYiROjkx50
3YfZ9yfnvAbsjhMkECl5ItWfQmNgpgObwTidV9JdJ8N70joaayRPDw7ACaBiOM9z
gA6ERv27hw7uoww1U7pu7J5WTLI2rH592BhU+qhnnrFs6mzFXc6SzuiV1oqEzbjP
dfP73v4lgIw6xPKdOo/l9oKY+tJXgEnspaZu/bnTkUbeV/p9xWmwE8ilGllMx7RA
YGQSq/Jn90mk7C2bfEH96kV0//ThTylCXiqNKafNDNeVYcRKJ1xbTentREMTr6vn
YxLR8e0mAz1hviAc2o+Ga+3zAzwgf+MZzdyAWWWNcH0K4r/UT4IYm7ajwFkaiPW8
+p+iHAVkABWicSKb51wIb2azmow1/PlSYzx1D5JZs8rh07rHC1zE2ni+zSxdtNFq
7yQ8k2WUKVzlJudXQBlZDSNbwHsetNVrceVPXF6xLrwxDf1+rUg0W7KLstKbjtlP
oqDuqzKhD6Mzl1YKMwraFIltlUt9DMZRwtmymjPIAsx56+/sPGv4PYqiPJpih6Gk
rw7fvYMU/dflUAxz13tFAY6qTCQR0DJ1HDiPD86/+/imwCVb9DAq2fJZZtF6W84T
xDipKYuYsVqXwXaWH1xlt7pSgKyoPJzUJt+M+8XDBXncn36M7aVpP57LjrHvDgNu
DVKPiaUlkR25A0/gqoQ1
=5N30
-----END PGP SIGNATURE-----

我知道包维护者可以debsign*.dsc 和/或*.changespackage build process 期间生成的文件。

那么,*.changes 文件在哪里?如何下载给定 Debian 软件包的 *.changes 文件?为什么apt-get source 下载的是*.dsc 文件而不是*.changes 文件?

参考资料:

【问题讨论】:

  • @GiacomoCatenazzi,这样我就可以验证一般包的附加签名,而不仅仅是那些被 debian 网站跟踪的包。
  • 我签署了我的包并上传到 Debian。签名被检查,但包被重建,所以我的签名不再有效。只是新的构建包是公开的,带有 Debian 发行签名。 [这适用于二进制(特定于架构的)包]。所以签名验证应该在另一个层次上完成。检查 ftp-master 工具 [dak] 如何处理存储库并进行大量验证和上传。
  • @GiacomoCatenazzi,对于您的具体情况,您将如何验证您上传的源包的签名?如何验证对该来源的任何修改?
  • 我不知道。我信任 Debian(而且无论如何我都无法 [再] 检查 glibc、内核和许多其他系统实用程序,所以......)。如果我使用了错误的密钥,我会收到一封拒绝邮件(因此 Debian 验证)。 Debian 也非常注重安全(它需要比内核早 10 多年的数字签名),并且它支持(Debian 开发人员创建它)“可重复构建”,这在这种情况下也有帮助。无论如何,我永远不会检查所有架构。

标签: debian apt deb dpkg


【解决方案1】:

.changes 文件是“维护者”为上传准备的清单,它是否确实已签名,并且接受上传的存档软件需要信任该维护者。但随后信任被转移到档案中。维护者可能已经辞职,他们的 OpenPGP 密钥可能已过期或被撤销,他们可能已被驱逐等。存档确保签署 Sources 和 Packages 存储库元索引,处理密钥轮换、到期等。

信任锚因此从维护者到存档,然后转移到存档,因此它可以从存档到用户。如果您不信任存档,您甚至不应该尝试从中下载工件,因为它可能会在那里注入任何东西,包括对维护者正确签名但已过时且存在已知安全漏洞的包进行重放攻击,f.ex .

这就是 apt 在下载 .dsc 之前对 Sources 元索引强制执行签名验证的主要原因,但 dpkg-source 仅对 .dsc 签名进行机会性(非致命)验证。

如果出于某种原因您仍想获取 .changes 文件,至少对于 Debian 而言,这些文件可以从列表档案中获得(如 Giacomo Catenazzi 所述)。

【讨论】:

  • 感谢您明确解释这种仅在文档中隐含的“信任转移”。知道了这一点,签名验证的方式和时间就有意义了。
猜你喜欢
  • 1970-01-01
  • 2017-12-30
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多