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

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

根据构建自己的内核获取源代码有两种方式:

apt-get

  • apt-get 是否由 Ubuntu 团队签名?
  • 我的意思是,当我下载它时我的电脑会验证签名吗?
  • 有没有办法可以用其他方法验证自己的签名?

git

Git 源代码未签名。

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

答案1

apt-get 是否由 ubuntu 团队签名?

那么,差分扫描文件已签名并包含要下载的文件的哈希值:

-----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

因此,签名的 dsc 文件包含 tarball 的校验和 ~ 最接近您获得的签名源代码。

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

它确实尝试。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: 

但在我的例子中,它没有成功,因为我还没有导入相应的密钥。dsc 文件通常由创建它的开发人员签名,据我所知,没有一个地方列出所有这些密钥。各种 Ubuntu 开发人员都是 Launchpad 上各种组的成员,开发人员的 Launchpad 配置文件应该列出他们的 GPG 密钥。例如,请参阅Ubuntu 内核上传者团队, 或者联合 Ubuntu 开发者团队(其中又包括许多其他团队)。

在这个具体案例中,签名者是 Canonical 的员工斯蒂芬·巴德您可以从 Ubuntu 密钥服务器获取密钥,但您可能希望这样做使用 HKPS

有没有办法可以用其他方法验证自己的签名?

dscverify工具可用于此目的。


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

嗯,按照 Stefan Bader 的说法安迪·惠特克罗夫特's (似乎已经签署此标签,例如)密钥服务器列表,是的。

相关内容