Universidade Federal de Itajubá
Defesa da Tese

Troca de contexto segura em
sistemas operacionais embarcados
utilizando té...
Sumário
• Objetivos
• Conceitos
•
•
•
•

Sistemas embarcados
Sistemas operacionais
Segurança
Algoritmos de correção de inf...
Motivação
• "Dado o aumento da dependência da sociedade na
computação embarcada, nos sistemas de
sensoriamento bem como as...
Motivação
• Erro no firmware do controle de aceleração de um
carro da Toyota
• Stackoverflow
• Falta de backup (mirroring)...
Objetivo
• Metodologia aplicada à sistemas embarcados que
aumente a robustez do sistema:
• Baixo consumo de recursos
• Man...
Conceitos
Sistemas Embarcados
Conceitos
Sistemas embarcados
• Microprocessador
• Escassez de recursos
• Pouca ou nenhuma interface com o usuário
• Requisitos comu...
Sistema operacional
Conceitos
Sistemas operacionais
Aplicação

SO

Memória

CPU

I/O
Sistemas operacionais
Aplicação

Bibliotecas
C/C++

GUI

Maquinas
Virtuais

Kernel

Sistema de
Arquivos

Memória

Troca de...
Troca de contexto
Troca de contexto
Troca de contexto
Troca de contexto
Troca de contexto
Segurança
Conceitos
Segurança
• Confidencialidade: garantia que as informações não
serão disponibilizadas
• Disponibilidade: Garantia que o eq...
Fontes de problemas
• Erros em memórias
Probabilidade de falha

• Interferência
eletromagnética
• Problemas de conexão
elé...
Falhas em memórias
Falhas em memórias
Fontes de problemas
• Vulnerabilidades nos códigos
• Buffer overflow
• Unitialized reads
• Diversidade de compiladores

• ...
Soluções atuais
• Redundância em memórias
• Limitação na execução de páginas
• Modificação do programa em tempo de execuçã...
Algoritmos de detecção
e correção de erros
Conceitos
Algoritmos de detecção/correção
de erros
• Se utilizam na inserção de informações
redundantes para realizar a detecção de ...
CRC
Hamming
Desenvolvimento
Desenvolvimento
• Criação de um SO modelo para teste da
metodologia
• Inserção de um sistema de detecção/correção de
erros...
Sistema
Operacional

Aplicação

serialMonitor

pidController

main

Kernel

kernel_definitions

*

kernel
calculus

proces...
Detecção de erro (CRC)
Interrupção

Calculo do CRC do
próximo processo

Salvar variáveis do
processo corrente
CRC OK?

Car...
Correção de erro (Hamming)
Interrupção

Calculo do Ham do
próximo processo

Salvar variáveis do
processo corrente
Hamming ...
Implementação no HCS12
• Adição de 2 bytes de verificação para cada pilha de
contexto.
Posição na memória

Informação

Tam...
Solução Mista
Salva
CRC

Interrupção

Checar CRC

Próximo
processo
é RT?

Processo
Atual é
RT?

Salva
Hamming

Reinicia
Pr...
Resultados
Consumo de memória
Consumo de CPU
Resultados
Sem processo em execução (idle)
Troca de contexto
Processo de tempo real
Processos extras (sobrecarga)
Consumo dos Escalonadores
12%

Consumo de CPU

10%

EDF
RR

8%

Troca de Contexto
6%
4%
2%
0%

1 2 3 4 5 6 7 8 9 10 11 12 ...
Consumo dos Escalonadores
Sem Prioridade

Com Prioridade

12%
10%

Consumo de CPU

EDF

8%

RR

6%
4%
2%
0%
1

2

3

4

5
...
Consumo dos métodos de
detecção/correção
50%

Consumo de CPU

40%
30%

RR
CRC

20%

Hamming

10%
0%

1 2 3 4 5 6 7 8 9 10 ...
Consumo dos métodos
otimizados
Consumo do método misto
10%

Consumo de CPU

9%
8%
7%
6%

Medido
Calculado

5%
4%
3%
2%
1%
0%

0

5

10

15

20

Período p...
Sem processo em execução (idle)
Troca de contexto
Processo de tempo real
Simulação de falhas na
memória
Resultados
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 ...
Comando para simulação de falha
Resposta do sistema
Troca de contexto
Ação de controle
Comando para simulação de falha
Resposta do sistema
Troca de contexto
Ação de controle
Melhoria na confiabilidade
do sistema
Resultados
Confiabilidade no funcionamento
Sistema de controle
Resultados
Resultados
Malha aberta

Simulação

Teste na planta

Resposta do sistema
Referência
Ação de controle
Diagrama de blocos da simulação
Kp=1; Ki=0; Kd=0;

Simulação

Teste na planta

Resposta do sistema
Referência
Ação de controle
Kp=1; Ki=5; Kd=0;

Simulação

Teste na planta

Resposta do sistema
Referência
Ação de controle
Kp=10; Ki=3; Kd=0,02;

Simulação

Teste na planta

Resposta do sistema
Referência
Ação de controle
Conclusão
Conclusões
• É uma técnica implementável na maioria dos
sistemas operacionais atuais
• Baixo consumo de Flash e RAM
• Cons...
Conclusões
• O sistema é capaz de se recuperar de problemas
que corrompam a pilha de dados
• Processos com exigência de RT...
Agradecimentos
Agradecimento
• Luis e Carlos pelas valiosas orientações
• Adriano, Cesar, Lucas, Henrique e Rafael, pelo auxilio nos
driv...
Obrigado
Próximos SlideShares
Carregando em…5
×

Troca de contexto segura em sistemas operacionais embarcados utilizando técnicas de detecção e correção de erros

911 visualizações

Publicada em

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.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
911
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
13
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Troca de contexto segura em sistemas operacionais embarcados utilizando técnicas de detecção e correção de erros

  1. 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
  2. 2. Sumário • Objetivos • Conceitos • • • • Sistemas embarcados Sistemas operacionais Segurança Algoritmos de correção de informação • Desenvolvimento • Resultados • Conclusões
  3. 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. 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. 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
  6. 6. Conceitos
  7. 7. Sistemas Embarcados Conceitos
  8. 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
  9. 9. Sistema operacional Conceitos
  10. 10. Sistemas operacionais Aplicação SO Memória CPU I/O
  11. 11. Sistemas operacionais Aplicação Bibliotecas C/C++ GUI Maquinas Virtuais Kernel Sistema de Arquivos Memória Troca de Contexto Drivers CPU I/O
  12. 12. Troca de contexto
  13. 13. Troca de contexto
  14. 14. Troca de contexto
  15. 15. Troca de contexto
  16. 16. Troca de contexto
  17. 17. Segurança Conceitos
  18. 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. 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
  20. 20. Falhas em memórias
  21. 21. Falhas em memórias
  22. 22. Fontes de problemas • Vulnerabilidades nos códigos • Buffer overflow • Unitialized reads • Diversidade de compiladores • Invasões e Ataques
  23. 23. Soluções atuais • Redundância em memórias • Limitação na execução de páginas • Modificação do programa em tempo de execução • Microkernel
  24. 24. Algoritmos de detecção e correção de erros Conceitos
  25. 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
  26. 26. CRC
  27. 27. Hamming
  28. 28. Desenvolvimento
  29. 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
  30. 30. Sistema Operacional Aplicação serialMonitor pidController main Kernel kernel_definitions * kernel calculus process <<interface>> function Controladora de Drivers ddCtr_prm.h ddCtr Generic Driver ctrPID * ctrlMngr ADC DAC Serial Interrupt Timer driver driverAbstrato
  31. 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. 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. 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)
  34. 34. Solução Mista Salva CRC Interrupção Checar CRC Próximo processo é RT? Processo Atual é RT? Salva Hamming Reinicia Processo Fim da interrupção Checar Hamming Corrige Pilha
  35. 35. Resultados
  36. 36. Consumo de memória
  37. 37. Consumo de CPU Resultados
  38. 38. Sem processo em execução (idle) Troca de contexto Processo de tempo real Processos extras (sobrecarga)
  39. 39. Consumo dos Escalonadores 12% Consumo de CPU 10% EDF RR 8% Troca de Contexto 6% 4% 2% 0% 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Número de Processos
  40. 40. Consumo dos Escalonadores Sem Prioridade Com Prioridade 12% 10% Consumo de CPU EDF 8% RR 6% 4% 2% 0% 1 2 3 4 5 6 8 10 12 14 16 18 20 22 24 2 4 6 8 10 12 14 16 18 20 22 24 7 9 11 13 15 17 19 21 23 25 1 3 5 7 9 11 13 15 17 19 21 23 25 Número de Processos Número de Processos
  41. 41. Consumo dos métodos de detecção/correção 50% Consumo de CPU 40% 30% RR CRC 20% Hamming 10% 0% 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Número de Processos
  42. 42. Consumo dos métodos otimizados
  43. 43. Consumo do método misto 10% Consumo de CPU 9% 8% 7% 6% Medido Calculado 5% 4% 3% 2% 1% 0% 0 5 10 15 20 Período pRT em ticks 25 30 35 40
  44. 44. Sem processo em execução (idle) Troca de contexto Processo de tempo real
  45. 45. Simulação de falhas na memória Resultados
  46. 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
  47. 47. Comando para simulação de falha Resposta do sistema Troca de contexto Ação de controle
  48. 48. Comando para simulação de falha Resposta do sistema Troca de contexto Ação de controle
  49. 49. Melhoria na confiabilidade do sistema Resultados
  50. 50. Confiabilidade no funcionamento
  51. 51. Sistema de controle Resultados
  52. 52. Resultados
  53. 53. Malha aberta Simulação Teste na planta Resposta do sistema Referência Ação de controle
  54. 54. Diagrama de blocos da simulação
  55. 55. Kp=1; Ki=0; Kd=0; Simulação Teste na planta Resposta do sistema Referência Ação de controle
  56. 56. Kp=1; Ki=5; Kd=0; Simulação Teste na planta Resposta do sistema Referência Ação de controle
  57. 57. Kp=10; Ki=3; Kd=0,02; Simulação Teste na planta Resposta do sistema Referência Ação de controle
  58. 58. Conclusão
  59. 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. 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
  61. 61. Agradecimentos
  62. 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.
  63. 63. Obrigado

×