如何安全地检索 ubuntu 内核源代码?

Gue*_*OCs 4 apt kernel source-code git

根据BuildYourOwnKernel有两种方法可以获取源代码:

apt-get

  • apt-get 是由 Ubuntu 团队签署的吗?
  • 我的意思是,我的电脑会在下载时验证签名吗?
  • 有没有办法可以用另一种方法验证自己的签名?

混帐

Git 源代码未签名。

  • 有什么地方可以找到签名吗?
  • 我可以看到 git 标签已签名,但我无法获取公钥,也无法验证这些公钥是否安全(它们是否由 Ubuntu 团队签名?)

mur*_*uru 9

apt-get 是ubuntu 团队签名的吗?

嗯,dsc文件已签名并包含要下载的文件的哈希值:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.0
Source: linux
...
Checksums-Sha1:
 180ab617036593212274177eff3a67f437c1b5ea 132860730 linux_4.4.0.orig.tar.gz
 be23819008464f4aa49bed094d19aac086f16572 13880183 linux_4.4.0-112.135.diff.gz
Checksums-Sha256:
 730e75919b5d30a9bc934ccb300eaedfdf44994ca9ee1d07a46901c46c221357 132860730 linux_4.4.0.orig.tar.gz
 b5b6adc87ea98ffa48d31aee2ee5ec301a01c2b4fa64fa20d1564a4e95bdd6ad 13880183 linux_4.4.0-112.135.diff.gz
Files:
 2070b49688e8d7ee7ff4c33590afc698 132860730 linux_4.4.0.orig.tar.gz
 b349ae228d1659789e713b8ff2262eac 13880183 linux_4.4.0-112.135.diff.gz
Run Code Online (Sandbox Code Playgroud)

因此,一个带有 tarball 校验和的签名 dsc 文件〜最接近签名的源代码。

我的意思是,我的电脑会在下载时验证签名吗?

它确实尝试。apt-get确实尝试验证它:

$ apt-get source linux-image-4.4.0-87-generic
Reading package lists... Done
Picking 'linux' as source package instead of 'linux-image-4.4.0-87-generic'
NOTICE: 'linux' packaging is maintained in the 'Git' version control system at:
git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial
Please use:
git clone git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 147 MB of source archives.
Get:1 ftp://ftp.iitb.ac.in//os/ubuntu/archives/ubuntu xenial-security/main linux 4.4.0-112.135 (dsc) [9,712 B]
Get:2 ftp://ftp.iitb.ac.in//os/ubuntu/archives/ubuntu xenial-security/main linux 4.4.0-112.135 (tar) [133 MB]
Get:3 ftp://ftp.iitb.ac.in//os/ubuntu/archives/ubuntu xenial-security/main linux 4.4.0-112.135 (diff) [13.9 MB]
Fetched 147 MB in 4s (31.8 MB/s)
gpgv: Signature made Fri 19 Jan 2018 17:14:04 IST using RSA key ID CBEECEA3
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./linux_4.4.0-112.135.dsc
dpkg-source: info: extracting linux in linux-4.4.0
dpkg-source: info: unpacking linux_4.4.0.orig.tar.gz
dpkg-source: info: applying linux_4.4.0-112.135.diff.gz
dpkg-source: info: upstream files that have been modified: 
Run Code Online (Sandbox Code Playgroud)

但就我而言,它没有成功,因为我还没有导入相应的密钥。dsc 文件通常由创建它的开发人员签名,而且 AFAICT 没有一个地方列出所有这些密钥。各种 Ubuntu 开发人员是 Launchpad 上各种组的成员,开发人员的 Launchpad 配置文件应列出他们的 GPG 密钥。例如,请参阅Ubuntu Kernel Uploaders team,或组合的 Ubuntu Developers 团队(又包括许多其他团队)。

在这个特定案例中,签名者是 Canonical 员工Stefan Bader。您可以从 Ubuntu 密钥服务器获取密钥,但您可能希望使用 HKPS 来获取

有没有办法可以用另一种方法验证自己的签名?

dscverify工具可用于此目的。


我可以看到 git 标签已签名,但我无法获取公钥,也无法验证这些公钥是否安全(它们是否由 Ubuntu 团队签名?)

好吧,通过 Stefan Bader 或Andy Whitcroft的(例如,他似乎签署了此标签)密钥服务器列表,是的。