A partir da versão 0.6, o apt contém código que faz verificação de assinaturas do ficheiro Release para todos os arquivos. Isto assegura que os pacotes no arquivo não podem ser modificados por pessoas que não têm acesso à chave de assinatura do ficheiro Release.
Se um pacote vem dum arquivo sem assinatura ou com uma assinatura para a qual o apt não tem a chave, esse pacote é considerado 'não sendo de confiança' e instalá-lo irá resultar num grande aviso. Actualmente o apt-get irá avisar apenas de arquivos não assinados, lançamentos futuros poderão vir a forçar que todas as fontes sejam verificadas antes de descarregar pacotes delas.
A corrente de confiança desde um arquivo apt até ao utilizador final é feita em diferentes passos. O apt-secure é o último passo nesta corrente, confiar num arquivo não quer dizer que os pacotes em que confia não possam conter código malicioso, mas que dizer que você confia no responsável do arquivo. É da responsabilidade do responsável do arquivo assegurar que a integridade do arquivo está correcta.
O apt-secure não revê as assinaturas ao nível do pacote. Se você necessita de ferramentas que o façam deve procurar pelo debsig-verify e debsign (disponibilizados nos pacotes debsig-verify e devscripts respectivamente).
A corrente de confiança em Debian começa quando o responsável faz o upload de um novo pacote ou de uma nova versão de um pacote para o arquivo Debian. De modo a se tornar efectivo, este upload precisa de ser assinado por uma chave de um responsável dentro do chaveiro de responsáveis da Debian (disponível no pacote debian-keyring). As chaves dos responsáveis são assinadas por outros responsáveis seguindo procedimentos pré-estabelecidos para assegurar a identidade do dono da chave.
Assim que o pacote submetido é verificado e incluído no arquivo, a assinatura do responsável é despojada, são computados sumários de verificação do pacote e colocado no ficheiro Packages. Os sumários de verificação de todos os ficheiros Packages são então computados e colocados no ficheiro Release. O ficheiro Release é então assinado pela chave de arquivo para este lançamento de Debian, e distribuído juntamente com os pacotes e os ficheiros Packages em mirrors de Debian. As chaves estão no chaveiro do arquivo Debian no pacote debian-archive-keyring.
Os utilizadores finais podem verificar a assinatura do ficheiro Release, extrair um sumario de verificação de um pacote a partir dele e compará-lo com o sumario de verificação do pacote que descarregaram manualmente - ou confiar no APT que faz isto automaticamente.
Note que isto é diferente de verificar assinaturas por cada pacote. É desenhado para prevenir dois ataques possíveis:
•Ataques de rede "man in the middle". Sem verificação de assinatura, um agente malicioso pode introduzir-se ele próprio no processo de descarga de pacotes e disponibilizar software malicioso seja ao controlar um elemento de rede (router, switch, etc.) ou ao redireccionar tráfego para um servidor impostor (através de ataques de fraude de ARP ou DNS).
•Mirror network compromise. Sem verificação de assinatura, um agente malicioso pode comprometer uma máquina mirror e modificar os ficheiros dele para propagar software malicioso a todos os utilizadores que descarregam pacotes a partir dessa máquina.
No entanto, isto não defende contra um compromisso do próprio servidor mestre da Debian (o qual assina os pacotes) ou contra um compromisso da chave usada para assinar os ficheiros Release. Em qualquer caso, este mecanismo pode complementar uma assinatura por-pacote.
apt-key é o programa que gere a lista de chaves usada pelo apt. Pode ser usado para adicionar ou remover chaves apesar de uma instalação deste lançamento ir automaticamente disponibilizar as chaves de assinaturas predefinidas de arquivo Debian usadas nos repositórios de pacotes Debian.
De modo a adicionar uma chave nova você precisa primeiro de descarregá-la (você deve certificar-se que está a usar um canal de comunicação de confiança quando a obtém), adicioná-la com apt-key e depois correr apt-get update para que o apt possa descarregar e verificar os ficheiros InRelease ou Release.gpg dos arquivos que você configurou.
•Criar um ficheiro Release de nível de topo, se este já não existir. Você pode fazer isto ao correr apt-ftparchive release (disponibilizado no apt-utils).
•Assiná-lo. Você pode fazer isso ao correr gpg --clearsign -o InRelease Release e gpg -abs -o Release.gpg Release.
•Publicar a impressão digital da chave, deste modo os seus utilizadores irão saber que chave precisam de importar de modo a autenticar os ficheiros no arquivo.
Sempre que o conteúdo do arquivo mude (são adicionados novos pacotes ou removidos), o responsável do arquivo tem que seguir os primeiros dois passos previamente delineados.
Para mais informação de fundo você deve querer reler a Infraestrutura de Segurança da Debian[1] no capítulo do Manual Debian de Segurança (disponível também no pacote harden-doc) e o Strong Distribution HOWTO[2] de V. Alex Brennen.
A tradução Portuguesa foi feita por Américo Monteiro <a_monteiro@netcabo.pt> de 2009 a 2012. A tradução foi revista pela equipa de traduções portuguesas da Debian <traduz@debianpt.org>.
Note que este documento traduzido pode conter partes não traduzidas. Isto é feito propositadamente, para evitar perdas de conteúdo quando a tradução está atrasada relativamente ao conteúdo original.