Cada processo é executado em um ambiente controlado chamado Sandbox e lhe é atribuído um user ID o qual determina seu escopo e restringe acessos externos. Neste caso, para duas aplicações que estejam em processos distintos é necessário que sejam declaradas nos manifestos as permissões de acesso apropriadas para a comunicação entre os dois processos. No entanto, é possível que duas aplicações distintas possam ser executadas no mesmo processo. Conforme Ortiz (2010):
"Diferentes aplicativos podem ser executados no mesmo processo. [..] é preciso primeiro assinar esses aplicativos usando a mesma chave privada e, a seguir, atribuir a eles o mesmo ID de usuário do Linux usando o arquivo de manifesto"
isso permite que as aplicações compartilhem dados e recursos entre si.
A comunicação de processos é utilizada para que possamos acessar uma parte da memória que não podemos acessar, pois a memória é paginada e segmentada, não possibilitando o acesso direto. Como a comunicação entre os processos é um procedimento muito importante para o Android, foram implementados alguns mecanismos para que seja possível ter os acessos necessários com mais agilidade e praticidade, não tendo necessidade de implementar a cada vez que fosse utilizar um aplicativo, por exemplo que fosse necessário acessar a memória.
Para a comunicação entre processos no Android, um dos meios que podemos utilizar é o Binder, que é nada mais nada menos que uma versão modificada do kernel do Linux, mas também temos o Ashmem, que está ligada ao Kernel do Linux, como o Binder.
Binder
O Binder é utilizado como um RPC como o próprio nome já diz "remote procedure calls", chamadas de procedimentos remotos, como não podemos acessar diretamente a memória, é utilizado este mecanismo para que possa fazer a comunicação entre os processos desejados, todos serão passados pelo Binder. Ele foi desenvolvido para atender as necessidades de conseguir acessar códigos em processos separados, envolvendo serviços e aplicações. É possível que você desenvolva seu próprio RPC, ou instanciar um objeto binder. O binder somente é válido enquanto estamos utilizando ele em algum processo específico, quando finalizamos o processo, o binder também é finalizado.
O transporte dos dados são feitos por variáveis confiáveis e seguros, não era como os streams. Quando estamos com um arquivo aberto, foi feita alguma modificação, salvamos, parte deste arquivo, se não todo ele, fica salvo na memória, permitindo assim que possa ser modificado, não tendo segurança nenhuma, só se tem a devida segurança quando fechamos o arquivo, este procedimento é os streams, é o fluxo dos dados. O binder não utiliza esse fluxo.
Ashmem
Com o ashmem, podemos ter um mapeamento das prop A implementação deste Ashmem (Anonymous shared memory) localiza-se em "mm/ashmem.c". Este é um novo mecanismo utilizado para compartilhamento de memória, pois nele conseguimos ter acesso a uma memoria que está sendo compartilhada, por dois ou mais processos. Ele é recomendado para celulares que não possui muita memória, pois como este mecanismo é mais leve, possibilita melhor funcionamento. A memória só é liberada se realmente precisar, se está com pouca memória livre, nesses casos de pouca memória, ele descarta regiões de memórias compartilhadas, de um modo mais seguro.
PERMISSÕES E NÍVEL DE SEGURANÇA
Aplicativos Android não têm permissões concedidas para acessar recursos ou APIs por padrão, isto o torna seguro quanto a softwares maliciosos, pois é necessária a ação do usuário para permitir que o aplicativo possa acessar recursos ou dados restritos que estejam protegidos pelo sistema. Para impor quais operações um aplicativo tem permissão para realizar, o Android utiliza o sistema de segurança em nível de processo, IDs de usuário e de grupo associados herdados do Linux.
Segundo Ortiz (2010):
"Por padrão, os aplicativos são executados dentro de um processo básico de ambiente de simulação sem permissões atribuídas, evitando, desta forma, que tais aplicativos acessem o sistema ou os recursos. Aplicativos Android podem solicitar permissões, no entanto, por meio do arquivo de manifesto do aplicativo."
ou seja, se haver a necessidade de acessar um recurso o qual o aplicativo não tenha permissão, o aplicativo irá gerar um manifesto ao sistema o qual alertará o usuário que poderá permitir que o aplicativo tenha acesso ao recurso desejado. O Android provê APIs de proteção de dados e de recursos em tempo de execução que verificam, impõem, concedem ou revogam as permissões de acesso de um aplicativo a outro aplicativo, aos dados ou ao hardware.
REFERÊNCIAS BIBLIOGRÁFICAS
ALMEIDA, Josiane. Análise de Segurança e de Ferramentas na Plataforma Android. Passo Fundo, Mar de 2013. Disponível em: <
http://painel.passofundo.ifsul.edu.br/uploads/arq/201603302120161378702704.pdf> Acesso em 18 out 2016.
ARAUJO, Rafael. Uma discussão sobre o uso incorreto de funções criptográficas em aplicativos Android. São Paulo, 29 de jun de 2014. Disponível em: <
http://grenoble.ime.usp.br/~gold/cursos/2014/movel/mono1st/1306-RafaelWill.pdf> Acesso em 18 out 2016.
BATISTA Adriana, DELLAQUILA Bruna, BALTHAZAR Glauber. Análise da Segurança de Aplicativos na Plataforma Android Através da Adoção de Patterns. São Paulo, 1 de set de 2013. Disponível em: <
http://cbsoft2013.unb.br/wp-content/uploads/2013/09/analise-da-seguranca-de-aplicativos-na-plataforma-android-atraves-da-adocao-de-patterns.pdf>. Acesso em 18 out 2016.
CIBRÃO, Daniel, GONÇALVES, Rui. Portugal, Jan de 2011. Disponível em: <
http://web.fe.up.pt/~jmcruz/ssi/ssi.1112/trabs-als/final/G4T10-android-final.pdf> Acesso em 18 out 2016.
CRUZ, Rafael, ARANHA, Diego. Análise de Segurança em Aplicativos Bancários na Plataforma Android. Disponível em: <
http://sbseg2015.univali.br/anais/WTICG/artigoCompletoWTICG02.pdf> Acesso em 18 out 2016.
FILHO, Antônio. Segurança da Informação: Sobre a Necessidade de Proteção de Sistemas de Informações. Revista Espaço Acadêmico. Nov de 2004. Disponível em: <
http://www.espacoacademico.com.br/042/42amsf.htm> Acesso em 18 de out de 2016.
MEDEIROS, Antônio, BARBOSA, Luis. Análise de Segurança da Plataforma Android. Rio de Janeiro, 2014. Disponível em: <
http://www.defesacibernetica.ime.eb.br/pub/repositorio/2014-Sombra_Helder.pdf> Acesso em 18 out 2016.
OTSUKA, Gilberto, ZANELATO, Ana Paula. O Sistema Android no Universo dos Dispositivos Móveis. Disponível em: <
http://intertemas.toledoprudente.edu.br/revista/index.php/ETIC/article/view/3759/3520> Acesso em 18 out 2016.
SACHSE, Nelson. Avaliação Comparativa do Modelo de Segurança do Android. Portugal, Dez de 2010. Disponível em: <
https://bdigital.ufp.pt/bitstream/10284/1960/2/DM_12464.pdf> Acesso em 18 out 2016.