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.