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.
A convergência para sistemas abertos Ethernet-TCP/IP possibilitou o acesso às redes de automação e aos sistemas SCADA, por meio das redes corporativas ou internet, expondo-as às novas ameaças de segurança. As infraestruturas críticas no setor de distribuição de água necessitam de métodos de proteção para minimizar os riscos à saúde pública e ao meio ambiente, causados por ataques ou vulnerabilidades na rede de automação, mas que não impactem no desempenho da rede e dos sistemas. O artigo propôs, desenvolveu e validou o desempenho de um mecanismo de segurança para detectar intrusão, em tempo real, considerando propriedades de disponibilidade e tempo de resposta.
A convergência para sistemas abertos Ethernet-TCP/IP possibilitou o acesso às redes de automação e aos sistemas SCADA, por meio das redes corporativas ou internet, expondo-as às novas ameaças de segurança. As infraestruturas críticas no setor de distribuição de água necessitam de métodos de proteção para minimizar os riscos à saúde pública e ao meio ambiente, causados por ataques ou vulnerabilidades na rede de automação, mas que não impactem no desempenho da rede e dos sistemas. O artigo propôs, desenvolveu e validou o desempenho de um mecanismo de segurança para detectar intrusão, em tempo real, considerando propriedades de disponibilidade e tempo de resposta.
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Rodrigo Almeida
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.
TDC - Testes e Sistemas legados #quemNunca - SC/2016Fernando Santiago
Esta apresentação aborda um estudo sobre testes de software, seus paradigmas e a aplicação da automação de testes em um sistema legado. Para a aplicação da metodologia de testes apresentada, foi utilizado como estudo de caso o sistema Sienge, sistema de gestão voltado a Indústria da Construção, desenvolvido em ambiente web. Este estudo apresenta e aplica técnicas de testes relacionadas a sistemas isentos de padrões que impedem a garantia da qualidade do sistema ao todo. Entretanto, o trabalho visa compreender como inserir as práticas de testes automatizados no ciclo de vida de desenvolvimento de um software utilizando uma abordagem pragmática.
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
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é...Rodrigo Almeida
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.
TDC - Testes e Sistemas legados #quemNunca - SC/2016Fernando Santiago
Esta apresentação aborda um estudo sobre testes de software, seus paradigmas e a aplicação da automação de testes em um sistema legado. Para a aplicação da metodologia de testes apresentada, foi utilizado como estudo de caso o sistema Sienge, sistema de gestão voltado a Indústria da Construção, desenvolvido em ambiente web. Este estudo apresenta e aplica técnicas de testes relacionadas a sistemas isentos de padrões que impedem a garantia da qualidade do sistema ao todo. Entretanto, o trabalho visa compreender como inserir as práticas de testes automatizados no ciclo de vida de desenvolvimento de um software utilizando uma abordagem pragmática.
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
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.
O Lean Seis Sigma é uma metodologia de gestão de processos que combina duas abordagens distintas - o Lean e o Seis Sigma. A abordagem Lean visa a redução de desperdícios em processos, enquanto o Seis Sigma se concentra na melhoria da qualidade dos processos. Juntas, essas abordagens formam uma metodologia abrangente para a melhoria contínua de processos, produtos e serviços.
O Lean Seis Sigma começou como uma iniciativa da Motorola, na década de 1980, e rapidamente se espalhou para outras empresas, tornando-se uma das metodologias mais populares para a melhoria de processos. O sucesso do Lean Seis Sigma se deve em parte ao seu foco em resultados mensuráveis e à sua abordagem sistemática para a melhoria de processos.
O Lean Seis Sigma utiliza uma abordagem de cinco fases para a melhoria de processos. Essas fases são conhecidas como DMAIC (Definir, Medir, Analisar, Melhorar e Controlar). Cada uma dessas fases envolve uma série de atividades específicas que ajudam a identificar e eliminar desperdícios, reduzir variações e melhorar a qualidade do processo.
A primeira fase, Definir, envolve a identificação do problema ou oportunidade de melhoria. Nessa fase, são definidos os objetivos da melhoria, bem como os limites do processo a ser melhorado. A segunda fase, Medir, envolve a coleta de dados para entender melhor o processo e identificar as áreas que precisam de melhoria. Nessa fase, são definidos os indicadores de desempenho e as metas de melhoria.
A terceira fase, Analisar, envolve a análise dos dados coletados para entender melhor as causas do problema. Nessa fase, são identificadas as principais causas do problema e as oportunidades de melhoria. A quarta fase, Melhorar, envolve a implementação de soluções para melhorar o processo. Nessa fase, são desenvolvidas e testadas as soluções de melhoria e, em seguida, implementadas as soluções que funcionam melhor.
A quinta e última fase, Controlar, envolve o monitoramento do processo para garantir que as melhorias implementadas sejam mantidas ao longo do tempo. Nessa fase, são implementados controles para garantir que o processo continue a operar de forma eficiente e eficaz.
O Lean Seis Sigma também utiliza ferramentas específicas para ajudar na análise e melhoria de processos. Algumas dessas ferramentas incluem o Diagrama de Ishikawa, que ajuda a identificar as principais causas de um problema, e o Mapa do Fluxo de Valor, que ajuda a mapear o fluxo do processo e identificar desperdícios.
O Lean Seis Sigma é uma metodologia flexível que pode ser aplicada em qualquer setor ou área de negócio. É particularmente útil em empresas que têm processos complexos, onde pequenas melhorias podem ter um grande impacto na qualidade, produtividade e lucratividade. Algumas empresas que têm utilizado com sucesso o Lean Seis Sigma incluem a Toyota, a General Electric, a Johnson & Johnson e a Dell.
Em resumo, o Lean Seis Sigma é uma metodologia abrangente para a melhoria contínua de processos.
Qual software não é "doente"? Todos são ou serão! Não é incrível como todos são sujeitos a alguns "vírus" e remédios errados? Essa palestra irá mostrar evolução nas técnicas e a evolução para diagnosticar problemas e verificar a qualidade em softwares, do conceito a prática com a utilização de ferramentas para automatização;
Tópicos:
Histórico e Mitos
Controle de Versão
Processo de Integração Contínua
Testes
Inspeção e Práticas
Servidores
Feedback
O MCM é uma tecnologia de análise de motores elétricos recente, que funciona com base em Inteligência Artificial que compara o motor real a ser monitorado, com um modelo matemático do motor, a funcionar em até 600 condições de carga diferentes. Este modelo matemático é obtido a partir de um período de aprendizagem com a duração de alguns dias.
Esta tecnologia foi desenvolvida para a NASA para efetuar o controlo de condição do motor principal do Vaivém Espacial.
O sistema de monitorização de diagnóstico MCM foi também concebido para detetar as falhas elétricas em motores, em resposta às limitações da monitorização de vibrações. Para além dos modos de falha elétricos, também deteta modos de falha mecânicos no motor ou máquinas acionadas. Surge como única alternativa em situações em que a monitorização de vibrações dedicada não é prática, económica ou suficientemente abrangente. Pode detetar alterações na carga que o motor está enfrentando devido a anomalias no equipamento ou processo acionado, como cavitação ou filtros e telas obstruídos.
O MCM instala-se no quadro de alimentação do motor e assim, como não requer instalação de sensor no próprio motor ou na máquina acionada, o MCM é especialmente adequado para equipamentos acionados inacessíveis ou em áreas perigosas e é aplicável à maioria dos tipos de bombas, compressores e máquinas semelhantes. Também é adequado para a monitorização de bombas submersas, de poço, de fundo de poço e encapsuladas.
The workshop consists of a introduction on the embedded systems design. It starts by building a simple electronic embedded system design (microcontroler plus LCD) on the breadboard/protoboard. This will be used as target plataform. Later It is presented the low level side of C language as bitfields arrays and bitwise operations, pointers to fixed memory adresses/registers, how to access the microcontroler peripherals etc. These will be the base to develop a full embedded microkernel using ISO-C without the standard libraries.
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
Apresenta a definição de driver sob a ótica da programação. Desenvolve um modelo genérico para implementação de drivers apresentando um exemplo para acesso à um barramento de leds, além das ligações e rotinas para acesso à um dispositivo de LCD 2x16.
Troca de contexto segura em sistemas operacionais embarcados utilizando técnicas de detecção e correção de erros
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.