A segurança e a confiabilidade em sistemas embarcados são áreas criticas e de recente desenvolvimento. Além das complicações inerentes a área de segurança, existem restrições quanto a capacidade de processamento e de armazenamento destes sistemas. Isto é agravado em sistemas de baixo custo. Neste trabalho é apresentada uma técnica que, aplicada à troca de contexto em sistemas operacionais, aumenta a segurança destes. A técnica é baseada na detecção e correção de erros em sequência de valores binários. Para realização dos testes foi desenvolvido um sistema operacional de tempo real e implementado numa placa de desenvolvimento. Observou-se que o consumo de processamento das técnicas de detecção de erro são inferiores às de correção, cerca de 2\% para CRC e 8\% para Hamming. Objetivando-se minimizar o tempo de processamento optou-se por uma abordagem mista entre correção e detecção. Esta abordagem se mostrou mais interessante a medida que os processos que exijam tempo real apresentem uma baixa taxa de execução, quando comparados com o período de troca de contexto. Por fim, fica comprovada a possibilidade de implementação desta técnica em qualquer sistema embarcado, inclusive em processadores de baixo custo.
Troca de contexto segura em SO embarcados usando ECC
1. Universidade Federal de Itajubá
Defesa da Tese
Troca de contexto segura em
sistemas operacionais embarcados
utilizando técnicas de detecção e
correção de erros
Rodrigo M A Almeida
Orientador: Luis Henrique de Carvalho Ferreira
Coorientador: Carlos Henrique Valério de Moraes
3. Motivação
• "Dado o aumento da dependência da sociedade na
computação embarcada, nos sistemas de
sensoriamento bem como as aplicações que eles
suportam, uma nova forma de vulnerabilidade é
inserida nesta infraestrutura critica e que apenas
agora esta começando a ser reconhecida como uma
ameaça significante com possibilidade de graves
consequências." (Wygliski, 2013)
4. Motivação
• Erro no firmware do controle de aceleração de um
carro da Toyota
• Stackoverflow
• Falta de backup (mirroring) das variáveis importantes
• Ganho de causa na justiça Americana Nov/2013
• Stuxnet
• Primeiro vírus direcionado a sistemas embarcados
Detectado em 06/2010
• Continua atacando sistemas, com novas alegações de
ataques na Rússia em Nov/2013
5. Objetivo
• Metodologia aplicada à sistemas embarcados que
aumente a robustez do sistema:
• Baixo consumo de recursos
• Mantenha a capacidade de execução de processos com
requisitos tempo real
• Proteger o sistema contra vulnerabilidades
8. Sistemas embarcados
• Microprocessador
• Escassez de recursos
• Pouca ou nenhuma interface com o usuário
• Requisitos comuns
• Alta disponibilidade
• Processamento em tempo real
• Baixo custo
18. Segurança
• Confidencialidade: garantia que as informações não
serão disponibilizadas
• Disponibilidade: Garantia que o equipamento
continuará funcionando
• Integridade: garantia que as informações não serão
alteradas indevidamente
19. Fontes de problemas
• Erros em memórias
Probabilidade de falha
• Interferência
eletromagnética
• Problemas de conexão
elétrica
• Bombardeamento de
partículas atômicas
• Falha por desgaste (vida
útil)
100%
80%
60%
40%
20%
0%
0,001
0,01
0,1
1
10
100
Tempo de funcionamento (anos)
1000
25. Algoritmos de detecção/correção
de erros
• Se utilizam na inserção de informações
redundantes para realizar a detecção de erros na
transmissão/armazenamento de informações.
• CRC (ciclic redundant check)
• Hamming
29. Desenvolvimento
• Criação de um SO modelo para teste da
metodologia
• Inserção de um sistema de detecção/correção de
erros na troca de contexto
• Correção mista
• Real time – Hamming
• “Normais” – CRC
31. Detecção de erro (CRC)
Interrupção
Calculo do CRC do
próximo processo
Salvar variáveis do
processo corrente
CRC OK?
Carrega variáveis do
próximo processo
Carrega rotina
de recuperação
Fim da interrupção
Calculo do CRC do
processo corrente
Carregamento do
próximo processo
32. Correção de erro (Hamming)
Interrupção
Calculo do Ham do
próximo processo
Salvar variáveis do
processo corrente
Hamming OK?
Carrega variáveis do
próximo processo
Corrige erros dos
dados da pilha
Fim da interrupção
Calculo do CRC do
processo corrente
Carregamento do
próximo processo
33. Implementação no HCS12
• Adição de 2 bytes de verificação para cada pilha de
contexto.
Posição na memória
Informação
Tamanho
stk-3
Resultado do CRC
2 bytes (High:Low)
stk-1
PPage
1 byte
stk+0
CCR
1 byte
stk+1
D
2 bytes (B:A)
stk+3
X
2 bytes (High:Low)
stk+5
Y
2 bytes (High:Low)
stk+7
PC
2 bytes (High:Low)
46. Falhas observadas com o sistema
de correção/detecção desligado
Byte
Descrição
0
1
2
3
4
5
6
7
8
9
10
11
CRC (alto)
CRC (baixo)
Paginação
CCR
Acumulador B
Acumulador A
Indexador IX (alto)
Indexador IX (baixo)
Indexador IY (alto)
Indexador IY (baixo)
Contador de Programa (alto)
Contador de Programa (baixo)
Bit
7 6 5 4 3 2 1 0
59. Conclusões
• É uma técnica implementável na maioria dos
sistemas operacionais atuais
• Baixo consumo de Flash e RAM
• Consumo de processamento de 12% à 50%
• É possível reduzir o consumo para valores de 1,7% à
8,5% com o uso de lookup tables, aumentando no
entanto o consumo de RAM ou Flash (+600 bytes)
60. Conclusões
• O sistema é capaz de se recuperar de problemas
que corrompam a pilha de dados
• Processos com exigência de RT
• Continuaram sua execução sem problemas, mesmo com
ocorrência de erros
• A solução mista aumenta a segurança sem um
consumo exagerado de processamento
62. Agradecimento
• Luis e Carlos pelas valiosas orientações
• Adriano, Cesar, Lucas, Henrique e Rafael, pelo auxilio nos
drivers e testes
• Enzo pela ajuda na 1ª versão do kernel e a Thaty pelas
revisões do documento
• Armando pela ajuda na estatística e análises de confiabilidade
• Alberto Fabiano pelas conversas sobre segurança e
embarcados
• Colegas do Grupo de engenharia biomédica pelo apoio e
infraestrutura.