Uma análise dos certificados digitais para assinatura de código
de aplicações de diferentes segmentos na plataforma Android
Jonata Fröhlich1 , Luciano Ignaczak1
1
Universidade do Vale do Rio dos Sinos(UNISINOS)
Av. Unisinos, 950 – 93.022-000 – São Leopoldo – RS – Brasil
[email protected], [email protected]
Abstract. The amount of users of the Android platform is growing every day
and the number of available applications grows in similar proportion. Currently, all installed applications in the Android platform must be digitally signed.
However, there is no control of the security criteria in the digital certificates
used, leaving to the developer himself the task of selecting the information and
characteristics of the certificate. This article analyzed security features of 400
digital certificates used in the signing of the Android platform, of five segments.
The study showed that the periods of validity are very long in most segments and
that there are differences between the data contained in digital certificates and
registered in the virtual store searched.
Resumo. O número de usuários da plataforma Android cresce a cada dia e
o número de aplicativos disponı́veis cresce em proporção semelhante. Atualmente, todos os aplicativos instalado no Android devem ser assinados digitalmente, porém não existe um controle dos critérios de segurança nos certificados
digitais utilizados, deixando essa tarefa ao desenvolvedor. Este artigo analisou
caracterı́sticas de segurança de 400 certificados digitais utilizados na assinatura de aplicativos do Android, de cinco segmentos. O estudo mostrou que os
prazos de validade são muito longos e que na maioria dos segmentos existem
diferenças entre os dados contidos nos certificados digitais e registrado na loja
virtual.
1. Introdução
Os smartphones a cada dia ganham maior importância na vida de muitas pessoas em todo
mundo. Segundo o IDC, no ano de 2014 as vendas globais atingiram mais de 1,3 bilhão
de dispositivos, um aumento de 27,7% quando comparado ao ano de 2013. Segundo
a mesma pesquisa do IDC, o sistema operacional mais utilizado em smartphones é o
sistema Android com 76,6%[IDC 2015]. Com o expressivo aumento dos dispositivos
móveis, o número de aplicativos para o sistema operacional Android cresceu na mesma
ordem. No mês de maio de 2013 eram 782.038 aplicativos disponı́veis na loja oficial do
Google Play. Já no mês de maio de 2015, o número de aplicativos disponı́veis alcançou o
número 1.515.536, um aumento de 93,79% em dois anos [APPBrain 2015].
Devido ao grande número de aplicativos disponı́veis e como muitos deles
contém informações confidenciais, percebeu-se a necessidade de agregar mecanismos de
segurança trazendo mais proteção aos usuários. Um dos mecanismos de segurança está
no processo de instalação de um aplicativo, pois verificações são efetuadas durante o processo de instalação ou atualização de um aplicativo. Entre elas pode-se destacar a Update
Integrity, que efetua uma verificação quanto a integridade do aplicativo, ou seja, é analisado se não houve modificação desde que o código foi assinado pelo seu desenvolvedor.
Em seguida, o Android decidirá se a instalação se trata de um novo aplicativo ou somente
uma atualização. Caso seja uma atualização é feita uma comparação da assinatura digital
do aplicativo já instalado com a nova versão. Esse processo garante que somente o desenvolvedor legı́timo seja capaz de lançar novas versões do aplicativo [Barrera et al. 2012].
A assinatura digital deve possibilitar que os usuários consigam verificar a autoria de um aplicativo, através da sua associação com o certificado digital. Nesse sentido,
o Android obriga os desenvolvedores a assinar digitalmente os aplicativos antes de disponibilizá-los aos usuários. No entanto, a plataforma possibilita que o desenvolvedor
utilize certificados auto-assinados na criação da assinatura digital [Gunasekera 2012]. Ao
atribuir a tarefa de emissão de um certificado digital, o Android possibilita que o desenvolvedor selecione as informações e caracterı́sticas do certificado digital emitido, o que
pode resultar no comprometimento da segurança provida pela assinatura digital.
Este artigo tem como objetivo realizar uma análise dos certificados digitais usados na assinatura de aplicações para plataforma Android de segmentos especı́ficos. Para
alcançar o objetivo foi efetuado o download de 400 aplicativos para a plataforma, que
foram divididos em 5 segmentos diferentes. Para os segmentos foram definidos dois
critérios: 1) Os aplicativos devem trafegar dados confidenciais; ou 2) Aplicativos da
área de segurança. Após os critérios definidos, foram escolhidas os seguintes segmentos: bancário, comércio eletrônico, backup, antivı́rus e criptografia. Para a realização da
análise foram estudadas quatro caracterı́sticas dos certificados digitais que podem comprometer a sua segurança ou a credibilidade da assinatura de código.
O restante do artigo está dividido em cinco seções. Na segunda seção serão apresentados outros trabalhos publicados que discutem a utilização do uso de certificados digitais em aplicativos Android, problemas no modelo atual e outras pesquisas estatı́sticas
relacionadas. Na terceira seção será apresentada a metodologia. Na quarta seção serão
apresentados os resultados obtidos com a análise de 400 aplicativos. Por fim, serão expostas as conclusões dos autores.
2. Trabalhos Relacionados
A segurança proporcionada pelo uso de assinaturas digitais no Android vem sendo
discutida em diversos trabalhos, assim como as suas fragilidades.
Os artigos
[Barrera and van Oorschot 2011] e [Barrera et al. 2012] apresentaram que o desenvolvedor é responsável em efetuar a assinatura de código, sem nenhum envolvimento da loja
virtual. Neles também é abordado que somente em atualizações a assinatura digital é
utilizada, uma vez que não existe processo de verificação do desenvolvedor na primeira
instalação, além de apresentarem a utilização da assinatura de código para a criação da
sandbox. No trabalho de [Vargas et al. 2012], os autores apresentam os controles de
segurança adotados pelo Android, entre eles é citado a utilização de certificados digitais para a assinatura de código, porém os autores destacam que o certificado digital não
precisa ser emitido por um autoridade de certificação confiável, ou seja, o próprio desenvolvedor pode emitir um certificado digital auto-assinado. O trabalho publicado por
[Zheng et al. 2014] apresenta uma análise dos vários firmwares que são baseados em Android e alertam para a possibilidade dessas versões possuı́rem vulnerabilidades. O autores
citam a vulnerabilidade Master Key, na qual um usuário mal intencionado explora a falta
de verificação de nomes duplicados nas entradas dos arquivos .apk e então são criados dois
arquivos com o mesmo nome, contornando a verificação de assinatura realizada durante
o processo de instalação e atualização de um aplicativo. No trabalho [Panja et al. 2013]
é analisada a segurança de um aplicativo bancário. Entre os testes efetuados, pode-se
destacar a alteração do IP do servidor no código do arquivo .apk, direcionando o tráfego
para um servidor configurado pelos autores, que permitiu a captura de dados confidenciais. Para efetuar tal alteração foi necessária a recompilação do aplicativo utilizando um
certificado digital dos próprios pesquisadores.
Atualmente estão sendo desenvolvidas diversas análises estatı́sticas quanto ao uso
de aplicativos na plataforma Android. O trabalho de [Barrera et al. 2012] apresenta uma
análise de 11.000 aplicativos que destaca os seguintes dados: 18% dos desenvolvedores assinaram mais de um aplicativo com a mesma chave e 4% dos aplicativos obtidos a
partir de redes de compartilhamento tem links diretos para malwares conhecidos. Além
disso, entre os aplicativos analisados, 291 utilizavam uma chave de teste disponı́vel ao
público, sendo que 51 eram maliciosos e 15 estavam disponı́veis no Google Play. O
trabalho de [Fahl et al. 2012] realizou uma análise de 13.500 aplicativos mais populares do Google Play que verificou o uso indevido dos certificados SSL. A análise constatou que 1.074 aplicativos estavam potencialmente vulneráveis a ataques MiTM. Em
[Barrera et al. 2014] além dos autores apresentarem o conceito de confiança no primeiro
uso, é apresentado alguns dados estatı́sticos sobre as caracterı́sticas dos certificados digitais, entre elas que 99% dos certificados analisados por eles foram gerados pelo Android
signing wizard e que 75% dos certificados não seguem uma recomendação do NIST. Em
trabalho anterior [Frohlich et al. 2015] realizaram uma análise dos 397 aplicativos gratuitos mais populares do Google Play, na qual foi possı́vel constatar altos prazos de validades, além de que quanto maior o prazo de validade menor o tamanho da chave. O mesmo
trabalho destacou que não existe um cuidado por parte dos desenvolvedores em relacionar
as informações contidas no certificado digital com as informações cadastradas na loja.
Entre os trabalhos mencionados nesta seção que realizam uma análise de aplicativos Android, apenas [Frohlich et al. 2015] estuda as caracterı́sticas dos certificados
digitais utilizados na assinatura digital dos aplicativos. Esse trabalho, no entanto, analisa
397 aplicativos gratuitos populares disponı́veis no Google Play, sem considerar a sua categoria. Neste artigo foi selecionada uma amostra de segmentos especı́ficos, que devido
as suas caracterı́sticas, necessitam possuir uma preocupação maior com a segurança de
seus aplicativos.
3. Metodologia
A primeira etapa do trabalho consistiu em definir os critérios de análise dos certificados
digitais. Para efetuar essa atividade foi selecionada uma amostra não-probabilı́stica de
certificados digitais. A análise consistiu em identificar caracterı́sticas que possam comprometer a segurança do aplicativo. A partir dessa análise inicial foram definidas as seguintes caracterı́sticas: 1)Prazo de validade: análise do perı́odo que o certificado permanece válido; 2)Tamanho da chave: análise do tamanho da chave pública utilizada no
certificado digital; 3)Possibilidade de revogação do certificado: analisado se o certificado
possui alguma informação que permite a consulta do seu status; 4)Dados do Titular: verificado se os campos Common Name (CN) e/ou Organization (O) do certificado digital
são condizentes com o nome do desenvolvedor publicado na loja virtual do Google Play.
Na segunda etapa foi definido o tamanho da amostra. Para isso foi determinado
que a pesquisa deveria possuir um nı́vel de confiança igual 95% e uma margem de erro
de 5 pontos percentuais. Após o cálculo da amostra foi realizado o download de 400 aplicativos dos 5 segmentos selecionados: 1)bancário; 2)comércio eletrônico; 3) antivı́rus;
4)backup; e 5) criptografia. A escolha considerou os seguintes critérios: 1) aplicativos
que trafegam informações confidenciais; e 2) Aplicativos de segurança.
A etapa seguinte consistiu em coletar os certificados digitais. Para isso, inicialmente foi realizado o download dos aplicativos listados na etapa anterior. De posse dos
aplicativos na extensão .apk, eles foram transferidos para um computador, para que fosse
possı́vel a extração do certificado digital. Para realizar a extração do certificado digital foi
necessário, inicialmente, a descompactação do arquivo .apk. Uma vez possuindo os arquivos descompactados, foi necessário o uso do OpenSSL para extrair o certificado digital
em um formato compatı́vel para sua visualização no Windows.
Na quarta etapa foi realizada a tabulação dos dados coletados. Para isso foi gerada
uma planilha com os 400 aplicativos e os critérios analisados. Com o objetivo de agilizar
a análise foi desenvolvida uma aplicação para a extração automatizada dos dados dos
certificados digitais. Já a comparação entre os dados contidos no certificado digital e as
informações da loja virtual foi realizada visualmente. A planilha foi preenchida com os
dados obtidos dos aplicativos e certificados digitais selecionados.
Por fim, a última etapa consistiu em realizar uma análise dos resultados obtidos. Para isso foi realizado uma análise quantitativa e qualitativa, onde foram efetuados cálculos de porcentagem, cruzamento de informações e médias, afim de identificar o
impacto na credibilidade dos aplicativos. [Malhotra 2006]
4. Resultados
A primeira análise levou em consideração apenas uma variável: o perı́odo de validade.
Inicialmente, foi realizada uma análise isolada do perı́odo de validade dos certificados digitais usados em cada um dos segmentos para apresentação do tempo médio, do intervalo
de confiança e desvio padrão. Em seguida foi utilizado o teste ANOVA [Malhotra 2006]
para verificar se existe variância significativa entre os segmentos estudados. A Tabela 1
apresenta o resultado da análise do perı́odo de validade dos certificados digitais.
Tabela 1. Perı́odo de validade por categoria
Validade mı́nima Média
e máxima (anos) em anos
Antivı́rus
24 - 1000
156,09
Backup
25 - 999
98,41
Bancário
20 - 1000
80,54
Comércio Eletrônico
20 - 1000
114,11
Criptografia
25 - 2738
136,53
Segmento
Intervalo
de confiança
88,39 -223,78
51,51 - 145,31
37,73 - 123,35
56,99 - 171,24
53,98 - 219,07
σ
304,19
210,75
192,37
256,70
370,92
A análise mostra que o segmento antivı́rus apresenta a maior média, 156,09 anos.
Por outro lado, o segmento bancário apresentou o menor perı́odo médio de validade,
80,54 anos, o que ainda pode ser considerado elevado, uma vez que a recomendação do
Google é de 25 anos [Android 2014]. A análise identificou ainda que o menor perı́odo
foi de 20 anos e o maior perı́odo foi de 2738 anos, além de revelar 26 (6,5% da amostra)
certificados digitais com prazo de validade superior a 900 anos. O teste ANOVA, que teve
como objetivo verificar se existe uma variância significativa entre os perı́odos de validade
dos certificados digitais, não identificou uma variância significativa entre as médias dos
segmentos estudados.
Com base nos dados apresentados nesta primeira análise é possı́vel verificar que a
definição do perı́odo de validade para os certificados digitais não está sendo realizada
de forma adequada, o que demonstra uma fragilidade no modelo adotado pelo Google em atribuir a função de emissão do certificado digital ao desenvolvedor, pois estes
chegam a emitir certificados com 2738 anos, mesmo após recomendações do próprio
Google[Android 2014]. Além disso, a Microsoft recomenda perı́odos de validade ainda
menores, no máximo de 16 anos para chaves de 4096 bits, caracterı́stica essa não identificada em nenhum aplicativo [OMeally 2009].
Uma segunda análise levou em consideração apenas o comprimento da chave
pública. Para essa análise foi extraı́do o tamanho da chave pública contida no certificado
digital utilizado para a assinatura de código de aplicações Android e os resultados obtidos
foram agrupados pelos comprimentos de chaves encontrados: 1024 bits, 2048 bits e 4096
bits. Na amostra analisada, 207 aplicativos (51,75%) foram assinados digitalmente com
chaves de 1024 bits; 184 (46%) certificados digitais estão associados a uma chave pública
de 2048 bits; e 9 (2,25%) certificados digitais possuem uma chave pública de 4096 bits.
A Tabela 2 apresenta a quantidade de certificados digitais associados com seus
respectivos tamanhos de chave pública, bem como os intervalos de confiança. Com base
nos dados é possı́vel concluir, com 95% de confiança, que entre 46,75% e 56,75% dos
certificados digitais desses segmentos possuem chaves de 1024 bits, entre 41% e 51%
possuem chaves de 2048 bits e entre 0% e 7,25% possuem chaves de 4096 bits.
Com base nos dados desta análise pode-se verificar que não existe um cuidado
do desenvolvedor em determinar o tamanho da chave pública para o certificado digital
utilizado na assinatura de código de aplicativos da plataforma Android. Pode-se verificar também que após 5 anos da recomendação do NIST, de usar somente chaves iguais
ou superiores a 2048 bits [Barker et al. 2009], mais da metade dos aplicativos (51,75%)
continuam usando chaves não recomendadas pela agência norte americana.
A terceira análise levou em consideração duas variáveis: o perı́odo de validade e o
comprimento da chave. Inicialmente, foi realizada uma análise isolada do perı́odo de validade, com o objetivo de conhecer o tempo de duração dos certificados digitais usados em
assinatura aplicativos na plataforma. Para essa análise foram definidos três intervalos de
tempo de validade: até 50 anos; entre 51 e 100 anos; e acima de 100 anos. Posteriormente,
foram utilizados testes t para diferença entre duas médias, com amostras independentes,
para verificar se há diferença significativa no comprimento das chaves públicas dos certificados digitais nos três intervalos de tempo definidos. A Tabela 3 apresenta a quantidade
de certificados digitais em cada um dos intervalos bem como sua representação em porcentagem, o respectivo intervalo de confiança, comprimento médio da chave e o desvio
Tabela 2. Perı́odo de validade por categoria
Comprimento
da Chave
1024 bits
Antivı́rus
2048 bits
4096 bits
1024 bits
Backup
2048 bits
4096 bits
1024 bits
Bancário
2048 bits
4096 bits
1024 bits
Comércio Eletrônico 2048 bits
4096 bits
1024 bits
Criptografia
2048 bits
4096 bits
Segmento
Quantidade
44 (55 %)
34 (42,5 %)
2 (2,5 %)
51 (63,75 %)
25 (31,25 %)
4 (5 %)
45 (56,25 %)
35 (43,75 %)
0 (0 %)
39 (48,75 %)
39 (48,75 %)
2 (2,25 %)
28 (35 %)
51 (63,75 %)
1 (1,25 %)
Intervalo de
Confiança
50 % - 60 %
37,5 % - 47,5 %
0 % - 7,5 %
58,75 % - 68,75 %
26,25 % - 35,25 %
0 % - 7,5 %
51,75 % - 61,75 %
39,75 % - 48,75 %
0%-0%
43,75 % - 53,75 %
43,75 % - 53,75 %
0 % - 7,5 %
30 % - 40 %
58,75 % - 68,75 %
0 % - 6,25 %
padrão.
Tabela 3. Prazo de validade x Tamanho de chave pública
Prazo
%
Certificados
de Validade
do total
1 -50
51- 100
Mais de 100
283
76
41
70,75
19
10,25
Comprimento
médio da
σ
chave
65,75 - 75,75
1.574,18 646,22
14 - 24
1.414,73 500,73
5,25 - 15,25
1.698,34 631,64
Intervalo
de confiança
A análise constatou que 283 (70,75%) certificados digitais possuem prazo de validade de 50 anos ou menos. Ao considerar um perı́odo maior de validade, entre 51 e
100 anos, a análise identificou que 76 (19%) certificados digitais continham essa caracterı́stica. Uma terceira verificação identificou certificados digitais com um perı́odo de
validade superior a 100 anos, onde foram encontrados 41 certificados digitais (10,25%).
Com base nesses dados é possı́vel concluir, com 95% de confiança, que entre 65,75% e
75,75% dos certificados digitais utilizados na assinatura de código de aplicativos possuem
um prazo de validade igual ou inferior a 50 anos; entre 14% e 24% dos certificados digitais têm prazo de validade entre 51 e 100 anos; e, por fim, entre 5,25% e 15,25% dos
certificados digitais possuem prazo de validade acima de 100 anos.
Ainda sobre o perı́odo de validade dos certificados digitais, a análise constatou
que apenas 3 aplicativos foram assinados digitalmente com um certificado digital com
tempo de validade inferior ou igual a 20 anos. Cabe ressaltar que 101 (25,25% do total
da amostra) certificados digitais possuem o prazo de validade igual ou inferior a 25 anos,
seguindo a recomendação do Google. Por outro lado, 13 aplicativos foram assinados com
certificados digitais que possuem um perı́odo de validade de 999 anos e 8 aplicativos
foram assinados com certificados com perı́odo de validade de 1.000 anos ou superior.
Embora o site do Android, ao apresentar uma estratégia para assinatura de
aplicações, recomende o uso de certificados digitais com um perı́odo de validade de 25
anos ou mais, garantindo assim a assinatura das atualizações da aplicação durante o seu
ciclo de vida [Android 2014], essa caracterı́stica pode resultar em uma vulnerabilidade no
médio ou longo prazo, pois o aumento da capacidade de processamento poderá reduzir a
quantidade de tempo necessário para comprometer as chaves do certificado digital. Além
disso, as pesquisas na área de criptografia podem conduzir a novos tipos de ataques às
operações realizadas pelos algoritmos criptográficos assimétricos de hoje, o que poderá
resultar em algoritmos criptográficos ou pares de chaves vulneráveis.
Ao comparar o comprimento médio da chave pública, os certificados digitais com
prazo de validade superior a 100 anos possuem um tamanho médio de chave pública
de 1.698,34, com desvio-padrão de 631,64. Já nos certificados com prazo de validade
inferior a 100 anos, o tamanho médio da chave pública foi de 1.540,42, com desviopadrão de 621,07. Ao nı́vel de 5% de significância, pode-se afirmar que essa diferença não
é significativa, ou seja, não pode-se afirmar que aplicativos com validade maior possuem,
em média, comprimento de chave maior.
A quarta análise comparou os dados contidos no certificado digital do desenvolvedor usado na assinatura de aplicativos com os dados cadastrados por ele na Google
Play. Esta análise levou em consideração a identificação do desenvolvedor do aplicativo, apresentada pela Google Play no momento do download, comparando-a com duas
informações do certificado digital que deveriam estar associadas a ela: o nome e a
organização do requerente. Na análise foram considerados apenas os certificados digitais que continham nome ou organização do requerente, por isso o número de certificados
digitais dessa análise distingue do tamanho da amostra do trabalho.
Na amostra de aplicativos analisados, um total de 134 (36,81%) possuem o nome
do requerente do certificado digital relacionado ao nome da empresa divulgada na loja
virtual. Já em 230 (63,19%) certificados digitais, o nome do requerente não está relacionado ao nome da empresa divulgada na loja virtual. Por fim, em 36 certificados digitais
não consta a informação do nome do requerente.
Na amostra analisada verificou-se também que em 200 (61,54%) aplicativos, o
nome da organização do requerente do certificado digital está relacionado ao nome da
empresa divulgada na loja virtual. Já em 125 (38,46%), o nome da organização requerente do certificado digital não está relacionado ao nome da empresa divulgada na loja
virtual. Além disso, 75 certificados digitais não possuem a informação da organização do
requerente. A Tabela 4 mostra a relação entre o nome do requerente com a loja virtual
por segmento.
Com base nesses dados é possı́vel concluir, com 95% de confiança, que entre
31,81% e 41,81% dos aplicativos são assinados com certificados digitais que possuem
o nome do requerente relacionado ao nome da empresa divulgada na loja virtual e que
entre 58,19% e 68,19% do aplicativos são assinados com certificados digitais que não
possuem o nome do requerente relacionado ao nome da empresa divulgada na loja virtual.
Pode-se concluir também que entre 56,54% e 66,54% dos aplicativos são assinados com
certificados digitais em que o nome da organização requerente está relacionado ao nome
Tabela 4. Nome do requerente por segmento
Associação entre dados do certificado e loja virtual
Possui relação entre nome
Possui relação entre organização
do requerente e site
do requerente e site
Sim
Não
Sim
Não
Antivı́rus
20 (27,03%)
54 (72,97%)
34 (53,97%)
29 (46,03%)
Backup
29 (39,19%)
45 (60,81%)
43 (60,56%)
28 (39,44%)
Bancário
26 (39,4%)
40 (60,6%)
44 (66,67%)
22 (33,33%)
Comércio Eletrônico
28 (37,33%)
47 (62,67%)
47 (65,28%)
25 (34,72%)
Criptografia
31 (41,33%)
44 (58,67%)
32 (60,38%)
21 (39,62%)
Total
134 (36,81%) 230 (63,19%) 200 (61,54%)
125 (38,46)
Categoria
da empresa divulgada na loja virtual e que entre 33,46% e 43,46% dos aplicativos são
assinados com certificados digitais cujo o nome da organização requerente contida nele
não está relacionado ao nome da empresa divulgada na loja virtual.
Em um segundo momento foram efetuados testes qui-quadrado [Malhotra 2006]
com o objetivo de verificar se existe relação entre os segmentos e o nome do requerente
estar ou não vinculado ao nome publicado na loja virtual. O teste não apresentou uma
associação significativa, portanto não pode-se afirmar que existe um segmento com uma
maior associação do nome do requerente com o nome publicado na loja virtual que outro.
A última análise considerou se os certificados digitais utilizados na assinatura dos
aplicativos continham alguma informação para verificar seu status. A análise verificou se
o certificado digital possuı́a um link que possibilitasse conhecer se ele estava revogado,
independentemente do protocolo utilizado.
A análise constatou que nenhum dos certificados digitais utilizados na assinatura
de aplicações da plataforma Android possuı́a alguma informação que possibilitasse a consulta do seu status. A ausência de informações para consulta da situação do certificado
digital pode ser considerada uma vulnerabilidade de segurança, pois caso algum desses
certificados seja comprometido a sua revogação não surtirá efeito algum, já que o seu status revogado não poderá ser conhecido. Além disso, caso um usuário mal intencionado
tenha acesso ao certificado digital comprometido, ele não poderá ser impedido de lançar
atualizações contendo códigos maliciosos.
5. Conclusão
O presente artigo realizou uma análise de 400 certificados digitais utilizados na assinatura
de código de aplicativos Android de 5 segmentos diferentes. Após a análise foi possı́vel
constatar que os certificados digitais possuem prazos de validade muito longos, como, por
exemplo, o fato de 26 certificados possuı́rem o perı́odo de validade superior a 900 anos.
Quando avaliado os segmentos separadamente observa-se que antivı́rus e bancário apresentam as menores médias, 156,09 e 90,54 anos respectivamente, entretanto elas ainda são
consideradas elevadas. Pode-se observar que mesmo os aplicativos bancários, que possuem uma média inferior aos outros segmentos, não seguem a recomendação do Google
de validade máxima de 25 anos [Android 2014].
Quando analisado o tamanho da chave pública percebe-se a utilização de chaves
de 1024 bits, que não são mais recomendadas desde 2010, ou seja, além dos responsáveis
pela emissão estenderem significativamente a validade dos certificados digitais, eles estão
usando como base um comprimento de chave considerado inseguro desde 2010. O segmento que mais utiliza esse tamanho de chave é o backup, já o segmento criptografia é
o que menos utiliza esse tamanho de chave. Ao analisar o segmento bancário percebe-se
que 56,25% dos aplicativos utilizam certificados digitais com chave de 1024 bits e nenhum aplicativo utiliza uma chave de 4096 bits, ou seja, um segmento que trafega dados
confidenciais utilizando chaves consideradas inseguras pelo NIST há mais de cinco anos.
Ao comparar os dados dos certificados digitais com informações da loja constatouse que não existe um cuidado por parte dos desenvolvedores em relacionar as informações
contidas no certificado digital com as informações cadastradas na loja virtual, pois
verificou-se que apenas 36,81% possuem o nome do requerente do certificado digital relacionado ao nome divulgado na loja virtual e que 61,54% possuem o nome da organização
do certificado digital relacionado ao nome divulgado na loja virtual. Portanto pode-se
concluir que a assinatura de código na plataforma Android não está cumprindo o seu
papel de atribuir credibilidade às aplicações, pois o usuário não consegue relacionar os
dados entre o certificado digital e as informações divulgadas na loja virtual.
Por fim foi identificado que nenhum dos certificados digitais possuı́a dados para
consulta do seu status. Dessa forma, caso um certificado seja comprometido e revogado
essa ação não surtirá efeito, pois a nova situação (revogado) não será conhecida pelo
usuário. Essa caracterı́stica pode ser considerada uma vulnerabilidade, pois caso um desenvolvedor tenha a segurança do seu certificado digital comprometida, ele não possui
meios de torná-lo inválido.
Novas análises poderão ser iniciadas a partir dos resultados desta pesquisa, pois
ainda é escasso o número de trabalhos que analisam o uso de certificados digitais para
assinatura de código de aplicativos para plataformas Android, como mencionado na seção
de trabalhos relacionados. Como trabalho futuro é proposta a análise dos certificados
digitais usados em assinatura de aplicações em outras plataformas. Além disso, é possı́vel
realizar a análise de aplicativos de diferentes segmentos na plataforma Android, como, por
exemplo, aplicativos corporativos. Por fim, pode-se efetuar uma análise de outras lojas
virtuais, afim de identificar se existe um padrão diferente ao encontrado nessa pesquisa.
Referências
Android,
D.
(2014).
Signing
Your
http://developer.android.com/tools/publishing/app-signing.html.
2014-07-15.
APPBrain
(2015).
APPBrain,Number
of
http://www.appbrain.com/stats/number-of-android-apps.
13.
Applications.
Acessado em
Android
applications.
Acessado em 2014-05-
Barker, E., Burr, W., Jones, A., Polk, T., Rose, S., and Dang, Q. (2009). Sp 800-57.
recommendation for key management, part 3: Application-specific key management
guidance. Technical report, Gaithersburg, MD, United States.
Barrera, D., Clark, J., McCarney, D., and van Oorschot, P. C. (2012). Understanding and
improving app installation security mechanisms through empirical analysis of android.
In Proceedings of the Second ACM Workshop on Security and Privacy in Smartphones
and Mobile Devices, SPSM ’12, pages 81–92, New York, NY, USA. ACM.
Barrera, D., McCarney, D., Clark, J., and van Oorschot, P. C. (2014). Baton: Certificate
agility for android’s decentralized signing infrastructure. In Proceedings of the 2014
ACM Conference on Security and Privacy in Wireless & Mobile Networks, WiSec
’14, pages 1–12, New York, NY, USA. ACM.
Barrera, D. and van Oorschot, P. (2011). Secure Software Installation on Smartphones.
Security & Privacy Magazine, 9(3):42–48.
Fahl, S., Harbach, M., Muders, T., Baumgärtner, L., Freisleben, B., and Smith, M. (2012).
Why eve and mallory love android: An analysis of android ssl (in)security. In Proceedings of the 2012 ACM Conference on Computer and Communications Security, CCS
’12, pages 50–61, New York, NY, USA. ACM.
Frohlich, J., Raupp, C., and Ignaczak, L. (2015). Uma análise dos certificados digitais
usados na assinatura de aplicação android. In ERRC 2015, Passo Fundo, RS.
Gunasekera, S. (2012). Android Apps Security. Apress, Berkely, CA, USA, 1st edition.
IDC
(2015).
Smartphone
OS
Market
Share,
Q4
2014.
http://www.idc.com/prodserv/smartphone-os-market-share.jsp. Acessado em 201505-13.
Malhotra, N. (2006). Pesquisa de Marketing: Uma Orientação aplicada. BOOKMAN
COMPANHIA ED, Porto Alegre, RS, BRA, 4Âa edition.
OMeally,
Y.
(2009).
Recommendations
for
pki
key
lengths
and
validity
periods
with
configuration
manager.
http://blogs.technet.com/b/configmgrteam/archive/2009/06/12/recommendationsfor-pki-key-lengths-and-validity-periods-with-configuration-manager.aspx. Acessado
em 2015-05-25.
Panja, B., Fattaleh, D., Mercado, M., Robinson, A., and Meharia, P. (2013). Cybersecurity
in banking and financial sector: Security analysis of a mobile banking application. In
Collaboration Technologies and Systems (CTS), 2013 International Conference on,
pages 397–403.
Vargas, R., Huerta, R., Anaya, E., and Hernandez, A. (2012). Security controls for android. In (CASoN), 2012 Fourth International Conference on, pages 212–216.
Zheng, M., Sun, M., and Lui, J. C. (2014). Droidray: A security evaluation system
for customized android firmwares. In Proceedings of the 9th ACM Symposium on
Information, Computer and Communications Security, ASIA CCS ’14, pages 471–
482, New York, NY, USA. ACM.
Download

Uma análise dos certificados digitais para assinatura de código de