Целостность выпуска TYPO3

Релиз-пакеты TYPO3 (загружаемые tar- и zip-файлы), а также Git-теги подписываются с помощью PGP-подписей в процессе автоматизированного выпуска. Для этих файлов также генерируются хэши SHA2-256, SHA1 и MD5.

Содержание выпуска

Каждый выпуск TYPO3 поставляется со следующими файлами:

TYPO3 CMS 11.5.1 релиз в качестве примера
typo3_src-11.5.1.tar.gz
typo3_src-11.5.1.tar.gz.sig
typo3_src-11.5.1.zip
typo3_src-11.5.1.zip.sig
Copied!
  • *.tar.gz и *.zip файлы - это собственно релизные пакеты, в которых представлен исходный код TYPO3 CMS.
  • *.sig в файлах представлены соответствующие подписи для каждого файла пакета релиза.

Проверка хэшей файлов

Хеши файлов используются для проверки того, что загруженный файл был передан и правильно сохранен в локальной системе. В TYPO3 используются криптографические методы хэширования, включая MD5 и SHA2-256.

Хеши файлов для каждой версии публикуются на сайте get.typo3.org и могут быть найдены на странице соответствующего релиза, например, на https://get.typo3.org/version/11#package-checksums содержит:

TYPO3 v11.5.1 Checksums
SHA256:
205d1879e05c75093a2c427f7f7cacb297ca841e491450b3577987e259ff6c5b typo3_src-11.5.1.tar.gz
e07b303405d182f4450fda4a7a7acdbe5080c22123d52f74ef5f2fbf78233a49 typo3_src-11.5.1.zip

SHA1:
aa88171cfb5aa9935b2a989f51e68b6d8eb6e5f0 typo3_src-11.5.1.tar.gz
3dbe9322015e1d5266d78c6c3ff40846f8a6492f typo3_src-11.5.1.zip

MD5:
cda2a4494f6673e9251c265c9ef1c345 typo3_src-11.5.1.tar.gz
252583501d30bb5679305b58ed6e6f94 typo3_src-11.5.1.zip
Copied!

Для проверки хэшей файлов необходимо локально сгенерировать хэши для загружаемых пакетов и сравнить их с опубликованными хэшами на get.typo3.org. Для локальной генерации хэшей необходимо использовать один из следующих инструментов командной строки md5sum, ha1sum или shasum.

Следующие команды генерируют хэши для пакетов .tar.gz и .zip:

 $
shasum -a 256 typo3_src-*.tar.gz typo3_src-*.zip
205d1879e05c75093a2c427f7f7cacb297ca841e491450b3577987e259ff6c5b typo3_src-11.5.1.tar.gz
e07b303405d182f4450fda4a7a7acdbe5080c22123d52f74ef5f2fbf78233a49 typo3_src-11.5.1.zip
Copied!
 $
sha1sum -c typo3_src-*.tar.gz typo3_src-*.zip
aa88171cfb5aa9935b2a989f51e68b6d8eb6e5f0 typo3_src-11.5.1.tar.gz
3dbe9322015e1d5266d78c6c3ff40846f8a6492f typo3_src-11.5.1.zip
Copied!
 $
md5sum typo3_src-*.tar.gz typo3_src-*.zip
cda2a4494f6673e9251c265c9ef1c345 typo3_src-11.5.1.tar.gz
252583501d30bb5679305b58ed6e6f94 typo3_src-11.5.1.zip
Copied!

Для обеспечения целостности пакета эти хэши должны совпадать с хэшами, опубликованными на get.typo3.org.

Проверка подписей файлов

TYPO3 использует Pretty Good Privacy для подписи пакетов выпуска и тегов выпуска Git. Для проверки этих подписей рекомендуется использовать The GNU Privacy Guard, однако можно также использовать любой инструмент, совместимый с OpenPGP.

В релизных пакетах используется отделенная бинарная подпись. Это означает, что файл typo3_src-11.5.1.tar.gz содержит дополнительный файл подписи typo3_src-11.5.1.tar.gz.sig, являющийся отсоединенной подписью.

 $
gpg --verify typo3_src-11.5.1.tar.gz.sig typo3_src-11.5.1.tar.gz
Copied!
gpg: Signature made Tue Oct 12 12:20:19 2021 UTC
gpg:                using RSA key E7ED29A70309A0D1AE34DA733304BBDBFA9613D1
gpg: Can't check signature: No public key
Copied!

Предупреждение означает, что открытый ключ E7ED29A70309A0D1AE34DA733304BBDBFA9613D1 еще не доступен в локальной системе и не может быть использован для проверки подписи. Открытый ключ может быть получен на любом сервере ключей - популярным является pgpkeys.mit.edu.

 $
wget -qO- https://get.typo3.org/KEYS | gpg --import
Copied!
gpg: requesting key 59BC94C4 from hkp server pgpkeys.mit.edu
gpg: key 59BC94C4: public key "TYPO3 Release Team (RELEASE) <typo3cms@typo3.org>" imported
gpg: key FA9613D1: public key "Benjamin Mack <benni@typo3.org>" imported
gpg: key 16490937: public key "Oliver Hader <oliver@typo3.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 3
gpg:               imported: 3  (RSA: 3)
Copied!

После импорта открытого ключа можно повторить предыдущую команду по проверке подписи файла typo3_src-11.5.1.tar.gz.

 $
gpg --verify typo3_src-11.5.1.tar.gz.sig typo3_src-11.5.1.tar.gz
Copied!
gpg: Signature made Tue Oct 12 12:20:19 2021 UTC
gpg:                using RSA key E7ED29A70309A0D1AE34DA733304BBDBFA9613D1
gpg: Good signature from "Benjamin Mack <benni@typo3.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: E7ED 29A7 0309 A0D1 AE34  DA73 3304 BBDB FA96 13D1
Copied!

Появление нового предупреждения вполне ожидаемо, постольку любой мог создать открытый ключ и загрузить его на сервер ключей. Важным моментом здесь является проверка отпечатка ключа E7ED 29A7 0309 A0D1 AE34 DA73 3304 BBDB FA96 13D1, который в данном случае является правильным для пакетов выпуска TYPO3 CMS (список используемых в настоящее время ключей см. ниже или обратитесь непосредственно к файлу https://get.typo3.org/KEYS).

 $
gpg --fingerprint E7ED29A70309A0D1AE34DA733304BBDBFA9613D1
Copied!
pub   rsa4096 2010-06-22 [SC]
      E7ED 29A7 0309 A0D1 AE34  DA73 3304 BBDB FA96 13D1
uid                  [ unknown] Benjamin Mack <benni@typo3.org>
sub   rsa4096 2010-06-22 [E]
Copied!

Проверка подписи тегов

Проверка подписей на Git-тегах работает аналогично проверке результатов с помощью инструмента gpg, но с использованием команды git tag --verify напрямую.

 $
git tag --verify v11.5.1
Copied!
object dcba2a7ce93eaef0ad025dc21fdeb85636d7b4f4
type commit
tag v11.5.1
tagger Benni Mack <benni@typo3.org> 1634041135 +0200

Release of TYPO3 11.5.1
gpg: Signature made Tue Oct 12 14:18:55 2021 CEST
gpg: using RSA key E7ED29A70309A0D1AE34DA733304BBDBFA9613D1
gpg: Good signature from "Benjamin Mack <benni@typo3.org>"
Copied!

Команда git show по имени тега позволяет получить более подробную информацию.

 $
git show v11.5.1
Copied!
tag v11.5.1
Tagger: Benni Mack <benni@typo3.org>
Date:   Tue Oct 12 14:17:52 2021 +0200

Release of TYPO3 11.5.1
-----BEGIN PGP SIGNATURE-----
...
-----END PGP SIGNATURE-----
Copied!

Публичные ключи

Используемые открытые ключи можно загрузить с сайта get.typo3.org.keys