Baixe o app para aproveitar ainda mais
Prévia do material em texto
145 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL Unidade IV 7 A SEGURANÇA E A CRIPTOGRAFIA Segundo Wykes (2016), o cartão inteligente, ou smartcard, como objeto de uso corriqueiro, é talvez a tecnologia criptográfica mais popular porque é um dispositivo criptográfico pequeno, leve, portátil e seguro. O cartão inteligente é uma composição de diversas tecnologias, tendo sempre como base um chip especialmente projetado para oferecer fortíssimo grau de segurança. A “inteligência” dos smartcards pode variar. Os mais inteligentes são os cartões multiaplicação, programáveis, como se fossem verdadeiros microcomputadores. Embora sejam bastante limitados em termos de recursos normais, como memória, velocidade de processamento e capacidade de comunicação, esses cartões têm circuitos e recursos altamente especializados e, portanto, são muito eficazes em atender à sua principal função, que é a de ser um dispositivo criptográfico portátil e seguro. A expressão elemento seguro foi cunhada para designar os chips de cartão inteligente acoplados a dispositivos portáteis, como os telefones celulares dotados com NFC (near field communication), uma tecnologia que permite a troca de informações entre dois aparelhos que estejam próximos um do outro. Desde sua origem, em que o elemento seguro é responsável pela segurança apenas dessa transação sem fio, vem gradativamente sendo ampliado o conceito para significar qualquer aplicação desses chips de cartão inteligente em sistemas embarcados ou além. 7.1 A segurança e seus elementos Na concepção de Wykes (2016), elemento seguro é a parte inteligente de um cartão inteligente, no caso, um chip especializado, conhecido como microcontrolador seguro, de onde vem a conotação inerente de elemento seguro. Esses microcontroladores vêm de fábrica, com um pequeno sistema operacional em sua memória ROM ou Flash, e são capazes de executar de uma forma bastante segura pequenos aplicativos de software. Os elementos seguros têm algumas características principais que os tornam o dispositivo quase ideal para determinadas aplicações criptográficas, entre elas: • Uma quantia limitada de memória não volátil, na qual, além dos próprios aplicativos seguros, estão armazenadas pequenas quantias de dados, principalmente senhas e chaves criptográficas. Não volátil significa que o conteúdo da memória é preservado mesmo quando o chip está desativado, por exemplo, na ausência de alimentação elétrica. 146 Unidade IV • Uma pequena quantidade de memória volátil, de operação mais rápida, que mantém seu valor somente enquanto o chip está ativo e serve para o armazenamento de variáveis, valores temporais e estados de execução. • A capacidade de se comunicar com o mundo externo por uma ou mais interfaces, normalmente seriais. • A capacidade de executar funções de lógica e operações criptográficas de forma altamente segura, em virtude da incorporação de uma ampla gama de mecanismos de proteção. Talvez essa última seja mais importante, pois inclui desde defesas contra intervenções físicas, como desmontagem do chip e uso de microagulhas, proteções contra monitoramento ou interferência das operações executadas internamente, até proteções que impedem a instalação de códigos maliciosos. Segundo Wykes (2016), em seu formato físico, durante a fabricação de um cartão inteligente, o chip é embutido em uma lâmina de plástico, juntamente com algum meio de receber alimentação e comunicação externa, o que pode ser feito mediante um arranjo de pequenas placas metálicas, que fazem um contato elétrico quando o cartão é inserido em um leitor especializado, ou de uma pequena antena plana, que recebe alimentação e se comunica por meio de um campo de radiofrequência de pequeno alcance emitido pelo leitor. Também é possível encontrar esses microcontroladores seguros empacotados de tal forma que possam ser fixados em placas de circuito integrado. Nesse formato, são conhecidos como elementos seguros embarcados, como aqueles dedicados aos telefones celulares equipados com a tecnologia NFC, mas também fazem parte dos mais diversos dispositivos, como pen drives USB, “chaveirinhos”, smartwatches e mesmo alguns cartões de memória mais sofisticados. Observação NFC é uma tecnologia de comunicação sem fio presente em diversos smartphones. Seu funcionamento difere do bluetooth e Wi-Fi, entre outros quesitos, porque requer a aproximação de dois dispositivos. 7.2 Tipos de cartão inteligente Segundo Wykes (2016), os cartões inteligentes podem ser divididos em dois grupos pela forma de utilização, aproximação ou inserção, que determina basicamente as situações de uso com as quais o cartão mais combina. Os cartões de uso por aproximação são conhecidos como sem contato, enquanto os de inserção são conhecidos como com contato. Há também os cartões dual interface, com ambas as interfaces no mesmo plástico. Quando falamos das interfaces de comunicação dos cartões, estamos falando simultaneamente dos leitores de cartão, os pequenos dispositivos e antenas acoplados ou integrados aos equipamentos, que permitem comunicação com o cartão. Logicamente eles devem ter as mesmas interfaces e seguir os mesmos padrões de comunicação e convenções elétricas que os cartões que eles receberão. 147 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL Nos cartões de interface sem contato, em virtude de se alimentarem e se comunicarem por meio de um campo de radiofrequência, os cartões sem contato podem ser utilizados aproximando-se o cartão do equipamento leitor a uma distância que varia, de poucos centímetros, nos cartões comuns, a alguns metros, em casos especiais. Uma vez estabelecida uma comunicação entre o leitor e o cartão, a transação é efetuada de forma bastante rápida. A comunicação por radiofrequência permite que o chip do cartão troque informações com o leitor sem que haja necessidade de inserir o cartão em qualquer tipo de receptáculo ou deslizá-lo por qualquer tipo de trilho, propiciando agilidade e rapidez ao uso, e tornando-o ideal para aplicações baseadas em grandes fluxos de pessoas, que incluem as chamadas aplicações de micropagamentos, como passagens de transporte coletivo, transações de pequenos valores, além de outras aplicações de acesso rápido, como estacionamentos, pedágios, portas automáticas, coletores de ponto e portarias de todo tipo. Efetuada a transação, o cartão pode ser imediatamente retirado do campo da antena de modo que, muitas vezes, o portador do cartão é um ator quase passivo na transação, já que a passagem correta é debitada automaticamente pela aproximação. Em contrapartida, há severas exigências em relação ao tempo de transação, que pode ser de no máximo entre 300 e 500 milissegundos, para garantir que o uso do cartão não se torne incômodo ao portador e para evitar cancelamentos excessivos de transações em função da remoção do cartão do campo da antena antes de a transação ser completada. Figura 86 – Pagamento por aproximação no metrô do Rio de Janeiro Segundo Wykes (2016), os cartões de interface com contato combinam mais com aplicações que envolvem alguma interação com o portador do cartão, devido à necessidade de inseri-lo, parcial ou completamente, em um receptáculo ou slot, ranhura ou fenda do equipamento leitor. Somente após a inserção física, que exige maior esforço do portador se comparada com a interface sem contato, é que pode ser estabelecida uma comunicação entre leitor e cartão, fator que faz com que a transação, geralmente, seja mais demorada. 148 Unidade IV Os contatos físicos também demandam que o chip consuma uma corrente elétrica maior – necessária para a execução de determinadas operações internas, como a criptografia de chaves públicas – o que possivelmente sobrecarregaria uma interface sem contato. Com os recentes avanços da tecnologia de circuitos integrados, rapidamente esse fator está se tornando menos importante. Tipo do cartão Número do cartão Figura 87 – Cartão Inteligente com contato Bilhete Único de São Paulo SegundoWykes (2016), os cartões híbridos ou combi surgiram em determinado momento como solução de conveniência, pelo fato de consistirem em dois chips embutidos no mesmo plástico, sem que um chip tivesse conhecimento da presença do outro. São de fácil fabricação, tomados os devidos cuidados de posicionamento da antena sem contato, para não interferir fisicamente nos contatos e vice-versa. A desvantagem óbvia é a falta de integração entre os dois chips, o que impede, por exemplo, a recarga de créditos das passagens normalmente consumidas pela interface sem contato por meio da interface com contato. Segundo Wykes (2016), apesar de os cartões dual interface existirem há muito tempo, é relativamente recente o desenvolvimento de chips com a capacidade de serem alimentados e se comunicarem ora por uma antena da interface sem contato, ora pelos contatos metálicos da interface com contato. Esses cartões, logicamente denominados cartões de dual interface, são especialmente interessantes como soluções de transição. Por exemplo, considere a situação dos sistemas de pagamento no Brasil, na Europa ou no Canadá, nos quais foram investidas largas quantias e tempo na migração dos cartões e das redes de captura de transações para a tecnologia de cartões com contato. Como é impossível migrar uma base de cartões e equipamentos do dia para a noite? Durante alguns bons anos, será necessário conviver com as duas tecnologias. O cartão dual interface permite a convivência e interoperabilidade com os dois sistemas. Lembrete Existem dois tipos de cartões para uso por aproximação: os sem contato e os com contato, além daqueles que apresentam as duas características no mesmo plástico. 149 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL A tecnologia NFC, segundo Wykes (2016), é uma evolução recente e bastante interessante, principalmente porque permite a integração da tecnologia dos cartões sem contato com os dispositivos móveis, como telefones celulares e tablets. Por meio da tecnologia NFC, o dispositivo móvel se torna, de forma flexível, parte integrante das transações, podendo assumir o papel do cartão, do leitor ou ser uma combinação dos dois ao mesmo tempo, por meio de uma modalidade chamada peer-to-peer, literalmente, ponto a ponto. Como as comunicações sem contato não sofrem grandes alterações, a tecnologia NFC mantém compatibilidade com a enorme infraestrutura de leitores e terminais já instalados e com a base de cartões já emitidos. Conforme cada situação, a parte inteligente da transação, do lado do cartão ou do terminal, pode ser substituída pelo dispositivo móvel. Enquanto, por um lado, isso viabiliza as aplicações de carteiras eletrônicas, por outro, facilita o uso do dispositivo como terminal de pagamento, reduzindo custos para, por exemplo, profissionais livres, pequenos lojistas e feirantes. Para compensar uma possível perda de segurança, utiliza-se o chip SIM do dispositivo ou integra-se um elemento seguro auxiliar, além de se permitir gradativamente a substituição da carteira ou, pelo menos, uma redução de seu tamanho, mediante a integração de funções de pagamento, identificação e controle de acesso ao celular. A grande promessa dessa tecnologia é tornar as transações NFC mais interativas e sofisticadas pelo uso da tela, do teclado e da conexão de internet do dispositivo móvel. Já os elementos seguros embarcados, segundo Wykes (2016), normalmente possuem uma interface com contato, mas, por estarem ligados diretamente à placa, não possuem os contatos físicos. No caso específico do NFC, a transação é governada por um chip controlador, acoplado eletricamente à antena de comunicação de um lado e ao elemento seguro, de outro. Certos modelos, no entanto, utilizam uma interface de comunicação simplificada denominada SWP (single wire protocol) entre o controlador e o elemento seguro. Figura 88 – Exemplo da tecnologia NFC 150 Unidade IV Convém falar um pouco da história e evolução dos cartões inteligentes. Tudo se iniciou em meados da década de 1970, o primeiro smartcard foi criado por Roland Moreno, então funcionário da empresa francesa Bull. Não existiam microprocessadores na época, apenas circuitos integrados, compostos de blocos de lógica discreta e contendo, no máximo, alguns bytes de memória. Esses primeiros modelos possuíam uma interface com contato e apresentavam funcionamento orientado a aplicações de telefonia pública. O cartão possuía um simples saldo de créditos, que diminuía a cada pulso consumido durante a ligação. 7.2.1 Cartões “inteligentes” de memória protegida Inicialmente, não havia sofisticado poder de processamento nem capacidade de gerenciamento de memória significava, grande parte da lógica do sistema estava nas leitoras. Esses cartões serviam para armazenar poucas informações e, dependendo da tecnologia empregada, poderiam ser descartáveis, no caso de tíquetes ou ingressos eletrônicos para eventos, ou reutilizáveis, por exemplo, no caso de cartões de estacionamento. Segundo Wykes (2016), quando comparados com os cartões de memória modernos, utilizados para o armazenamento de grandes quantidades de arquivos, como fotos, os cartões inteligentes de memória possuem pouca memória de fato, muito embora agreguem algumas funcionalidades importantes ao acesso dessa memória, visando à maior segurança. Alguns modelos podiam ser configurados para restringir o acesso à leitura e à escrita, restrição normalmente feita por meio de passwords ou por processos rudimentares de autenticação criptográfica, relativamente fracos para os padrões modernos. Alguns modelos ainda segmentavam a memória em blocos, sendo, assim, capazes de abrigar múltiplas funcionalidades. Com o passar dos anos, tornaram-se menos populares e atualmente já não são mais indicados para novos projetos devido à sua baixa segurança efetiva e limitada capacidade de processamento, embora seja comum encontrar essa tecnologia em sistemas implantados há muito tempo, como sistemas de micropagamentos, estacionamentos rotativos, entre outros. Os cartões inteligentes microprocessados são o avanço da tecnologia, com aumento da memória e da capacidade de processamento, principalmente a partir do invento do microprocessador. Fato curioso: durante os primeiros anos, os smartcards utilizavam memórias não voláteis, do tipo Eprom, exigindo o fornecimento de uma voltagem comparativamente alta, de 21 V ou maior, para a gravação de informações. Essa herança pode ser vista atualmente no pino de contato reservado para essa função. Segundo Wykes (2016), a evolução dos cartões de interface com contato veio com o tempo e funcionalidades cada vez mais sofisticadas foram surgindo. Vieram então os cartões que permitiam estruturar e organizar sua memória em blocos e arquivos. Eventualmente, tornou-se possível incluir funções de criptografia no cartão, utilizadas para controlar o acesso às demais estruturas de dados e para a encriptação de dados trocados com o cartão. 151 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL Gradativamente, houve um processo de padronização das tecnologias de cartão com contato, levando à criação da norma internacional ISO-7816, composta de múltiplas seções, que variam das mais úteis às mais esotéricas. As partes mais relevantes determinam o formato físico dos cartões, a posição e a função dos contatos, as características elétricas e o comportamento durante sua ativação elétrica. Ainda descrevem dois protocolos de comunicação, conhecidos cripticamente como T = 0 e T = 1, o formato dos pacotes de comando, e ainda incluem um conjunto de comandos de interoperabilidade. A evolução dos cartões de interface sem contato advém do desenvolvimento da tecnologia de comunicação sem contato, em que o próprio cartão é alimentado por energia extraída de um campo de radiofrequência, a qual abriu o horizonte para novas aplicações (WYKES, 2016). Inicialmente, como essa energia era bastante limitada, as funcionalidades dos primeiros cartões sem contato eram bastante restritas e implementadaspor circuitos relativamente simples e poucos flexíveis. Os cartões de tecnologia Hitag ou Mifare, por exemplo, originalmente desenvolvidos pela empresa austríaca Mikron, atualmente parte da empresa NXP, possuíam uma organização de dados em pequenos blocos fixos, processos de autenticação criptográfica considerados relativamente fracos e protocolos de comunicação rudimentares, em termos modernos. Apesar disso, eram soluções inovadoras e perfeitamente adequadas à sua função da época, sendo utilizadas, até os dias atuais, no controle de acesso em fábricas, prédios e nos sistemas de metrô e transportes públicos. A questão de baixo custo foi, e continua sendo, fator importante na adoção dessas e outras tecnologias semelhantes, tais como os módulos RFID. Essas pequenas etiquetas eletrônicas, Radio Frequency ID, têm mil e uma utilidades, por exemplo, na identificação e rastreamento de diversos objetos, na fabricação, distribuição e comercialização de produtos industrializados, no controle de rebanho ou na identificação de animais domésticos. Embora possam ser consideradas primas distantes, as tags ou etiquetas RFID não podem ser consideradas cartões inteligentes de verdade, em virtude de sua extrema simplicidade e correspondente falta de programabilidade. Essa tecnologia Mifare, especificamente as partes referentes a aspectos como campo de radiofrequência, processos de estabelecimento da conexão inicial e forma de comunicação de dados entre leitora e cartão, foi posteriormente padronizada pela criação da norma ISO 14443, dentro da qual é conhecida como a interface tipo A. Segundo Wykes (2016), simultaneamente, o próprio inventor do smartcard, Roland Moreno, e sua empresa Innovatronix, também desenvolveu um tipo de cartão sem contato. Embora sejam baseadas em tecnologias semelhantes, por terem sido concebidas independentemente, as duas soluções são incompatíveis em alguns aspectos. Os cartões sem contato inventados por Moreno são mais parecidos com os cartões com contato microprocessador, organizados em diretórios e arquivos de dados, e eram originalmente direcionados para aplicações de bilhetagem eletrônica, como transportes de metrô e ônibus. Eventualmente, essa tecnologia de comunicação sem contato também foi incorporada ao padrão ISO 14443 como a interface tipo B. 152 Unidade IV Wykes (2016) informa que a criação da tecnologia NFC ocorreu por último, em 2004, quando houve a criação de uma associação internacional de empresas afins, em prol da evolução e da massificação das tecnologias sem contato, o NFC Fórum. A partir das especificações geradas, tornou-se possível construir aparelhos eletrônicos capazes de ler cartões sem contato, de emular o comportamento desses cartões e, principalmente, de permitir a comunicação bidirecional entre dispositivos próximos. A vantagem do NFC sobre as formas alternativas de comunicação, como bluetooth ou Wi-Fi, é que o NFC torna extremamente simples a configuração de uma conexão, pois pode ser feita automaticamente por um gesto de aproximação física dos dispositivos, dentro de um raio de 5 cm a 10 cm. Além de possuírem velocidades de comunicação bem mais altas, as demais tecnologias emanam seus sinais em áreas bem maiores e, portanto, não gozam desse mecanismo simples e intuitivo para estabelecer uma comunicação. Naturalmente, uma conexão NFC pode servir como ponto de partida para uma subsequente comunicação Wi-Fi ou bluetooth, uma abordagem híbrida que combina os benefícios das tecnologias. Para Wykes (2016), a uniformização dos elementos seguros especificamente dos dispositivos de leitura de cartões inteligentes deve obedecer a padrões internacionais, que visam alto grau de interoperabilidade entre os diferentes modelos, marcas e fabricantes existentes. A importância desses padrões pode ser entendida ao considerar o exemplo dos cartões de crédito, pois é necessário que um cartão emitido por qualquer banco, em qualquer país, funcione em qualquer terminal financeiro, em qualquer lugar do mundo. Para Wykes (2016), a capacidade criptográfica é um fator importante que faz um modelo de chip diferir do outro. Existe uma gama de modelos disponíveis, desde processadores de cartão inteligente, que executam todas as operações criptográficas por software, até processadores com hardware dedicado para criptografia simétrica e assimétrica e circuitos específicos para a geração de chaves e de números aleatórios em hardware. Naturalmente, essas diferenças se manifestam no nível de segurança que cada modelo de chip é capaz de oferecer. Outro fator que interfere é a capacidade de memória. Segundo Wykes (2016), a capacidade de memória não volátil dos diversos modelos de cartão é fator determinante na escolha de uma solução de cartão, pois impacta diretamente a quantidade de informações, chaves criptográficas e aplicativos distintos que podem ser armazenados por ele. Atualmente existem cartões com capacidade de 4 KB a 128 KB e maiores e, embora a quantidade de memória não seja mais fator de custo tão relevante, devido aos avanços das tecnologias de fabricação, essas limitações são, em muitos casos, determinadas pelas demandas do mercado. Se considerarmos que a função principal não é armazenamento massivo de dados, mas o fornecimento de serviços de segurança, e que a velocidade de processamento e comunicação desses cartões é bastante limitada, de pouco adiantará equipar um cartão desse tipo com uma memória de 1 GB. 153 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL 7.3 Sistemas operacionais para cartão Para Wykes (2016), muitos cartões inteligentes funcionam a partir de um núcleo de software chamado card operating system (COS), geralmente residente em uma memória ROM, incorporado fisicamente à máscara de fabricação do próprio chip. Esses diversos sistemas operacionais podem ser agrupados conforme dois principais paradigmas de organização — por arquivos ou por aplicativos. Os sistemas operacionais por arquivo, pouco utilizados hoje em dia, seguem o padrão internacional ISO 7816, ao definirem um paradigma de dados estruturados para a organização e o gerenciamento da memória do cartão, dividindo-a em uma hierarquia de arquivos de certa forma análoga ao disco rígido do computador. Nesse esquema, a memória do cartão pode ser organizada em quantos subdiretórios ou arquivos de dados se desejar. Podem-se também definir regras que restringem o acesso aos arquivos, com base em senhas ou chaves criptográficas de autenticação, sendo possível, por exemplo, criar diferentes regras para a leitura, a escrita ou a deleção de dados. O sistema operacional também fornece uma gama de comandos, oferecendo uma variedade de funcionalidades às aplicações externas. Esses comandos incluíam desde funções de criação de arquivos, leitura ou gravação de dados, até funções criptográficas como encriptação, assinatura digital ou autenticação, executadas a partir das chaves criptográficas gravadas no cartão. No entanto, os comandos disponíveis eram sempre limitados àqueles previstos durante a fabricação dos cartões. Para aplicações simples, isso não se tornava um problema significativo, mas, para muitas classes de aplicação, as limitadas funcionalidades disponíveis podiam rapidamente se tornar insuficientes. Na maioria das vezes, somente as empresas responsáveis pelo desenvolvimento do sistema operacional tinham a capacidade de incluir novos comandos ou alterar os já existentes e, naturalmente, cobravam valores significativos pelos serviços. Além desse custo financeiro, quaisquer alterações ou inclusões levavam bastante tempo para serem disponibilizadas, em virtude do regime exaustivo de testes e certificações pelo qual o cartão era obrigado a passar. Como a tecnologia não permitia a alteração ou atualização do software do cartão, uma vez emitido e nas mãos de seu usuário, no caso de ser descoberto algum erro com o software dos cartões, a única solução viável era destruir todos os cartões que apresentassem esse erro e reemiti-los, arcandocom os associados custos e transtornos. Segundo Wykes (2016), também era comum que o acesso à documentação técnica fosse rigorosamente controlado, sendo exigida a assinatura de contratos do tipo NDA (acordos de não divulgação), contendo severas penalidades. Apesar dos esforços de padronização, esse clima de sigilo teve o principal efeito de manter as soluções proprietárias e, como consequência, nos projetos feitos com base nesses cartões, muitas vezes acabaram criando-se estreitos laços de dependência técnica com um determinado fabricante, que eram sentidos somente na hora de buscar melhorias no sistema, ou quando se desejava trocar de fornecedor. Entre os mais populares desses sistemas operacionais, estavam: TIBC, MPCOS, CardOS e Cryptoflex. Alguns deles, agora rebatizados de soluções nativas e com nomes comerciais diferentes, ainda estão disponíveis em versões melhoradas. 154 Unidade IV 7.4 Os cartões inteligentes multiaplicação Wykes (2016) afirma que, diante das desvantagens dos sistemas operacionais nativos, tornou-se fundamental a criação de alternativas mais flexíveis, customizáveis e abertas. Essa busca levou ao desenvolvimento do conceito dos cartões multiaplicação, munidos com sistemas operacionais abertos e projetados para receber novas funcionalidades, sem que elas pudessem trazer vulnerabilidades ou falhas de segurança. Recapitulando, o principal problema dos cartões microprocessador com sistema operacional nativo era que eles não eram facilmente programáveis. Portanto, as soluções novas precisavam ser verdadeiramente programáveis e de tal forma que independessem do modelo de chip. Assim, novas funcionalidades poderiam ser criadas sob demanda, pelas equipes de projeto das empresas que desejassem utilizar um cartão em alguma solução. Se, no futuro, precisassem trocar de chip ou de fornecedor, não teriam maiores problemas, uma vez que a programação valeria e funcionaria em todos os chips. Finalmente, se existisse alguma forma de modificar os programas após a emissão do cartão, caso fosse detectado algum problema de funcionamento ou vulnerabilidade no futuro, os cartões poderiam ser atualizados remotamente, talvez até por internet. Parece um sonho futurístico esperar que um chip tão limitado fosse capaz de tais maravilhas, mas não. Inclusive existem cartões capazes desse feito desde 1998. Com a chegada de uma nova geração de microcontroladores e a aplicação de avançadas técnicas de desenvolvimento seguro, tornou-se possível carregar novos blocos de funcionalidade, microaplicações inteiras na memória não volátil do cartão ou apagá-los quando não forem mais necessários. Isso, inclusive, poderia ser feito mesmo com o cartão já em uso pelo usuário, pois a plataforma do sistema operacional já provê todas as garantias de segurança necessárias. Na época, isso era algo realmente inovador, pois aconteceu cerca de 15 anos antes da invenção dos celulares à base de Android ou iOS, que utilizam um modelo conceitual parecido. Observação Sistemas operacionais abertos são aqueles que têm distribuição gratuita, ou seja, você não precisa pagar para utilizá-lo na sua máquina. O mais famoso dentre esses sistemas é com certeza o Linux. Para Wykes (2016), existe o paradigma multiaplicação, no qual os sistemas operacionais de cartão modernos são enormemente mais flexíveis e poderosos, são verdadeiramente programáveis e permitem a gravação e execução de múltiplos códigos aplicativos, denominados applets, codelets ou simplesmente aplicações. São chamados de sistemas operacionais multiaplicação, pois possibilitam a inclusão de múltiplas aplicações no mesmo cartão, cada qual com funcionalidades distintas. Construídos à base de máquinas virtuais de 155 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL execução, mantêm alto grau de isolamento entre os diferentes aplicativos, protegendo os dados privados e chaves secretas de um aplicativo contra a leitura, alteração ou corrupção pelos demais aplicativos. Atualmente existem dois sistemas operacionais de cartão de plataforma aberta, o Multos e o Java Card. O Multos foi originalmente idealizado na Inglaterra e tem uma especificação aberta, regida por um consórcio de empresas internacionais de tecnologia que variam desde fabricantes de microcontroladores seguros até desenvolvedores de aplicações e soluções. O Java Card é a plataforma mais popular e também tem uma especificação aberta, antes controlada pela empresa Sun, que desenvolveu a linguagem de programação Java, hoje em dia uma divisão da empresa Oracle. Houve também outras iniciativas visando à criação de sistemas operacionais para cartões multiaplicação, como a da Microsoft para emplacar seu produto Windows for Smartcards que, mais recentemente, ressurgiu como Netcard. Nenhum desses produtos alcançou uma participação expressiva no mercado, ficando relegados, em sua maioria, aos anais históricos e aos museus de tecnologia. Segundo Wykes (2016), o funcionamento dos sistemas operacionais multiaplicação opera em ambas as soluções. Multos e Java Card proveem técnicas eficazes para reduzir ou eliminar os eventuais problemas de segurança provocados pelo compartilhamento do chip por aplicações diferentes. Essa proteção é garantida por vias de componentes do sistema operacional que supervisionam os aplicativos, sem permitir que acessem quaisquer dados que não lhes pertençam. Um dos conceitos fundamentais utilizados é o de firewall de aplicação, no qual esse componente supervisor enclausura cada aplicação dentro de um espaço de memória próprio, como se realmente existisse uma parede virtual entre ela e as demais aplicações. Assim, uma aplicação é, literalmente, incapaz de acessar ou alterar os dados das outras, mesmo que tente, pois não conseguiria transpor a parede. Esse mecanismo de proteção é facilitado pela criação de uma máquina virtual, um tipo de microprocessador emulado por software sob o qual são executadas as aplicações (emulado no sentido de que um componente de software do sistema operacional é responsável por executar virtualmente as aplicações, instrução por instrução, código por código, evitando que as aplicações sejam executadas diretamente pelo microcontrolador e permitindo que sejam passíveis de rigorosos controles e validações por esse componente). Em virtude de as aplicações não mais executarem diretamente do hardware do microcontrolador, uma vantagem adicional do uso dessa máquina virtual é que ela se torna altamente portátil. Qualquer microcontrolador para o qual pode ser escrito um componente de software que emula essa máquina virtual é capaz de rodar as aplicações escritas, quebrando o vínculo forte que antes existia entre o código-fonte de uma aplicação, a marca e o modelo do chip. O Multos foi o primeiro sistema operacional multiaplicação para cartões, originalmente criado na Inglaterra pela equipe de desenvolvimento do Banco NatWest, como parte de um projeto ambicioso que visava criar um porta-moeda eletrônico denominado Mondex. 156 Unidade IV Alguns anos depois, a Mastercard adquiriu uma parte da tecnologia Mondex, com a intenção de popularizá-la e, no processo, promover o desenvolvimento do Multos como plataforma segura. Em 1998, foi criada a organização Maosco e a abreviação do Multos Consórcio, formada pelo grupo de empresas responsáveis pela manutenção da especificação aberta, e, em seguida, foi lançada uma nova versão do sistema operacional. Um chip, programado com uma implementação concreta dessa versão do sistema operacional e moeda-eletrônica, foi o primeiro produto no mundo inteiro a alcançar o nível de segurança ITSEC E6, um feito impressionante. Desde então, o sistema operacional Multos seguiu um caminho um pouco tortuoso, sempre mantendo sua impressionante reputação como a plataforma aberta para cartões mais seguros, mas sofreu de uma sequência de problemas no nível administrativo. Em 2008, foi comprado pela empresa australiana Keycorp, durante muito tempo um dos principais atores no consórcio.Em seguida, a divisão de smartcards da Keycorp foi adquirida pela Gemalto, maior fabricante de smartcards do mundo, e transformada numa subsidiária chamada Multos International Ltd. Cartão embutido Implementação Multos Aplicações Aplicações Cartão de mesa preparação Emissor Dados habilitados Gerenciamento da chave do cartão Aplicação, configuração e treinamento Personalização Certificado de dados do cartão Opção de pós-garantia Emisão do cartão Figura 89 – Processo de emissão Multos Para Wykes (2016), apesar dessas mudanças, o sistema operacional ainda se mantém como uma plataforma aberta e multifornecedora, pelo consórcio e envolvimento de uma ampla gama de empresas. Como exemplo, existem versões do sistema operacional feitas por quatro diferentes empresas, entre elas a Multos International e a Samsung, baseadas em microcontroladores seguros produzidos por algumas das principais fabricantes de chips, como Infineon, Hitachi e ST Microelectronics. 157 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL Para Wykes (2016), uma aplicação para o sistema operacional Multos pode ser escrita em várias linguagens de programação, desde Java a código assembly, mas a absoluta maioria das aplicações é escrita na linguagem C, cuja flexibilidade mistura construções de baixo e alto nível de abstração que combinam bem com as plataformas computacionais restritas. Embora, no início, existissem vários fornecedores de kits de desenvolvimento comerciais, hoje a Maosco disponibiliza em seu site um download gratuito, contendo um conjunto de ferramentas, compiladores, depuradores e utilitários. Naturalmente, a máquina virtual permite a programação das diversas funções de processamento de comandos, com os controles de fluxo e estruturas de dados, próprios da linguagem de programação. Toda a parte de comunicação, recepção de comandos e envio de respostas é tratada pelo sistema operacional, deixando para as aplicações somente as funcionalidades particulares de cada uma. Assim, a plataforma Multos fornece às aplicações uma série de funcionalidades adicionais, denominadas primitivas, que incluem um conjunto de serviços criptográficos, como encriptação de mensagens e geração de MAC com os algoritmos DES e AES, funções de hash, serviços criptográficos assimétricos, como encriptação e geração de chaves RSA e ECC, e ainda goza de um gerador de números aleatórios verdadeiros. Também existe uma seleção de primitivas para funcionalidades mais avançadas, como o controle de transações atômicas, entre diversas outras, que proveem funções que seriam lentas demais se fossem implementadas pela aplicação, devido à lentidão da máquina virtual. Evidentemente, as elevadas proteções de uma máquina virtual, com seus rígidos controles e verificações de segurança, envolvem certas restrições, principalmente em tempo de execução das aplicações. No entanto, o grande diferencial da plataforma Multos não está na forma como se projeta ou executa uma aplicação, mas em como se instala a aplicação no cartão. Antes da confecção do cartão, o chip é fabricado com uma identidade fixa e única. Em seu estado inicial, esse chip não está vinculado a nenhum emissor de cartões nem tem aplicações instaladas, somente o sistema operacional e ainda não está apto a ser utilizado. Boa parte da segurança dos cartões Multos é fundamentada num processo de controle dos cartões desde sua fabricação e das aplicações instaladas neles. Esse controle é garantido pelo uso de assinaturas e certificados digitais emitidos pelo Multos KMA (key management authority), que fornece informações de segurança devidamente assinadas ao emissor do cartão. A produção de um cartão se processa em duas fases: inicialização e personalização. A inicialização – habilitação, ou enablement, do chip cria um vínculo forte entre o cartão e determinado emissor de cartões pela gravação de um primeiro pacote de informações assinadas criptograficamente no chip. Esse pacote, gerado pelo KMA sob demanda do emissor, contém o número de série do cartão, a identificação do emissor e uma série de dados para gerenciamento. Antes avulso, o cartão passa a ser daquele emissor por um processo irreversível, pelo qual o emissor é o único que controla o cartão, sendo capaz de instalar ou remover aplicações. Para que isso ocorra, o KMA também emite certificados digitais para as aplicações que o emissor deseja instalar no cartão. 158 Unidade IV O segundo processo de produção é a instalação ou carga das aplicações, juntamente com os dados já personalizados para o usuário final. Ao instalar uma aplicação no cartão, o emissor envia ao cartão uma série de pacotes de dados contendo a aplicação, na forma de código executável e dados iniciais, e o certificado, o qual contém uma assinatura digital que comprova criptograficamente a relação entre o cartão, o emissor e a aplicação. O cartão valida o certificado, verifica que a aplicação recebida é mesmo aquela referenciada pelo certificado e, se tudo for aceitável, instala-a numa área de memória separada das demais aplicações que porventura já estiverem carregadas. Um processo semelhante acontece para a remoção de uma aplicação, em que é enviado um tipo diferente de certificado ao cartão, também assinado criptograficamente, que indica qual aplicação deve ser removida do cartão. Após novamente determinar a veracidade do certificado, o cartão remove a aplicação da memória interna, limpa quaisquer vestígios de dados sensíveis, liberando o espaço antes consumido, que poderá em seguida ser utilizado para a instalação de outras aplicações. As assinaturas digitais são feitas com o algoritmo RSA, com uso do processador criptográfico no hardware do chip. Originalmente, todos os cartões Multos precisavam ter essa função no hardware, significando um aumento de cerca de US$1 no custo final do cartão. Em 2007, foi lançada uma versão de baixo custo, o Multos Step/one, que substituía as assinaturas e certificados digitais por processos de criptografia simétrica, eliminando a necessidade da interação do KMA para a emissão desses cartões, embora com complexidades adicionais para o emissor. Segundo Wykes (2016), o sistema operacional Java Card foi desenvolvido aproximadamente na mesma época em que os primeiros cartões Multos estavam sendo projetados. Um grupo de engenheiros da divisão de smartcards da empresa Schlumberger se debruçava sobre a ideia de reduzir a linguagem Java e sua máquina virtual para executar no ambiente restrito de um microcontrolador seguro. Uma vez esquematizada uma forma inovadora de reduzir o tamanho de um sistema gigantesco, pois a Java convencional precisava de 80 MB de memória para sua execução, até caber em um chip com meros 4 KB de memória, o grupo foi apresentar o projeto à empresa Sun, detentora das tecnologias Java. O resultado foi uma especificação padronizada, uma patente para a equipe da Schlumberger e o nascimento do Java Card. Tornou-se o sistema operacional para cartões inteligentes mais popular do mundo, com alguns bilhões de cartões, em sua maioria no formato de chips SIM para telefones GSM, emitidos até a presente data. Como plataforma aberta, as especificações Java Card podem ser utilizadas por qualquer empresa mediante o pagamento de uma licença à Oracle. Já existem várias dezenas de licenciados, embora quatro ou cinco dos principais fabricantes de cartões inteligentes detenham a maioria do mercado. Existem versões de Java Card para os microcontroladores seguros da maioria dos fabricantes de silício, como a NXP, que adquiriu o produto JCOP, uma implementação independente, feita originalmente por uma equipe da IBM. Diferentemente da linguagem C, utilizada pelo Multos, a Java é uma linguagem orientada a objetos, na qual se divide um programa em um conjunto de partes funcionais que encapsulam dados com 159 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL alguns métodos e funções que operam com esses dados (WYKES, 2016). Os objetos são criados a partir de classes, definiçõesabstratas das funcionalidades requeridas, juntamente com o código-fonte que realmente implementa essas funções. Geralmente se desenvolve uma aplicação Java, pela compilação dos códigos-fontes, gerando-se um arquivo Java com as classes já convertidas para o código executável da máquina virtual Java. Ao executar uma aplicação Java, esse código executável é interpretado, emulando a máquina virtual por software, ou sofre uma segunda fase de compilação feita diretamente para o conjunto de instruções do processador. No caso do Java Card, a máquina virtual Java foi considerada complexa demais para ser interpretada por um microcontrolador seguro de 8 ou 16 bits e, portanto, a equipe definiu uma nova máquina virtual, bastante simplificada. A Java Card Virtual Machine, ou JCVM, em virtude de sua simplicidade, poderia ser emulada por um processador limitado, sendo mais adequada para uso nos chips dos cartões inteligentes. Para tanto, é preciso ocorrer uma segunda fase de translação ou conversão entre o código da máquina virtual Java e o conjunto de instruções passíveis de execução pelo Java Card, feita automaticamente por uma ferramenta do kit de desenvolvimento fornecido gratuitamente pela Oracle. Outra ferramenta interessante nesse conjunto é a Java Byte Code Verifier, que existe para verificar que as classes Java, convertidas para execução pelo chip, não são capazes de produzir nenhum erro ou furo de segurança ao serem executadas. Embora, num primeiro momento, possa parecer uma ideia estranha, um contrassenso, já que a própria JCVM no chip deveria impedir a execução de códigos errados ou maliciosos, é uma consequência da maior complexidade da linguagem Java e do modelo de segurança mais flexível do Java Card. Wykes (2016) informa que existem comandos específicos para gravar ou apagar conjuntos de classes no cartão e para criar instâncias de aplicação ou, na terminologia da Sun, do Applet Java Card. Esse applet é um objeto, como tudo que existe no mundo Java, e tem um identificador próprio pelo qual pode ser selecionado, mas, embora já esteja apto a receber comandos do leitor, ainda não tem nenhum dado personalizado referente ao uso ou futuro portador do cartão. Devido às diferenças entre o Java convencional e o Java Card, determinadas funcionalidades da linguagem Java não são suportadas pelos chips – vale destacar a indisponibilidade do enorme conjunto de bibliotecas padrão, considerado por muitos um dos principais benefícios do Java. Diante dessas limitações, em 2008 foi publicada uma nova especificação Java Card 3.0 Connected Edition, que descreve um Java Card quase totalmente repaginado, projetado para uma nova geração de microcontroladores seguros de 32 bits, munidos com bastante memória e recursos. Equipado com uma máquina virtual nova, suporta um modelo diferente de aplicação, que se comporta como um servidor web dentro do cartão, com suporte para o protocolo HTTPS, dado em XML, retornando páginas HTML. Ainda de adoção incipiente, é um desenvolvimento a ser observado com interesse, embora possa-se considerar que o modelo de aplicativo dos smartphones Android e iOS acabou eliminando a maioria dos benefícios de se ter um cartão verdadeiramente inteligente. 160 Unidade IV Apesar de sua abrangência, uma das lacunas existentes nas especificações Java Card se refere à falta de um modelo de gerenciamento seguro de aplicações. Foi para preencher essa carência que a Visa iniciou o projeto Open Platform, cujo resultado era uma infraestrutura de software para gerenciamento remoto do cartão Java Card. Na forma de especificações e direitos intelectuais, essa tecnologia foi transferida para uma organização sem fins lucrativos, denominada Global Platform, criada especificamente para desenvolver e promover a adoção dessas especificações como padrão. Os mecanismos de segurança pelos quais um emissor pode gerenciar seus cartões a distância são definidos pelo Security Domain. O papel e o modo de operação de uma aplicação controladora – Security Domain – é um tipo de agente de software que representa o emissor dentro do cartão responsável pela carga das bibliotecas de classes Java Card, pela instalação de aplicações novas, pelo seu provisionamento com dados personalizados e chaves criptográficas e, finalmente, pela remoção de aplicações e classes. O Security Domain provê também uma funcionalidade que permite o estabelecimento de um canal de comunicação autenticado e confidencial entre o cartão e algum terminal ou servidor. Por esse canal seguro, é possível enviar de forma segura comandos administrativos ao cartão, pois ele é capaz de validá-los, certificar-se de sua origem e de receber dados sigilosos, mesmo quando esses comandos transitam por redes públicas e inseguras. Ao mesmo tempo, ao servidor é facilitada a verificação da autenticidade do cartão, presente do outro lado do canal, tornando prática a administração remota dos cartões e elementos seguros, mesmo após sua emissão, enquanto estiver em uso pelo portador ou instalado em um aparelho eletrônico, como é o caso dos cartões SIM dos telefones celulares. Verificador Hash Carregar (fornecedor específco) Hash Verificado valor do hash do componente CAP Exportar arquivos Arquivo CAP Verificado valor do hash do componente CAP para carregar Carregar arquivo Figura 90 – Arquitetura Java Card 3.0 7.5 Elementos seguros, ataques e segurança Para Wykes (2016), do ponto de vista da segurança, os elementos seguros se destacam na comparação com componentes eletrônicos e microprocessadores convencionais e em relação aos sistemas operacionais e aplicações normais. 161 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL O hardware seguro é resistente a ataques, sendo que o pilar fundamental de segurança dos elementos seguros está enraizado no seu hardware especializado, projetado com defesas contra uma série de ataques de invasão física, monitoramento elétrico e eletrônico, ou ambiental (WYKES, 2016). A capacidade dos elementos seguros de se defender de ataques no nível físico se denomina resistência à interferência tamper-resistance e é vital, uma vez que os atacantes em potencial geralmente detêm o acesso físico ao dispositivo. Existem algumas formas de ataques aos elementos seguros. Nos ataques invasivos, tenta-se, por exemplo, acessar e extrair informações à medida que elas passam de uma parte do chip a outra, recuperar informações gravadas nos bits da memória ou injetar sinais elétricos falsos, na esperança de que isso provoque uma falha útil. Pela utilização de microagulhas, é possível monitorar diretamente os sinais passando pelas linhas de comunicação dos chips comuns. Com o auxílio de um microscópio, colocam-se uma ou mais agulhas em posições estratégicas e grava-se o sinal que resulta da operação do chip. Se uma chave criptográfica ou senha estiver sendo transferida como parte do processamento normal, por exemplo, entre a memória e a parte do circuito que provê a primitiva criptográfica, ela poderá ser revelada. Para tanto, é preciso obter acesso físico às camadas de conexão metálica do circuito integrado, o que pode ser alcançado pelo uso de processos mecânicos e químicos que removem as resinas e demais materiais utilizados para encapsular o circuito. Uma contramedida comum é a inclusão de uma malha metálica por cima das outras camadas do circuito integrado, de forma que esse acesso físico se torne inviável, especialmente quando tal malha é projetada para detectar tentativas de remoção ou quebra. Os circuitos integrados têm uma gama de outras proteções, algumas oferecendo defesas, como a encriptação dinâmica dos dados em trânsito entre os diferentes blocos funcionais do chip, ou a encriptação dos dados armazenados em memória não volátil, que dificulta potenciais ataques de microagulha tentando ler o conteúdo inteiro dessa memória, em que estão guardadas as chaves e senhas. Existe uma variação especialmente sofisticada do ataque invasivo que envolve a criação de conexões novasno circuito integrado e a remoção física de conexões já existentes. São necessários equipamentos de última geração, como lasers e microscópios de altíssima precisão, disponíveis para alguns poucos laboratórios da classe mundial. Outra variação desse ataque, às vezes denominada semi-invasivo, envolve os mesmos processos iniciais de raspagem das camadas de proteção do chip, mas não requer contato físico. Como exemplo: o uso de um laser para estimular certas áreas do circuito, no intuito de gerar perturbações elétricas, que resultam na produção controlada de falhas na operação do circuito, pois o laser permite grande precisão no posicionamento físico e temporal das falhas injetadas. A exposição do circuito integrado também facilita ataques de monitoramento das emanações eletromagnéticas provenientes das diferentes partes do circuito, cuja precisão é altamente beneficiada pela proximidade com o circuito em comparação com outras formas de monitoramento. 162 Unidade IV Segundo Wykes (2016), outra forma de ataque são os ataques ambientais, que se referem a uma segunda classe de ataques no nível do hardware envolvendo alterações das condições ambientais do circuito integrado, que pode ser feito por vários meios de alteração da voltagem de alimentação, introdução de picos de alimentação, variação dos pulsos do relógio para mais devagar ou mais rápido, aumento ou redução de temperatura, entre muitas outras possibilidades. A esperança que o atacante tem, ao aplicar um desses ataques, é alterar o funcionamento interno do circuito integrado, facilitando a obtenção de informações sigilosas. Por exemplo, ao reduzir a frequência dos pulsos do relógio que governa o funcionamento interno do chip, é possível que as operações funcionem mais lentamente, aumentando as chances de sucesso dos outros mecanismos de ataque já apresentados. No entanto, ao alterar os parâmetros bruscamente, por exemplo, pela injeção de pulsos nos pinos de alimentação elétrica, corre-se o risco de causar uma falha na operação do circuito. Conforme as características dessa falha e o momento exato em que foi provocado, pode-se alterar o fluxo interno do software aplicativo. Imagine a injeção de uma falha justamente quando o aplicativo compara o valor da senha submetida com a senha de referência guardada na memória. Se essa falha invertesse ou anulasse o resultado da comparação, seria possível submeter qualquer senha errada e mesmo assim autenticá-la com êxito. As possibilidades são imensas. Uma variação especialmente preocupante desse tipo de ataque se denomina DFA (differential fault analysis), em que uma falha introduzida nos cálculos internos de certos algoritmos criptográficos é capaz de revelar a chave criptográfica em pouco tempo. Como exemplo, estima-se que é preciso provocar falhas em cerca de 200 bits de dados para recuperar por inteiro uma chave DES ou 3-DES, e esse tipo de ataque tem sido aplicado também a algoritmos simétricos mais modernos, como o AES. A técnica do DFA também combina muito bem com certas primitivas criptográficas assimétricas, especificamente num ataque de precisão com uso de um laser. Por exemplo: é possível induzir erros específicos durante os cálculos matemáticos, refletidos matematicamente no resultado, de tal forma que se torne prático e rápido extrair a chave privada por inteiro. Outra forma de ataque são os ataques passivos que, de acordo com Wykes (2016), se tratam da última categoria de ataques envolvendo o monitoramento externo dos processos internos do circuito, por meio da captura e do processamento de diversos sinais externos que carregam as inevitáveis fugas de informações, pelos canais secundários elétricos, como o consumo de corrente ou as emissões eletromagnéticas, produtos naturais da própria física e da forma de construção dos circuitos. Uma poderosa técnica de análise desses resíduos foi criada em meados da década de 1990, por Paul Kocher, atualmente presidente da empresa Cryptography Research. Ele e sua equipe desenvolveram duas técnicas, uma mais simples, denominada SPA (simple power analysis), e outra mais complexa e muito mais sensível, denominada DPA (diffirential power analysis). 163 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL O SPA funciona pela análise do consumo de corrente elétrica do circuito quando está sendo executada alguma operação criptográfica. Em circuitos integrados normais, sem proteção, é relativamente fácil detectar qual porção do sinal corresponde a diferentes bits de uma chave criptográfica, uma vez que o consumo varia conforme cada bit, ou conjunto de bits da chave. DPA, a técnica mais avançada, envolve a coleção e correlação de sinais capturados durante diversas interações da operação criptográfica. Assim, ampliam-se as pequenas fugas de sinal, permitindo a aplicação dessa técnica a uma gama maior de circuitos, provendo uma forma de derrotar mecanismos de defesa capazes de proteger contra o SPA. Ao descobrir essas técnicas de ataque, a equipe de Paul Kocher também desenvolveu uma série de defesas e contramedidas, registrando patentes. Atualmente, grande parte das contramedidas possíveis é coberta por essas patentes, que descrevem técnicas como o balanceamento do consumo por meio de diversas modificações da lógica, pela randomização das sequências, pela inclusão de ruído elétrico e por meio de pequenas variações do tempo de processamento, para dificultar e aumentar a complexidade do processo de ataque. Recentemente, variações interessantes desses dois ataques ganharam destaque. Conhecidos pelos nomes de Sema e Dema (simple/differential electromag-netic analysis), funcionam pela captura dos sinais eletromagnéticos emitidos pelos circuitos integrados durante sua operação e a subsequente análise para identificar e extrair as informações protegidas. A maior preocupação com essas novas variantes é que elas são capazes de funcionar a pequenas distâncias do circuito integrado sem que isso seja perceptível, diferentemente dos ataques de SPA e DPA, que demandam que o circuito seja inserido fisicamente numa giga de testes. Saiba mais Para saber mais sobre os ataques a hardware, veja: DURO de matar 4.0: viver ou morrer. Dir. Len Wiseman. EUA; Reino Unido: Twentieth Century Fox, 2007. 128 minutos. Segundo Wykes (2016), as proteções do firmware são fundamentais. O firmware é o elemento seguro que gerencia o processo de inicialização após o reset, verificando as bibliotecas de baixo nível, que trabalham mais próximas do hardware, carregando os demais módulos do sistema operacional. O firmware e as bibliotecas são criteriosamente desenvolvidos para garantir ao sistema operacional perfeitas condições para funcionar com toda a segurança. Processos de boot seguro garantem a integridade dos módulos executáveis do sistema operacional antes de proceder. A verificação da integridade da memória não volátil, do correto funcionamento dos diferentes componentes de hardware integrados e da existência de condições ambientais adequadas também 164 Unidade IV ocorre nessa fase. Se algo não estiver bem, como precaução básica, o elemento seguro se recusa a continuar com a inicialização. De forma semelhante aos circuitos especiais, esses softwares de base do elemento seguro também exigem extremos cuidados durante sua implementação e testes e usam técnicas especiais para poderem se defender dos ataques ambientais e dos canais secundários. Na prática, isso significa que muitas rotinas de software são implementadas de forma bastante peculiar, do ponto de vista da engenharia de software convencional, com uso de algoritmos que prezam mais pela segurança do que pela performance. Naturalmente, a eficiência do software é importante, especialmente no caso dos cartões sem contato, que recebem uma corrente mínima colhida do campo do leitor, mas, mesmo assim, o lema sempre será segurança acima de tudo. Os ataques de injeção de falhas podem ser extremamente nocivos, capazes de provocar situações literalmente imprevistaspela equipe de desenvolvimento e testes, como a execução do código em sequências inválidas, inversão de condicionais, não execução de etapas críticas e geração de resultados errados em cálculos. Existem técnicas de desenvolvimento que ajudam a defender contra esses ataques, alguns até parecendo uma forma de programação paranoica, uma vez que um dos paradigmas fundamentais da engenharia de software (os microprocessadores e sua função de processamento única) não vale nesse ambiente, pois não se pode confiar no microprocessador. Recentemente surgiram os elementos seguros multicore, que, diferentemente dos processadores convencionais, que utilizam os seus múltiplos núcleos para aumentar o desempenho, executam o mesmo código em todos os núcleos, em paralelo. A cada momento, eles comparam os resultados da execução para garantir que os núcleos realizaram o código de forma idêntica, buscando, assim, detectar e prevenir ataques de injeção de falhas. Já as proteções do sistema operacional, segundo Wykes (2016), se referem a uma das funções primordiais de qualquer sistema operacional, que é gerenciar os recursos do processador. Assim, o sistema operacional dos elementos seguros é responsável pela divisão das memórias não voláteis e temporárias entre as aplicações, pela carga e administração delas, pelas tarefas de comunicação com o mundo externo, e pela disponibilização de serviços criptográficos para elas. No caso do Multos, o sistema operacional do chip garante que os dados de aplicações não possam ser compartilhados. Uma aplicação acessa e detém controle somente sobre seus próprios dados, garantido pelo firewall de segurança. As aplicações podem até delegar operações entre si de forma gerenciada, mas sem que interfiram na proteção do firewall. Por sua vez, o Java Card implementa um poderoso esquema de proteção de dados, baseado num princípio de propriedade. Sob condições normais, somente o proprietário de um dado é capaz de acessá-lo ou alterá-lo, visto que a propriedade é definida individualmente, por cada objeto, e verificada durante qualquer acesso e ele. No Java Card, todas as classes são organizadas em bibliotecas denominadas packages, e o proprietário de um objeto é sempre o package que contém a sua classe. Teoricamente, as duas abordagens são igualmente seguras, pois restringem o acesso aos dados. O Java Card é bem mais flexível do que o 165 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL Multos, pois o proprietário de um objeto Java Card não é uma única aplicação, mas um package, um agrupamento de classes que podem estar instanciadas em vários applets ao mesmo tempo. Todos esses applets poderão ter acesso aos dados desse package. E, se isso não for suficiente, o Java Card ainda disponibiliza um mecanismo avançado de compartilhamento explícito de dados entre applets distintos. Toda essa flexibilidade tem um preço – o agravante é um aumento da complexidade de implementação do sistema operacional. O paradigma do Multos é simples e facilmente verificável, conforme testemunhado pelas certificações de alta segurança, obtidas pelo Multos, enquanto a complexidade do Java Card o torna bem mais difícil de certificar, embora ele também tenha certificações de segurança. Ambos são sistemas operacionais extremamente seguros, especialmente quando comparados com sistemas operacionais convencionais; no entanto, geralmente, quando há maior complexidade, há maior chance de ter problemas de segurança, devido à maior probabilidade de existirem vulnerabilidades ainda não descobertas. Segundo Wykes (2016), as aplicações e applets, uma vez instaladas, gozam das proteções do firewall de segurança, que ajudam a manter seus dados longe das demais aplicações. Assim, uma aplicação para elemento seguro já é uma exemplificação prática do princípio de minimização e isolamento do código crítico, pois o que é instalado é apenas um pequeno pedaço de uma aplicação muito maior. A vantagem é que o código crítico, as chaves criptográficas e os serviços de segurança associados, ou partes desses serviços, estão isolados do restante da aplicação e protegidos, o que satisfaz uma das principais regras de segurança, o isolamento, normalmente aliado à implementação de processos de autenticação, autorização e controle do acesso aos serviços do elemento seguro. No entanto, o desenvolvimento de uma aplicação é um processo de certa forma complexo, pois as defesas oferecidas pelo hardware, pelo firmware e pelo sistema operacional têm limites. Existem defesas que somente o desenvolvedor de uma aplicação é capaz de implementar, com uso das técnicas gerais de programação defensiva aliadas a técnicas especializadas para elementos seguros. Como nos sistemas operacionais e firmware, dentro do universo de potenciais inimigos, estão os ataques de injeção de falhas, que podem alterar o fluxo de execução dos programas, provocar erros de cálculo e até corromper o valor de uma variável. Há muito menos risco nesse nível, pois os sistemas operacionais já oferecem certo grau de proteção contra esse ataque, em virtude da emulação feita pela máquina virtual. Ataques de temporização são vetores de ataques favoritos, sendo aplicados durante a validação de senhas e códigos PIN, ou na autenticação de um MAC criptográfico. Nesses ataques, eventuais diferenças no tempo de processamento dos comandos podem acabar revelando informações importantes. Por exemplo, se a aplicação testar um caractere da senha por vez e retornar um erro logo que encontrar um caractere diferente da senha de referência, um atacante pode identificar, pela medição de tempo, quando foi acertado o primeiro caractere, e depois o segundo, e assim por diante. Portanto, essas comparações devem ser atômicas, de tempo constante, levando sempre o mesmo tempo, independentemente de a senha submetida ser certa ou errada. 166 Unidade IV O fato de as aplicações para o sistema operacional Java Card serem escritas na linguagem Java levou à disseminação da ideia de que um desenvolvedor já experiente em Java teria bem mais facilidade em escrever uma aplicação para Java Card. Isso é verdade até um ponto e, como existe um grande número desses desenvolvedores no mercado, pode ser uma vantagem na hora de recrutar profissionais. Profissionais não acostumados a esses ambientes, entretanto, deveriam passar por uma capacitação intensiva e prolongada em desenvolvimento para smartcards e elementos seguros, pois logo precisarão enfrentar a questão dos paradigmas, modelos e técnicas de desenvolvimento bem diferentes de tudo o que já conheceram. Por outro lado, a possibilidade de organizar suas aplicações como estruturas de objetos traz benefícios para o desenvolvedor Java Card, contanto que não abuse das modelagens de objetos, porque um ambiente restrito, que primeiramente visa à segurança, não comporta grandes esquemas e hierarquias de objetos considerados normais em outros ambientes. Por fim, o paradigma e a linguagem de programação utilizados acabam sendo menos importantes do que a forma como são construídas as aplicações, as técnicas de desenvolvimento seguro e a cobertura e a qualidade dos testes e das avaliações. Para Wykes (2016), os elementos seguros são resultado de uma evolução das tecnologias de cartão inteligente, que começou quando o chip de um smartcard foi colocado dentro de um telefone celular. Naquele momento, foi aberto um precedente para a inclusão de um pequeno dispositivo seguro dentro de equipamentos que fazem parte do universo de sistemas embarcados. O sucesso dessa iniciativa foi imediato, pois, com a migração para os protocolos GSM, que dependiam da segurança oferecida pelo chip SIM, os celulares não eram mais suscetíveis à clonagem de linhas. O elemento seguro oferecia segurança ao restante do sistema embarcado, nesse caso, o telefone móvel, encapsulando seguramente os serviços, os algoritmos e as chaves criptográficas necessárias. Assim, criava-se uma base firme, sob a qual poderia ser construído um software altamentecomplexo que operava as comunicações do sistema embarcado. Esse modelo se mantém atualmente nos dispositivos smartphones, tablets e afins. Ele de fato agrega mais segurança para o usuário, mas um dos motivos preponderantes para seu desenvolvimento é que as operadoras de telefonia precisavam estancar a clonagem e encontrar formas de autenticar os dispositivos, por causa dos custos das eventuais chamadas fraudulentas. Segundo Wykes (2016), para a maioria das áreas em que são encontrados sistemas embarcados, até recentemente não existia a mesma necessidade de autenticar comunicações, dados e transações. Muito menos havia a necessidade de proteger o sigilo dessas informações ou comunicações, pois grande parte dos sistemas embarcados funcionava de forma off-line, sem serem conectados a redes de comunicação ou internet, cenário que mudou significativamente nos últimos anos, pois está acontecendo uma migração, inicialmente lenta, mas cada vez mais acelerada, na qual esses mesmos dispositivos embarcados estão se conectando a redes locais ou à internet. Essa mudança traz um perigo crescente, pois, antes dessa onda de conectividade, os dispositivos embarcados não eram grandes alvos para ataques e, portanto, não eram projetados com segurança. 167 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL Entretanto, quando já temos desde geladeiras domésticas a sistemas de controle industrial equipados com conectividade e endereços IP, a necessidade de melhor segurança desses dispositivos é premente. Se, por um lado, estando ligados à internet, eles se tornam alvos de atacantes de qualquer lugar do mundo, por outro, mesmo equipados com interfaces de comunicação alternativas como bluetooth ou NFC, se tornam suscetíveis a outros modos de ataque. Wykes (2016) diz que é possível concluir que já sabemos resolver boa parte dos problemas de segurança que esses dispositivos enfrentam ou enfrentarão no futuro. Se acoplarmos um elemento seguro munido de uma ou mais aplicações às placas e processadores desses dispositivos, é viável prover esquemas de identificação e autenticação mútua, além de manter seus dados em sigilo, respeitando as importantes questões de privacidade e confidencialidade dos dados. Os pequenos componentes de software crítico, aplicações, applets ou securelets instalados nesses elementos seguros terão o mesmo papel que as aplicações dos smartcards atuais, servindo de repositórios dos serviços de segurança, com suas chaves criptográficas e lógicas inteligentes de autenticação e provisionamento, que interagirão com os softwares do processador principal. Nessa visão, o processador do sistema embarcado descarregará os principais processos de segurança no elemento seguro e, como este nunca revelará as chaves criptográficas contidas, será uma peça fundamental para garantir a segurança do dispositivo embarcado. Wykes (2016) afirma que existem certos empecilhos à realização prática dessa visão futurista. Primeiramente, a inclusão de um elemento seguro elevará o custo do equipamento, embora haja muitos cenários em que as garantias de segurança se contraporão à questão financeira. E, naturalmente, com uma demanda maior, contando com as irrefreáveis melhorias em tecnologia e fabricação, os custos tendem a se reduzir. A inclusão de elementos seguros como componentes individuais, como ocorre com os telefones celulares, durante um tempo determinado, exigirá novas funcionalidades e mais espaço nas placas de circuito integrado (WYKES, 2016). No entanto, já estão sendo desenvolvidas tecnologias que permitirão a fabricação de elementos seguros com outros componentes, como nas configurações SOC (system on a chip), tão amplamente disseminadas. Um provável problema é que, sem sofrer modificações, os sistemas operacionais dos elementos seguros não serão capazes de atender todos os requisitos dos sistemas embarcados em questões como operação em tempo real, funcionamento multitarefa e desempenho em relação às funcionalidades criptográficas disponíveis. Isso foi justamente o caso dos elementos seguros do tipo chip SIM para celular, que passaram a incluir novos algoritmos proprietários do sistema GSM, entre outras modificações. Por outro lado, atualmente existem poucos profissionais aptos a desenvolver aplicações para elementos seguros, em função da complexidade dessa atividade, que exige conhecimentos particulares e ampla experiência. Além disso, existe pouco material didático disponível, como tutoriais e livros práticos, situação que acaba se agravando pelo fato de haver poucos exemplos de código-fonte de 168 Unidade IV aplicações reais, diferentemente de quase todas as demais áreas de desenvolvimento de software, nas quais existem iniciativas e projetos importantes na modalidade open-source. É inevitável uma adoção maciça dessas tecnologias seguras pelos desenvolvedores e projetistas de dispositivos embarcados nos próximos anos, quando se tornará possível integrar o elemento seguro como um núcleo adicional do processador. Então serão necessários cada vez mais profissionais capacitados, de plataformas abertas, frameworks de desenvolvimento, ferramentas de testes e, quem sabe, de novos sistemas operacionais abertos. O sistema operacional Linux, inicialmente restrito a um pequeno grupo de desenvolvedores visionários, além de recentemente ter tirado o Microsoft Windows de sua posição de “rei” dos sistemas operacionais, se tornou, de fato, o sistema operacional para todo tipo de sistema embarcado. Segundo Wykes (2016), nesses moldes, a ideia de um sistema operacional para elementos seguros de código aberto, capaz de ser analisado e avaliado, compilado e instalado, de receber contribuições e melhorias de qualquer pessoa interessada e qualificada, talvez seja uma alternativa interessante. Você se candidataria a criá-lo? 8 A CRIPTOGRAFIA E O FUTURO Segundo Wykes (2016), estamos transitando para uma sociedade em que os bens de maior valor são a informação, o conhecimento e o know-how. Rapidamente estamos nos transformando em seres multidimensionais, multifocais, multifacetados e de múltiplas inteligências simultâneas. Ao mesmo tempo, aos poucos, estamos nos sutilizando, deixando de lado as questões materiais, de posse, de propriedade, bens físicos e de acúmulo de riqueza material. Aos trancos e barrancos, estamos dominando a matéria mediante o progresso científico em todas as áreas, sendo levados adiante pela soma de milhões de pequenos avanços, as microcontribuições individuais de centenas de milhares de pessoas, e pelos eventuais pulos quânticos que derrubam nossos paradigmas antigos e nos empurram para um novo estado de arte e compreensão do universo. Aos poucos, estamos nos tornando cada vez mais próximos da informação, transformando-nos em seres informacionais, nos quais a consciência, em seus aspectos mais sutis, domina os resquícios primitivos, os instintos e as bases emocionais do nosso passado animal. A pressão do próprio processo evolutivo está nos forçando a – ou nos permitindo – tomar distância das questões de sobrevivência básica, em que o poder, a força física e o domínio sobre os demais animais eram sinônimos de sucesso evolutivo. O mundo mudou, e saber é poder. Aliado à experiência, o conhecimento nos dá poder e, mais que isso, a capacidade de fazer e aperfeiçoar, de recriar o mundo, melhorar as relações interpessoais e intergrupais, e a oportunidade de aprimorar nosso relacionamento com os ecossistemas, o planeta e o universo. O que vem impulsionando essas mudanças é a tecnologia digital, e a tecnologia da informação nos permite transformar a nós mesmos e, consequentemente, a sociedade em que vivemos. 169 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL Segundo Wykes (2016), à medida que ocorre essa transição, nosso mundo informacional se torna cada vez mais dependente dos sistemas computadorizados, que armazenam, processam, comunicam e transformam enormes quantidades de informações. Dependemos dos aparelhos móveis para acesso 24 horas a esse mundovirtual e aos serviços on-line, para trabalhar, estudar, nos comunicar e para nosso lazer. Tornamo-nos praticamente dependentes das grandes redes de comunicação, radiofrequência, telefonia celular, internet, fibra óptica e satélite, as miríades de interconexões que ligam tudo e todos. A mobilidade e a conectividade universal já estão se tornando fatos consolidados. Dependemos também de gigantescos datacenters, com suas milhões de unidades de processamento e enormes espaços de armazenamento de dados – dependência que cresce, ao considerarmos a rápida migração para os serviços computacionais em nuvem que ocorrem por toda parte. Embora não saibamos para aonde vai tudo isso, uma vez que ainda não chegamos lá, quando analisamos os progressos tecnológicos dos últimos mil anos e dos últimos cem anos, para finalmente comparar com os progressos dos últimos dez anos, é possível pincelar uma tendência tão encorajadora quanto assustadora. Ao que parece, a velocidade de crescimento tecnológico, com seus profundos impactos no modo como vivemos, não para de acelerar. A taxa de aumento do total de conhecimento humano, medida pela quantidade de informações digitais, número de livros publicados ou artigos científicos produzidos, tende a um crescimento exponencial. Cada vez mais a tecnologia auxilia a gerar e distribuir conhecimento, o que faz avançar a tecnologia, num círculo virtuoso, um crescimento espiral, sem que se tenha detectado algum limite fundamental. Portanto, a tendência é que esse desenvolvimento ocorra em velocidades cada vez maiores. Diante dessas constatações, o papel da criptografia, das tecnologias criptográficas e, principalmente, dos criptógrafos, engenheiros de segurança e técnicos científicos em criptografia, é ímpar. Muitos desafios relacionados com o nosso mundo de informações, do presente e do futuro, exigirão bastante do profissional de criptografia, para encontrar soluções eficazes, elegantes, eficientes, seguras e práticas. A tecnologia da criptografia tem o potencial de ser importante aliada na transformação do nosso mundo e, para isso, demandará muita dedicação, visão, esforço, persistência, tentativa e erro, vigor mental, coragem, criatividade, ideais inovadoras e uma boa dose de inspiração e intuição. 8.1 A vida on-line Segundo Wykes (2016), a privacidade deveria ser considerada um direito universal, assim como deveria existir o direito universal de viajar, trabalhar ou morar em qualquer lugar do mundo. Precisamos garantir a privacidade, não porque temos algo a esconder, mas porque a violação de privacidade é um passo no tortuoso caminho que leva à censura, ao controle excessivo de governos, organizações ou grupos sobre a liberdade de expressão. Na maioria das vezes, esse caminho termina em regimes repressivos, governos ditatoriais e todo tipo de intolerância, discriminação e injustiça de qualquer natureza. 170 Unidade IV À luz de revelações sobre os massivos e indiscriminados programas de monitoramento de comunicações envolvendo escutas telefônicas, rastreamento e interceptação de mensagens de e-mail, postagens em redes sociais e blogs, termos de busca ou simples padrões de acesso aos sites, a questão da privacidade veio à tona. Não obstante as explicações sobre a necessidade de detectar potenciais ameaças de terrorismo, monitorar e infiltrar o crime organizado, desmantelar grupos internacionais de pornografia infantil e as redes de tráfico de pessoas, muitos acreditam que esses casos isolados não deveriam servir como justificativa para o monitoramento constante de grande parcela da população do planeta. Como então garantir a privacidade do cidadão comum que, embora até possa ter pequenos deslizes de ética e caráter, é relativamente inocente? Como protegê-lo do excessivo zelo dos nossos governos e agências de inteligência, como NSA, GCHQ, ABIN, KGB ou Stasi, do rastreamento quase predatório com fins comerciais dos grandes impérios on-line? A questão da privacidade é bastante complexa. Se, por um lado, a anonimidade pode ser uma ferramenta para evitar censura e rastreamento, por outro, é também capaz de impedir a execução de trabalhos de prevenção ou solução de crimes. A criptografia tem técnicas que proveem anonimidade, mas como utilizá-las somente em prol da proteção da sociedade? Talvez a melhor forma de garantir a privacidade sejam as convenções, acordos legais internacionais e transparência por parte dos governantes. Para Wykes (2016), uma das principais questões ainda em discussão se refere à propriedade de dados digitais. A quem pertencem as informações entregues aos serviços on-line, de e-mail, redes sociais ou provedores de serviços de computação em nuvem? Qual legislação rege os dados, de um brasileiro, por exemplo, hospedados em um serviço on-line de uma empresa americana? Ou as informações de uma empresa britânica que hospede seus servidores virtuais no Japão? Quem, quais indivíduos, organizações ou governos podem acessar esses dados naturalmente? E quem, munido de ordem judicial, poderá obter acesso a eles? No mundo globalizado, valerão as ordens judiciais de que país? Quem pode remover esses dados do serviço on-line? Gostaríamos de acreditar que é o proprietário, mas nem sempre é assim, conforme comprovado em certas redes sociais. O que deve acontecer se uma ordem judicial do tipo takedown notice for recebida por um provedor de armazenamento virtual, porventura utilizado por alguns de seus usuários como repositório de obras pirateadas? Como fica a pessoa que tiver gravado arquivos de dados legítimos nesse site? Ela também perderá acesso aos backups de seu trabalho incompleto de doutorado? É um desafio nada simples a resolver. Complementando essas ideias, será inevitável, mais cedo ou mais tarde, a criação de uma legislação internacional específica para dados na nuvem, pois a nuvem computacional transcende barreiras e fronteiras convencionais. Esse acordo deveria, no mínimo, assegurar alguns direitos básicos, como propriedade de dados, privacidade e liberdade de expressão. Assim, promover um acordo desse tipo é dever e desafio de todos nós. Enquanto não se pode confiar que o direito de privacidade das informações na nuvem será respeitado, há de se encontrar outras soluções, como a encriptação de dados. Entretanto, a eficácia e praticidade 171 CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL dessas soluções dependem muito do que se pretende fazer com as informações, uma vez dentro da nuvem. A forma mais simples e direta é encriptar os dados antes de enviá-los ao serviço on-line, o que funciona muito bem para soluções de armazenamento virtual. Desse modo, cada arquivo será encriptado localmente e somente depois será enviado. A priori, se aplicam muitas das técnicas de proteção de dados locais, pois se muda apenas o local de armazenamento. Contudo, essas técnicas funcionarão somente nos casos em que os arquivos forem recuperados e decriptados pelo proprietário, já que ele é o único que tem a chave criptográfica de proteção. Se, porventura, for necessário compartilhar esses arquivos com outros usuários, deverão ser utilizadas técnicas adicionais de envelopamento seguro, que trazem os respectivos desafios de distribuição confiável de chaves e certificados, como já ocorre nos esquemas de PKI com uso de certificados de sigilo. O usuário terá de indicar explicitamente os destinatários quando subir o arquivo, de forma análoga à utilização dessas técnicas na distribuição confidencial de e-mails e mensagens diversas. Em ambas as situações, a confidencialidade é garantida, pois ocorre a encriptação das informações antes de serem enviadas e armazenadas na nuvem, e serão abertas somente ao serem recuperadas da nuvem. Ainda há desafios significativos nesses dois pontos, pois qualquer descuido, invasão em nível de equipamento local, erro de programação ou falha de configuração poderá levar a um vazamento de dados. A criptografia de nada ajuda se a fuga de dados acontece antes do processamento criptográfico.
Compartilhar