removido
(usa Nenhuma)
Enviado em 04/08/2012 - 08:26h
tn4ehi escreveu:
Os pacotes do debian são assinados digitalmente com uma chave gpg criptografada. O sistema só instala os pacotes caso a assinatura passe na validação, além da checagem do md5sum do arquivo. Isso garante que somente os arquivos distribuidos originalmente pelo Debian possam ser instalados.
Basta imaginar que um mantenedor de pacote tem uma chave pública. Ele faz um release do pacote assinado e upa para o incoming do debian e então é feita a verificação da chave para comprovar que se trata realmente do indivíduo esperado. Se o empacotamento estiver correto e a assinatura bater o pacote vai para o repositório unstable e fica lá por um bom tempo. Logo após é enviado para o repositório testing, que significa que o pacote e suas dependências cumpriram com todas as normas e critérios exigidos pelo Debian, até ser finalmente enviado para o repositório estável.
Não existe nenhuma maneira de alterar o conteúdo de um arquivo sem alterar o seu md5sum, e também é improvável que o individuo consiga falsificar uma assinatura gpg de modo a ser reconhecida pelo sistema.
Obrigado pela resposta. Estive revirando um repositório tentando me aprofundar no que você explicou e conforme compreendi e que vi que não precisava perguntar fui eliminando desse texto.
No caso, os arquivos .deb baixados vão para /var/cache/apt/archives, então eu peguei um arquivo com o tipo de programa que funciona prá root. Desempacotei não haviam arquivos que tivessem essa informação.
Então as informações de autenticidade devem vir durante o apt-get update. Um arquivo do repositório possuia chamado Packages.bz2 possuia algo como isso:
Package: apt-build
Priority: optional
Section: devel
Installed-Size: 204
Maintainer: Julien Danjou <acid@debian.org>
Architecture: amd64
Version: 0.12.37
Depends: libc6 (>= 2.7-1), perl, apt (>= 0.5), gcc, g++, dpkg-dev (>= 1.9), libappconfig-perl (>= 1.5), libapt-pkg-perl (>= 0.1.11), debconf | debconf-2.0, devscripts, apt-utils
Recommends: fakeroot, build-essential
Filename: pool/main/a/apt-build/apt-build_0.12.37_amd64.deb
Size: 36670
MD5sum: b9eb5620e35f94c3560183eb1adc42a8
SHA1: 7bffc1a8ba9f78a475d8fd425862b19ecb9434ef
SHA256: e36fb2cec62a678e1875c1cc57fb208c465167e95f51970c6827cd47a621086b
Description: frontend to apt to build, optimize and install packages
This is an apt-get front-end for compiling software optimized
for your architecture by creating a local repository with built packages.
It can manage system upgrades too.
Tag: admin::package-management, devel::debian, devel::packaging, implemented-in::perl, interface::commandline, role::program, scope::utility, suite::debian, works-with::software:package, works
-with::software:source
Esse arquivo tem apenas lista de pacotes. Não há uma identificação dele nele mesmo.
Então a única coisa que ele faz seria conferir se o pacote baixado confere com os checksums informados anteriormente. Conferir dependências etc.
Daí eu procurei por qualquer coisa a ver com criptografia que você falou e encontrei arquivos chamados Release e Release.gpg, idênticos com isto dentro:
Origin: Debian
Label: Debian
Suite: stable
Version: 6.0.5
Codename: squeeze
Date: Sat, 12 May 2012 12:07:58 UTC
Architectures: amd64 armel i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian 6.0.5 Released 12 May 2012
MD5Sum:
c80459f860240dcf6afe94b45fa0c35e 18309712 Contents-amd64.gz
4f9d68466e7b79ad2ce3cf422becbc0d 17845048 Contents-armel.gz
5251148d818a783e85fae051ac08f5a9 18516948 Contents-i386.gz
8153c8968afbe4d2d2b99149a9865512 17778772 Contents-ia64.gz
400f3eae553168f03dae39ecfc5ea384 17227870 Contents-kfreebsd-amd64.gz
b1cb466866976e38728043bf5860e2e7 17240714 Contents-kfreebsd-i386.gz
8a030fe2f11458a5bee5f39af1926b99 17805848 Contents-mips.gz
b2373383f45bdc862b214ca35dcb3043 17845218 Contents-mipsel.gz
2ce3cbf9e621f6fd2be9eea94e74bd70 18075393 Contents-powerpc.gz
3a4709db6d483be9ea0235e633d8d9c8 17794076 Contents-s390.gz
9b3afeb851732e4b586b792c3a1b9d20 17927067 Contents-sparc.gz
98cc07a49023188a90588934a970d358 37 Contents-udeb-nf.gz
d991669b82e90a46d17792db478c5fc5 68198 Contents-udeb.gz
Além do md5 ele também tem o sha1 e o sha256 de cada pacote que contém checksum de tudo. Ainda são hashes.
Dentro do diretório individual do pacote existem os binários compilados para todas as arquiteturas, sendo que há um arquivo menor comparado com outros com este conteúdo:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Format: 1.0
Source: apt-build
Binary: apt-build
Architecture: any
Version: 0.12.37
Maintainer: Julien Danjou <acid@debian.org>
Standards-Version: 3.8.0
Vcs-Browser:
http://git.debian.org/?p=apt-build/apt-build.git
Vcs-Git: git://git.debian.org/git/apt-build/apt-build.git
Build-Depends: debhelper (>> 5.0.0), po4a, po-debconf
Checksums-Sha1:
a72ee0f646a0e2147f07f1b26a73ff13135b96ef 44127 apt-build_0.12.37.tar.gz
Checksums-Sha256:
a553152f0c05d7f2dbfbe93760328c984b05d9bb8ee560417eafcfe7d6880479 44127 apt-build_0.12.37.tar.gz
Files:
4f749c8a913855658321637544c3006a 44127 apt-build_0.12.37.tar.gz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEYEARECAAYFAkjx/yIACgkQpGK1HsL+5c2cdgCeOOjwrcsAbSvKRlLejYAsY5ls
u0AAoMR4VqGiDUjkyyHb0WWAZh4bQNJ2
=w5XC
-----END PGP SIGNATURE-----
Oobservei as informações e há algo que não percebi:
Packages:
MD5sum: b9eb5620e35f94c3560183eb1adc42a8
SHA1: 7bffc1a8ba9f78a475d8fd425862b19ecb9434ef
SHA256: e36fb2cec62a678e1875c1cc57fb208c465167e95f51970c6827cd47a621086b
Description: frontend to apt to build, optimize and install packages
DSC no diretório do arquivo:
Checksums-Sha1: a72ee0f646a0e2147f07f1b26a73ff13135b96ef 44127 apt-build_0.12.37.tar.gz
Checksums-Sha256: a553152f0c05d7f2dbfbe93760328c984b05d9bb8ee560417eafcfe7d6880479 44127 apt-build_0.12.37.tar.gz
Files: 4f749c8a913855658321637544c3006a 44127 apt-build_0.12.37.tar.gz
Pelo que você disse, essa é a chave da autenticação de instalação; os hashes diferem devem ser cada um de alguma outra coisa.
Eu me lembro do funcionamento do PGP (supondo que GPG seja semelhante) e de chave assimétrica.
No caso, a alteração de pacote só seria possível em dois casos:
* interceptando o mantenedor: se ele usa chave assimétrica deve ser bem difícil interceptar a transmissão e ainda enviar um pacote criptografado com a mesma chave.
* interceptando o usuário: se a conexão não for criptografada, tudo pode ser interceptado e mudado. Então qual seria a garantia da garantia da garantia ... ? Há alguma coisa de antes no sistema que casa com a chave. O reconhecimento de assinatura.
Há muitos arquivos a serem baixados, muitos hashes, encontrei a chave, compreendi o funcionamento.
Eu deve ter lido seu texto umas 30 vezes. Está tudo certo com o distribuidor. Eu só não entendi como eu garanto que o sistema não será alterado com interceptação de download.
Creio que só falta saber isso. Obrigado novamente.