Quais aborrecimentos ou problemas reais podem ocorrer quando a assinatura digital de um aplicativo Mac é quebrada?
Os aplicativos em um Mac podem ser assinados digitalmente. Quando a assinatura está de alguma forma quebrada, sei que alguns aplicativos podem perceber isso. Mas não sei em que detalhes isso será apenas aborrecimento ou realmente quebrará as coisas:
O firewall do OS X pode não ser capaz de definir corretamente uma assinatura ad hoc, fazendo com que uma seja solicitada repetidamente "Deseja que o aplicativo '[..]' aceite conexões de rede de entrada?"
Os aplicativos permitidos pelo Controle dos Pais podem não ser mais executados?
O acesso ao chaveiro pode estar quebrado?
Alguns dizem que a atualização do software da Apple pode falhar. Se for verdade, pergunto-me se isso realmente depende da assinatura da assinatura de código ou se seria causado por algum hash não correspondente para todo o aplicativo ou informações de arquivos de BOM .
Mais informações de plano de fundo abaixo.
Os detalhes da assinatura do código podem ser mostrados usando:
codesign --display -vv /Applications/iTunes.app/
... que produziria algo como o seguinte (mas não alertaria sobre modificações):
[..]
CDHash=86828a2d631dbfd417600c458b740cdcd12b13e7
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
[..]
A assinatura pode ser validada usando:
codesign --verify -vv /Applications/iTunes.app/
O que renderia:
/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement
... ou (mesmo quando simplesmente colocar algum arquivo extra na pasta ./Contents/Resources de um aplicativo):
/Applications/iTunes.app/: a sealed resource is missing or invalid
... ou (talvez pior que a mensagem acima):
/Applications/iTunes.app/: code or signature modified
A assinatura de código volta ao OS 9 ou anterior, mas a implementação atual foi introduzida no 10.5 Leopard. Ars Technica escreve :
A assinatura de código vincula uma identidade criptograficamente verificável a uma coleção de códigos e garante que qualquer modificação nesse código seja detectada. Não há garantias sobre as partes envolvidas. Por exemplo, se você baixar um aplicativo assinado pela Acme Inc., não poderá provar nada a respeito, exceto que ele veio da mesma entidade que afirma ser a Acme Inc. na última vez em que baixou algo de seu site.
Este exemplo, na verdade, destaca a aplicação mais útil da tecnologia da perspectiva do consumidor. Ao atualizar um aplicativo para Mac OS X hoje [na 10.4 Tiger, AvB], o usuário geralmente é solicitado a verificar novamente se esse aplicativo tem permissão para acessar o Keychain para recuperar nomes de usuário e senhas. Esse parece ser um bom recurso de segurança, mas tudo o que realmente faz é treinar os usuários do Mac a clicarem cegamente em "Sempre permitir" sempre que aparecer. E realmente, o que o usuário comum fará, execute o executável através de um desmontador e verifique manualmente se o código é seguro?
Um aplicativo assinado, por outro lado, pode provar matematicamente que é realmente uma nova versão do mesmo aplicativo do mesmo fornecedor em que você confiava anteriormente. O resultado é o fim das caixas de diálogo solicitando que você confirme uma escolha cuja segurança você não tem uma maneira razoável de verificar.
Para o firewall no 10.5 Leopard, a Apple explica :
Quando você adiciona um aplicativo a esta lista, o Mac OS X assina digitalmente o aplicativo (se ainda não tiver sido assinado). Se o aplicativo for modificado posteriormente, você será solicitado a permitir ou negar as conexões de rede recebidas. A maioria dos aplicativos não se modifica, e esse é um recurso de segurança que notifica você sobre a alteração.
[..]
Todos os aplicativos que não estão na lista assinados digitalmente por uma Autoridade de Certificação confiável pelo sistema (para fins de assinatura de código) podem receber conexões de entrada. Todo aplicativo Apple no Leopard foi assinado pela Apple e tem permissão para receber conexões de entrada. Se você deseja negar um aplicativo assinado digitalmente, primeiro adicione-o à lista e depois negue-o explicitamente.
No 10.6 Snow Leopard, este último fica mais explícito (e pode ser desativado) como "Permitir automaticamente que o software assinado receba conexões de entrada. Permite que o software assinado por uma autoridade de certificação válida forneça serviços acessados a partir da rede".
(Na 10.6, as opções 10.5.1 "Permitir todas as conexões de entrada", "Permitir apenas serviços essenciais" e "Definir acesso a serviços e aplicativos específicos" foram reformuladas para uma opção para "Bloquear todas as conexões de entrada" ou uma lista de aplicativos e opções permitidos "Permitir automaticamente que software assinado receba conexões de entrada" e "Ativar modo furtivo". Antes da atualização 10.5.1 , "Permitir apenas serviços essenciais" era na verdade chamado "Bloquear todas as conexões de entrada".)
Para aplicativos (Apple) que de alguma forma têm sua assinatura original quebrada, essa assinatura ad hoc pode, de alguma forma, não persistir e é conhecida por ter causado problemas ao configd, mDNSResponder e racoon.
fonte
Respostas:
Um exemplo de onde a assinatura de código 'quebrará' um aplicativo:
Fonte: Apple Mailing List e Jaharmi's Irreality
fonte
O que posso dizer é o Candybar, o aplicativo de personalização de ícones usado por muitas pessoas, quebra a assinatura digital de pelo menos o Finder e o Dock (e provavelmente alguns outros aplicativos principais do sistema), pois altera os arquivos de recursos e, até agora, nada foi relatado como um problema por causa disso. Assim, uma amostragem in-the-wild usando componentes principais do sistema operacional diria - não muito!
EDIT: aqui está o resultado da verificação da minha assinatura de código para o meu Dock no Snow Leopard:
fonte
Uma explicação um pouco detalhada da assinatura de código no Snow Leopard é fornecida na revisão do Snow Leopard da ars technica . Até onde eu sei, quebrar a assinatura de código não quebrará nada. No entanto, isso fará com que os aplicativos não sejam confiáveis, o que significa ter que verificar mais ações.
fonte
Eu estava reparando minhas permissões de disco no outro dia (no Disk Utility) e recebi este aviso:
Então, há algo que vai acontecer. Não sei o quanto isso é significativo.
fonte
codesign --verify
fato, mostra uma assinatura quebrada?A implementação atual da assinatura de código é desdentada e provavelmente foi lançada às pressas para o benefício dos desenvolvedores do iPhone. Esperançosamente, isso se tornará obrigatório em algum momento no futuro e, esperançosamente, também se tornará muito mais fácil e barato nesse período.
fonte