根据构建自己的内核获取源代码有两种方式:
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 团队签名的吗?)