Por que cartões inteligentes comuns como o SLE5528 são quase sempre limitados a <16K de memória disponível e a um processador de 8 bits muito lento? Qual é o fator limitante que torna tecnologicamente / economicamente inviável elevar esses limites?
Edição: Talvez eu deva dar um pouco mais de fundo por que estou fazendo esta pergunta. Para um cliente no trabalho, tivemos que integrar um módulo de cartão inteligente que basicamente atuava como um keystore (semelhante aos que você pode usar em bibliotecas de programação de alto nível como o PKCS11). Estávamos constantemente atingindo os limites deste dispositivo (não podemos armazenar mais do que algumas chaves, não podemos armazenar nenhuma chave maior que 1k, temos que esperar pelo menos 5 segundos antes de buscar a lista de chaves etc.). A única pessoa no final do fornecedor que eu pude alcançar foi um fornecedor que me deu a resposta "É assim que os cartões inteligentes funcionam". Não é como se não houvesse mercado real para armazenar chaves RSA de tamanho> 4K em um cartão. Eu adoraria saber a verdadeira razão por trás disso.
fonte
Respostas:
É o preço extra causado pelos recursos de segurança que aumentam o preço. Tecnicamente, você não pode comparar a memória não volátil dos cartões inteligentes com a memória flash normal ou eeprom. Por exemplo, é possível abrir a memória flash normal, ligar os fios à matriz e ler o conteúdo da memória. Com cartões inteligentes, isso não deve ser possível (ou mais realista: deve ser tão complicado e caro que não vale a pena).
O mesmo vale para a CPU. As CPUs de cartão inteligente possuem vários recursos de segurança integrados que não são necessários para as CPUs normais. Por exemplo, eles não devem vazar nenhuma informação no código que executam pela quantidade de corrente que extraem ou vazar qualquer coisa por radiação de RF.
Dito isto, todos esses blinds de canal lateral têm um preço não apenas no custo de fabricação, mas também no desempenho computacional. É apenas mais importante estar seguro do que rápido.
Dito isto, cartões inteligentes com mais memória estão disponíveis. Você pode comprá-los com mais de 100kb de memória. Eles são caros.
A recomendação nos comentários de alterar as chaves de RSA para ECC é muito boa. O tamanho da chave do ECC em comparação com o RSA no mesmo nível de segurança é muito menor. Assim, você aproveita melhor sua memória não volátil limitada. É provável que o ECC seja mais rápido.
fonte
É assim que os cartões inteligentes funcionam. Se você quer um pendrive, sabe onde encontrá-lo.
Os cartões inteligentes são projetados para segurança. Eles são projetados para serem resistentes a violações . Eles são projetados para armazenar segredos e cometer suicídio, em vez de desistir de seus segredos. Você não pode (com esforço razoável, exceto falhas de implementação) extrair os dados ou cloná-los.
Os cartões inteligentes são (deveriam ser) projetados para que, se você tentar ignorar a interface do software e ler a memória diretamente, não possa. As únicas interfaces externas são as linhas de energia e serial. Todo o resto está dentro de uma gaiola de Faraday (para combater as medições de emissões) que é protegida por uma camada de produtos químicos corrosivos (ácidos, acho) para que, se você tentar fazer um buraco na camada de proteção, o chip (especialmente a memória) danificado além da recuperação.
O chip é projetado para consumir energia constante, para evitar vazamento de informações através do consumo de energia . Também foi projetado para permitir que as operações levem tempo constante. Portanto, os chips de cartão inteligente não têm otimizações de hardware, como pipelines de instruções ou gerenciamento de energia para reduzir a dissipação de calor. Os chips de cartão inteligente geralmente contêm peças que não servem a nenhum propósito, para tornar as emissões e a energia mais constantes ou mais difíceis de analisar, além de dificultar a engenharia reversa.
Várias coisas tornam os cartões inteligentes mais lentos que os chips não sensíveis à segurança. Como os cartões inteligentes não têm sua própria fonte de alimentação, eles precisam gravar na memória flash com bastante frequência - eles não podem se dar ao luxo de armazenar em cache coisas na RAM. Caso contrário, o adversário poderia cortar o poder em momentos vantajosos (para ele). O software precisa usar algoritmos de tempo constante (para evitar ataques de tempo ), não o algoritmo mais rápido possível. O software deve ser escrito com redundâncias, caso o adversário mostre um laser no cartão para inverter alguns bits da memória e colocar o software em um estado que não deveria ser alcançável (sim, isso é um ataque real).
Medidas de segurança como essas têm um custo. Além disso, como os ataques continuam melhorando, o design dos chips precisa acompanhar. A maioria dos tipos de chips se torna cada vez mais poderosa de acordo com a lei de Moore, mas com os cartões inteligentes, as melhorias de engenharia são absorvidas principalmente pela necessidade de combater novos ataques.
Não são cartões que suportam 4k chaves RSA. Mas eles são incomuns. Alguns anos atrás, o Java Card 3 foi introduzido para suportar quase todos os recursos da linguagem Java; Eu acho que um cartão capaz de fazer isso seria capaz de assinar com 4k RSA. Mas eles realmente não aceitaram, em parte porque as melhorias de engenharia são retomadas pelo aumento das proteções de segurança e em parte porque muitas melhorias de engenharia foram inseridas em cartões sem contato, que exigem menos consumo de energia e tempos de resposta mais rápidos.
Mas não há muito mercado para RSA 4k. À medida que os cartões inteligentes chegavam a esse ponto, o ECC tornou-se amplamente disponível. Você pode obter o mesmo nível de segurança que o RSA de 4k com chaves ECC muito menores. A única desvantagem da mudança do RSA para o ECC é o suporte ao algoritmo em toda a sua infraestrutura, mas dispositivos incorporados, como cartões inteligentes, são a parte mais difícil: praticamente qualquer coisa que o servidor suporte ao ECC atualmente.
Se você realmente precisa de algo mais poderoso, existem dongles USB com poder de computação "real", que podem armazenar chaves criptográficas e executar operações criptográficas com uma interface PKCS # 11. Esses dongles não têm quase a mesma resistência física à violação de um PKCS típico nº 11. É um compromisso entre segurança e desempenho.
Leitura adicional:
fonte