A segurança e a confiabilidade em sistemas embarcados são áreas críticas e de recente desenvolvimento. Além das complicações inerentes à á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, aumentando 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 reduz o consumo de processamento medida que os processos que exigem 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 sistemas operacionais embarcados utilizando de técnicas de detecção e correção de erros
1. Troca de contexto segura emTroca de contexto segura em
sistemas operacionais embarcadossistemas operacionais embarcados
utilizando técnicas de detecção eutilizando técnicas de detecção e
correção de erroscorreção de erros
Rodrigo M A AlmeidaRodrigo M A Almeida
Orientador: Luis Henrique de Carvalho FerreiraOrientador: Luis Henrique de Carvalho Ferreira
Coorientador: Carlos Henrique Valério de MoraesCoorientador: Carlos Henrique Valério de Moraes
Universidade Federal de ItajubáUniversidade Federal de Itajubá
Defesa da TeseDefesa da Tese
2. Sumário
• Objetivos
• Conceitos
• Sistemas embarcados
• Sistemas operacionais
• Segurança
• Algoritmos de correção de informação
• Desenvolvimento
• Resultados
• Conclusões
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
• Interferência
eletromagnética
• Problemas de conexão
elétrica
• Bombardeamento de
partículas atômicas
• Falha por desgaste (vida
útil)
0,001 0,01 0,1 1 10 100 1000
0%
20%
40%
60%
80%
100%
Tempo de funcionamento (anos)Probabilidadedefalha
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
Salvar variáveis do
processo corrente
Calculo do CRC do
processo corrente
Carregamento do
próximo processo
CRC OK?
Fim da interrupção
Carrega variáveis do
próximo processo
Calculo do CRC do
próximo processo
Carrega rotina
de recuperação
32. Correção de erro (Hamming)
Interrupção
Salvar variáveis do
processo corrente
Calculo do CRC do
processo corrente
Carregamento do
próximo processo
Hamming OK?
Fim da interrupção
Carrega variáveis do
próximo processo
Calculo do Ham do
próximo processo
Corrige erros dos
dados da pilha
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)
44. Sem processo em execução (idle)
Troca de contexto
Processo de tempo real
45. Simulação de falhas naSimulação de falhas na
memóriamemória
ResultadosResultados
46. Falhas observadas com o sistema
de correção/detecção desligado
Byte Descrição
Bit
7 6 5 4 3 2 1 0
0 CRC (alto)
1 CRC (baixo)
2 Paginação
3 CCR
4 Acumulador B
5 Acumulador A
6 Indexador IX (alto)
7 Indexador IX (baixo)
8 Indexador IY (alto)
9 Indexador IY (baixo)
10 Contador de Programa (alto)
11 Contador de Programa (baixo)
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.