SIDNEI BARON SEGURANÇA EM REDES-EM-CHIP: MECANISMOS PARA PROTEGER A REDE SOCIN CONTRA ATAQUES DE NEGAÇÃO DE SERVIÇO Itajaí (SC), fevereiro de 2013 UNIVERSIDADE DO VALE DO ITAJAÍ CURSO DE MESTRADO ACADÊMICO EM COMPUTAÇÃO APLICADA SEGURANÇA EM REDES-EM-CHIP: MECANISMOS PARA PROTEGER A REDE SOCIN CONTRA ATAQUES DE NEGAÇÃO DE SERVIÇO por Sidnei Baron Dissertação apresentada como requisito parcial à obtenção do grau de Mestre em Computação Aplicada. Orientador: Cesar Albenes Zeferino, Dr. Co-Orientadora: Michelle Silva Wangham, Dra. Itajaí (SC), fevereiro de 2013 SEGURANÇA EM REDES-EM-CHIP: MECANISMOS PARA PROTEGER A REDE SOCIN CONTRA ATAQUES DE NEGAÇÃO DE SERVIÇO Sidnei Baron Fevereiro / 2013 Orientador: Cesar Albenes Zeferino, Dr. Co-Orientadora: Michelle Silva Wangham, Dra. Área de Concentração: Computação Aplicada Linha de Pesquisa: Sistemas Embarcados e Distribuídos Palavras-chave: Redes-em-Chip, Segurança, Negação de Serviço. Número de páginas: 117 RESUMO Com o aumento do número de núcleos em um único chip, a escalabilidade de comunicação e a largura de banda tornaram-se fatores críticos importantes. Para atender essas necessidades, as redes de intercomunicação chaveadas estão substituindo os barramentos e canais ponto-a-ponto na comunicação entre os núcleos de um sistema integrado (SoC – System-on-Chip). Essas redes são denominadas Redes-em-Chip ou NoCs (Networks-on-Chip). Assim como sistemas distribuídos tradicionais, um SoC e sua rede são suscetíveis a ataques as suas propriedades de segurança. Por exemplo, ataques do tipo Negação de Serviço (DoS – Denial-of-Service) podem comprometer a disponibilidade da rede, ou seja, sua capacidade de realizar as comunicações entre os componentes do sistema. Neste contexto, este trabalho teve como objetivo investigar soluções para provimento de segurança em NoCs utilizando como referência a rede SoCIN (SoC Interconnection Network). Foram propostos mecanismos para proteger essa rede contra ataques de DoS, os quais foram implementados como componentes de hardware, na forma de wrappers, que realizam a filtragem dos fluxos de comunicação injetados na rede, descartando pacotes que comprometam a sua disponibilidade ou regulando a taxa de injeção de fluxos que pretendam consumir uma largura de banda maior do que a que foi prevista pelo projetista do SoC. Os resultados obtidos demonstraram que a implementação em hardware da solução proposta é viável, apresenta baixo impacto no desempenho da rede e um pequeno sobrecusto de área de silício. NETWORKS-ON-CHIP SECURITY: MECHANISMS TO PROTECT SOCIN NOC AGAINST DENIAL-OF-SERVICE ATTACKS Sidnei Baron February / 2013 Advisor: Cesar Albenes Zeferino, Dr. Co-Advisor: Michelle Silva Wangham, Dra. Area of Concentration: Applied Computer Science Research Line: Embedded and Distributed Systems Keywords: Network-on-Chip, Security, Denial-of-Service. Number of pages: 117 ABSTRACT With the increasing in the number of cores on a single chip, the communication scalability and bandwidth have become critically important. To meet these needs, switching networks are replacing shared busses and point-to-point channels as interconnection architecture of SoCs (Systems-onchip). These networks are called Networks-on-Chip or NoCs. Like traditional distributed systems, a SoC and its network are susceptible to attacks on their security properties. For example, attacks like Denial-of-Service (DoS) can compromise network availability (i.e. the ability to perform communications between system components). On this context, this work had as objective investigates solutions for providing security on NoCs using as reference the SoCIN (SoC Network Interconnection) NoC. Mechanisms were proposed to protect the network against DoS attacks. These mechanisms were implemented as hardware-based wrappers that filter the communication flows injected into the network by the cores, discarding packets that affect its availability, or regulate the injection rate of flows that try to consume a bandwidth higher than the one that was specified by the SoC designer. The obtained results demonstrated that the hardware implementation of the proposed solution is feasible. The implemented solution presented a low impact on the NoC performance and a reduced silicon overhead. LISTA DE ILUSTRAÇÕES Figura 1. Exemplos de topologia: (a) crossbar; (b) grelha 2-D; (c) toróide 2-D; (d) hipercubo 3-D 19 Figura 2. Componentes de uma NoC: enlace, roteador e interface de rede (NI) ............................... 20 Figura 3. Mensagem, Pacote, Flit e Phit ............................................................................................ 23 Figura 4. Roteador com quatro buffers: (a) FIFO, (b) SAFC; (c) SAMQ; (d) DAMQ ..................... 29 Figura 5. Abordagens para implementação de árbitros: (a) centralizada; (b) distribuída .................. 31 Figura 6. Gráfico com a relação dos ataques abordados .................................................................... 48 Figura 7. Gráfico com a relação de propriedade de segurança tratado .............................................. 50 Figura 8. Gráfico com a relação dos mecanismos de segurança adotados ........................................ 52 Figura 9. Gráfico com a relação de componentes utilizados ............................................................. 54 Figura 10. As duas topologias da SoCIN: (a) grelha e (b) toróide..................................................... 58 Figura 11. Enlace da SoCIN .............................................................................................................. 60 Figura 12. Sistema de coordenadas da SoCINfp ................................................................................ 60 Figura 13. Formato do pacote e bits de informação roteamento da SoCIN ....................................... 61 Figura 14. Interfaces do ParIS ............................................................................................................ 63 Figura 15. Organização do ParIS ....................................................................................................... 63 Figura 16. Geração do simulador SystemC do BrownPepper ........................................................... 66 Figura 17. Implementação do mecanismo de segurança na rede SoCIN ........................................... 73 Figura 18. Detalhamento do componente SEW ................................................................................. 74 Figura 19. Diagrama de bloco do wrapper que detecta ataque de endereçamento ............................ 75 Figura 20. FSM do wrapper que detecta ataque de endereçamento .................................................. 77 Figura 21. Circuito digital do wrapper que detecta ataque de endereçamento .................................. 78 Figura 22. Circuito digital do wrapper de controle de banda ............................................................ 79 Figura 23. Diagrama da FSM do controle de banda .......................................................................... 81 Figura 24. Circuito digital do bloco COUNT .................................................................................... 82 Figura 25. Circuito digital do bloco CALC ....................................................................................... 83 Figura 26. Diagrama RTL do Wrapper 1 ........................................................................................... 85 Figura 27. Diagrama RTL da estrutura interna do bloco Attack Detector ......................................... 86 Figura 28. Diagrama RTL do Wrapper 2 ........................................................................................... 86 Figura 29. Diagrama RTL do bloco COUNT .................................................................................... 87 Figura 30. Diagrama RTL do bloco CALC ....................................................................................... 88 Figura 31. Bloco testbench e o bloco SEW ....................................................................................... 92 Figura 32. Envio de um pacote sem ataque - VHDL ......................................................................... 93 Figura 33. Envio de um ataque a um endereço de destino X maior que ao tamanho da rede ........... 93 Figura 34. Envio de um ataque a um endereço de destino Y maior que ao tamanho da rede ........... 94 Figura 35. Envio de um ataque com endereço de destino ao próprio o núcleo de origem ................ 94 Figura 36. Envio de um ataque com a posição de origem X diferente do endereço do núcleo ......... 95 Figura 37. Envio de um ataque com a posição de origem Y diferente do endereço do núcleo ......... 95 Figura 38. Envio de um ataque com número de flits maior do que o permitido................................ 96 Figura 39. Envio de vários pacotes sem intervalo com 100% da largura de banda ........................... 97 Figura 40. Envio de vários pacotes sem intervalo com 11% da largura de banda ............................. 97 Figura 41. Envio de vários pacotes sem intervalo com 20% da largura de banda ............................. 98 Figura 42. Envio de vários pacotes sem intervalo com 33% da largura de banda ............................. 98 Figura 43. Envio de vários pacotes sem intervalo com 50% da largura de banda ............................. 98 Figura 44. Envio de vários pacotes sem intervalo com 67% da largura de banda ............................. 98 Figura 45. Envio de vários pacotes sem intervalo com 80% da largura de banda ............................. 99 Figura 46. Envio de vários pacotes sem intervalo com 89% da largura de banda ............................. 99 Figura 47. Diagrama da NoC 3x3 utilizada nos experimentos em SystemC ................................... 100 Figura 48. Envio de um pacote sem ataque – SystemC ................................................................... 100 Figura 49. Envio de um ataque a um endereço de destino X maior que ao tamanho da rede – SystemC ................................................................................................................................... 101 Figura 50. Envio de um ataque a um endereço de destino Y maior que ao tamanho da rede – SystemC ................................................................................................................................... 101 Figura 51. Envio de um ataque com endereço de destino ao próprio o núcleo de origem – SystemC .................................................................................................................................................. 102 Figura 52. Envio de um ataque com a posição de origem X diferente do endereço do núcleo – SystemC ................................................................................................................................... 102 Figura 53. Envio de um ataque com a posição de origem Y diferente do endereço do núcleo – SystemC ................................................................................................................................... 103 Figura 54. Envio de um ataque com número de flits maior do que o permitido – SystemC ........... 103 Figura 55. Envio de vários pacotes sem intervalo com largura de banda alocada de 50% – SystemC .................................................................................................................................................. 104 Quadro 1. Classificação dos algoritmos de roteamento ..................................................................... 30 Quadro 2. Ataques tratados nos trabalhos relacionados .................................................................... 47 Quadro 3. Propriedades de segurança tratadas nos trabalhos relacionados ....................................... 49 Quadro 4. Mecanismos adotados nos trabalhos relacionados ............................................................ 51 Quadro 5. Componentes utilizados nos trabalhos analisados ............................................................ 53 Quadro 6. Posicionamento deste trabalho com os trabalhos analisados ............................................ 55 Quadro 7. Relação de possíveis ataques a NoC ................................................................................. 67 Quadro 8. Vulnerabilidade da rede SoCIN a possíveis ataques e soluções de segurança ................. 70 Quadro 9. Tabela-verdade que descreve a função para detectar ataque de endereçamento .............. 76 Quadro 10. Tabela-verdade que descreve a função do contador do bloco COUNT .......................... 81 Quadro 11. Seleção de largura de banda alocada............................................................................... 83 Quadro 12. Ataques modelados para o experimento ......................................................................... 92 Quadro 13. Ataques modelados para o experimento ....................................................................... 104 LISTA DE ABREVIATURAS E SIGLAS ACM AES-GSM APU ASA ATG BOP CID CLSA CPM CSA DAMQ DEFENSE DoS DoSP DPU DSP EOP FIFO FLIT GUI HLP HOL I2C I2CSEC IAP IC IDS IFC IP IP IRQ IRS FCFS FPGA LRS LSA MCA MCNC NSM MPSoC NI NoC OC OCN OCP Association for Computing Machinery Advanced Encryption Standard - Galois/Counter Mode Address Protection Unit Attack Specific Agent Attacker Traffic Generator Begin-of-Packet Comportment Identifier Cluster Security Agent Crosspoint Matrix Central Security Agent Dynamically-Allocated, Multi-Queue Design for Enabling Security Denial-of-Service Denial-of-Service Probe Data Protector Unit Digital Signal Processor End-of-Packet First-In First-Out Flow Control Unit Graphical User Interface Higher Level Protocol Head-of-Line Inter-Integrated Circuit Inter-Integrated Circuit Security Illegal Access Probe Input Controller Intrusion Detection System Input Flow Controller Intellectual Property Internet Protocol Interrupt Request Line Input Read Switch First-Come-First-Served Field-Programmable Gate Array Least Recently Served Local Security Agent Mestrado em Computação Aplicada Microelectronics Center of North Carolina Network Security Manager Multiprocessor System-on-Chip Network Interface Network-on-Chip Output Controller On-chip Network Open Core Protocol ODS OFC OWS ParIS PHIT PPS QoS RASoC RET RIB RTL SAFC SAMQ SECOPRO SEW SM SOC SoCIN SoCINfp SPN SRAM TDM TG TL TM TLM UNIVALI VAL VC VCI VHDL VHSIC Output Data Switch Output Flow Controller Output Write Switch Parameterizable Interconnect Switch Physical Unit Processor Protection System Quality of Service Router Architecture for SoC Return Signal Routing Information Bits Register Transfer Level Statically Allocated, Fully Connected Statically Allocated Multi-Queue Security and Control Processor Security Wrapper Security Monitor System-on-Chip SoC Interconnection Network SoC Interconnection Network fully parameterizable Signal Probe Networks Static Random Access Memory Time-division multiplexing Traffic Generator Transaction Level Traffic Measurer Transaction Level Modeling Universidade do Vale do Itajaí Validation Virtual Channel Virtual Component Interface VHSIC Hardware Description Language Very High Speed Integrated Circuits SUMÁRIO 1 INTRODUÇÃO.................................................................................... 10 1.1 CONTEXTUALIZAÇÃO ................................................................................. 10 1.2 PROBLEMA DE PESQUISA........................................................................... 12 1.2.1 Solução Proposta ............................................................................................. 13 1.2.2 Delimitação de Escopo .................................................................................... 14 1.3 OBJETIVOS ...................................................................................................... 14 1.3.1 Objetivo Geral ................................................................................................. 14 1.3.2 Objetivos Específicos ...................................................................................... 14 1.4 METODOLOGIA .............................................................................................. 14 1.4.1 Metodologia da Pesquisa ................................................................................ 15 1.4.2 Procedimentos Metodológicos........................................................................ 15 1.5 ESTRUTURA DO DOCUMENTO.................................................................. 16 2 FUNDAMENTAÇÃO TEÓRICA ...................................................... 17 2.1 REDES-EM-CHIP ............................................................................................. 17 2.1.1 Arquitetura de NoC ........................................................................................ 17 2.1.2 Controle de fluxo e chaveamento................................................................... 22 2.1.3 Memorização ................................................................................................... 27 2.1.4 Roteamento ...................................................................................................... 29 2.1.5 Arbitragem....................................................................................................... 31 2.2 SEGURANÇA EM SISTEMAS COMPUTACIONAIS ................................ 32 2.2.1 Ataque à segurança ......................................................................................... 33 2.2.2 Mecanismos de segurança .............................................................................. 35 2.3 CONSIDERAÇÕES .......................................................................................... 35 3 SEGURANÇA EM REDES-EM-CHIP ............................................. 37 3.1 3.2 3.3 3.4 TRABALHOS RELACIONADOS E O ESTADO DA ARTE ...................... 37 ANÁLISE COMPARATIVA............................................................................ 46 POSICIONAMENTO DESTE TRABALHO ................................................. 54 CONSIDERAÇÕES .......................................................................................... 56 4 ADICIONANDO SEGURANÇA À REDE SOCIN ......................... 57 4.1 REDE SOCIN..................................................................................................... 57 4.1.1 Arquitetura da rede SoCIN............................................................................ 58 4.1.2 Arquitetura do roteador ParIS ...................................................................... 62 4.1.3 BrownPepper ................................................................................................... 65 4.2 VULNERABILIDADES DA REDE SOCIN ................................................... 66 4.2.1 Definição dos ataques...................................................................................... 66 4.2.2 Análise das vulnerabilidades da SoCIN ........................................................ 68 4.3 SELEÇÃO DE ATAQUES E PREMISSAS DE PROJETO ......................... 71 4.4 PROTEGENDO A REDE SOCIN CONTRA ATAQUES DE DOS ............ 73 4.4.1 Controle de endereço origem e destino – Wrapper 1 .................................. 74 4.4.2 Controle de banda – Wrapper 2 .................................................................... 78 4.5 CONSIDERAÇÕES .......................................................................................... 84 5 IMPLEMENTAÇÃO E AVALIAçÃO .............................................. 85 5.1 IMPLEMENTAÇÃO EM VHDL .................................................................... 85 5.1.1 Diagramas RTL do Wrapper 1 ...................................................................... 85 5.1.2 Diagramas RTL do Wrapper 2 ...................................................................... 86 5.1.3 Resultados de síntese ....................................................................................... 88 5.1.4 Verificação baseada em simulação ................................................................ 91 5.2 IMPLEMENTAÇÃO EM SYSTEMC ............................................................ 99 5.2.1 Simulação ....................................................................................................... 100 5.3 ANÁLISE DA TAXA DE COBERTURA ..................................................... 104 6 CONCLUSÕES .................................................................................. 105 6.1 CONTRIBUIÇÃO DA DISSERTAÇÃO ...................................................... 106 6.2 TRABALHOS FUTUROS .............................................................................. 106 REFERÊNCIAS ..................................................................................... 108 APÊNDICE A – REVISÃO SISTEMÁTICA ..................................... 113 10 1 INTRODUÇÃO 1.1 CONTEXTUALIZAÇÃO Com o advento dos processos submicrônicos1, a capacidade de integração de transistores tem atingido níveis que possibilitam a construção de um sistema completo em uma única pastilha de silício. Esses sistemas, denominados sistemas integrados ou SoCs (System-on-Chip), baseiam-se no reuso de blocos previamente projetados e verificados, os quais são chamados de núcleos ou blocos de propriedade intelectual (IP – Intelectual Property) (MARTIN; CHANG, 2003). A reusabilidade2 é um requisito crucial no projeto de sistemas eletrônicos para lidar com o aumento da complexidade dos sistemas e com a redução do tempo disponível para colocação de um novo produto no mercado, conhecido pela expressão time-to-market. Segundo Jerger e Peh (2009), a busca pela diminuição do consumo de energia e o aumento no desempenho fizeram impulsionar o advento de sistemas integrados com múltiplos núcleos (multi-core). Nos últimos anos, várias indústrias produziram sistemas multi-core com um número elevado de núcleos, permitindo que um único chip possua centenas a milhares de núcleos integrados. Essa integração em um único chip, chamado de MPSoCs (Multiprocessor System-onChip), permitiu a adição de vários componentes, incluindo núcleos de processadores, memória embarcada e aceleradores como os módulos DSP (Digital Signal Processor) e processadores especializados como vídeo, áudio, comunicação, etc. Tradicionalmente, os núcleos de um SoC são interconectados por meio de arquiteturas de comunicação baseadas em canais ponto-a-ponto dedicados ou canais multiponto compartilhados (também denominados barramentos). Conforme observado por Zeferino (2003), as arquiteturas em barramento foram preferidas pelo fato de serem reutilizáveis, mesmo apresentando desempenho inferior às arquiteturas baseadas em canais ponto-a-ponto. 1 Submicrônico – Com dimensão inferior ao micrometro (milionésima parte do metro). 2 Reusabilidade – O reuso de múltiplas cópias dos componentes pré-existentes em vários sistemas e com novas configurações. 11 Com o aumento do número de núcleos em um único chip, a necessidade crescente (escalabilidade) de comunicação e de largura de banda se tornaram criticamente importantes, sendo que o barramento não oferece desempenho escalável. Para suprir essa necessidade de escalabilidade e largura de banda, as redes de intercomunicação chaveadas estão substituindo os barramentos e canais ponto-a-ponto na comunicação entre os núcleos de um sistema integrado (JERGER; PEH, 2009). Essas redes são denominadas Redes-em-Chip ou NoCs (Networks-on-Chip). Exemplos de NoCs descritas na literatura incluem a SPIN (ADRIAHANTENAINA et al., 2003), a Æthereal (GOOSSENS; DIELISSEN ; RADULESCU, 2005), a QNOC (BOLOTIN et al., 2004), a xPipes (BERTOZZI; BENINI, 2004) e a SoCIN (ZEFERINO; SUSIN, 2003). Como exemplo de NoC desenvolvida no meio acadêmico, pode ser citada a rede SoCIN – System-on-Chip Interconnection Network, utilizada nesta dissertação. A SoCIN é uma NoC parametrizável que utiliza uma topologia em malha 2-D e oferece técnicas alternativas para os mecanismos de comunicação da rede (controle de fluxo, chaveamento, memorização, roteamento e arbitragem) (ZEFERINO; SUSIN, 2003). Essa rede é utilizada como plataforma de referência nas diversas pesquisas sobre NoCs realizadas no âmbito do Laboratório de Sistemas Embarcados e Distribuídos da Universidade do Vale do Itajaí (UNIVALI), grupo de pesquisa no qual este trabalho está inserido. Um exemplo industrial de uso de NoC é o SoC apresentado pela Intel (HOSKOTE et al., 2007) que implementa um multiprocessador em um único chip com 80 núcleos interconectados por uma NoC em malha 2-D. Esse chip é constituído por blocos (ou tiles) e cada bloco possui um roteador e unidades de processamento (FPMAC 0 e 1), memória (DMEM e IMEM) e outros. Esse multiprocessador opera a uma frequência de relógio de 5 GHz e atinge um desempenho superior a um TeraFLOP. A preocupação com segurança da computação é um fator significativo no desenvolvimento e na aplicação dos sistemas computacionais em toda a sociedade. Para um sistema ser seguro, cinco propriedades de segurança devem ser garantidas: (i) Confidencialidade; (ii) Integridade; (iii) Disponibilidade; (iv) Autenticidade; e (v) Não-repúdio (LANDWEHR, 2001). Por exemplo, a propriedade de segurança de disponibilidade, foco deste trabalho, assegura que uma informação (ou recurso) estará acessível para os usuários autorizados sempre que requisitada. Um ataque à segurança pode ser definido como qualquer ação que comprometa a segurança da informação. Um 12 mecanismo de segurança é um processo projetado para detectar, impedir ou permitir a recuperação de um ataque à segurança (STALLINGS, 2008). Como todos os sistemas computacionais, um SoC (seja este baseado em barramento ou NoC) também é alvo de ataques de segurança. Por exemplo, os invasores podem tentar extrair alguma informação do sistema com o objetivo de obter dados pessoais dos seus usuários ou para ignorar algumas licenças de uso de algum software executado pelo sistema. Outro ataque pode ter por objetivo degradar o desempenho do sistema por meio de ações que levem à negação de serviços dentro do SoC (este tipo de ataque, no âmbito das NoCs, é o foco desta dissertação). Em um SoC que utilize uma NoC como infraestrutura de comunicação, a NoC é o coração do sistema, pois gerencia todas as comunicações, e é por isso que os ataques contra NoC são críticos. (TEXIER, 2009). Através da implementação mecanismos de segurança nos componentes da NoC é possível bloquear ataques de uma tarefa (atacante) a outra (vítima) (SEPULVEDA; STRUM; CHAU, 2009). O aspecto de segurança em NoCs tem sido um dos alvos de estudos mais recentes dos grupos de pesquisa. Para Fiorin, Palermo e Silvano (2008), a complexa comunicação das NoCs pode trazer novas deficiências ao sistema que pode ser crítico e deve ser cuidadosamente estudado e avaliado. Por outro lado, as NoCs podem contribuir para a segurança do sistema, fornecendo um meio ideal para monitorar o comportamento do sistema e detectar ataques específicos. Dentro deste contexto, este trabalho procura fazer uma contribuição na área de Segurança em NoC, conforme discutido na seção a seguir. 1.2 PROBLEMA DE PESQUISA Conforme apresentado anteriormente, os ataques podem levar ao comprometimento das funcionalidades das NoCs e, para uma NoC ser segura, as propriedades de segurança precisam ser garantidas. A rede SoCIN é uma NoC que foi desenvolvida sem levar em conta essas questões e não possui mecanismos que garantam as propriedades de segurança. Portanto, um sistema que a utilize é suscetível a ataques à segurança do sistema. Dentre os diferente ataques, como já citado, a rede SoCIN é especialmente suscetível aos ataques de negação de serviço que visem reduzir a disponibilidade do sistema. Isso pode ser feito de 13 diferentes maneiras, como, por exemplo, pelo envio de um pacote a um endereço de rede inexistente. O pacote fica bloqueado em uma das extremidades (fronteira) da rede, ocupando recursos necessários a outros pacotes que também são bloqueados e assim sucessivamente, podendo levar à paralisação de todas as comunicações na rede. Com isso, o roteador e o acesso aos serviços providos pelo núcleo são comprometidos (negação de serviço), dado que a rede não consegue realizar a comunicação entre os núcleos. Neste contexto, este trabalho busca tratar o problema da vulnerabilidade da rede SoCIN a ataques de negação de serviço com o objetivo de assegurar maior disponibilidade da rede. Em especial, busca-se responder os seguintes questionamentos: 1. É possível garantir a propriedade de disponibilidade da rede SoCIN implementando mecanismos para provimento de segurança? 2. Qual é o impacto da implementação de mecanismos para provimento de segurança no desempenho da rede SoCIN? 3. Qual é o impacto da implementação de mecanismos para provimento de segurança no custo (área) da rede SoCIN? 1.2.1 Solução Proposta A solução proposta neste trabalho para responder às perguntas de pesquisa apresentadas anteriormente consiste em analisar, selecionar e implementar mecanismos de segurança na NoC SoCIN para impedir ataques de negação de serviço contra a disponibilidade da rede e avaliar o impacto desses mecanismos no desempenho e no custo de silício. Como hipótese, têm-se as seguintes afirmações: A implementação de segurança aumenta a disponibilidade na NoC, mas degrada o seu desempenho; A implementação de segurança aumenta a disponibilidade na NoC, mas adiciona um sobrecusto de área de silício. 14 1.2.2 Delimitação de Escopo Neste trabalho, foram implementados mecanismos de segurança para garantir a propriedade de disponibilidade da rede SoCIN. Não foi realizada a implementação em outras NoCs ou a implementação de mecanismos contra ataques a outras propriedades de segurança. 1.3 OBJETIVOS 1.3.1 Objetivo Geral Aumentar a disponibilidade da rede SoCIN por meio da implementação de soluções de segurança. 1.3.2 Objetivos Específicos 1. Identificar as principais vulnerabilidades de segurança na rede SoCIN quanto à propriedade de disponibilidade; 2. Melhorar a disponibilidade da rede SoCIN com a implementação de mecanismos de segurança; e 3. Analisar o impacto dos mecanismos de segurança implementados no desempenho e no custo da rede. O desempenho compreende a latência, ou seja, o atraso de tempo (em ciclos de relógio), adicionada para injetar um pacote a rede e a frequência máxima de operação do mecanismo. O custo da rede compreende a área de silício ocupada, a potência dissipada e a quantidade de circuitos combinacionais, sequenciais e/ou de portas lógicas utilizadas. 1.4 METODOLOGIA Nesta seção, serão apresentadas a metodologia de pesquisa e os procedimentos metodológicos adotados nesta pesquisa. 15 1.4.1 Metodologia da Pesquisa Neste trabalho, é utilizado o método hipotético-dedutivo, já que o trabalho parte de um problema e segue para a obtenção da sua solução por meio da verificação de hipóteses (LAKATOS; MARCONI, 2000). Segundo Gil (2002), a pesquisa é de natureza aplicada, pois tem como objetivo investigar, comprovar ou rejeitar as hipóteses apresentadas na solução proposta. Com relação ao ponto de vista da forma de abordagem do problema, este trabalho enquadra-se como uma pesquisa quantitativa e qualitativa (LAKATOS; MARCONI, 2000). Quantitativa pelo fato de que os resultados obtidos através dos experimentos serão classificados e analisados por técnicas estatísticas, por exemplo, a análise do desempenho do sistema após a implementação da solução. Já a classificação qualitativa se deve ao fato de que será feita uma análise descritiva sobre garantia da propriedade de disponibilidade implementada. No ponto de vista de seus objetivos, esse trabalho se enquadra em uma pesquisa exploratória (LAKATOS ; MARCONI, 2000), pois visa investigar o tema de segurança em NoCs por meio de levantamentos bibliográficos e de trabalhos correlacionados. 1.4.2 Procedimentos Metodológicos Esta seção descreve os procedimentos adotados no desenvolvimento deste trabalho. Na primeira fase, foi adotado o procedimento técnico de pesquisa bibliográfica para realizar a fundamentação teórica que aborda a área de NoCs e de segurança de sistemas. Na segunda fase, foi realizado um levantamento bibliográfico exaustivo, analisando na literatura (livros, artigos, teses e dissertações) trabalhos correlatos que tratassem da questão do provimento de segurança em NoCs, documentando-se o resultado da pesquisa. Esses trabalhos foram selecionados e analisados por meio de critérios definidos na revisão sistemática, cujo protocolo de busca é apresentado em apêndice (Apêndice A). Na terceira fase, foi modelada a solução selecionada para garantir a propriedade de disponibilidade na rede SoCIN. Esta solução foi então implementada utilizando-se as linguagens VHDL (VHSIC Hardware Description Language) e SystemC visando confirmar a viabilidade de implementação física das técnicas selecionadas, medir o custo de silício dessas técnicas e avaliar a efetividade dos circuitos implementados. 16 1.5 ESTRUTURA DO DOCUMENTO O trabalho está organizado em seis capítulos correlacionados. O Capítulo 1, Introdução, apresentou por meio de sua contextualização o tema proposto neste trabalho. Da mesma forma, foram estabelecidos os resultados esperados por meio da definição de seus objetivos e apresentadas as limitações do trabalho, permitindo uma visão clara do escopo proposto. O Capítulo 2 apresenta a fundamentação teórica sobre NoCs e em segurança em redes computacionais. No Capítulo 3, são apresentados os trabalhos relacionados e estado da arte sobre segurança em NoCs. Neste capítulo, também são analisados os trabalhos quanto aos aspectos de segurança. O Capítulo 4 apresenta a rede SoCIN, suas vulnerabilidades e o projeto dos mecanismos propostos para aumentar a sua segurança. No Capítulo 5, são apresentados detalhes e resultados da implementação dos mecanismos utilizando VHDL e SystemC. Por fim, no Capítulo 6, são tecidas as conclusões do trabalho, relacionando os objetivos identificados inicialmente com os resultados alcançados. 17 2 FUNDAMENTAÇÃO TEÓRICA Este capítulo apresenta, na Seção 2.1, a fundamentação teórica sobre redes-em-chip e segurança em redes computacionais na Seção 2.2. Na Seção 2.3, são apresentadas as considerações sobre o capítulo. 2.1 REDES-EM-CHIP As denominações mais conhecidas para se referir às redes chaveadas aplicadas à comunicação intrachip são NoC (Networks-on-Chip, ou redes-em-chip), micronetworks e On-Chip Networks (OCNs) (ZEFERINO, 2003). Neste texto, será utilizado o termo NoC para se referir a esta base arquitetural de comunicação. Um projeto de NoC pode ser especificado pela sua arquitetura e pelos seus mecanismos de comunicação. A topologia define a estrutura da rede, enquanto que a forma pela qual ocorre a transferência das mensagens pela rede é definida pelos mecanismos de comunicação. Os mecanismos de comunicação incluem: controle de fluxo, chaveamento, memorização, roteamento e arbitragem (ZEFERINO, 2003). As subseções a seguir discutem aspectos referentes à arquitetura de NoC (incluindo sua topologia e componentes) e os mecanismos de comunicação. 2.1.1 Arquitetura de NoC Devido às restrições de custo para integração em um único chip e aos seus requisitos de desempenho, as soluções arquiteturais adotadas no projeto de NoCs são derivadas daquelas utilizadas em redes de interconexão para computadores paralelos (ZEFERINO, 2003, p. 27-28). Os componentes básicos, ou blocos, que constituem uma NoC podem ser organizados fisicamente de diversas maneiras. Essa organização física, conhecida como topologia, tem como objetivo a satisfação dos requisitos de comunicação do sistema e em segundo plano pode aperfeiçoar o custo de área, o consumo de energia e/ou melhorar no desempenho da rede (BENINI; DE MICHELI, 2006, p. 14). 18 2.1.1.1 Topologias A topologia de uma NoC determina a organização física e as conexões entre os núcleos e os canais na rede. Na topologia, é também determinada a quantidade de saltos (roteadores) que a mensagem deve atravessar para chegar a seu destino (JERGER; PEH, 2009, p. 29). Segundo Jerger e Peh (2009, p. 29), o custo da complexidade de implementação da topologia depende de dois fatores principais: (a) quantidade, extensão e largura de enlaces em cada núcleo; e (b) a facilidade de colocação da topologia em um chip. A quantidade de enlaces e o seu tamanho impactam diretamente no custo estático (área em silício) e no consumo de energia (JERGER; PEH, 2009, p. 29). Benini e De Micheli (2009, p. 24) classificam a topologia de NoC em quatro grupos: Redes de meio compartilhado: O enlace é compartilhado com todos os núcleos e somente um núcleo pode enviar informação de cada vez; Redes diretas: Cada núcleo tem um roteador e enlaces ponto-a-ponto para os outros núcleos; Redes indiretas: Cada núcleo é conectado a um switch e os switches têm enlaces pontoa-ponto com outros switches; Redes híbridas: Uma mistura dos grupos anteriores com o objetivo de aumentar a largura de banda e reduzir a distância entre os núcleos. A seguir, as mais importantes topologias são discutidas quanto ao custo de área e desempenho (BENINI; DE MICHELI, 2006, p. 158): Crossbar: Essa rede pode possuir uma topologia de rede direta, quando todos os roteadores são conectados em todos os outros roteadores, ou indireta quando os roteadores somente estão conectados aos seus roteadores vizinhos (Figura 1.a). Redes crossbar não são escalares para grandes redes devido à sua complexidade. Malha ou Grelha n-dimensional (ou n-dimensional k-ary mesh): Possui uma topologia direta e os roteadores podem ser colocados em um leiaute em que todos os enlaces têm o mesmo tamanho. O número de interfaces de rede por roteador é usualmente um, mas 19 podem haver várias interfaces. Nas tecnologias atuais de circuitos integrados são utilizadas as malhas 2-D (Figura 1.b) devido à natureza de implementação planar . Toróide (ou k-ary n-cube): Possui uma topologia direta e o custo de área e a dissipação de energia cresce linearmente com o número de núcleos (Figura 1.c). O desempenho diminui com o tamanho da NoC devido à sua limitada largura de banda de bissecção3. Hipercubo (ou express cube): As topologias em malha e em toróide podem ser estendidas para ultrapassarem o enlace (Figura 1.d), aumentam o desempenho, porém aumentam a quantidade de dissipação de potência por unidade de área (densidade). É uma rede de topologia direta. Árvore d-dimensional (ou d-dimensional k-ary (fat) trees): Possue uma topologia indireta de d níveis, na qual cada roteador tem k filhos. As interfaces de rede são anexadas somente nas folhas. A largura de banda de bissecção é muito baixa devido à concentração de todo o tráfego na raiz da árvore. Para resolver esse problema, a raiz pode ser duplicada (fat-tree), porém aumenta o custo de área. Irregular: As NoCs podem ser otimizadas para um domínio particular de aplicação ou a um conjunto de aplicações, melhorando o desempenho, consumo de energia e/ou de área. Figura 1. Exemplos de topologia: (a) crossbar; (b) grelha 2-D; (c) toróide 2-D; (d) hipercubo 3-D Fonte: Adaptado de Zeferino (2003, p. 33-34). 3 Largura de banda de bissecção (divisão em duas partes iguais) é a menor largura de banda sobre todas as bissecções da rede (DALLY; TOWLES, 2004, p.48). 20 2.1.1.2 Componentes A arquitetura de NoC pode ser dividida em vários componentes ou blocos básicos (BENINI; DE MICHELI, 2006, p. 14). A Figura 2 representa os principais componentes de uma NoC e suas interconexões. Nas subseções a seguir, são detalhados estes componentes. Figura 2. Componentes de uma NoC: enlace, roteador e interface de rede (NI) Enlace Um enlace (ou link) liga dois pontos na rede de interconexão, sendo que esses pontos podem ser um roteador ou um núcleo. O enlace pode possuir um ou dois canais físicos de comunicação simplex. Enlaces full-duplex são constituídos por dois canais unidirecionais opostos de modo a permitir a transferência simultânea de informação nas duas direções do enlace (ZEFERINO, 2003, p. 30). Roteador Segundo Zeferino (2003, p. 30), um roteador é constituído por um núcleo de chaveamento (crossbar), uma lógica de controle para roteamento e arbitragem, e portas de entrada-e-saída para comunicação com outros roteadores e/ou com os núcleos. Essas portas de comunicação podem 21 possuir uma pequena memória para armazenamento temporário de informações, a qual é denominada buffer de memorização ou, simplesmente, buffer. As portas possuem ainda controladores de enlace para a implementação do protocolo físico de comunicação. Estes regulam o tráfego das informações que entram e saem do roteador. Os roteadores devem ser projetados para atender aos requisitos de latência e de desempenho, bem como às restrições de custo de área e de consumo de energia. A latência da rede é afetada pelo atraso no roteador. A arquitetura interna e os circuitos fundamentais do roteador impactam no consumo de energia e no tamanho da área (JERGER; PEH, 2009, p. 76). Interface de rede A interface de rede, ou NI (Network Interface), implementa o protocolo de comunicação necessária para adaptar a comunicação dos núcleos na NoC. A NI deve ser projetada para ser reutilizada por núcleos pré-projetados e pré-verificados de diferentes plataformas e também de diferentes arquiteturas de comunicação (BENINI; DE MICHELI, 2006, p. 203). Segundo Benini e De Micheli (2006, p. 210), a estrutura da NI é dividida em dois módulos: (i) front-end e (ii) back-end. O módulo front-end implementa um protocolo padrão ponto-a-ponto, permitindo o reuso pelo núcleo em diversas plataformas. A camada de transporte provê transferência transparente de dados entre os núcleos utilizando o serviço da rede. Esses serviços são implementados no módulo back-end, junto com a camada de enlace e a camada física. Justamente no sentido de evitar os problemas de interligação entre os núcleos, os padrões VCI (Virtual Component Interface) e OCP (Open Core Protocol) foram desenvolvidos. Ambos consistem de uma especificação de interface para interligação ponto-a-ponto entre os núcleos, independentemente da arquitetura da comunicação utilizada para interconectar esses núcleos. O OCP apresenta, como diferencial ao VCI, a inclusão de sinais de teste (scan e JTAG) e de controle (como o de interrupção) em sua interface. O estabelecimento desses padrões é baseado na premissa de que somente será possível explorar completamente o poder do reuso de projeto se forem suportadas descrições comuns de propriedade intelectual (IP – Intellectual Property) (ZEFERINO, 2003, p. 55). 22 2.1.2 Controle de fluxo e chaveamento Segundo Jerger e Peh (2009, p. 59), o controle de fluxo controla a alocação dos buffers e dos enlaces da rede, sendo que um bom protocolo de controle de fluxo diminui a latência, não sobrecarregando os recursos e melhorando o desempenho através do compartilhamento efetivo dos buffers e enlaces. Já o chaveamento define a forma pela qual esses dados são transferidos de um canal de entrada de um núcleo para um dos seus canais de saída. Os dois tipos principais de técnicas de chaveamento são baseados ou no estabelecimento de um caminho completo entre o núcleo de origem e o destinatário da mensagem (circuito) ou na divisão das mensagens em pacotes os quais reservam seus caminhos dinamicamente na medida em que avançam em direção ao destinatário (ZEFERINO, 2003, p. 39). Enquanto alguns autores separam os mecanismos de controle de fluxo e de chaveamento (DUATO; YALAMANCHILI; NI, 1997; ZEFERINO, 2003), outros (DALLY; TOWLES, 2004; JERGER; PEH, 2009, p. 60) adotam uma visão unificada com níveis diferentes de granularidade: controle de fluxo em nível de mensagem e controle de fluxo em nível de enlace. 2.1.2.1 Estrutura da mensagem Quando a mensagem é injetada na rede, esta é dividida em pacotes, e os pacotes, por sua vez, são divididos em unidades de transferência de tamanho fixo chamados de flit (flow control unit). Um pacote é formado por flits de cabeçalho, corpo e cauda (JERGER; PEH, 2009, p. 59). O corpo do pacote é também chamado de carga útil e a cauda de terminador (ZEFERINO, 2003). Cada flit do pacote é composto de um ou mais phits (physical units). Segundo Benini e De Micheli (2006, p. 67), a unidade de transferência física (phit) é a unidade na qual o pacote é dividido e transmitido através da NoC. Enquanto que um phit de tamanho grande confere alta 23 largura de banda ao enlace4, um phit de tamanho pequeno reduz a área da rede5. Figura 3 ilustra a diferença entre mensagem, pacote, flit e phit. Figura 3. Mensagem, Pacote, Flit e Phit O flit pode ser definido como a menor unidade de dados sobre a qual é realizado o controle de fluxo e pode ser tão pequeno e ter tantos bits quanto um phit, ou ser tão grande quanto um pacote (ZEFERINO, 2003, p. 41). Em geral, um flit tem o tamanho de um a quatro phits, para conter, no mínimo, a informação necessária ao roteamento do pacote pelos roteadores, ou seja, o cabeçalho. 2.1.2.2 Controle de fluxo baseado em mensagem (chaveamento por circuito) Esta técnica de controle de fluxo opera em nível de mensagem com base no estabelecimento de um circuito entre os núcleos fonte e destinatário para a transferência de uma mensagem, sendo também denominada chaveamento por circuito (circuit switching). Para o estabelecimento do circuito, um flit do tipo uma sonda (probe) é enviado na rede reservando os enlaces necessários para transmitir toda a mensagem (ou múltiplas mensagens) da origem ao destinatário. Quando a sonda chega ao destinatário, uma mensagem de confirmação é enviada de volta ao núcleo origem. Quando este recebe a confirmação, inicia o envio da mensagem, a qual atravessa rapidamente a rede sem sofrer qualquer contenção. Uma vez que completou a travessia, os recursos são liberados. Com 4 A largura banda do canal é dada pelo produto entre sua largura física em bits (phit) e pela sua frequência de operação, sendo expresso na unidade bps (ou bits por segundo). 5 Quando um pacote é bloqueado na rede, seus flits devem ser armazenados em buffers internos do roteador. Como o tamanho de cada célula de armazenamento do buffer é igual ao tamanho do phit do canal, quanto menor o phit, menor será o buffer. 24 mensagens suficientemente largas, a redução da latência pode ser amortizada do custo da fase de reserva (alocação do circuito). Esta técnica não necessita de buffers (bufferless) o que diminui o consumo de energia, porém, há uma má utilização da largura de banda, pois os enlaces ficam ociosos durante a fase de reserva até que a transferência da mensagem se inicie e quando os processos que estão se comunicando não ocupam o circuito (intervalo entre as mensagens) (JERGER; PEH, 2009, p. 61). 2.1.2.3 Controle de fluxo baseado em pacotes (chaveamento por pacotes) Segundo Jerger e Peh (2009, p. 62), no controle de fluxo baseado em pacotes (ou chaveamento por pacotes), uma mensagem é dividida em pacotes e os pacotes de diferentes mensagens são intercalados nos enlaces, melhorando a utilização da rede. Esta técnica requer buffer em cada núcleo para armazenar os pacotes em trânsito que aguardam por um canal para seguirem em direção ao seu destino. Ainda segundo Jerger e Peh (2009, p. 62), esta técnica pode ser implementada de duas formas diferentes: 1. Armazena e Repassa (ou SAF – Store-and-Forward): Nesta técnica, cada núcleo aguarda até que todo o pacote seja recebido antes de encaminhar qualquer parte para o próximo núcleo. O atraso para a entrega da mensagem é maior e necessita de um buffer de tamanho suficiente para armazenar um pacote inteiro quando este é bloqueado; 2. Transpasse Virtual (ou VCT – Virtual Cut-Through): Nesta técnica, os pacotes são encaminhados ao próximo núcleo antes que todo o pacote seja recebido no roteador corrente. A latência cai drasticamente, porém, a largura de banda e o armazenamento continuam alocados para o pacote. O pacote só irá mover-se adiante se existir armazenamento suficiente no próximo roteador. Em caso de bloqueio, assim como na técnica SAF, é necessário um buffer para um pacote completo no roteador. 2.1.2.4 Controle de fluxo baseado em flits O controle de fluxo baseado em flits permite diminuir o tamanho dos buffers e ajuda os roteadores a atender a estreita área e consumo de energia. Uma técnica de controle de fluxo baseado em flits é a wormhole (também denominada de chaveamento wormhole). Assim como no VCT, 25 nesta técnica, os flits de um pacote podem ser movidos para o próximo roteador antes de todo o pacote ser recebido inteiramente pelo roteador corrente. No entanto, diferentemente do VCT, os buffers podem ser dimensionados para armazenar apenas alguns flits ao invés do pacote inteiro, permitindo a utilização de pequenos buffers em cada roteador (JERGER; PEH, 2009, p. 63). Ainda segundo Jerger e Peh (2009), enquanto o controle de fluxo wormhole usa buffers eficientemente, este usa a largura de banda de forma não eficiente. Quando um pacote é bloqueado, todo o enlace físico fica ocioso. Como um pacote formado pode ser formado por muitos flits, em caso de bloqueio, esse flits podem potencialmente alcançar vários roteadores e resultar em muitos enlaces físicos ociosos. Com isso, o desempenho da rede pode ser degradado devido à fila de pacotes atrás do pacote bloqueado, que não podem usar os enlaces físicos ociosos. Tal problema é conhecido como bloqueio de cabeça de linha ou HOL (Head-of-Line). Por permitir a construção de roteadores com menor custo (de silício e de energia), o wormhole é o tipo de controle de fluxo mais utilizado em NoCs (JERGER; PEH, 2009, p. 64). 2.1.2.5 Controle de fluxo baseado em canais virtuais Segundo Jerger e Peh (2009, p. 65), a técnica de controle de fluxo baseada em canais virtuais (ou VCs – Virtual Channels) implementa filas separada nos roteadores, permitindo que múltiplos VCs compartilhem o mesmo canal físico de um enlace entre dois roteadores. Pela associação de múltiplas filas, o problema do bloqueio HOL pode ser reduzido, dado que um pacote bloqueado em um canal virtual pode ser contornado por um pacote de outro canal virtual que compartilhe o mesmo canal físico. O escalonamento da largura de banda do canal físico entre os canais virtuais é feita de ciclo em ciclo. Esta técnica pode ser aplicada em todas as técnicas de controle de fluxo, sendo mais utilizada em combinação com a técnica wormhole. 2.1.2.6 Starvation, Livelock e Deadlock Segundo Zeferino (2003), as NoCs tem a função principal de oferecer o suporte físico necessário à comunicação entre núcleos. Uma comunicação é realizada com sucesso quando a informação enviada é devidamente recebida pelo destinatário. Entretanto, existem três situações que podem impedir que um pacote chegue ao seu destino: 26 Starvation: Um pacote em um buffer de entrada, ao competir com outros pacotes por uma mesma saída, pode ficar bloqueado permanentemente se o recurso requisitado for sempre concedido a outros pacotes; Livelock: Ocorre quando um pacote mantém-se trafegando permanentemente pela rede porque os canais necessários para este chegar ao núcleo destinatário nunca se encontram disponíveis; Deadlock: Quando existe uma dependência cíclica de recursos na rede, um ou mais pacotes podem ficar permanentemente bloqueados, aguardando a liberação do recurso. 2.1.2.7 Controle de fluxo livre de impasses A rede livre de impasses pode ser mantida através de pré-requisitos no algoritmo de roteamento que garanta que não ocorrerão ciclos ou através do uso do controle de fluxo livre de impasses (deadlock-free). A técnica de controle de fluxo livre de impasses permite a utilização de qualquer algoritmo de roteamento. Esta técnica consiste em ordenar e priorizar os canais virtuais. Para evitar a baixa utilização de alguns VCs, o primeiro VC é usado de forma ordenada e os outros VCs podem ser roteados aleatoriamente (JERGER; PEH, 2009, p. 67). 2.1.2.8 Buffer backpressure O buffer backpressure é uma técnica de controle de fluxo em nível de enlace que evita que flits dos pacotes sejam descartados em caso de bloqueio (JERGER; PEH, 2009, p. 69). Existem diferentes formas para realizar esse controle, sendo que as alternativas mais comuns são: Baseado em créditos: Esta técnica mantém uma informação sobre a quantidade de buffers disponíveis. Através de sinais entre os roteadores vizinhos, quando um buffer é desocupado é enviado um crédito para o roteador anterior, o qual incrementa a quantidade de créditos. Quando o flit sai do roteador, um crédito é decrementado. Somente é enviado o flit ao roteador seguinte se houver crédito. On/Off: Esta técnica usa sinais de On/Off entre os roteadores adjacentes para sinalizar quando limite do buffer foi atingido. Quando o limite máximo do buffer é atingido, um sinal de Off é enviado ao roteador anterior fazendo com que o roteador pare de enviar 27 flits. O sinal On é enviado somente quando houver novamente buffer disponível para o recebimento de novos flits. 2.1.3 Memorização A memorização (ou buffering) diz respeito ao mecanismo de armazenamento de pacotes ou de flits bloqueados dentro do roteador (ZEFERINO, 2003, p. 44). As filas de buffer consomem a maior parte da área e da energia dentre os blocos que compõe uma NoC. Os circuitos de buffers podem ser implementados por meio de registradores (flip-flops) ou de células SRAM (BENINI e DE MICHELI, 2006, p 64), Os buffers de memória podem ser organizados de forma independente ou compartilhado e suas posições podem ser localizadas na entrada, na saída ou centralizados no roteador (ZEFERINO, 2003, p. 44). Segundo Benini e De Micheli (2006, p. 64), uma fila de buffer também pode ser utilizada na interface de rede. A seguir, são apresentadas algumas das estratégias de memorização possíveis de serem utilizadas em um roteador. Na abordagem de memorização compartilhada e centralizada, um buffer centralizado é utilizado para armazenar os pacotes bloqueados em todos os canais de entrada e o espaço de endereçamento é dinamicamente distribuído entre os pacotes bloqueados. Essa abordagem oferece uma utilização do espaço de memória melhor do que aquelas abordagens estaticamente alocadas aos canais de entrada, porém, no caso de uma saída estiver em uso por uma entrada e outra entrada com pacotes destinados a essa mesma saída continuar a receber dados, o buffer se encherá, afetando as outras comunicações também. Este problema pode ser evitado pela limitação do espaço alocável a cada canal (ZEFERINO, 2003, p. 45). Ainda segundo Zeferino (2003, p.45-46), na abordagem de memorização na entrada, o espaço de memória é distribuído sob a forma de partições entre os canais de entrada do roteador. Essas partições são implementadas por meio de buffers independentes, cada um com portas de entrada próprias. Existem várias alternativas possíveis de implementação, entre as quais podem ser destacadas as seguintes estratégias, descritos por Tamir e Frazier (1992, apud ZEFERINO, 2003): 28 a. FIFO (First-In, First-Out): Cada buffer FIFO possui um espaço de memória fixo nos quais os dados são lidos na mesma ordem em que são escritos (Figura 4.a). Um grande inconveniente dessa técnica é o problema do bloqueio HOL (Head-of-Line), esse bloqueio ocorre quando um pacote bloqueado na saída do buffer impede o avanço de outro pacote que esteja atrás dele, o qual a saída desejada está disponível. Essa é a alternativa mais simples e de menor custo. b. SAFC (Statically Allocated, Fully Connected): É uma alternativa para contornar o problema do bloqueio HOL, a qual consiste em dividir cada buffer de entrada em N partições com tamanho igual a 1/N do tamanho do buffer original (Figura 4.b). Cada uma dessas partições deve ser atribuída estaticamente a um canal de saída. Isso requer o uso de um crossbar N2×N ou, então, de N crossbars N×1 ao invés de um único crossbar N×N. Os inconvenientes dessa alternativa são os custos adicionais referentes ao controle do crossbar e ao controle dos N buffers por porta de entrada. Outros inconvenientes também são a limitação da utilização dos buffers a 1/N do espaço de armazenamento total e a maior complexidade na implementação do controle de fluxo. c. SAMQ (Statically Allocated Multi-Queue): É uma alternativa a fim de simplificar o gerenciamento do crossbar. Nessa alternativa, as saídas dos buffers de entrada atribuídos a um mesmo canal de saída podem ser multiplexadas (Figura 4.c). Esta estratégia elimina alguns dos inconvenientes da SAFC, pois reduz o custo do crossbar, entretanto ainda mantém os outros dois problemas relacionados à utilização dos buffers e ao controle de fluxo. d. DAMQ (Dynamically-Allocated, Multi-Queue): É uma alternativa com o objetivo de remediar os problemas das estratégias anteriores. Nessa arquitetura de buffer, o espaço de memorização associado a um canal de entrada é particionado dinamicamente entre os canais de saída conforme a demanda dos pacotes recebidos (Figura 4.d). Dessa forma, evita-se o problema do bloqueio HOL dos buffers FIFO, aumenta-se a utilização do espaço de memória disponível e o controle de fluxo é mais simples que nas estratégias SAFC e SAMQ, não requerendo pré-roteamento. Entretanto, o gerenciamento do buffer DAMQ, baseado em listas encadeadas, torna a sua implementação física mais complexa. 29 (a) (b) (c) (d) Figura 4. Roteador com quatro buffers: (a) FIFO, (b) SAFC; (c) SAMQ; (d) DAMQ Fonte: Adaptado de Zeferino (2003, p. 45-46). Assim como na abordagem de memorização na entrada, a estratégia na abordagem de memorização na saída consiste em particionar o espaço de memorização, porém, posicionado nas saídas do roteador. As partições podem ser implementadas como buffers FIFO. Cada buffer de saída deve ser capaz de suportar a demanda simultânea das N entradas, o que pode ser implementado com N portas de escrita ou com uma porta de escrita operando a uma velocidade N vezes maior que a das entradas. Esta estratégia requer um controle de fluxo interno entre portas de entrada e de saída do roteador (ZEFERINO, 2003, p. 47). 2.1.4 Roteamento O roteamento é o método usado para decidir que caminho o pacote (ou mensagem) irá tomar através da rede para chegar ao seu destinatário. O desempenho da comunicação na rede de interconexão depende fortemente do algoritmo de roteamento utilizado (ZEFERINO, 2003, p. 37). O objetivo do algoritmo de roteamento ideal é distribuir o tráfego uniformemente entre os caminhos fornecidos pela topologia de rede, minimizando a contenção e com isso melhorando a latência e o desempenho da rede. O consumo de energia do circuito do roteador é tipicamente baixo, porém a escolha de uma rota específica afeta a quantidade de saltos (hop count) diretamente, ou seja, a quantidade de roteadores pelos quais a mensagem passa e, por isso, afeta substancialmente o consumo de energia (JERGER; PEH, 2009, p. 67). 30 Segundo Duato, Yalamanchili e Ni (1997) e Ashraf (1998 apud ZEFERINO, 2003, p. 37), os algoritmos podem ser agrupados e classificados segundo critérios específicos. O agrupamento e a classificação dos algoritmos de roteamento são apresentados a seguir no Quadro 1. Quadro 1. Classificação dos algoritmos de roteamento Critério Momento da realização do roteamento Número de destinatários de um mesmo pacote Local onde as decisões de roteamento são tomadas Classificação Dinâmico Estático Unicast Multicast Centralizado Distribuído Tabela Implementação Máquina de estado Determinístico Adaptação Adaptativo Descrição Realizado no tempo de execução da aplicação Executado no tempo de compilação da aplicação Cada pacote possui um único destinatário O pacote pode ser encaminhado para múltiplos destinatários Os caminhos são estabelecidos por um controlador central na rede O núcleo fonte define o caminho a ser seguido pelo pacote antes de injetá-lo na rede Feito a partir de uma consulta a uma tabela em memória Realizado a partir da execução de um algoritmo implementado em software ou em hardware Fornece sempre o mesmo caminho entre um determinado par fonte-destinatário Utiliza alguma informação a respeito do tráfego da rede e/ou do estado dos canais para evitar regiões congestionadas ou com falhas Fonte: Adaptado de Zeferino (2003, p. 38). Ainda, segundo Zeferino (2003, p. 38), os algoritmos adaptativos podem ser de três classes: 1. Progressividade: O roteamento é considerado progressivo quando os cabeçalhos dos pacotes sempre avançam pela rede, reservando um novo canal a cada passo de roteamento, ou regressivo (backtracking) quando o cabeçalho de um pacote puder retornar pela rede, liberando canais previamente reservados; 2. Minimalidade: O roteamento adaptativo é classificado como mínimo (ou profitable), se o algoritmo pode selecionar apenas canais de saída que aproximem cada vez mais o pacote do seu destinatário, ou não-mínimo (ou misrouting), se este pode selecionar canais que levem o pacote a se afastar do seu destinatário; 31 3. Número de caminhos: pode ser subclassificado como completo (ou total), se o algoritmo de roteamento puder utilizar todos os caminhos disponíveis, ou parciais, se apenas um subconjunto desses caminhos puder ser considerado. 2.1.5 Arbitragem Enquanto o roteamento é um mecanismo de seleção de saída do pacote no roteador, a arbitragem determina qual canal de entrada pode utilizar um determinado canal de saída do roteador. A arbitragem é fundamental para a resolução de conflitos decorrentes da existência de múltiplos pacotes competindo por um mesmo canal de saída (ZEFERINO, 2003, p. 47). Segundo Zeferino (2003, p. 48), o mecanismo de arbitragem pode ser baseado em diferentes critérios: prioridades estáticas, prioridades rotativas (round-robin), escalonamentos por idade (ou deadline), FCFS (First-Come-First-Served), LRS (Least Recently Served), entre outros. Zeferino (2003, p. 48) também apresenta que o árbitro de um roteador pode ser implementado de forma (a) centralizada ou (b) distribuída. Na primeira forma, a centralizada (Figura 4.a), os mecanismos de roteamento e de arbitragem são implementados em um único módulo. Esse módulo recebe os cabeçalhos dos pacotes, executa o roteamento, determina o canal de saída e, a partir disso, faz a arbitragem. Na forma distribuída (Figura 4.b), o roteamento e a arbitragem são realizados de forma independente para cada porta bidirecional do roteador. Cada uma das portas possui um módulo de roteamento associado ao seu canal de entrada e um módulo de arbitragem no seu canal de saída. Figura 5. Abordagens para implementação de árbitros: (a) centralizada; (b) distribuída Fonte: Zeferino (2003, p. 48). 32 2.2 SEGURANÇA EM SISTEMAS COMPUTACIONAIS Segundo a NBR ISO/IEC 27001:2006 (2006), o conceito de segurança da informação consiste na preservação das propriedades de confidencialidade, de integridade e de disponibilidade da informação. A preocupação com a segurança da computação é um fator relevante no desenvolvimento e na aplicação tecnológica dos computadores em toda a sociedade (LANDWEHR, 2001). Para Landwehr (2001), para um sistema ser seguro, cinco propriedades de segurança devem ser garantidas. A seguir essas propriedades são descritas: 1. Confidencialidade: garantia de que a informação não será divulgada sem autorização; 2. Integridade: garantia de que a informação não será modificada sem autorização; 3. Disponibilidade: garantia de que a informação ou recurso estará acessível para os usuários autorizados sempre que requisitados6; 4. Autenticidade: garantia de que cada entidade é quem afirma ser; 5. Não-repúdio: garantia de que a participação de uma entidade em uma dada transação ou evento não pode ser negada. A violação de segurança ocorre quando há a quebra de uma ou mais propriedades de segurança (BRANDÃO; FRAGA, 2008). Vulnerabilidade é a fraqueza em um sistema de informação, nos procedimentos de segurança, nos controles internos ou na implementação do sistema que pode ser explorada por uma ameaça (CNSSI-4009, 2006). Ameaça é qualquer circunstância ou evento com potencial para afetar negativamente as operações de um sistema de informação através de acesso não autorizado, da destruição, da divulgação, da modificação de informações e/ou da negação de serviço. Intrusão é quando um ataque foi bem sucedido, ou seja, um ato não autorizado de contornar os mecanismos de segurança. (CNSSI-4009, 2006). 6 Esta dissertação tem como foco a propriedade de segurança de disponibilidade. 33 O risco é a medida da extensão em que uma entidade está ameaçada por um potencial circunstância ou evento. O que pode ser representado na função dos impactos adversos que surgem se a circunstância ou evento ocorrer e da probabilidade de ocorrência (CNSSI-4009, 2006). Stallings (2008) apresenta a arquitetura de segurança OSI (Open System Interconnection)7 que oferece uma estrutura sistemática para definir os requisitos de segurança e caracterizar as técnicas para satisfazer esses requisitos. Essa arquitetura engloba serviços de segurança, ataques e mecanismos. Um serviço de segurança aumenta a segurança dos sistemas de processamento de dados e as transferências de informação. Os serviços de segurança servem para frustrar ataques à segurança e utilizam um ou mais mecanismos de segurança para garantir as propriedades se segurança (STALLINGS, 2008). 2.2.1 Ataque à segurança Conforme Stallings (2008), um ataque à segurança pode ser definido como qualquer ação que comprometa a segurança da informação. Esses ataques são classificados em ataques passivos e ataques ativos. Um ataque passivo tenta monitorar o sistema com o objetivo de obter informações, mas não afeta os recursos ou altera os dados envolvidos. Por essa razão, esse tipo de ataque é muito difícil de detectar. A prevenção dos ataques passivos é a melhor forma de impedir o sucesso do ataque e o emprego de criptografia é normalmente adotado para esse fim (STALLINGS, 2008). Ainda segundo Stallings (2008), os ataques passivos podem ser de dois tipos: Liberação do conteúdo da mensagem (eavesdropping): ocorre quando uma informação é captada e o seu conteúdo é lido pelo atacante; e 7 A arquitetura de segurança OSI é proposto pela ITU (International Telecomunications Union), a qual realiza uma série de especificações para padrões de comunicação entre sistemas. A arquitetura de segurança OSI não está relacionada com o modelo de rede em sete camadas, conhecido como modelo OSI ou camadas OSI. 34 Analise de tráfego: ocorre quando o tráfego da troca de uma informação (criptografada ou não) é analisado para identificar padrões nas mensagens. Com a análise, o atacante poderia descobrir o local, a identidade dos envolvidos e qual a natureza da comunicação. Ao contrário das características dos ataques passivos, os ataques ativos envolvem alguma modificação do fluxo de dados ou na formação de um fluxo falso, afetando a operação do sistema. Stallings (2008) divide os ataques ativos em quatro categorias: Disfarce (impersonation ou masquerading): ocorre quando uma entidade finge ser outra entidade diferente; Repetição (replay): ocorre quando os dados são capturados passivamente e subsequentemente retransmitidos para produzir um efeito não autorizado; Modificação da mensagem: ocorre quando alguma parte da mensagem original é alterada para produzir um efeito não autorizado; Negação de serviço (Denial-of-Service ou DoS): ocorre quando há um impedimento ou inibição do uso ou gerenciamento normal das instalações de comunicação. Segundo Texier (2009), um sistema baseado em uma NoC insegura pode ser alvo de três categorias de ataque: Sequestro (hijacking): Nesta categoria, o atacante faz um acesso de escrita em uma área segura com o intuito de modificar a execução ou a configuração do sistema, comprometendo a sua integridade; Extração de informação secreta: Nesta segunda categoria, o atacante tenta obter dados sensíveis ou privados em áreas de memória ou registradores; e Negação de serviço: Assim como na categorização feita por Stallings (2009), nesta categoria o atacante também visa degradar o desempenho do sistema seja: (i) consumindo a largura de banda da rede com acessos repetitivos; (ii) injetando um pacote na rede destinado a um endereço inexistente de modo a bloquear alguns recursos da rede (ex.: buffers de roteadores); (iii) criando deadlocks que paralisam a rede inteira; ou (iv) injetando um pacote que nunca encontre um destinatário e fique rodando infinitamente na rede (em livelock), aumentando a latência, o consumo de banda e a energia. 35 2.2.2 Mecanismos de segurança O mecanismo de segurança é um processo projetado para detectar, impedir ou permitir a recuperação de um ataque à segurança (STALLINGS, 2008). Os mecanismos de segurança específicos podem ser categorizados como: Cifragem: mecanismo que usa algoritmos matemáticos para transformar dados em um formato que não seja prontamente decifrável; Assinatura digital: mecanismo que utiliza a transformação criptográfica ou através de dados anexados para permitir que o destinatário comprove a origem e a integridade dos dados; Controle de acesso: mecanismo que impõe direitos de acesso aos recursos; Integridade dos dados: mecanismo que busca garantir a integridade de dados ou fluxo de dados; Troca de informações de autenticação: mecanismo que busca garantir a identificação de uma entidade por meio da troca de informações; e Preenchimento de tráfego: mecanismo com a inserção de bits nas lacunas de um fluxo de dados para frustrar as tentativas de análise de tráfego. 2.3 CONSIDERAÇÕES Atualmente, o emprego de NoC para a interconexão entre vários núcleos em um sistema integrado em chip é a maneira mais eficiente para oferecer um desempenho escalável e permitir a reusabilidade da arquitetura de comunicação. Uma NoC pode ser organizada em diferentes topologias, sendo que a escolha da topologia e dos mecanismo de comunicação pode influenciar na complexidade de implementação, no desempenho da rede, no custo de área de silício e/ou no consumo de energia. A topologia de rede direta do tipo malha 2-D é a mais popular por sua característica regular e elétrica. Algumas NoCs podem utilizar topologia de redes irregulares para otimizar a aplicação em particular, melhorando o desempenho, o consumo de energia e/ou o sobrecusto de área, porém aumenta consideravelmente a complexidade de implementação. O controle de fluxo pode melhorar o desempenho da rede, diminuindo a latência e evitando a sobrecarga dos recursos. Existem várias 36 técnicas de controle de fluxo, essas técnicas ainda podem ser combinadas com canais virtuais para melhorar o compartilhamento dos enlaces. As filas de buffers, ou seja, a memorização, são os componentes que mais consomem energia e área em uma NoC. Estas armazenam temporariamente os pacotes, ou partes dele (flits), nos canais de entrada do roteador ou na saída das interfaces de rede. O roteamento faz a decisão para o caminho que o pacote deve seguir para chegar ao seu destino. A arbitragem resolve os conflitos entre os pacotes que competem pelo mesmo canal de saída, determinando um canal de entrada no roteador. Na arbitragem, assim com na decisão de roteamento, a implementação pode ser feita de forma centralizada ou distribuída nos roteadores. O chaveamento define como os pacotes (ou flits) são transferidos do canal de entrada para o canal de saída. A arquitetura de segurança OSI permite caracterizar as técnicas para satisfazer esses requisitos, englobando ataque, propriedades e mecanismos de segurança. Os ataques afetam as propriedades de segurança, as quais podem ser protegidas pelo emprego de mecanismos de segurança. O aumento de segurança em um sistema está relacionado com quanto as propriedades de segurança são garantidas contra os ataques. O emprego de mecanismos de segurança fornece subsídios para aumentar a segurança no sistema. Nesta dissertação são avaliadas as vulnerabilidades da rede SoCIN a ataques que violam a propriedade de disponibilidade. Para aumentar a disponibilidade mediante a esses ataques, alguns mecanismos de controle de acesso são propostos e modelados para a implementação em hardware. No próximo capítulo, são analisados trabalhos relacionados ao provimento de segurança em sistemas em SoCs e em SoCs baseados em NoCs, a fim de caracterizar o histórico e o estado da arte do contexto desta pesquisa. 37 3 SEGURANÇA EM REDES-EM-CHIP Neste capítulo, é apresentado o levantamento bibliográfico realizado para caracterizar quais técnicas têm sido utilizadas para prover segurança em SoCs baseados em NoC, discutindo os primeiros estudos publicados na literatura e o estado da arte com as contribuições mais recentes. Como o tema “Segurança em NoCs” ainda é pouco explorado, este capítulo estende a revisão para trabalhos referentes à segurança em SoCs. A Seção 3.1 apresenta uma síntese dos trabalhos selecionados e analisados, a qual é feita por ordem cronológica. A Seção 3.2 apresenta uma análise comparativa dos trabalhos descritos e, na Seção 3.3, são apresentadas as considerações deste capítulo. 3.1 TRABALHOS RELACIONADOS E O ESTADO DA ARTE Gebotys e Gebotys (2003) propuseram o uso de um ambiente de segurança em NoC para acesso não autorizado, invasão de software, cópia não autorizada do núcleo e ataques de energia e de eletromagnetismo8. No mecanismo proposto, foi criada uma camada na interface de rede do núcleo para implementação de segurança (Secure Core) e de um núcleo centralizado para armazenar as chaves (Key-keeper). Antes da comunicação ocorrer entre os núcleos conectados à NoC, o Secure Core solicita ao Key-keeper a sua chave privada, a qual está armazenada de forma segura na memória. Essa comunicação entre o Key-keeper e o Secure Core é também criptografada, porém com uma chave de rede, armazenada dentro do próprio núcleo do Secure Core. Após a chave privada estar armazenada no Secure Core, a comunicação é feita através de criptografia de chave pública e privada. A solução foi avaliada e apresentou um impacto no desempenho menor que 11%. Ashkenazi e Akselrod (2007) propuseram uma solução para o acesso não autorizado de execução de código em modos privilegiados e o acesso aos dados em memória pela porta de depuração, utilizada para testes e depuração de software em dispositivos móveis. O mecanismo proposto inclui vários elementos, criando uma arquitetura relacionada à segurança genérica incorporada ao processador de aplicação. Um controlador de porta de depuração é utilizado para manipular acessos não autorizados e permitir a depuração e testes de software. Verificadores de 8 Ataque que visa extrair informações através do vazamento de informações por campos eletromagnéticos. 38 integridade em tempo de execução são utilizados para proteger a modificação dos dados com acesso somente de leitura, usando mecanismos de armazenamento de dados, criptografia e proteção física. A solução foi implementada usando a interface de depuração comercial JTAG (Joint Test Action Group) e um processador de aplicação baseado no núcleo ARM1136JF-STM. O trabalho não apresentou quais foram os experimentos de avaliação realizados, mas demonstrou que é possível montar uma arquitetura flexível que permita depurar e fazer manutenção sem comprometer a privacidade do proprietário do equipamento. Diguet et al. (2007) propuseram uma solução para autenticação de entidades e de integridade de dados. O mecanismo proposto foi constituído por um gerenciador de segurança e por interfaces de rede (NI – Network Interface) seguras. As transações entre os núcleos são monitoradas e somente autorizadas se as configurações da política de segurança permitirem essas transações. A comunicação é feita por canais virtuais dedicados, separando aplicação do fluxo de dados seguros, monitorados e controlados. A solução foi implementada e verificada por simulação, pela ferramenta μSpider (EVAIN, DIGUET; HOUZET, 2004), e por prototipação, usando a ferramenta ISE da Xilinx. Os resultados mostraram que o custo da solução aumenta 45% quando comparada à solução sem a implementação de segurança. A principal causa do sobrecusto é devido à implementação do canal seguro nos roteadores, que passaram a ter dois canais virtuais ao invés de um único canal, como no roteador não seguro. Fiorin, Silvano e Sami (2007) fizeram um levantamento e apresentaram algumas soluções para ataques de negação de serviço (DoS – Denial-of-Service), extração de informação secreta e hijacking em NoCs. O levantamento apresentou uma introdução a uma série de módulos que podem ser usados para aumentar o nível de segurança em NoCs. O primeiro módulo explorado foi do APU (Address Protection Unit), o qual pode restringir acesso à memória, evitando buffer overflow ou ataques que podem roubar ou modificar informações sensíveis da memória. O segundo módulo explorado foi de garantia de banda, no qual técnicas de qualidade de serviço (QoS – Quality-ofService) podem ser utilizadas para reservar uma certa quantia de banda para cada núcleo, evitando que códigos maliciosos ou mal escritos possam consumir toda a banda da rede enviando ou requisitando dados por meio da rede. O autômato de segurança foi outro módulo explorado. Neste módulo as transações são monitoradas, mudando os estados até um nível seguro, possibilitando monitorar ataques conhecidos de/para um núcleo na rede. Por último, foi explorado o módulo de um sistema de detecção de intrusão (IDS – Intrusion Detection Systems), que monitora o canal de 39 comunicação entre os núcleos para detectar violações de segurança, que podem ser: (i) ocupação de buffers; (ii) comportamento anômalo do gerenciamento de energia; (iii) acesso não autorizado a locais de memória seguros; e (iv) violações na execução de rotinas críticas. Neste trabalho, nenhum dos módulos propostos foi implementado e, portanto, esses módulos não foram avaliados e não possuem resultados. Os autores destacaram a necessidade de investigações para avaliar o provimento do serviço de segurança em relação ao desempenho e os sobrecustos de área e de energia. Anoop (2008) discutiu sobre o tema da necessidade da segurança em sistemas embarcados, a qual foi classificada em: (i) necessidade da segurança na transmissão dos dados; e (ii) necessidade de segurança dentro do dispositivo, como para armazenar os dados. O artigo discute sobre criptografia dos dados, o algoritmo de chaves públicas, assinatura digital e certificação digital para a segurança na transferência de dados entre os dispositivos. A necessidade de segurança dentro do dispositivo vai desde armazenar seguramente as chaves utilizadas na criptografia dos dados para a comunicação até para restringir o manuseio pelos usuários, como na proteção contra cópia de vídeo/música assim como proteção aos dados privados do usuário (arquivos pessoais, transações bancárias, etc.). O autor apresenta um protótipo de SoC, discutindo os pré-requisitos de hardware e de software para implementar segurança e evitar ataques físicos ao dispositivo. As conclusões são que a segurança na transferência de dados entre dispositivos possui uma maturidade suficiente para manter segura a transferência, porém a proteção dos dados dentro do dispositivo ainda não é inviolável. Adicionalmente, o autor conclui que os mecanismos de proteção em hardware oferecem um aumento na segurança, mas essa maior proteção nos dados implica diretamente no maior custo da implementação. Fiorin et al. (2008) propuseram uma solução para proteção dos dados no acesso à memória em sistemas baseados em NoC. O mecanismo proposto foi o de uma arquitetura de rede segura baseada em unidade de proteção de dados (DPU – Data Protector Unit) integrada na interface de rede (NI – Network Interface) da NoC. A DPU garante acesso seguro à memória e/ou periféricos mapeados em memória, habilitando o acesso a espaço de memória somente se quem inicializou a requisição de acesso é autorizado. O acesso é filtrado considerando não somente a memória de endereço, mas também o tipo de operação requisitado (ler, gravar e executar) e o estado do inicializador (usuário ou supervisor e modo seguro ou inseguro). A configuração em tempo de execução da parte programável da DPU é gerenciada por uma unidade central, chamada de NSM 40 (Network Security Manager). Duas soluções foram apresentadas, configurando a DPU na origem, chamado de DPU@INI (DPU at Initiator NI), e no alvo, chamado de DPU@TNI (DPU at Target NI). A solução foi implementada por prototipação usando processador ARM920T e uma memória de 16Kb SRAM, usando as ferramentas Synopsys Design Compiler e Prime Power com a biblioteca da tecnologia 0.13µm HCMOS9GPHS da STMicroelectronics. Os experimentos de avaliação foram realizados analisando o consumo de energia, o sobrecusto de área e o atraso do caminho crítico para dois tipos de implementação, DPU@INI e DPU@TNI. Os resultados mostraram que a implementação da DPU tem um sobrecusto de 17% de área e de 7,5% de energia, sem impactar significativamente no desempenho do sistema. Fiorin, Palermo e Silvano (2008) propuseram uma solução para evitar extração de dados sensíveis e ataques de DoS. O mecanismo proposto foi de um sistema de monitoração baseado na arquitetura NoC para detectar violações de segurança contra a NoC. Informações coletadas na interface dos núcleos são enviadas a uma unidade central (NSM - Network Security Manager) para eficientemente neutralizar ações exercidas pelo atacante. A arquitetura possui dois tipos de sondas (probes): (i) Illegal Access Probe (IAP), para detectar tentativas não autorizadas de acesso a locais de memória, e (ii) Denial-of-Service Probe (DoSP), que detecta um comportamento não natural de tráfego. A solução foi implementada por prototipação usando a tecnologia 0.13µm HCMOS9GPHS da STMicroelectronics. Os experimentos de avaliação foram realizados avaliando os sobrecustos de área e de energia, comparando com a solução sem o monitoramento de segurança. Os resultados mostraram que a implementação da sonda IAP na NI não é muito significativo (0,02% de sobrecusto de área) e a implementação do DoSP tem um aumento linear conforme a inclusão de configurações de entrada. O sobrecusto total é de 34,7% se comparado com a solução sem a monitoração de segurança. Patel e Parameswaran (2008a) propuseram uma solução para evitar ataques de injeção de código em MPSoC. O mecanismo proposto foi a implementação de uma arquitetura (denominada LOCS), dividindo o programa em assembly em blocos e adicionando, no inicio de cada bloco, uma instrução de hardware especial, chamada de CHKBLK, com um valor criptografado. Esse valor é formado pelo código único de cada bloco (bId) e com o código único de cada processador. A instrução CHKBLK envia ao processador monitor as informações da execução. O processo monitor supervisiona os processadores de aplicação, analisando o fluxo de cada execução com a tabela de controle de fluxo que foi previamente carregada por scripts automáticos. A solução foi 41 implementada por prototipação em Xtensa LX2, da Tensilica Inc. Os experimentos de avaliação foram realizados comparando a solução com trabalhos relacionados, usando o benchmark multimedia (JPEG encoder/decoder e MP3). Os resultados mostraram que a implementação possui um sobrecusto muito menor que trabalhos relacionados, como o SHIELD (PATEL; PARAMESWARAN, 2008b) e SW_MON (PATEL; PARAMESWARAN; SHEE, 2007). Patel e Parameswaran (2008b) propuseram uma solução de hardware/software (denominada SHIELD) para detectar ataques de injeção de código em MPSoCs. A solução foi implementada usando um processador dedicado que atua como um monitor, e um hardware personalizado no processador de aplicação. A aplicação é previamente executada e com base nesta execução, a aplicação é dividida em blocos, as quais são inseridas duas instruções especiais, uma no inicio do bloco (inform) e outra no final (confirm). Essas instruções ainda levam consigo informações criptografadas de quantos ciclos esta leva para executar e o fluxo. As instruções especiais executam em um hardware personalizado o registro de que o bloco está começando ou finalizando a sua execução e envia essas informação ao processador monitor. O processador monitor analisa essas informações com os valores passados pelas instruções e verifica se houve uma inclusão não devida de código naquele bloco ou se o fluxo não está coerente. A implementação foi por prototipação em um processador Xtensa LX2Os e os experimentos de avaliação foram realizados por um programa de benchmark de codificador JPEG. Os resultados mostraram que a implementação teve sobrecustos de 6,6% no desempenho e de 26,9% na área. A solução se mostrou nove vezes mais rápida que soluções anteriores dos mesmos autores e além de detectar injeção de código, o sistema também possibilitou a detecção de 83% de erros do tipo bit flip (inversão de bit) nas instruções de controle de fluxo. Abramovici e Bradley (2009) propuseram uma solução para a detecção de ataques Trojan9 em SoC. A solução proposta foi da inclusão de uma unidade lógica (DEFENSE – DEsign For ENabling SEcurity) implementando um monitor de segurança em tempo de execução. O mecanismo proposto é constituído de vários blocos: (i) o SM (Security Monitor), que é um mecanismo programável pelo usuário para verificar propriedades comportamentais dos sinais; (ii) o 9 Trojan, ou Cavalo de Tróia, é um ataque que se utiliza de um software malicioso disfarçado como um software comum e legítimo. A execução do Trojan permite que usuários mal intencionados possam invadir o sistema. 42 SPN (Signal Probe Networks), que é um multiplexador configurado para selecionar um conjunto de sinais monitorados e transportar ao SMs; e (iii) o SECOPRO (SEcurity and COntrol PROcessor), que reconfigura os SPNs para selecionar os grupos de sinais para serem verificados pelo SMs e reconfigura os SMs para desempenhar os requisitos de checagem. As configurações são criptografadas e armazenadas em memória flash segura. O projetista determina quais são os sinais importantes a serem monitorados e os liga ao SM. O DEFENSE desempenha dois tipos de verificação: (i) conjunto de violações de segurança especificado pelo usuário; e (ii) propriedades para o correto funcionamento do comportamento do sistema. Quando um ataque é detectado, o DEFENSE pode implementar contramedidas ao ataque por sinais específicos, que podem, por exemplo, desabilitar um núcleo suspeito. Porém, essa contramedida precisa ser integrada ao nível de sistema. Os autores não apresentaram informações sobre como a solução foi implementada, avaliada e nem os resultados da implementação. Patel, Parameswaran e Ragel (2009) propuseram uma solução para detectar ataque de software em MPSoC. O mecanismo proposto foi um ambiente (denominado CUFFS) para detectar ataques de software. Cada aplicação possui um ou dois check-points, os quais possuem uma instrução especial que reporta a um núcleo dedicado, chamado iGuard. Informações estatísticas do controle de fluxo do programa e da quantidade de instruções entre dois check-points sequenciais são criadas durante o processo de compilação e armazenadas no iGuard durante a carga do sistema. Durante a execução, as aplicações reportam ao iGuard, por meio das instruções especiais, qual bloco de instrução este executará. O iGuard verifica se o controle de fluxo e se a quantidade de instruções são corretos. Se forem, uma interrupção é enviada ao processador para abortar a execução. A solução foi implementada por prototipação usando o processador Xtensa LX2 da Tensilica Inc. Os experimentos de avaliação foram realizados usando três benchmarks multimídia (codificador JPEG e decodificadores MP3 e JPEG). Os resultados mostraram que a implementação tem um sobrecusto de desempenho menor que 1%. Comparado com outra solução, a LOCS – apresentada previamente (PATEL; PARAMESWARAN, 2008), a solução teve um sobrecusto de desempenho e código maior, porém, o consumo de área se mostrou menor. Porquet, Schwarzt e Greiner (2009) propuseram uma solução de segurança no compartilhamento de memória para SoC. O mecanismo proposto permite que cada aplicação seja seguramente contida em entidades lógicas chamadas “compartment”. O conceito é baseado em duas premissas: (i) identificação, que permite o controle de acesso de cada transação; e (ii) proteção, que 43 permite o controle de acesso ao “compartment”. A solução é conceitual e ainda não foi implementada e, portanto, não possui resultados. Sepúlveda, Strum e Chau (2009) propuseram uma solução de níveis de segurança na dimensão de QoS para controle de acesso, autenticação e disponibilidade aos dados. O mecanismo proposto define quatro níveis de segurança para cada serviço, do nível 0 (sem segurança) até 3 (segurança máxima). A solução foi implementada tanto no roteador como na interface de rede, usando o protocolo de comunicação OCP/IP (Open Core Protocol / Intellectual Property). A implementação na interface de rede foi realizada no núcleo escravo. O propósito do serviço de controle de acesso é permitir que somente transações autorizadas sejam feitas. O controle de acesso atua como um firewall. A implementação de diferentes níveis de controle de acesso usa três mecanismos que verificam: (i) a origem do pacote; (ii) o tipo de transação; e (iii) a regra do mestre. O propósito do serviço de autenticação é garantir a integridade da origem do pacote e também foi implementado verificando: (i) a origem; (ii) o cálculo do caminho; e (iii) o par mestre-escravo. O propósito do serviço de disponibilidade é garantir que um recurso da rede pode ser utilizado quando requerido. A implementação foi realizada da seguinte forma: (i) implementando canais virtuais; (ii) modificando a arbitragem; e (iii) adotando um chaveamento híbrido (baseado em circuitos e em pacotes). Os experimentos de avaliação foram realizados por ambiente de simulação SystemCTLM. Para efeito de comparação, foram implementados os três mecanismos, tanto no roteador quanto na interface de rede do núcleo escravo, usando uma NoC com topologia malha 2-D 4x4 e alterando os níveis de segurança de cada mecanismo. Os resultados mostraram que a implementação no roteador é mais eficiente do que na interface de rede. A implementação de controle de acesso e autenticação aumentam o consumo de energia e a latência, sendo que somente no serviço de disponibilidade é que essas métricas são reduzidas devido ao uso do mecanismo de chaveamento híbrido. Stefan e Goossens (2009) propuseram uma solução para a extração de dados durante a comunicação entre núcleos em uma NoC. O mecanismo proposto baseia-se no uso de caminhos alternativos (determinístico) ou randômicos (não determinístico) para enviar os dados entre os núcleos, dificultando a extração de dados, caso um atacante consiga “escutar” um dos barramentos. A solução foi implementada alterando a interface de rede de uma NoC Æthereal (GOOSSENS; DIELISSEN; RADULESCU, 2005). Os resultados mostraram que a implementação do algoritmo 44 não determinístico protege a NoC contra o ataque, mas com a penalidade da alta utilização dos recursos da rede. Huffmire et al. (2010) propuseram uma solução para a comunicação entre núcleos de um sistema embarcado por meio do conceito de fossos e pontes levadiças. Os fossos separam fisicamente (ou logicamente) os núcleos, enquanto que as pontes levadiças permitem controlar a interação entre os núcleos. O mecanismo proposto implementa dois tipos de fossos: (i) um com “áreas mortas” (gap) e outro (ii) com separação lógica entre os núcleos através de técnicas de roteamento. A solução foi implementada com prototipação em FPGA e os experimentos de avaliação foram realizados usando o benchmark MCNC (Microelectronics Center of North Carolina). Os resultados mostraram que a área dos fossos no projeto é mínima, no pior dos casos é de 2,61% e no melhor dos casos é de 1,05%. Em fossos grandes, o período de clock é melhor, porém requerem maiores áreas. Lukovic e Christianos (2010) propuseram uma solução de segurança em diferentes níveis, monitorando a execução da aplicação e validando se o comportamento é correto. A solução pode integrar vários tipos de abordagem de segurança para proteção a ataques específicos. O mecanismo proposto foi implementado em uma estrutura hierárquica de agentes de segurança. Os quatro tipos de agentes são: (i) agente especifico de ataque (ASA – Attack Specific Agent); (ii) agente de segurança local (LSA – Local Security Agent); (iii) agente de segurança do cluster (CLSA – Cluster Security Agent); e (iv) agente de segurança central (CSA – Central Security Agent). A solução foi implementada e verificada usando o FPGA Virtex-II Pro da Xilinx para ataques contra buffer overflow por intermédio da injeção de código. Os experimentos de avaliação também foram realizados por prototipação e os resultados mostraram que a implementação ocupa 68% do projeto e o PPS (Processor Protection System) é o componente que mais consome área, representando 77% do projeto. Não foram verificados o sobrecusto de energia e o impacto na latência. Sepúlveda, Strum e Chau (2010) apresentaram o uso de uma técnica de chaveamento híbrida em uma NoC combinando chaveamento por circuito com chaveamento por pacotes para evitar ataques de negação de serviços (DoS – Denial-of-Service) e garantir disponibilidade para tráfego de informações críticas sem reserva de recursos. No mecanismo proposto, as mensagens são classificadas por políticas de segurança como críticas ou não-críticas. As primeiras são transferidas utilizando-se chaveamento por circuito, enquanto que as últimas são transferidas com o uso de chaveamento por pacotes. As políticas de segurança foram implementadas adicionando 45 funcionalidades ao roteador e alterando alguns parâmetros nas configurações locais da NoC. Os experimentos de avaliação foram realizados com o uso de um ambiente de simulação SystemCTLM (Transaction Level Modeling). Para efeito de comparação, foram implementadas quatro NoCs com topologia em malha 2-D 4x4: (i) NoC com chaveamento por pacote com reserva de canais virtuais; (ii) NoC com técnica de chaveamento por circuito; (iii) NoC com técnica TDM (TimeDivision Multiplexing); e (iv) NoC com chaveamento híbrido (circuito e pacotes). Foram avaliados o impacto na eficiência e o desempenho das quatro implementações, variando o total de dados críticos de 30%, 50% e 70% do total do tráfego. Os resultados demonstraram que o mecanismo proposto evita contenção na rede, reservando recursos para mensagens críticas sem negar serviço de comunicação às mensagens não-críticas. A avaliação mostrou a eficiência de 98% de garantia contra ataques DoS. O consumo de energia e a latência na rede melhoraram até 62% e 55%, respectivamente, quando comparados com os da NoC de melhor esforço. Lázaro et al. (2011) propuseram uma solução para comunicação segura entre chips usando a implementação de criptografia e autenticação AES-GCM (Advanced Encryption Standard Galois/Counter Mode) em cima do padrão de comunicação I2C (Inter-Integrated Circuit). O mecanismo proposto (I2CSec – Inter Integrated Circuits Security) inclui criptografia e autenticação, AES-GCM, no protocolo. A solução foi implementada em FPGA, usando os processadores MicroBlaze10 para o mestre e o PicoBlaze11 para os escravos. Os experimentos de avaliação foram realizados por prototipação em FPGA e os resultados mostraram que a implementação no núcleo mestre utilizou 50% dos recursos, possuindo espaço suficiente para a implementação de aplicações específicas no mesmo núcleo. Já a implementação no núcleo escravo ocupou 75% da área, permitindo a implementação somente de aplicações mais modestas. A comparação com outras soluções relacionadas mostraram que é necessário um núcleo específico para a implementação de segurança ou que o processador utilizado no núcleo escravo maior que o PicoBlaze. Para trabalhos futuros, segundo os autores, o protocolo poderá suportar núcleos com sinais mistos e também melhorar o protocolo com a inclusão de um protocolo de troca de chave. 10 MicroBlaze é um microcontrolador de arquitetura RISC Harvard de 32-bit com conjunto de instruções otimizadas para aplicações embarcadas. 11 O PicoBlaze é um microcontrolador de arquitetura RISC de 8 bits compacto. 46 Porquet, Schwarzt e Greiner (2011) apresentaram uma solução para a implementação de uma arquitetura segura para o compartilhamento de memória em NoC. Um componente na interface de rede atua como um firewall, filtrando o acesso com base em um identificador denominado CID (Compartment IDentifier) e na transação requisitada no endereço de memória usando uma tabela de permissão. Conforme reportado pelos autores, em 2011, a solução estava na fase de implementação e ainda não estava concluída, portanto ainda não possuía resultados até o momento da publicação. 3.2 ANÁLISE COMPARATIVA Nesta seção, é feita uma comparação dos trabalhos analisados quanto aos tipos de ataques, as propriedades de segurança abordadas e os mecanismos adotados. No Quadro 2, são identificados os ataques abordados em cada trabalho analisado, incluindo ataques passivos (liberação do conteúdo da mensagem e analise do tráfego) e ativos (disfarce, repetição, modificação de mensagem e negação de serviço). O ataque ativo de repetição não foi representado no quadro porque nenhum dos trabalhos abordou esse ataque. Na categoria liberação de conteúdo da mensagem, foram considerados ataques que fazem acesso à memória para obter informações sem a devida autorização. O gráfico da Figura 6 apresenta um resumo, identificando os ataques mais abordados nesses trabalhos, com destaque aos ataques de modificação de mensagem (16 trabalhos), liberação do conteúdo da mensagem (13 trabalhos) e negação de serviço (10 trabalhos). 47 Quadro 2. Ataques tratados nos trabalhos relacionados Ataques Passivo X X Negação de serviço Modificação de mensagem X Disfarce Análise do tráfego Sistema alvo Liberação do conteúdo da mensagem Trabalhos Ativo Gebotys e Gebotys (2003) NoC Ashkenazi e Akselrod (2007) SoC Diguet et al (2007) NoC X Fiorin, Silvano e Sami (2007) NoC X Anoop (2008) SoC X X Fiorin et al (2008) NoC X X Fiorin, Palermo e Silvano (2008) NoC X X X Patel e Parameswaran (2008a) SoC X X Patel e Parameswaran (2008b) SoC X X Abramovici e Bradley (2009) SoC X X Patel, Parameswaran e Ragel (2009) SoC X X Porquet, Schwarzt e Greiner (2009) NoC X X Sepúlveda, Strum e Chau (2009) NoC X X Stefan e Goossens (2009) NoC X Huffmire et al (2010) NoC X Lukovic e Christianos (2010) NoC Sepúlveda, Strum e Chau (2010) NoC Lázaro et al (2011) NoC X Porquet, Schwarzt e Greiner (2011) NoC X X X X 3.2.1.1.1.1.1.1 X 3.2.1.1.1.1.1.2 X X X X X X X X X X X 48 Ataques 18 16 14 12 10 8 6 4 2 0 Modificação de mensagem Liberação do conteúdo da mensagem Negação de serviço Disfarce Análise do tráfego Figura 6. Gráfico com a relação dos ataques abordados No Quadro 3, são apresentadas as propriedades de segurança abordadas nos trabalhos analisados (autenticação, disponibilidade, confidencialidade e integridade). A propriedade de não repúdio não foi discutida em nenhum dos trabalhos e, portanto, não foi representada no quadro. O gráfico na Figura 7 mostra que a propriedade de segurança mais abordada é a de integridade (15 trabalhos), seguida de confidencialidade (13 trabalhos) e de disponibilidade (10 trabalhos). 49 Quadro 3. Propriedades de segurança tratadas nos trabalhos relacionados Propriedades de segurança Autenticação Confidencialidade Integridade Disponibilidade Sistema alvo Gebotys e Gebotys (2003) NoC X X X Ashkenazi e Akselrod (2007) SoC X X X Diguet et al. (2007) NoC X Fiorin, Silvano e Sami (2007) NoC Anoop (2008) SoC Fiorin et al. (2008) NoC X Fiorin, Palermo e Silvano (2008) NoC X Patel e Parameswaran (2008a) SoC X X Patel e Parameswaran (2008b) SoC X X Abramovici e Bradley (2009) SoC X Patel, Parameswaran e Ragel (2009) SoC X Porquet, Schwarzt e Greiner (2009) NoC Sepúlveda, Strum e Chau (2009) NoC Stefan e Goossens (2009) NoC X Huffmire et al. (2010) NoC X Lukovic e Christianos (2010) NoC X Sepúlveda, Strum e Chau (2010) NoC X Lázaro et al. (2011) NoC Porquet, Schwarzt e Greiner (2011) NoC Trabalhos X X X X X X X X X X X X X X X X X X X X X X X X X X 50 Propriedades de Segurança 16 14 12 10 8 6 4 2 0 Integridade Confidencialidade Disponibilidade Autenticação Figura 7. Gráfico com a relação de propriedade de segurança tratado No Quadro 4, são relacionados os mecanismos de segurança adotados nos trabalhos analisados (controle de acesso, cifragem, assinatura digital, integridade dos dados, troca de informação de autenticação, controle de roteamento). Os mecanismos de segurança de preenchimento de tráfego e de certificação não foram apresentados na relação, pois nenhum trabalho utilizou esses mecanismos. Na Figura 8, é apresentada graficamente a relação de mecanismos de segurança adotados, a qual aponta a integridade de dados como a mais abordada (14 trabalhos), seguida do controle de acesso (11 trabalhos). 51 Quadro 4. Mecanismos adotados nos trabalhos relacionados Mecanismos de segurança X X X Ashkenazi e Akselrod (2007) SoC X X X Diguet et al (2007) NoC X X Fiorin, Silvano e Sami (2007) NoC X X Anoop (2008) SoC Fiorin et al (2008) NoC X X Fiorin, Palermo e Silvano (2008) NoC X X Patel e Parameswaran (2008a) SoC X X Patel e Parameswaran (2008b) SoC X X Abramovici e Bradley (2009) SoC Patel, Parameswaran e Ragel (2009) SoC Porquet, Schwarzt e Greiner (2009) NoC X X Sepúlveda, Strum e Chau (2009) NoC X X Stefan e Goossens (2009) NoC Huffmire et al (2010) NoC Lukovic e Christianos (2010) NoC Sepúlveda, Strum e Chau (2010) NoC Lázaro et al (2011) NoC Porquet, Schwarzt e Greiner (2011) NoC X Controle de roteamento Troca de informações de autenticação Integridade dos dados Cifragem NoC Sistema alvo Assinatura digital Controle de acesso Gebotys e Gebotys (2003) Trabalhos X X X X3.2.1.1.1.1.1.3 3.2.1.1.1.1.1.4 3.2.1.1.1.1.1 3.2 X 3.2.1.1.1.1.1.7 3.2.1.1.1.1.1.8 3.2.1.1.1.1.1.9 X X X X X X X X 52 Mecanismos de Segurança 16 14 12 10 8 6 4 2 0 Integridade dos dados Controle de acesso Cifragem Assinatura digital Controle de roteamento Troca de informações de autenticação Figura 8. Gráfico com a relação dos mecanismos de segurança adotados No Quadro 5, são identificados os componentes utilizados para garantir as propriedades de segurança (núcleo, interface de rede – NI, roteador e protocolo) em cada trabalho analisado. Já o gráfico da Figura 9 identifica em quantos trabalhos cada componente foi utilizado como local para implementação da solução de segurança. Como pode ser observado, a interface de rede (NI) é o componente preferencial e foi adotada por 10 dos 19 trabalhos analisados. Deve-se ressaltar que alguns dos trabalhos eram focados em SoCs não necessariamente baseados em NoCs e, portanto, utilizaram como componente os núcleos do sistema. 53 Quadro 5. Componentes utilizados nos trabalhos analisados Componente NI Protocolo Núcleo Gebotys e Gebotys (2003) NoC X X Ashkenazi e Akselrod (2007) SoC X Diguet et al. (2007) NoC X X Fiorin, Silvano e Sami (2007) NoC X X Anoop (2008) SoC Fiorin et al. (2008) NoC X Fiorin, Palermo e Silvano (2008) NoC X Patel e Parameswaran (2008a) SoC X Patel e Parameswaran (2008b) SoC X 3.2.1.1.1.1.1.10 3.2.1.1.1.1 Abramovici e Bradley (2009) SoC X 3.2.1.1.1.1.1.12 3.2.1.1.1.1.1.13 3.2.1.1.1.1 Patel, Parameswaran e Ragel (2009) SoC X Porquet, Schwarzt e Greiner (2009) NoC X Sepúlveda, Strum e Chau (2009) NoC X Stefan e Goossens (2009) NoC X Huffmire et al. (2010) NoC Lukovic e Christianos (2010) NoC Sepúlveda, Strum e Chau (2010) NoC Lázaro et al. (2011) NoC Porquet, Schwarzt e Greiner (2011) NoC Trabalhos Roteador Sistema alvo X X X X X X X X X X 54 Componentes 12 10 8 6 4 2 0 Interface de rede Núcleo Roteador Protocolo Figura 9. Gráfico com a relação de componentes utilizados 3.3 POSICIONAMENTO DESTE TRABALHO Neste trabalho, abordou-se o aumento de segurança na propriedade de disponibilidade da rede SoCIN contra ataques de negação de serviço. A proposta de implementação deste trabalho é de mecanismos de controle de acesso, que foram modelados e implementados de tal forma que podem ser futuramente integrados a interface de rede da SoCIN. O Quadro 6 apresenta de forma geral o posicionamento deste trabalho com os demais trabalhos selecionados e analisados que abordam o problema da segurança em NoCs. 55 Quadro 6. Posicionamento deste trabalho com os trabalhos analisados Ataques Fiorin, Palermo e Silvano (2008) X Porquet, Schwarzt e Greiner (2009) X X Sepúlveda, Strum e Chau (2009) X X Stefan e Goossens (2009) X Huffmire et al. (2010) X X X X X X X X X X 3.3.1.1.1.1.1.6 3.3.1.1.1.1.1.7 X X X X X X X X X X X X X3.3.1.1.1.1.1.10 X X X3.3.1.1.1.1.1.12 X X X 3.3.1.1.1.1.1.14 X X X X X X X X X X X X 3.3.1.1.1.1.1.9 X X X X 3.3.1.1.1.1.1.2 X X X Sepúlveda, Strum e Chau (2010) X X X X X X X3.3.1.1.1.1.1.11 Porquet, Schwarzt e Greiner (2011) X X3.3.1.1.1.1.1.4 X 3.3.1.1.1.1.1.5 X X 3.3.1.1.1.1.1.8 X X X X X X X X X Lukovic e Christianos (2010) Lázaro et al (2011) X X3.3.1.1.1.1.1.3 X X X X X3.3.1.1.1.1.1.1 X X Protocolo X X X Roteador Fiorin et al. (2008) X X NI X X X X Núcleo Fiorin, Silvano e Sami (2007) X Componentes Controle de roteamento Troca de informações de autenticação X Integridade dos dados Diguet et al. (2007) X Assinatura digital X Cifragem X X Mecanismos Controle de acesso X Integridade Gebotys e Gebotys (2003) Confidencialidade X Este trabalho Disponibilidade Autenticação Negação de Serviço Modificação Disfarce Análise de tráfego Liberação do conteúdo da mensagem Trabalhos Propriedades 3.3.1.1.1.1.1.13 X 3.3.1.1.1.1.1.15 X X X X X 56 3.4 CONSIDERAÇÕES O estudo realizado permitiu identificar que: (i) os principais ataques tratados pelas pesquisas atuais são os ataques de modificação de mensagem, de liberação do conteúdo da mensagem e negação de serviço; (ii) que as propriedades de segurança mais abordadas são as de integridade, confidencialidade e disponibilidade; (iii) que os mecanismos mais utilizados são os de integridade dos dados e de controle de acesso; e (iv) que a interface de rede é a estrutura da rede mais utilizada na implementação das soluções de provimento de segurança nos SoCs, principalmente os baseados em NoCs. Diante dessa análise, nesta dissertação, optou-se por tratar ataques de negação de serviço que visem comprometer a propriedade de disponibilidade da rede SoCIN. São propostos mecanismos de controle de acesso a fim de assegurar que os pacotes injetados por núcleo na rede não degradem o seu desempenho ou, ainda, tornem a rede indisponível aos demais núcleos. No próximo capítulo, é apresentada a modelagem dos mecanismos propostos. 57 4 ADICIONANDO SEGURANÇA À REDE SOCIN A rede SoCIN (SoC Interconnection Network) foi desenvolvida como uma NoC sintetizável e parametrizável de baixo custo para interconexão de núcleos em sistemas integrados (ZEFERINO, 2003). No seu projeto original (ZEFERINO; SUSIN, 2003) e na sua versão estendida (ZEFERINO; SANTO; SUSIN, 2004) não foram levados em consideração aspectos específicos relacionados à segurança. Embora alguns tipos de ataques possam ser evitados pela natureza dos mecanismos de comunicação utilizados (ex. roteamento ou arbitragem), esta pode ser vulnerável a outros tipos de ataques. Nesse contexto, este trabalho busca identificar vulnerabilidades da rede SoCIN e implementar soluções para proteger a rede contra alguns tipos de ataques. Neste capítulo, na Seção 4.1, é feita uma descrição da arquitetura da rede SoCIN, após a qual, na Seção 4.2, é feita uma análise de suas potenciais vulnerabilidades. Na Seção 4.3, são selecionados ataques a serem abordados e para os quais são propostos mecanismos para aumentar a segurança da rede SoCIN, os quais são descritos na Seção 4.4. Por fim, na Seção 4.5, são apresentadas as considerações do capítulo, com uma análise do posicionamento das contribuições deste trabalho em relação ao estado da arte sobre segurança em NoCs. 4.1 REDE SOCIN A SoCIN é uma NoC escalável baseada em uma arquitetura de roteador parametrizável para ser usada na síntese de redes de baixo custo. Sua arquitetura é baseada no chaveamento wormhole e usa o algoritmo de roteamento determinístico XY baseado na origem. Também aplica o protocolo handshake para controle de enlace, usa arbitragem round-robin e buffers de entrada (SUSIN e ZEFERINO, 2003). O roteador original da rede SoCIN, o RASoC (Router Architeture for SoC), pode ser personalizado nas dimensões físicas (por exemplo no tamanho dos canais e na profundidade dos buffers) para atender aos requisitos de custo e desempenho da aplicação alvo. Entretanto, esses níveis de parametrização são limitados e para melhorar estes aspectos, foi desenvolvida uma segunda versão da SoCIN, a SoCINfp (SoCIN fully parameterizable, ou seja, SoCIN totalmente parametrizável), na qual foi estendida a capacidade de parametrização para técnicas de roteamento, arbitragem e controle de fluxo. Devido a isso, também foi necessário um novo roteador, 58 denominado ParIS (Parameterizable Interconnect Switch), baseado em modelos e bibliotecas de componentes construídos com diferentes alternativas e implementações de circuitos para o encaminhamento de pacotes (ZEFERINO; SANTO; SUSIN, 2004). A versão da SoCIN com o roteador RASoC está descontinuada e a SoCINfp com o roteador ParIS é a implementação atual e ativa na comunidade científica. Neste texto, será empregado o termo SoCIN para se referir à segunda versão, a SoCINfp. 4.1.1 Arquitetura da rede SoCIN Nesta seção, são discutidos a topologia, o enlace, o modelo de comunicação, o chaveamento, o roteamento, a arbitragem, o controle de fluxo e o armazenamento na rede SoCIN. Topologias A rede SoCIN pode ser construída usando uma topologia direta 2-D como do tipo grelha ou a do tipo toróide. A primeira topologia apresenta baixo custo e a segunda reduz a latência da rede (ZEFERINO; SANTO; SUSIN, 2004). A Figura 10 ilustra as duas topologias da SoCIN. (a) Figura 10. As duas topologias da SoCIN: (a) grelha e (b) toróide Fonte: Susin e Zeferino (2003). (b) 59 Modelo de comunicação Segundo Susin e Zeferino (2003), na SoCIN existem dois tipos de núcleos: iniciador (initiator) e alvo (target). O iniciador (ex.: processador) faz requisições para o alvo (ex.: memória) e o alvo responde as requisições do iniciador. Um núcleo pode ser um iniciador e um alvo ao mesmo tempo (ex.: co-processador). O modelo de comunicação utilizado é baseado em troca de mensagens, ou seja, as requisições e as respostas são sempre enviadas por mensagens. Chaveamento Segundo Susin e Zeferino (2003), a abordagem de chaveamento de pacote da SoCIN é wormhole. As mensagens são enviadas por meio de pacotes, os quais são compostos por flits (flow control unit). Na SoCIN, um flit é igual à largura do canal (ou um phit – physical unit), tendo o tamanho da largura do canal mais dois bits. Enlace Segundo Susin e Zeferino (2003), o enlace da SoCIN (Figura 11) inclui dois canais unidirecionais opostos, cada um para dados, framing e sinais de controle de fluxo. Cada canal inclui n bits para dados e dois bits para o enquadramento do pacote: (i) bop (begin-of-packet, ou inicio do pacote) para o pacote de cabeçalho; e (ii) eop (end-of-packet, ou final de pacote) na última palavra de payload. Os n bits de dados podem ser estendidos para incluir sinais para serviços não previstos no protocolo, como por exemplo, sinais para controle de integridade de dados (de paridade e de erro). Os valores típicos para n são 8, 16 ou 32 bits. Os sinais val (validate signal) e ret (return signal) são usados para o controle de fluxo. O sinal val indica a presença de informação válida no canal de dados. Já o significado do sinal ret pode variar conforme a técnica de controle de fluxo utilizada (handshake ou baseado em crédito). 60 n+2 n data bop eop n+2 val ret Figura 11. Enlace da SoCIN Fonte: Zeferino, Santo e Susin (2004). Roteamento Segundo Zeferino, Santo e Susin (2004), na versão atual da rede SoCIN (a SoCINfp), o roteamento ocorre no roteador usando o sistema de coordenadas ilustrado na Figura 12. Essa abordagem permite a implementação de diferentes algoritmos de roteamento, desde roteamentos determinísticos a totalmente adaptativos12. Y 3 0 ,3 1 ,3 2 ,3 3 ,3 2 0 ,2 1 ,2 2 ,2 3 ,2 1 0 ,1 1 ,1 2 ,1 3 ,1 0 0 ,0 1 ,0 2 ,0 3 ,0 0 1 2 3 X Figura 12. Sistema de coordenadas da SoCINfp Fonte: Zeferino, Santo e Susin (2004). 12 Atualmente a SoCINfp somente possui implementado roteamentos determinísticos e parcialmente adaptativos. 61 Pacote O formato do pacote da SoCIN é apresentado na Figura 13. O pacote inclui um flit de cabeçalho e um número ilimitado de flits de payload. Cada flit tem a largura de (n+2) bits e o enésimo bit é o marcador de bop e o (enésimo+1) bit é o marcador eop. O campo HLP (Higher Level Protocol, ou protocolo de nível superior) está reservado para a implementação de protocolos acima da camada de rede, como por exemplo, a informação para reordenação de pacotes, e não é processado pelos roteadores. O HLP tem o tamanho de (n-m) bits de largura e pode ser estendido pelo aumento da largura do canal ou pelo uso do flit seguinte do pacote. O campo RIB (Routing Information Bits) carrega a informação utilizada por cada roteador para realizar o encaminhamento de pacote, em outras palavras, as coordenadas de destino (subcampos: xdest e ydest). O campo RIB possui m bits de largura e, por consequência, a rede é limitada a 2m/2×2m/2 roteadores. bop eop n bits m bits HLP RIB.xdest RIB.ydest 00 Flits de payload 10 Último flit de payload ilimitado 01 Figura 13. Formato do pacote e bits de informação roteamento da SoCIN Fonte: Zeferino, Santo e Susin (2004). Arbitragem Segundo Zeferino, Santo e Susin (2004), a arbitragem da SoCIN baseia-se em uma abordagem distribuída do tipo estática ou dinâmica (randômica ou round-robin) em cada canal de saída do roteador. Essa solução tem por característica permitir a arbitragem simultânea de múltiplos recursos, dado que cada canal de saída possui um árbitro dimensionado de acordo com o número de canais de entrada que pode requisitar esse canal de saída (isso varia com a posição da porta de saída no roteador, com a posição do roteador na rede e com o algoritmo de roteamento utilizado). 62 Controle de fluxo Segundo Zeferino, Santo e Susin (2004), o controle de fluxo da SoCIN é em nível de enlace e pode ser handshake ou baseado em créditos. Na abordagem handshake, quando um dado é colocado no enlace pelo remetente, o sinal de validade (val) é ativado e quando o dado estiver pronto para ser consumido pelo destinatário, este deve ativar o sinal de reconhecimento (ret). Na abordagem baseada em créditos, o sinal ret informa que uma posição foi liberada no buffer de entrada do destinatário e um crédito está sendo retornado ao remetente. O remetente só pode enviar um novo flit se a capacidade de armazenamento (buffer) do destinatário não for atingida. O estado desses buffers é monitorado usando um contador up-down, que é inicializado com um número de créditos igual à profundidade do buffer do destinatário. O contador é decrementado quando é enviado um flit e incrementado quando um crédito é retornado. Se o contador for igual à zero, significa que a capacidade de armazenamento do destinatário foi atingida e nenhum novo flit deve ser enviado. Buffer Na SoCIN existem um buffer FIFO com capacidade de p flits em cada entrada ou saída do canal, onde p depende dos requisitos de custo e desempenho da aplicação (ZEFERINO; SANTO; SUSIN, 2004). O tamanho de cada buffer é igual a p × n bits. 4.1.2 Arquitetura do roteador ParIS Segundo Zeferino, Santos e Susin, (2004), o ParIS é um roteador soft-core VHDL baseado em bibliotecas de blocos pré-projetados parametrizáveis, incluindo diferentes abordagens/implementações para cada técnica utilizada para o encaminhamento de mensagem em uma NoC de chaveamento de pacote wormhole. O roteador ParIS possui até cinco portas, conforme Figura 14. A porta L (Local) é reservada para conectar o núcleo ou a um subsistema de rede. As outras portas, N (North), E (East), S (South) e W (West), são usadas para interconectar outros roteadores e seus nomes derivam dos quatro pontos cardiais em inglês, norte, leste, sul e oeste (ZEFERINO; SANTO; SUSIN, 2004). 63 L N W E S Figura 14. Interfaces do ParIS Fonte: Zeferino, Kreutz e Susin (2004). O roteador ParIS é estruturado internamente de forma distribuída e cada porta de comunicação tem dois módulos: canal de entrada e canal de saída. Na Figura 15, é ilustrada a organização interna do ParIS e são mostradas as estruturas dos módulos de entrada (in) e de saída (out) das portas L e W. IC val ret din IFC wr wok req[ ] idle gnt[ ] dout FIFO ro rdk I R S } ... ro k rok[ ] wok[ ] wok ... ... ... ... Lout O C O D S O W S } din ... req[ ] } ... idle[ ] } } } L in din wr wok dout FIFO ro rdk din OF C val ret CPM din val ret din IFC wr wok req[ ] idle gnt[ ] dout FIFO ro rdk I R S } ... ro k wok[ ] Figura 15. Organização do ParIS Fonte: Adaptado de Zeferino, Santo e Susin (2004). rok[ ] wok ... ... ... } IC ... req[ ] } ... idle[ ] } } } Win ... Wout O C O D S O W S din wr wok dout FIFO ro rdk din OF C val ret 64 Componentes Segundo Zeferino, Santo e Susin (2004), os blocos do ParIS incluem: Controladores de enlace: Componentes que regulam o tráfego dos flits na rede para fazer a tradução entre o protocolo de controle de fluxo do enlace e as técnicas de controle de fluxo dentro do roteador (FIFO). Existem dois tipos de blocos relacionados a essa tarefa. (i) IFC (Input Flow Controller), que regula o tráfego dos flits entrantes no canal de entrada; e (ii) OFC (Output Flow Controller), que regula o tráfego dos flits saintes no canal de saída; Buffers FIFO: Componentes usados para armazenar flits dos pacotes temporariamente bloqueados dentro do roteador e aguardando para ser encaminhado. O uso de FIFO nos módulos de entrada é obrigatório, porém é opcional nas portas de saída; Controladores de agendamento: Componente que faz o agendamento dos recursos dentro do roteador. Existem dois tipos de controladores, (i) IC (Input Controller) que agenda o canal de saída para o canal de entrada e (ii) OC (Output Controller) que agenda um canal de entrada para um canal de saída. Chaveadores: Componentes que executam o chaveamento interconectando os dados e os sinais internos do fluxo de controle dos canais de entrada e saída com base no sinal de permissão emitido pelo bloco OC. A implementação distribuída do crossbar resulta em três tipos de chaveadores: (i) ODS (Output Data Switch) que conecta o buffer de dados do canal de entrada selecionado ao buffer de dados do canal de saída associado; (ii) OWS (Output Write Switch), que conecta o sinal de estado rok do buffer do canal de entrada ao sinal de comando wr do buffer de saída associado; e (iii) IRS (Input Read Switch), que conecta o sinal de estado wok do buffer do canal de saída ao sinal de comando rd do buffer de entrada associado. Matriz de Chaveamento (CPM – Crosspoint Matrix): Componente responsável por guiar o compilador VHDL para implementar somente as conexões permitidas pelo algoritmo de roteamento selecionado. 65 4.1.3 BrownPepper O projeto de uma NoC é complexo e encontrar os melhores parâmetros de configuração para uma aplicação é um trabalho que demanda tempo. O BrownPepper é um ambiente integrado que permite avaliar o desempenho da NoC SoCIN com configurações diferentes, facilitando a análise de desempenho pelo projetista da NoC (BRUSH; PIZZONI; ZEFERINO, 2009). Segundo Brush, Pizzoni e Zeferino (2009), o BrownPepper é baseado no modelo SystemC RTL (Register Transfer Level) e um misto de RTL/TL (Transaction Level) da rede SoCIN e outros componentes. O ambiente integra um conjunto de ferramentas para automatizar as tarefas relacionadas à simulação de operações de rede em diferentes cenários de tráfego. O BrownPepper possui uma interface gráfica de usuário (GUI – Graphical User Interface), a qual foi desenvolvida para facilitar a configuração e a execução de experimentos, além da análise dos resultados. Arquitetura do BrownPepper O BrownPepper baseia-se em uma plataforma SoC composta pela rede SoCIN, instâncias de um gerador de tráfego (TG) e de um medidor de tráfego (TM) anexados aos terminais da NoC. Cada TG gera fluxos de comunicação compostos por uma sequência de pacotes a serem enviados a um destinatário seguindo um padrão de tráfego específico. Além injetar pacotes na rede, o TG também trabalha como um núcleo destinatário, ejetando pacotes da rede. Cada TM é responsável por monitorar o tráfego em um terminal da rede e coleta os dados dos pacotes que chegam ao TG ao qual está associado. Para parar a simulação, um bloco centralizado denominado StopSim determina quando todos os pacotes são entregues ao seus destinatários (BRUSH; PIZZONI; ZEFERINO, 2009). Os principais parâmetros incluem: (i) o requisito de banda; (ii) o número de pacotes a enviar; (iii) o endereço do núcleo de destino ou a distribuição espacial usada para determinar o(s) núcleo(s) destinatário(s); e (iv) o tipo da taxa de injeção do tráfego, que pode ser constante ou variável (incluindo rajadas). Além desses parâmetros, o fluxo de comunicação pode ser rotulado em quatro classes relacionadas ao requisito de qualidade de serviços (QoS – Quality-of-Service). O fluxo de projeto oferecido pelo BrownPepper possui as etapas de: (i) geração do simulador SystemC; (ii) geração do modelo de tráfego; (iii) execução da simulação; e (iv) análise dos resultados. As ferramentas utilizadas para a geração do simulador SystemC são ilustrados na 66 Figura 16. Os parâmetros do sistema são lidos por dois geradores de código, o gnoc e o gsoc. O gnoc gera o modelo de SystemC da SoCIN, já o gsoc, gera o modelo de SystemC para a plataforma SoC (main), para o bloco SopSim e os parâmetros usados para configurar outros modelos de SystemC (o roteador ParIS, para o TM e o TG). Após a geração do código, os modelos são compilados pelo compilador gcc, no qual resulta em um simulador SystemC (arquivo binário system.x). Parâmetros do Sistema parâmetros Modelos SystemC Simulador SystemC Figura 16. Geração do simulador SystemC do BrownPepper Fonte: Brush, Pizzoni e Zeferino (2009). 4.2 VULNERABILIDADES DA REDE SOCIN Nesta seção, é apresentada uma análise das vulnerabilidades da rede SoCIN a um conjunto de possíveis ataques, conforme já apresentados e discutidos na Seção 3.2. 4.2.1 Definição dos ataques Com base nos trabalhos analisados, uma relação de possíveis ataques à rede SoCIN foram identificados e classificados quanto ao tipo de ataque e à propriedade de segurança afetada. Esses ataques são listados no Quadro 7 e discutidos logo a seguir. Ataques referentes à aplicação (e.g. acesso a uma região da memória de um núcleo) estão fora do escopo desse trabalho e não foram relacionados. 67 Quadro 7. Relação de possíveis ataques a NoC Ataque Tipo de Ataque Deadlock Livelock Starvation Envio de pacotes para um endereço de destino inexistente Repetição do envio de pacote para um determinado endereço Responder a requisições não enviadas Mascaramento de endereço de origem Ativo/ Negação de serviço Ativo/ Negação de serviço Ativo/ Negação de serviço Ativo/ Negação de serviço Propriedade de segurança Disponibilidade Disponibilidade Disponibilidade Disponibilidade Ativo/ Negação de serviço Disponibilidade Envio de pacote sem terminador Interceptação da mensagem Interceptar a mensagem e retransmitir Interceptar mensagem e depois reenviar a mensagem alterada Ativo/ Negação de serviço Ativo/ Disfarce Disponibilidade Autenticação e Não-repúdio Ativo/ Negação de serviço Disponibilidade Passivo/ Liberação do conteúdo Confidencialidade da mensagem Ativo/ Repetição Confidencialidade e disponibilidade Ativo/ Repetição Confidencialidade, disponibilidade e Integridade Um deadlock em uma NoC ocorre quando há uma dependência cíclica do recurso da rede. Já um livelock pode ocorrer em uma NoC se os canais para chegar ao núcleo de destino sempre estiverem ocupados e o pacote ficar trafegando permanentemente pela rede. O starvation pode ocorrer quando dois ou mais pacotes em buffers de entrada competem pela mesma saída e se o recurso requisitado for concedido de tal forma que um pacote (ou entrada) seja sempre postergado sem avançar na rede. O envio de pacotes para um endereço de destino inválido é um tipo de ataque que pode ocorrer em uma NoC quando um núcleo envia pacote para ele mesmo ou para um endereço além das fronteiras da rede, bloqueando sua porta de acesso à rede ou outros recursos (buffers dos roteadores). Já um ataque de repetição do envio de pacote para um determinado endereço ocorre quando um núcleo da NoC envia vários pacotes repetidamente a um mesmo endereço na tentativa de tornar o núcleo de destino e/ou a rede indisponível. Por outro lado, um ataque de resposta a requisições não enviadas ocorre quando um núcleo envia intencionalmente uma resposta a uma requisição não efetuada por outro núcleo da rede. O envio de pacote sem terminador ocorre quando um núcleo envia os flits na rede, porém nunca envia o flit com o terminador de pacote. O terminador sinaliza o núcleo de destino que todos 68 os flits já foram enviados à rede e que os mesmos podem ser reconstituídos em um pacote novamente. O flit com o terminador também serve para liberar os buffers alocados nos roteadores para a transmissão do pacote. Sem o envio do terminador, o espaço em memória alocada para o recebimento dos flits no núcleo de destino poderá chegar ao seu limite, não permitindo o recebimento de novos pacotes. Além de indisponibilizar o núcleo de destino, os novos flits ficam bloqueados nos buffers dos roteadores ao longo do caminho, podendo indisponibilizar também a rede. Um ataque do tipo “mascaramento de endereço de origem” ocorre quando um núcleo envia uma mensagem para outro núcleo forjando o seu próprio endereço de origem com outro endereço da rede, causando tráfego na rede e podendo causar indisponibilidade nos núcleos envolvidos, dado que a resposta à requisição é enviada a um núcleo que não a solicitou. O ataque de interceptação da mensagem ocorre quando um núcleo intercepta os pacotes que trafegam pela rede a fim de conhecer o conteúdo da mensagem. O ataque “interceptar a mensagem e retransmitir” é uma variante do ataque anterior em que além de ser interceptada, a mensagem é retransmitida como se fosse a mensagem original, degradando a rede e tentando indisponibilizar o núcleo de destino. Outra variante consiste em interceptar a mensagem e depois reenviá-la com conteúdo alterado. Este tipo de ataque corrompe a integridade da mensagem e pode causar indisponibilidade no núcleo de destino. 4.2.2 Análise das vulnerabilidades da SoCIN A análise das vulnerabilidades da SoCIN foram realizadas com base nas características de roteamento da rede SoCIN. Na SoCIN, os ataque de Deadlock e Livelock são resolvidos pelo mecanismo de roteamento adotado, o qual restringe certas rotas que poderiam levar a esses problemas. Como a rede pode adotar algoritmos determinísticos ou parcialmente adaptativos, que proíbem algumas realizações de rotas que poderiam resultar em dependências cíclicas, a rede torna-se livre de Deadlock. Além disso, como os algoritmos de roteamento adotados são do tipo mínimo, um pacote não pode se afastar do seu destino, o que o levaria à possibilidade de sofrer com Livelock. 69 O ataque de Starvation é resolvido na SoCIN pelo mecanismo de arbitragem round-robin, o qual assegura uma distribuição balanceada no uso dos canais de saída pelos pacotes, evitando a postergação infinita de qualquer pacote, o que levaria ao Starvation. Por outro lado, a SoCIN é vulnerável ao ataque de envio de pacotes para um endereço de destino inválido, pois seus roteadores não verificam se o endereço destino do pacote está além das fronteiras da rede ou se o endereço de destino é o próprio endereço do núcleo de origem. Um pacote injetado com destino a um endereço além da fronteira da rede ficaria retido nessa fronteira, bloqueando os recursos (buffers e enlaces) anteriores no seu caminho. Já um pacote injetado pelo núcleo para o seu próprio endereço ficaria retido no canal de entrada do roteador, bloqueando o envio de novos pacotes pelo núcleo. Uma solução para este tipo de ataque pode ser implementada com um controle na interface entre o núcleo e o roteador, verificando se o destino do pacote está além da fronteira da rede ou se é igual ao endereço do núcleo. Caso detecte alguma dessas condições, o pacote é descartado. Com relação ao ataque de repetição do envio de pacote para um determinado endereço, a SoCIN não possui mecanismos para resolver esta situação. Uma solução para este tipo de ataque pode ser feita implementando um mecanismo de controle de banda na interface entre o núcleo e o roteador, limitando o tráfego do núcleo de acordo com parâmetros pré-definidos pelo projetista. Quanto ao ataque de resposta a requisições não enviadas, a SoCIN não possui mecanismos de proteção dado que, atualmente, requisições e respostas são tratadas como o mesmo tipo de mensagem pela rede, não recebendo tratamentos diferenciados pela rede. A solução seria incluir mecanismos de identificação de tipo de mensagem (requisição e resposta) e de verificação de requisições com respostas pendentes nas interfaces entre o núcleo e o roteador. Ao receber um pacote com uma resposta para a qual não foi enviada uma requisição, o mecanismo deveria descartar o pacote. A SoCIN também não possui mecanismos de proteção contra ataques de mascaramento de endereço de origem. Uma solução para este tipo de ataque pode ser implementada com um controle na interface entre o núcleo e o roteador, verificando se a origem do pacote é a mesma do endereço local. Caso detecte alguma inconsistência, o pacote é descartado. 70 O ataque de envio de pacote sem terminador também é vulnerável na rede SoCIN. Uma possível implementação para solucionar este tipo de ataque pode ser feito por um controlador na interface entre o núcleo e o roteador. O controlador verifica o tamanho do pacote e caso o tamanho atinja o limite máximo previamente estabelecido pelo projetista, um sinal de interrupção é transmitido ao núcleo para abortar o envio dessa mensagem. Além disso, um pacote é criado com o terminador e enviado a rede, finalizando assim o envio desse pacote e liberando os buffers alocados nos roteadores da rede. A SoCIN não possui mecanismos específicos contra ataques de interceptação da mensagem. Porém, não há como ocorrer este tipo de ataque sem que seja feita uma modificação no hardware do roteador, pois um pacote só é entregue ao seu endereço destino. Sendo assim, os ataques de interceptação da mensagem e retransmissão e de interceptação da mensagem e de reenvio da mensagem alterada também são inviáveis na rede SoCIN. Um resumo dos ataques é apresentado no Quadro 8, informando se o ataque a SoCIN é vulnerável e qual a solução de segurança adotada ou da possibilidade de implementação. Quadro 8. Vulnerabilidade da rede SoCIN a possíveis ataques e soluções de segurança Ataque Deadlock Livelock Starvation Envio de pacotes para um endereço de destino inválido Repetição do envio de pacote para um determinado endereço Responder a requisições não enviadas Mascaramento de endereço de origem14 Envio de pacote sem terminador 13 Tipo de Ataque Negação de serviço Negação de serviço Negação de serviço Negação de serviço Vulnerável? Não Não Não Sim Solução de segurança Algoritmo de roteamento Algoritmo de roteamento Algoritmo de arbitragem Controle de acesso Negação de serviço Sim Controle de banda Negação de serviço Não Disfarce Sim Controle na camada13 de sessão ou aplicação Controle de acesso Negação de serviço Sim Controle de banda Camada do modelo OSI que permite que as aplicações entre diferentes computadores (ou núcleos) possam estabelecer uma sessão de comunicação, usando marcações nos dados que estão sendo transferidos. 14 Mascaramento do endereço de origem no contexto de redes de computadores é conhecido como IP spoofing. Um ataque que consiste em mascarar (spoof) pacotes IP (Internet Protocol) utilizando endereços de remetentes falsificados. 71 Quadro 8. Vulnerabilidade da rede SoCIN a possíveis ataques e soluções de segurança (cont.) Ataque Interceptação da mensagem Tipo de Ataque Vulnerável? Solução de segurança Liberação do conteúdo Não Garantia em nível de da mensagem hardware do roteador Interceptar a mensagem e Repetição Não Garantia em nível de retransmitir hardware do roteador Interceptar mensagem e depois Repetição Não Garantia em nível de reenviar a mensagem alterada hardware do roteador 4.3 SELEÇÃO DE ATAQUES E PREMISSAS DE PROJETO Conforme discutido na seção anterior, a rede SoCIN é principalmente vulnerável a ataques de negação de serviço e de disfarce que visem comprometer a propriedade de disponibilidade. Por conta disso, neste trabalho, optou-se pela busca de soluções em hardware para proteger a SoCIN contra ataques de DoS. Conforme discutido no Capítulo 3, no âmbito específico de NoCs, ataques de DoS foram abordados por alguns autores. Diguet et al (2007) apresentaram uma solução de autenticação para permitir somente transações autorizadas sejam liberadas pela interface de rede na NoC. No trabalho de Fiorin, Silvano e Sami (2007), foram propostos mecanismos de QoS para limitar a largura de banda por núcleo, evitando o consumo excessivo dos recursos da rede. Em outro trabalho, Fiorin, Palermo e Silvano (2008) propuseram a inclusão de um mecanismo na interface de rede para detectar e bloquear comportamento não natural do tráfego destinado ao núcleo. No trabalho de Sepúlveda, Strum e Chau (2009), foi abordada a implementação de QoS para garantir largura de banda para o tráfego de dados críticos. Com abordagem semelhante, Sepúlveda, Strum e Chau (2010) adotaram uma combinação de técnicas de chaveamento por circuitos e por pacotes para distinção entre os tráfegos de dados críticos e não críticos. Já Lukovic e Christianos (2010) implementaram um mecanismo para analisar a execução da aplicação no núcleo, validando se o comportamento é o correto. Outros trabalhos também abordaram ataques de DoS, porém com o foco em SoC, são estes os trabalhos: Patel e Parameswaran (2008a), Patel e Parameswaran (2008b), Abramovici e Bradley (2009) e Patel e Parameswaran (2009). Este trabalho teve como objetivo desenvolver soluções de segurança contra ataques de DoS que incluem: (i) controle do pacote que é injetado à rede mediante a análise prévia da origem e do 72 destinatário do pacote e, consequente, descarte do pacote quando este violar regras de segurança; e (ii) controle da largura de banda utilizada pelos fluxos de comunicação (controle de admissão) de modo a assegurar que nenhum núcleo injete pacotes na rede a uma taxa maior do que a que foi dimensionada pelo projetista do sistema. Adicionalmente, como requisitos funcionais e não funcionais de projeto assumiu-se que: 1. Os núcleos conectados à rede são nativamente compatíveis com o protocolo da rede SoCIN ou utilizam uma interface de rede que realiza a adaptação de protocolo, o empacotamento e o desempacotamento de dados; 2. Os núcleos e as interfaces de rede (se utilizadas) não implementam mecanismos de controle de acesso ou de controle de banda; 3. A rede não realiza descarte de pacotes e qualquer pacote bloqueado dentro da rede será mantido infinitamente, provocando buffer overflow e levando ao bloqueio de outros pacotes; 4. Soluções para outros tipos de ataque que possam ser implementados nos núcleos, nas interfaces de rede ou nos roteadores não interferem nos mecanismos de proteção propostos neste trabalho. Por exemplo, soluções como cifragem de dados ou de controle de integridade não modificam os campos dos pacotes analisados pelos mecanismos propostos; e 5. Os mecanismos propostos são implementados na forma de wrappers cujas funcionalidades podem ser integradas futuramente à interface de rede ou à porta local do roteador da rede SoCIN (à qual os núcleos são conectados à rede). No contexto de hardware, um wrapper é um circuito lógico que envolve outro circuito realizando alguma adaptação de sinais ou implementando uma lógica de cola. No contexto de redes computadores, por exemplo, um TCP wrapper é um software usado para filtrar acessos à rede. No âmbito deste trabalho, são desenvolvidos wrappers de hardware com o propósito de filtrar pacotes que violem políticas de segurança e que comprometeriam a disponibilidade da rede SoCIN. 73 4.4 PROTEGENDO A REDE SOCIN CONTRA ATAQUES DE DOS Nesta seção são apresentados dois mecanismos para aumentar a segurança da rede SoCIN contra ataques de negação de serviço (DoS), em particular, ataques à propriedade de disponibilidade. Os mecanismos são implementados dentro do componente denominado SEW (SEcurity Wrapper), conectados no canal de saída do núcleo para a porta local de entrada do roteador, conforme representado na Figura 17. Somente a saída dos pacotes do núcleo é analisada, a entrada dos pacotes no núcleo permanece inalterada. Figura 17. Implementação do mecanismo de segurança na rede SoCIN A Figura 18 apresenta em detalhes o componente SEW, que é composto por dois wrappers (nomeados de wrapper 1 e wrapper 2), uma FIFO e uma OFC. A inclusão da FIFO e da OFC foram necessários para fazer um controle de fluxo em nível de flit, mas, em uma futura implementação, esse controle poderia ser integrado aos componentes já existentes da NIC ou da porta local do roteador. Nos wrappers, estão implementados os filtros contra os ataques de DoS a rede. No wrapper 1, é implementado o mecanismo de controle de endereço origem e destino e, no wrapper 2, é implementado o controle de banda. O sinal de saída IRQ (Interrupt Request Line) é utilizado para sinalizar o núcleo de que houve uma tentativa de ataque e uma ação de segurança foi realizada, como, por exemplo o descarte do pacote. O funcionamento e a estrutura dos wrappers são detalhados nas subseções seguintes. 74 Figura 18. Detalhamento do componente SEW 4.4.1 Controle de endereço origem e destino – Wrapper 1 O envio de pacotes para um endereço de destino inexistente causa congestionamentos na NoC e, consequentemente, pode indisponibilizar toda a comunicação entre os núcleos. A solução proposta para solucionar esse tipo de ataque é implementar um wrapper na porta local para verificar o endereço de destino de todos os pacotes a serem enviados. Se o pacote estiver endereçado para uma posição inválida (ou seja, endereço do próprio núcleo ou endereço além das fronteiras da rede), o pacote é descartado, não consumindo os recursos do roteador. Neste mesmo wrapper, também pode se verificar se o endereço de origem do pacote é realmente o endereço deste núcleo, ou seja, do núcleo local. Com essa implementação, qualquer tentativa de mascaramento de endereço de origem (disfarce) pode ser evitada. Somente os pacotes com as origens corretas são enviados para o roteador, caso contrário são descartados. Este wrapper pode ser implementado por um circuito digital com dois blocos (Figura 19): (i) uma FSM (Finite State Machine, ou máquina de estados finitos); e (ii) um bloco operativo (datapath ou caminho de dados), chamado de Attack Detector. O bloco Attack Detector possui quatro parâmetros informados em nível de projeto no momento de sua instanciação na rede: 75 1. p_X_ID: Posição X do núcleo na rede15; 2. p_Y_ID: Posição Y do núcleo na rede; 3. p_X_SIZE: Tamanho da rede na dimensão X; e 4. p_Y_SIZE: Tamanho da rede na dimensão Y. Figura 19. Diagrama de bloco do wrapper que detecta ataque de endereçamento Quando o cabeçalho de pacote é recebido pelo wrapper (o que é sinalizado pela ativação dos sinais i_VAL e i_BOP, com i_EOP em 0), o bloco Attack Detector compara os campos de endereço de origem (w_X_SRC e w_Y_SRC) e endereço de destino (w_X_DST e w_Y_DST) no flit com os parâmetros informados. Se a comparação detectar um ataque, um sinal w_ATTACK é enviado ao controle (FSM), o qual é responsável por ativar o comando de descarte do pacote (w_FLUSH). Se 15 Este trabalho utiliza a convenção de denominação de parâmetros e sinais do grupo de pesquisa ao qual está associado (o Laboratório de Sistemas Embarcados e Distribuídos) para o projeto de hardware. Os nomes são escritos em caixa alta e precedidos pelos seguintes: p_ para parâmetros; i_ (de input) para sinais de entrada; o_ (de output) para sinais de saída; e w_ (de wire) para sinais internos (fios). 76 não houver ataque, o pacote é encaminhado com a ativação dos sinais de controle de fluxo, correspondentes ao recebimento dos flits do pacote enviados pelo núcleo (o_RET) e envio desses flits ao roteador (o_VAL). O descarte é feito com a ativação de o_RET, sem a ativação do sinal o_VAL. Um ataque é detectado se uma das condições a seguir for verdadeira: Se o endereço de origem na posição X (w_X_SRC) for diferente do parâmetro p_X_ID; Se o endereço de origem na posição Y (w_Y_SRC) for diferente do parâmetro p_Y_ID; Se o endereço de destino nas posições X e Y (w_X_DEST e w_Y_DEST) forem iguais, simultaneamente às coordenadas do núcleo (parâmetros p_X_ID e p_Y_ID, respectivamente); Se o endereço de destino na posição X (w_X_DEST) for maior ou igual ao tamanho da rede na dimensão X (p_X_SIZE); ou Se o endereço de destino na posição Y (w_Y_DEST) é maior ou igual ao tamanho da rede na dimensão Y (p_Y_SIZE). O Quadro 9 apresenta a tabela-verdade que descreve função do bloco Attack Detector, ou seja, para detectar os ataques de endereço de destino inválido e de mascaramento de endereço de origem. Quadro 9. Tabela-verdade que descreve a função para detectar ataque de endereçamento Entradas i_VAL i_BOP i_EOP w_X_SRC w_Y_SRC Saídas w_X_DST w_Y_DST w_ATTACK o_VAL o_RET 0 × × × × × × 0 i_VAL i_RET 1 0 × × × × × 0 i_VAL i_RET 1 1 0 ≠ p_X_ID × × × 1 0 1 1 1 0 × ≠ p_Y_ID × × 1 0 1 1 1 0 × × = p_X_ID = p_Y_ID 1 0 1 1 1 0 × × ≥ p_X_SIZE × 1 0 1 1 1 0 × × × ≥ p_Y_SIZE 1 0 1 1 1 0 < p_X_SIZE < p_Y_SIZE 0 i_VAL i_RET = p_X_ID = p_Y_ID Nota: Neste projeto, considera-se uma nova implementação da SoCIN em que o cabeçalho é marcado por bop-eop = “10”. As outras combinações referem-se a: “00” = flit do corpo do pacote; “11” = flit do corpo do pacote com bits invertidos (decorrente do uso de técnica para redução de consumo de energia na comunicação); e “10” = terminador. 77 Na Figura 20, é mostrada a FSM do wrapper. Enquanto nenhum ataque é detectado, o estado da FSM permanece em Idle. Caso um ataque ocorra, o estado da FSM muda para Flushing, ativando o sinal w_FLUSH para descartar os flits do pacote. Enquanto o estado Flushing não recebe os sinais de entrada de i_VAL e i_EOP em 1 e i_BOP em 0, o estado continua em Flushing, descartando os flits. Figura 20. FSM do wrapper que detecta ataque de endereçamento Na Figura 21, é representado o caminho de dados do circuito digital que implementa a lógica discutida anteriormente. Quando o i_VAL e i_BOP estiverem ativos e i_EOP em zero, um cabeçalho é detectado (w_HEADER_PRESENT = 1) e o sinal w_ATTACK é habilitado, sendo o seu estado definido pelos circuitos de detecção de ataque que analisam as condições descritas no Quadro 9. 78 Figura 21. Circuito digital do wrapper que detecta ataque de endereçamento 4.4.2 Controle de banda – Wrapper 2 O ataque de envio de pacotes repetidamente com o intuito de causar congestionamentos na NoC aumenta a latência da comunicação dos demais pacotes. A solução proposta para solucionar esse tipo de ataque é implementar um wrapper entre o núcleo e o roteador para controlar a banda utilizada pelos fluxos de comunicação gerados pelo núcleo. O wrapper contabiliza a quantidade de ciclos de relógio gastos para enviar um pacote ao roteador, retardando o envio do próximo pacote por um período mínimo proporcional à largura de banda máxima alocada pelo projetista do sistema ao núcleo. Este wrapper pode ser implementado por um circuito digital usando três blocos (Figura 22): (i) uma FSM; (ii) um contador crescente e decrescente denominado COUNT; e (iii) um circuito de deslocamento chamado CALC. 79 Figura 22. Circuito digital do wrapper de controle de banda Ao enviar um pacote à rede, o sinal de i_BOP é ativado e a FSM habilita o bloco de controle COUNT. Primeiramente, é zerada a contagem anterior e então habilitada a contabilização da quantidade de ciclos de relógio gastos pelo pacote desde o recebimento do cabeçalho até o final do envio do pacote. O bloco CALC lê a contagem dos ciclos de relógio gastos do bloco COUNT e calcula quanto tempo de penalização será dado para o envio do próximo pacote. Esse tempo é calculado pela porcentagem informada pelo projetista. O resultado deste cálculo é retornado para o bloco COUNT. Quando o terminador do pacote é recebido, a FSM muda a operação do bloco COUNT para carregar o valor do bloco CALC e decrementar o seu valor. Quando o valor chega à zero, um sinal (w_CONTINUE) é enviado à FSM para que o próximo pacote possa ser enviado. Para evitar que pacotes com tamanho grande (acima de um determinado limite) sejam injetados na rede, no bloco COUNT, é verificado se a quantidade de ciclos de relógio gasto para enviar um pacote é maior do que parâmetro limite informado pelo projetista (p_SIZE). Caso isso 80 ocorra, o pacote é truncado com a inserção de um terminador no flit atual (eop = 1 e bop = 0), possibilitando que a rede libere os buffers alocados. Todos os novos flits relacionados a esse pacote serão descartados até que o seu terminador seja recebido pelo wrapper, caracterizando o fim do pacote. Em um ataque, é possível que, de forma mal intencionada, o terminador do pacote nunca seja recebido pelo wrapper. Neste caso, o núcleo mal intencionado ficará bloqueado infinitamente, mas a rede estará protegida contra este tipo de ataque. A Figura 23 apresenta o diagrama da FSM. Enquanto não houver um pacote a ser enviado, o estado da FSM fica em Idle. Neste estado, o contador é zerado para que, no estado Forward, este contabilize o número de ciclos gastos pelo pacote. Ao finalizar o envio do pacote, o estado Load 1 carrega a penalidade calculada e, no estado Wait, o circuito fica aguardando conforme o tempo da penalidade. Caso o número de flits transferidos atinja o valor limite informado pelo projetista, a FSM vai para o estado Break e, no estado seguinte, Send EOP, um terminador é injetado, quebrando o pacote. No Load 2, é carregado o tempo de penalidade e, no estado Wait EOP, o contador fica decrementando o valor da penalidade enquanto espera pelo terminador do pacote. Por fim, se ainda houver algum tempo a ser penalizado, o estado Wait aguarda até terminar a penalidade. 81 Figura 23. Diagrama da FSM do controle de banda No Quadro 10, é apresentada a tabela-verdade do bloco COUNT e, na Figura 24, a representação do circuito digital deste bloco. Quadro 10. Tabela-verdade que descreve a função do contador do bloco COUNT i_CLR i_ENA i_SEL i_OP o_COUNT* 1 × × × 0 0 o_COUNT + 1 1 o_COUNT – 1 × o_COUNT 0 0 1 1 2 × i_COUNT * Nota: o registrador o_COUNT é atualizado no final do ciclo de relógio (exceto quando i_CLR igual a 1, pois esta é uma entrada assíncrona) 82 Figura 24. Circuito digital do bloco COUNT O circuito digital do bloco CALC, ilustrado na Figura 25, permite que o projetista informe o valor para o percentual de largura de banda alocado ao canal. Pelo valor informado, é selecionado um deslocador que irá definir a penalização a ser aplicada ao fluxo de comunicação a partir do número de ciclos gastos pelo último pacote. Ou seja, será calculada a quantidade de ciclos de espera após os quais o próximo pacote poderá ser injetado, conforme explicado a seguir. 83 Figura 25. Circuito digital do bloco CALC O Quadro 11 apresenta os possíveis valores para o percentual de penalidade. Na escolha do valor 0 (zero), é disponibilizada 100% da largura de banda do canal e os envios dos pacotes não serão penalizados. Mas, por exemplo, se o projetista alocar uma largura de banda de 33%, escolhendo o seletor 3 como parâmetro p_PERCENT, o valor recebido pela entrada i_COUNT será multiplicado por 2 por meio de uma operação de deslocamento de um bit à esquerda. Assim, com uma penalidade de 2 × i_COUNT a largura de banda alocada ao pacote será limitada a i_COUNT/(i_COUNT + 2 × i_COUNT), ou seja, 1/3 ou 33%. Quadro 11. Seleção de largura de banda alocada Largura de banda alocada 100% 11% 20% 33% 50% 67% 80% 89% Seletor p_PERCENT 0 1 2 3 4 5 6 7 o_COUNT 0 i_COUNT × 8 = i_COUNT << 3 i_COUNT × 4 = i_COUNT << 2 i_COUNT × 2 = i_COUNT << 1 i_COUNT ÷ 1 = i_COUNT >> 0 i_COUNT ÷ 2 = i_COUNT >> 1 i_COUNT ÷ 4 = i_COUNT >> 2 i_COUNT ÷ 8 = i_COUNT >> 3 84 Considerando o exemplo de alocação de 33% da largura de banda, se um pacote consumir 4 ciclos de relógio, o próximo pacote terá que aguardar 8 ciclos de relógio de penalidade para ser enviado para que caracterize o uso de 33% (4/12 = 1/3) da largura de banda do canal pelo pacote anterior a ele. Se o pacote levar 50 ciclos de relógio, o próximo pacote só poderá ser enviado após 100 ciclos de relógio (ou seja, 50/150 = 1/3 = 33%). O circuito proposto utiliza deslocadores (shifters) para implementar operações de multiplicação e de divisão por potências de 2 (i.e. 1, 2, 4 e 8), pois isso permite obter uma solução de baixo custo. Porém, por outro lado, essa solução faz com que o cálculo seja limitado pelas potências de 2. Por exemplo, o circuito não permite escolher uma largura de banda de 25%, pois isso implicaria em multiplicar i_COUNT por 3 (25% = 1/(1+3)), o qual não pode ser calculado por um potência de 2. 4.5 CONSIDERAÇÕES A rede SoCIN, com o roteador ParIS, permite criar NoCs com diferentes configurações para a análise do projetista. O BrownPeeper oferece uma melhor usabilidade para o projetista na parametrização, geração de tráfego e também na análise dos resultados mediante a simulação. Assim como outras NoCs, a SoCIN também possui vulnerabilidades. A análise feita identificou alguns tipos de ataques possíveis à rede SoCIN. Como resultado da análise, foram propostos mecanismos de hardware para garantir a propriedade de segurança de disponibilidade à rede SoCIN aos ataques especificados. A proposta de implementação de um wrapper na porta local para verificar o endereçamento de origem e de destino evita ataques de envio de pacote a destinatários inválidos e ao mascaramento do endereço de origem. Com a proposta da implementação de outro wrapper para controle de banda, é possível reduzir o risco do ataque DoS de repetição do envio de pacote e do ataque DoS de pacotes com tamanho grande ou sem o flit com o terminador. 85 5 IMPLEMENTAÇÃO E AVALIAÇÃO Neste capítulo, são discutidos aspectos referentes à implementação e à avaliação dos wrappers propostos no capítulo anterior. 5.1 IMPLEMENTAÇÃO EM VHDL A implementação descrita em VHDL foi realizada utilizando o ambiente de desenvolvimento Quartus II versão 12.0 da Altera e sintetizada para a tecnologia de dispositivo lógico programável FPGA (Field Programmable Gate Array). Posteriormente foi sintetizada para uma tecnologia ASIC (Application Specific Integrated Circuit), usando a ferramenta Design Compiler da Synopsys. As ilustrações dos diagramas RTL (Register Transfer Level) foram geradas pós-síntese diretamente pela ferramenta Quartus II e evidenciam a viabilidade de implementação física dos mecanismos propostos. 5.1.1 Diagramas RTL do Wrapper 1 A Figura 26 apresenta o diagrama RTL do Wrapper 1, detalhando os blocos Attack Detector (w1_attackdetector), a FSM (w1_fsm), os fios de interconexão e suas portas de entrada e saída. O diagrama RTL da estrutura interna do bloco Attack Detector é apresentada na Figura 27. Figura 26. Diagrama RTL do Wrapper 1 86 Figura 27. Diagrama RTL da estrutura interna do bloco Attack Detector 5.1.2 Diagramas RTL do Wrapper 2 A Figura 28 apresenta o diagrama RTL do Wrapper 2, detalhando os blocos CALC (w2_calc), COUNT (w2_count), a FSM (w2_fsm), os fios de interconexões e suas portas de entrada e saída. Figura 28. Diagrama RTL do Wrapper 2 87 O diagrama RTL da estrutura interna do bloco COUNT é apresentada na Figura 29. Figura 29. Diagrama RTL do bloco COUNT O diagrama RTL da estrutura interna do bloco CALC é diferente do diagrama de bloco apresentado na Seção 4.4.2. Apesar da diferença, a funcionalidade é a mesma. O valor do percentual de largura de banda é informado pelo projetista durante a fase de projeto. A ferramenta gera os componentes personalizados para a execução de somente ao cálculo daquele percentual de largura de banda informado. Na Figura 30, é apresentado o diagrama RTL do hardware gerado pela ferramenta para todos os valores: (a) 100% de largura de banda; (b) 11% de largura de banda; (c) 20% de largura de banda; (d) 33% de largura de banda; (e) 50% de largura de banda; (f) 67% de largura de banda; (g) 80% de largura de banda; e (h) 89% de largura de banda. 88 Figura 30. Diagrama RTL do bloco CALC 5.1.3 Resultados de síntese Os wrappers foram sintetizados utilizando a ferramenta Quartus II para o dispositivo FPGA EP2C35F672C6 da família Cyclone II da Altera. O custo silício de uma instância dos wrappers foi comparado com o de uma instância do roteador ParIS e da interface de rede XIRU (eXtensible InteRface Unit). A XIRU é uma interface de rede extensível desenvolvida para a rede SoCIN e que utiliza uma arquitetura em camadas a fim de facilitar a geração de variantes compatíveis com diferentes protocolos intrachip e a inclusão de novos serviços à interface (MELO, 2012). Os resultados do roteador ParIS referem-se a uma instância com 5 portas de comunicação, com canais de 32 bits, um buffer FIFO de 4 flits em cada canal de entrada, utilizando roteamento XY, controle de fluxo baseado em créditos, chaveamento por pacotes do tipo wormhole e arbitragem roundrobin. Já os resultados da interface XIRU referem-se a uma instância com dois canais de comunicação e um buffer FIFO de 4 flits em cada canal (entrada e saída), oferecendo os serviços de adaptação ao barramento Avalon, empacotamento e desempacotamento de dados, controle de integridade em nível de flit (paridade) e redução da atividade de chaveamento baseada na codificação bus invert. A Tabela 1 apresenta uma síntese dos custos em circuitos combinacionais (LUTS – LookUp Tables), em circuitos sequenciais (FFs – Flip-Flops, ou registradores) e da frequência máxima de operação (Fmax). 89 Tabela 1. Síntese em FPGA comparada com o ParIS e a XIRU Componente paris xiru wrappers LUTs 918 566 79 FFs 800 436 18 Fmax (MHz) 164,74 253,49 417,89 Obs: Dispositivo Altera EP2C35F672C6 Pela análise da tabela, observa-se que os wrappers representam 13,9% do custo de LUTs da interface XIRU e 8,6% do roteador ParIS. Analisando o custo de FFs, os wrappers representam 4,1% da XIRU e 2,2% de ParIS. Referente a Fmax, os wrappers por ter uma frequência máxima de operação maior que os outros componentes, se incorporados na XIRU ou em ParIS, os mesmos não limitarão a frequência de operação do sistema. Conforme é mostrado na Tabela 2, considerando um núcleo composto pelo roteador ParIS, pela interface XIRU e pelos wrappers propostos nesta dissertação, observa-se que o custo dos wrappers tem uma ordem de magnitude menor que os demais componentes, adicionando um custo reduzido ao sistema. Tabela 2. Custos relativos em um núcleo ParIS + XIRU + Wrappers Componente paris xiru wrappers LUTs 58,73% 36,21% 5,05% FFs 63,80% 34,77% 1,44% Obs: Dispositivo Altera EP2C35F672C6 A Tabela 3 apresenta o percentual da síntese dos custos em circuitos combinacionais (LUTS) e em circuitos sequenciais (FFs) de cada um dos dois wrappers desenvolvidos. O maior percentual, tanto de LUTs como de FFs, é do wrapper 2, dado que utiliza um circuito de maior complexidade. 90 Tabela 3. Custos de silício em FPGA de cada wrapper Componente wrapper 1 wrapper 2 % LUTs 17% 83% % FFs 11% 89% Obs: Dispositivo Altera EP2C35F672C6 Os wrappers também foram sintetizados na tecnologia ASIC de 90nm utilizando-se a ferramenta Design Compiler da Synopsys com a biblioteca saed90nm e condições de operação no modo TYPICAL. Foi realizada a síntese lógica e com frequência de operação de 100 MHz. Como resultado, obteve-se a área de silício expressa em µm² e a frequência máxima de operação. A Tabela 4 apresenta os resultados da síntese em ASIC incluindo: a área de silício ocupada, a quantidade de portas lógicas16, a frequência máxima de operação e a potência dissipada para cada um dos componentes (ParIS, XIRU e wrappers). Observa-se que os wrappers ocupam uma área total correspondente a 7,26% da área ocupada pela XIRU e a 4,13% da área ocupada pelo roteador ParIS, ressaltando-se que essa área corresponde ao somatório das áreas gastas com lógica combinacional, lógica sequencial e interconexões. Esses resultados são diferentes dos que foram expressos anteriormente para a tecnologia FPGA, pois estes últimos separaram os recursos consumidos pelos circuitos combinacionais e sequenciais. Com relação à frequência máxima de operação, observa-se que os wrappers podem operar a uma frequência maior que os demais componentes, não comprometendo o desempenho da rede. Finalmente, destaca-se que os wrappers apresentam uma baixa dissipação de potência quando comparada com a potência dissipada pela XIRU e pelo ParIS. 16 O número aproximado de portas lógicas foi determinado pela razão entre a área do componente e a área da porta lógica básica utilizada pela tecnologia-alvo. Na biblioteca saed90nm_typ, corresponde a uma porta NAND2, com área de 5,5296 µm². 91 Tabela 4. Síntese em ASIC comparada com o ParIS e a XIRU Componente paris xiru wrappers Área (µm²) 47.905,37 27.278,70 1.982,12 Portas Lógicas Equivalentes 8.664 4.934 358 Fmax Potência @ 100 MHz (MHz) (µW) 218,34 947,42 139,66 447,52 250,62 23,41 Obs: Tecnologia ASIC SAED 90nm da Synopsys Na Tabela 5, é apresentado o percentual dos custos em ASIC de cada wrapper. Assim como nos resultados em FPGA, o wrapper 2 é o componente de maior custo, ocupando 84% da área total do wrapper e respondendo por 85% da potência dissipada. Tabela 5. Custos de silício em ASIC de cada wrapper Componente wrapper 1 wrapper 2 % Área 16% 84% % Potência 15% 85% Obs: Tecnologia ASIC SAED 90nm da Synopsys 5.1.4 Verificação baseada em simulação A verificação do correto funcionamento dos circuitos implementados e a confirmação do atendimento das suas especificações foi feita com base em simulação funcional utilizando-se a ferramenta ModelSim-Altera Starter Edition 10.0d da Mentor Graphics. Foi descrito um sistema constituído de um testbench e do módulo SEW – Security Wrapper (Figura 31), operando a uma frequência de 1 GHz (ciclo de relógio igual a 1 ns). O testbench foi descrito para gerar fluxos que representassem os ataques à propriedade disponibilidade considerados neste trabalho. O tamanho máximo permitido para um pacote ser injetado na rede é de 10 flits, valor definido em nível de projeto para os testes e para facilitar a visualização de um ataque com um pacote grande no diagrama de forma de ondas. 92 Figura 31. Bloco testbench e o bloco SEW O Quadro 12 sumariza os ataques modelados a fim de testar o correto funcionamento, através da simulação, da solução desenvolvida. Quadro 12. Ataques modelados para o experimento Ataque Implementação Envio de pacote a um endereço de destino na posição X maior que ao tamanho da rede Envio de pacotes para um Envio de pacote a um endereço de destino na posição Y maior que endereço de destino ao tamanho da rede inexistente Envio de pacote ao próprio endereço do núcleo Envio de pacote com a posição de origem X diferente do endereço Mascaramento de endereço do núcleo de origem Envio de pacote com a posição de origem Y diferente do endereço do núcleo Repetição do envio de Envio de um pacote com número de flits maior do que o permitido pacote para um Envio de vários pacotes em sequência, sem intervalo determinado endereço Na Figura 32, é apresentado o diagrama em formas de onda da injeção de um pacote sem ataque, da origem (1,1) para o destino (2,2). Esses endereços estão codificados nos quatro dígitos menos significativos do flit cabeçalho os quais representam as coordenadas do núcleo origem (XSRC, YSRC) e do núcleo destinatário (XDST, YDST). Observa-se que o pacote possuiu apenas 3 flits: (a) o cabeçalho; (b) um flit de payload; e (c) o terminador. Como o wrapper 2 possui um registrador, é inserido um atraso de 1 ciclo de relógio entre a entrada do flit no SEW (sinal i_DATA) até a sua saída (sinal o_DATA). Disso, conclui-se que os wrappers impactam no desempenho da comunicação adicionando um 1 ciclo à latência de transferência dos pacotes. O sinal o_VAL ativo (= 1) determina que existe um flit válido no canal de saída e o sinal o_IRQ não ativo = 0) indica que nenhum ataque foi encontrado nesse pacote. 93 1 2 (b) (a) 3 4 (c) (b) (a) (c) Figura 32. Envio de um pacote sem ataque - VHDL Na Figura 33 é apresentado o diagrama de formas de onda do ataque com o envio de pacote a um endereço de destino com posição X igual a 7 e, por tanto, maior que o tamanho da rede (NoC 3x3). Como houve uma tentativa de ataque, o sinal o_IRQ foi ativado (a), indicando que um ataque foi detectado, e que o pacote foi descartado. Por isso, sinal o_VAL não é ativado (b). 1 2 3 4 (b) (a) Figura 33. Envio de um ataque a um endereço de destino X maior que ao tamanho da rede Na Figura 34, é apresentado o diagrama de formas de onda do ataque com o envio de pacote a um endereço de destino na posição Y igual a 7 e, portanto, maior que o tamanho da rede (NoC 3x3). Como houve uma tentativa de ataque, o sinal o_IRQ foi ativado (a), para sinalizar o ataque, e o pacote foi descartado, não ativando o sinal o_VAL (b). 94 1 2 3 4 (b) (a) Figura 34. Envio de um ataque a um endereço de destino Y maior que ao tamanho da rede Na Figura 35, é apresentado o diagrama de formas de onda do ataque com envio de pacote ao próprio endereço do núcleo, ou seja, endereço destino igual a (1,1). Como houve uma tentativa de ataque, o sinal o_IRQ foi ativado (a), para sinalizar o ataque, e o pacote foi descartado, não ativando o sinal o_VAL (b). 1 2 3 4 (b) (a) Figura 35. Envio de um ataque com endereço de destino ao próprio o núcleo de origem Na Figura 36, é apresentado o diagrama de formas de onda do ataque com o envio de pacote com a posição de origem XSRC igual a 2 e, portanto, diferente do endereço do núcleo (1,1). Como houve uma tentativa de ataque, o sinal o_IRQ foi ativado (a), para sinalizar o ataque, e o pacote foi descartado, não ativando o sinal o_VAL (b). 95 1 2 3 4 (b) (a) Figura 36. Envio de um ataque com a posição de origem X diferente do endereço do núcleo Na Figura 37, é apresentado o diagrama de formas de onda do ataque de envio de pacote com a posição de origem YSRC igual a 2, ou seja, diferente do endereço do núcleo (1,1). Como houve uma tentativa de ataque, o sinal o_IRQ foi ativado (a), para indicar a detecção do ataque, e o pacote foi descartado, não ativando o sinal o_VAL (b). 1 2 3 4 (b) (a) Figura 37. Envio de um ataque com a posição de origem Y diferente do endereço do núcleo Na Figura 38, é apresentado o diagrama de formas de onda do ataque de envio de um pacote com número de flits maior do que o permitido. Para esse exemplo, foi definido um limite máximo de 6 flits de payload. Quando esse número é atingido, o sinal o_IRQ é ativado (a), sinalizando o ataque. Nesse momento o envio do pacote é interrompido e um flit terminador é gerado (b). No entanto, o wrapper continua consumindo flits recebidos do núcleo, descartando-os até receber o terminador original do pacote (c). O descarte dos flits é caracterizado pela não ativação do sinal o_VAL (d), o qual serve para sinalizar o encaminhamento dos flits. Se um fim de pacote não for detectado, o wrapper vai continuar descartando os flits indeterminadamente. 96 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (c) (b) (a) Figura 38. Envio de um ataque com número de flits maior do que o permitido (d) 97 Para proteger a rede de ataques que visem consumir a largura de banda da rede, o projetista pode definir, em nível de projeto, a largura de banda máxima a ser alocada ao núcleo. O wrapper deve assegurar que essa largura de banda seja respeitada. Os diagramas de formas de onda a seguir ilustram o funcionamento do wrapper quando da transferência de um fluxo composto por pacotes com 13 flits no total (sendo 11 de payload) para diferentes configurações de alocação largura de banda, incluindo: 100% (Figura 39), 11% (Figura 40), 20% (Figura 41), 33% (Figura 42), 50% (Figura 43), 67% (Figura 44), 80% (Figura 45), 89% (Figura 46). A máquina de estados do wrapper 2 adicionou uma latência de 2 ciclos de relógio para o envio de um pacote após outro. Portanto, a utilização de 100% da largura de banda não é possível. Além disso, devido ao truncamento do cálculo dos ciclos de espera, feito por operações deslocamento lógico, o percentual pode não ser preciso. Na Figura 39, é alocada uma largura de banda de 100%, porém, são inseridos dois ciclos de espera entre dois pacotes sucessivos, conforme já citado. Na Figura 40, são inseridos 98 ciclos de espera para uma largura de banda alocada de 11%. Nas próximas figuras, são inseridas, respectivamente, as seguintes quantidades de ciclos de espera: 50 ciclos, 26 ciclos, 14 ciclos, 7 ciclos e 5 ciclos. (a) Figura 39. Envio de vários pacotes sem intervalo com 100% da largura de banda 13 ciclos 11% Aguardando 98 ciclos 89% Figura 40. Envio de vários pacotes sem intervalo com 11% da largura de banda 98 13 ciclos 20% Aguardando 50 ciclos 80% Figura 41. Envio de vários pacotes sem intervalo com 20% da largura de banda 13 ciclos 33% Aguardando 26 ciclos 67% Figura 42. Envio de vários pacotes sem intervalo com 33% da largura de banda 13 ciclos 48% Aguardando 14 ciclos 52% Figura 43. Envio de vários pacotes sem intervalo com 50% da largura de banda 13 ciclos 65% Aguardando 7 ciclos 35% Figura 44. Envio de vários pacotes sem intervalo com 67% da largura de banda 99 13 ciclos 72% Aguardando 5 ciclos 28% Figura 45. Envio de vários pacotes sem intervalo com 80% da largura de banda 13 ciclos 81% Aguardando 3 ciclos 19% Figura 46. Envio de vários pacotes sem intervalo com 89% da largura de banda Os resultados de simulação apresentados nesta subseção comprovam o correto funcionamento dos wrappers implementados em VHDL. 5.2 IMPLEMENTAÇÃO EM SYSTEMC A implementação em SystemC foi realizada utilizando a versão do conjunto de bibliotecas C++ SystemC 2.3.0 e o BrownPepper com o objetivo de validar e avaliar a operação dos wrappers quando integrados à rede SoCIN. O BrownPepper foi adotado para o auxílio nos testes e simulação da implementação, na qual foram utilizados os geradores de tráfego (TGs – Traffic Generators) padrão da ferramenta para gerar o tráfego na rede SoCIN e um módulo de ataque denominado ATG (Attacker Traffic Generator), desenvolvido nesta dissertação para gerar ataques pré-definidos na rede. A Figura 47 apresenta o diagrama de blocos da NoC 3x3 utilizada nos experimentos. Cada roteador possui um TG conectado na porta local, exceto o roteador localizado no centro da NoC, posição (1,1), que possui um ATG conectado na sua porta local. 100 Figura 47. Diagrama da NoC 3x3 utilizada nos experimentos em SystemC 5.2.1 Simulação Os mesmos ataques validados em VHDL foram utilizados para a simulação em SystemC. Na Figura 48 é apresentado o diagrama em formas de onda da injeção de um pacote sem ataque, da origem (1,1) para o destino (0,0). O pacote possui 4 flits: (a) o cabeçalho; (b) dois flits de payload; e (c) o terminador. Devido ao registrador do wrapper 2, um atraso de 1 ciclo de relógio é inserido entre a entrada do flit no SEW (sinal L_1_1_in_data) até a sua saída (sinal L_1_1_out_data). O sinal L_1_1_in_val_wire_sew é ativado (VAL=1) durante a permanecia do dado válido na entrada do roteador e o sinal L_1_1_out_ret_wire_sew não é ativado (IRQ=0), indicando que nenhum ataque foi encontrado nesse pacote. Figura 48. Envio de um pacote sem ataque – SystemC 101 Na Figura 49 é apresentado o diagrama de formas de onda do ataque com o envio de pacote a um endereço de destino (8,1) e, portanto, maior que o tamanho da rede (NoC 3x3) na posição X. Como houve uma tentativa de ataque, o sinal IRQ (L_1_1_out_irq_wire_sew) foi ativado (a), indicando que um ataque foi detectado, e que o pacote foi descartado. Por isso, sinal VAL (L_1_1_in_val_wire_sew) não é ativado (b). Figura 49. Envio de um ataque a um endereço de destino X maior que ao tamanho da rede – SystemC Na Figura 50, é apresentado o diagrama de formas de onda do ataque com o envio de pacote a um endereço de destino (1,8) e, portanto, maior que o tamanho da rede (NoC 3x3) na posição Y. Como houve uma tentativa de ataque, o sinal IRQ (L_1_1_out_irq_wire_sew) foi ativado (a), indicando que um ataque foi detectado, e que o pacote foi descartado. Por isso, sinal VAL (L_1_1_in_val_wire_sew) não é ativado (b). Figura 50. Envio de um ataque a um endereço de destino Y maior que ao tamanho da rede – SystemC Na Figura 35, é apresentado o diagrama de formas de onda do ataque com envio de pacote ao próprio endereço do núcleo, ou seja, endereço destino igual a (1,1). Como houve uma tentativa de ataque, o sinal IRQ (L_1_1_out_irq_wire_sew) foi ativado (a), indicando que um ataque foi detectado, e que o pacote foi descartado, não ativando o sinal VAL (L_1_1_in_val_wire_sew) (b). 102 Figura 51. Envio de um ataque com endereço de destino ao próprio o núcleo de origem – SystemC Na Figura 52, é apresentado o diagrama de formas de onda do ataque com o envio de pacote com origem (2,1) e, portanto, diferente do endereço do núcleo na posição de origem XSRC. Como houve uma tentativa de ataque, o sinal IRQ (L_1_1_out_irq_wire_sew) foi ativado (a), para sinalizar o ataque, e o pacote foi descartado, não ativando o sinal VAL (L_1_1_in_val_wire_sew) (b). Figura 52. Envio de um ataque com a posição de origem X diferente do endereço do núcleo – SystemC Na Figura 53, é apresentado o diagrama de formas de onda do ataque com o envio de pacote com origem (2,1) e, portanto, diferente do endereço do núcleo na posição de origem YSRC. Como houve uma tentativa de ataque, o sinal IRQ (L_1_1_out_irq_wire_sew) foi ativado (a), para sinalizar o ataque, e o pacote foi descartado, não ativando o sinal VAL (L_1_1_in_val_wire_sew) (b). 103 Figura 53. Envio de um ataque com a posição de origem Y diferente do endereço do núcleo – SystemC Na Figura 54, é apresentado o diagrama de formas de onda do ataque de envio de um pacote com número de flits maior do que o permitido. Para esse exemplo, foi definido um limite máximo de 3 flits de payload. Quando esse número é atingido, o sinal IRQ (L_1_1_out_irq_wire_sew) é ativado (a), sinalizando o ataque. Nesse momento o envio do pacote é interrompido e um flit terminador é gerado (b). No entanto, o wrapper continua consumindo flits recebidos do núcleo, descartando-os até receber o terminador original do pacote (c). O descarte dos flits é caracterizado pela não ativação do sinal VAL (L_1_1_in_val_wire_sew) (d), o qual serve para sinalizar o encaminhamento dos flits. Figura 54. Envio de um ataque com número de flits maior do que o permitido – SystemC Para ilustrar a proteção da rede aos ataques que visam consumir a largura de banda da rede, a Figura 55 apresenta o diagrama de forma com a alocação da largura de banda de 50%. Os pacotes são enviados sem intervalo pelo núcleo (a), mas o wrapper atrasa a injeção do próximo pacote a rede (b), regulando a alocação de largura de banda conforme o percentual pré-definido pelo projetista (c). 104 Figura 55. Envio de vários pacotes sem intervalo com largura de banda alocada de 50% – SystemC 5.3 ANÁLISE DA TAXA DE COBERTURA A taxa de cobertura dos wrappers aos ataques considerados foi de 100%, pois bloquearam todos os ataques para os quais foram projetados. O Quadro 13 resume os ataques modelados e a eficácia dos wrappers contra o ataque enviados a NoC. Quadro 13. Ataques modelados para o experimento Ataque Implementação Envio de pacote a um endereço de destino na posição X Envio de pacotes para maior que ao tamanho da rede Envio de pacote a um endereço de destino na posição Y um endereço de maior que ao tamanho da rede destino inexistente Envio de pacote ao próprio endereço do núcleo Envio de pacote com a posição de origem X diferente do endereço do núcleo Mascaramento de endereço de origem Envio de pacote com a posição de origem Y diferente do endereço do núcleo Repetição do envio Envio de um pacote com número de flits maior do que o de pacote para um permitido determinado Envio de vários pacotes em sequencia, sem intervalo endereço Bloqueou? Sim Sim Sim Sim Sim Sim Sim 105 6 CONCLUSÕES A manipulação de dados críticos dentro da NoC faz com que seja de grande importância a implementação de requisitos de segurança. Esses requisitos podem ser caracterizados pela arquitetura de segurança OSI, que engloba ataques, mecanismos e as propriedades de segurança. O emprego de mecanismos de segurança garante que as propriedades de segurança não sejam afetadas pelos ataques. O objetivo desse trabalho foi o de buscar soluções de segurança para prover maior disponibilidade à rede SoCIN. A metodologia foi realizada em três fases. Na primeira fase, foi executado um procedimento técnico de pesquisa bibliográfica para realizar a fundamentação teórica, que abordou a área de NoCs e de segurança de sistemas. Ainda nessa fase, foi realizada a revisão sistemática, selecionando-se e analisando-se trabalhos correlatos e o estado da arte. Na segunda fase, foram identificadas as vulnerabilidades da rede SoCIN e modeladas soluções para garantir a propriedade de disponibilidade na rede SoCIN contra alguns ataques de negação de serviço. Na terceira fase, as soluções propostas foram implementadas, em VHDL e em SystemC, a fim de avaliar a viabilidade de implementação e caracterizar seus custos e o impacto no desempenho da rede. Com a identificação das principais vulnerabilidades de segurança na rede SoCIN quanto à propriedade de disponibilidade, pela implementação de mecanismos de segurança e pela análise dos impactos dessa implementação, pode-se afirmar que os objetivos específicos desse trabalho foram atingidos. Os resultados obtidos mostram que é possível aumentar a propriedade de disponibilidade da rede SoCIN com a implementação em hardware de mecanismos para o provimento de segurança, atendendo o objetivo geral deste trabalho. Isso responde à primeira pergunta de pesquisa deste trabalho. Os resultados demostraram também que os wrappers desenvolvidos introduzem uma latência de 1 ciclo de relógio na transferência de um pacote, degradando minimamente o desempenho da rede, sem porém limitar a frequência máxima de operação, dado que os demais componentes da rede operam a frequências menores. Isso responde à segunda pergunta de pesquisa desta dissertação. 106 Além disso, os resultados mostraram que os wrappers adicionam um pequeno sobrecusto de área de silício, quando comparadas às áreas do roteador ParIS e da interface de rede XIRU, respondendo à terceira pergunta de pesquisa. Por fim, os resultados obtidos permitiram confirmar as hipóteses de pesquisa, dado que aumentou-se a disponibilidade da rede SoCIN, com uma mínima redução do seu desempenho e um pequeno sobrecusto de silício. 6.1 CONTRIBUIÇÃO DA DISSERTAÇÃO A principal contribuição desta dissertação reside na análise das vulnerabilidades da rede SoCIN e a proposta e implementação de soluções que a protegem a rede contra ataques à sua propriedade de disponibilidade. Ressalta-se que os wrappers foram implementados de forma a permitir que os mesmos sejam facilmente integrados à interface de rede XIRU ou à porta local do roteador ParIS. Os ataques de DoS no âmbito específico de NoCs foram abordados por alguns autores. Este trabalho tem como diferencial a proteção da propriedade de segurança de disponibilidade da rede (roteadores, buffers, enlaces, etc), evitando que os pacotes maliciosos sejam injetados na rede e assim não consumindo os recursos da rede. Também foi implementado um controle de largura de banda que evita que um núcleo injete pacotes na rede com uma taxa maior do que a que foi dimensionada pelo projetista do sistema, e novamente, não onerando os recursos da rede. 6.2 TRABALHOS FUTUROS Como trabalhos futuros, propõem-se: Integrar os mecanismos propostos (wrappers) na interface de rede XIRU ou na porta local do roteador ParIS; Implementar um mecanismo pós-ataque para colocar em quarentena o núcleo malicioso; Implementar um mecanismo de segurança dinâmica que ao invés de utilizar um parâmetro estático de controle de banda definido em tempo de projeto, avalie se a quantidade de pacotes enviadas oferece riscos à rede SoCIN e regule a largura de banda alocada dinamicamente, alterando as taxas de inserção de ciclos de espera; e 107 Análise e implementação de soluções para assegurar outras propriedades de segurança na rede SoCIN. 108 REFERÊNCIAS ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR ISO/IEC 27001:2006: Sistema de Gestão de Segurança da Informação. Rio de Janeiro, 2006. ABRAMOVICI, Miron; BRADLEY, Paul. Integrated circuit security new threats and solutions. In: ANNUAL WORKSHOP ON CYBER SECURITY AND INFORMATION INTELLIGENCE RESEARCH (CSIIRW), 5., 2009, Knoxville. Proceedings… New York: ACM, 2009. ADRIAHANTENAINA, Adrijean; CHARLERY, Herve; GREINER, Alain.; MORTIEZ, Laurent; ZEFERINO, Cesar A. SPIN: A Scalable, Packet Switched, On-Chip Micro-Network. In: DESIGN AUTOMATION AND TEST ON EUROPE (DATE) – DESIGNER´S FORUM, 2003, Messe Munich. Proceedings… Piscataway : IEEE Computer Society, 2003. p. 70-74. ANOOP MS. Security needs in embedded systems. Tata Elxsi, 2008. Disponível em: <http://www.infosecwriters.com/text_resources/pdf/Anoopms_Embedded_Systems.pdf>. Acesso em: 10 jul. 2011. ASHKENAZI, Asaf; AKSELROD, Dimitry. Platform independent overall security architecture in multi-processor system-on-chip integrated circuits for use in mobile phones and handheld devices. Computers and Electrical Engineering, Tarrytown, v.33, n. 5-6, p. 407-409, set. 2007. BARROS, Aldil J.; LEHFELD, Neide. Fundamentos de metodologia científica: Um Guia para Iniciação Científica. São Paulo: Makron Books, 2000. BARBETTA, Pedro A.; REIS, Marcelo M. e BORNIA, Antonio C. Estatística para cursos de Engenharia e Informática. 3. ed. São Paulo: Editora Atlas, 2010. BENINI, Luca; DE MICHELI, Giovanni. Networks on Chips: a new SOC paradigm. IEEE Computer, v. 35, n. 1, p. 70-78, jan. 2002. BENINI, Luca; DE MICHELI, Giovanni. Networks on chip: Technology and tools. New York: Elsevier North-Holland, 2006. BERTOZZI, Davide.; BENINI, Luca. xPipes: A network-on-chip architecture for gigascale systems-on-chip. IEEE Circuits and Systems Magazine, v. 4, n. 2, p. 18-31, set. 2004. BOLOTIN, Evgeny; CIDON, Israel; GINOSAR, Ran; KOLODNY, Avinoam. QNoC: QoS architecture and design process for network on chip. Journal of Systems Architecture, v. 50, v. 23, p. 105-128, fev. 2004. BRANDÃO, José. E. M. S.; FRAGA, Joni. S. Gestão de Riscos. In: SIMPÓSIO BRASILEIRO EM SEGURANÇA DA INFORMAÇÃO E DE SISTEMAS COMPUTACIONAIS (SBSeg), 8., 2008, Gramado. Proceedings… [S.l.: s.n], 2008. BRUSH, Jaison V.; PIZZONI, Magnos R.; ZEFERINO, Cesar A. BrownPepper: a SystemC-based simulator for performance evaluation of Network-on-Chip. In: INTERNATIONAL CONFERENCE 109 ON VERY LARGE SCALE INTEGRATION (VLSI-SOC), 17., 2009, Florianópolis. Proceedings… Piscataway: IEEE Computer Society, 2009, p. 223-226. NATIONAL INFORMATION ASSURANCE GLOSSARY. CNSSI-4009: Committee on National Security Systems. [S.l], 2006. DALLY, William J.; TOWLES, Brian. Principles and practices of interconnection networks. San Francisco: Morgan Kaufmann, 2004. DIGUET, Jean-Philippe; EVAIN, Samuel; VASLIN, Romain; GOGNIAT, Guy; JUIN, Emmanuel. NoC-centric security of reconfigurable SoC. In: INTERNATIONAL SYMPOSIUM ON NETWORKS-ON-CHIP (NOCS), 1., 2007, Princeton. Proceedings… Washington: IEE Computer Society, 2007. p. 223-232. DUATO, Jose; YALAMANCHILI, Sudhakar; NI, Lionel M.. Interconnection networks: an engineering approach. Los Alamitos: IEEE Computer Society Press, 1997. EVAIN, Samuel; DIGUET, Jean-Philippe; HOUZET, Dominique. μSpider: a CAD tool for efficient NoC design. In: IEEE NORCHIP, 2004, Oslo. Proceedings... New York: IEEE, 2004. p. 218-221. FIORIN, Leandro; PALERMO, Gianluca; SILVANO, Cristina. A security monitoring service for NoCs. Architecture. In: IEEE/ACM/IFIP INTERNATIONAL CONFERENCE ON HARDWARE/SOFTWARE CODESIGN AND SYSTEM SYNTHESIS (CODES+ISSS), 6., 2008, Atlanta. Proceedings… New York: ACM, 2008. p. 197-202. FIORIN, Leandro; PALERMO, Gianluca; SILVANO, Cristina. MPSoCs Run-Time Monitoring through Networks-on-Chip. In: DESIGN, AUTOMATION AND TEST IN EUROPE (DATE), 57., 2009, Nice. Proceedings… Leuven: European Design and Automation Association, 2009. p. 558561. FIORIN , Leandro; PALERMO, Gianluca; LUKOVIC, Slobodan; CATALANO, Valerio; SILVANO, Cristina. Secure memory accesses on Networks-on-Chip. IEEE Transactions on Computers, Washington, v. 57, n.9, p. 1216-1229, 2008. FIORIN, Leandro; SILVANO, Cristina; SAMI, Mariagiovanna. Security aspects in Networks-onChips overview and proposals for secure implementations. In: EUROMICRO CONFERENCE ON DIGITAL SYSTEM DESIGN ARCHITECTURES, METHODS AND TOOLS (DSD), 10., 2007, Lubeck. Proceedings… Washington: IEEE Computer Society, 2007. GEBOTYS, Catherine H.; GEBOTYS, Robert J.. A Framework for Security on NoC Technologies. In: IEEE COMPUTER SOCIETY ANNUAL SYMPOSIUM ON VLSI (ISVLSI), 2003, [S.l.]. Proceedings… Washington: IEEE Computer Society, 2003, p. 113-117. GIL, Antônio C. Como elaborar projetos de pesquisa. 4. ed. São Paulo: Atlas, 2002. GOOSSENS, Kees; DIELISSEN, John; RADULESCU Andrei. A Æthereal network on chip: concepts, architectures, and implementations. IEEE Design & Test of Computers, Los Alamitos, v.22, n. 5, p. 414-421, 2005. 110 GUERRIER, Pierre; GREINER, Alain. A generic architecture for on-chip packet-switched interconnections. In: DESIGN, AUTOMATION AND TEST IN EUROPE CONFERENCE AND EXIBITION (DATE), 2000, Paris. Proceedings... Los Alamitos: IEEE Computer Society Press, 2000. p. 250-256. GUERRIER, Pierre; GREINER, Alain. A scalable architecure for system-on-chip interconnections. In: SOPHIA-ANTIPOLIS MICRO-ELECTRONICS CONFERENCE (SAME), 1999, France. Proceedings… Sophia Antipolis: [s.n.], 1999. p. 90-93. HEMANI, Ahmed et al. Networks on Chip: an architecture for billion transistor era. In: NORCHIP, 2000, Turku. Proceedings... [S.l.: s.n], 2000. p.166-173. HOSKOTE, Yatin; VANGAL, Sriram; SINGH, Arvidn; BORKAR, Nitin; BORKAR, Shekhar. A 5-GHz Mesh Interconnect for a Teraflops Processor. IEEE Micro, Los Alamitos, v. 27, n. 5, p. 5161, 2007. HUFFMIRE, Ted; LEVIN, Timothy; NGUYEN, Thuy; IRVINE, Cynthia. Security Primitives for reconfigurable hardware-based Systems. Acm Transactions on Reconfigurable Technology and Systems, New York, v.3, n.2, mai. 2010. JERGER, Natalie Enright; PEH, Li-Shiuan. On-Chip Networks: Synthesis Lectures on Computer Architecture. [S.l.]: Morgan & Claypool, 2009. KITCHENHAN, Bárbara, et.al. Systematic literature reviews in software engineering – A systematic literature review. Information and Software Technology, New York , v.51 , n.1 , p. 715, jan. 2009. LAKATOS, Eva M.; MARCONI, Mariana A. Fundamentos de metodologia científica. 3. ed. São Paulo: Atlas, 2000. LANDWEHR, Carl E. Computer security. International Journal of Information Security (IJIS), New York, p. 3-13, jul. 2001. LÁZARO, Jesús; ASTARLOA, Armando; ZULOAGA, Aitzol; BIDARTE, Unai; JIMÉNEZ, Jaime. I2CSec: A secure serial Chip-to-Chip communication protocol. Journal of Systems Architecture, New York, v. 57, n. 2, p. 206-213, fev. 2011. LUKOVIC, Slobodan; CHRISTIANOS, Nikolaos. Hierarchical multi-agent protection system for NoC based MPSoCs. In: INTERNATIONAL WORKSHOP ON SECURITY AND DEPENDABILITY FOR RESOURCE CONSTRAINED EMBEDDED SYSTEMS (S&D4RCES), 10., 2010, Naples. Proceedings… New York: ACM, 2010. MARTIN, Grant E.; CHANG, Henry. Winning the SoC revolution: experiences in real design. New York: Springer, 2003, p. 320. MELO, Douglas. R.. Interfaces de comunicação extensível para a Rede-em-Chip SoCIN. 2012. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Computação, Universidade do Vale do Itajaí, Itajaí, 2012. 111 PATEL, Krutartha; PARAMESWARAN, Sri; RAGEL, Roshan G.. CUFFS: An instruction count based architectural framework for security of MPSoCs. In: DESIGN, AUTOMATION AND TEST IN EUROPE (DATE), 2009, Nice. Proceedings… Leuven: European Design and Automation Association, 2009. p. 779-784. PATEL, Krutartha; PARAMESWARAN, Sri; SHEE, Seng Lin. Ensuring secure program execution in multiprocessor embedded systems: a case study. In: INTERNATIONAL CONFERENCE ON HARDWARE/SOFTWARE CODESIGN AND SYSTEM SYNTHESIS (CODES+ISSS), 5., 2008, Salzburg. Proceedings… New York: ACM, 2007, p.57-62. PATEL, Krutartha; PARAMESWARAN, Sri. LOCS: a low overhead profiler-driven design flow for security of MPSoCs. In: INTERNATIONAL CONFERENCE ON HARDWARE/SOFTWARE CODESIGN AND SYSTEM SYNTHESIS (CODES+ISSS), 6., 2008, Salzburg. Proceedings… New York: ACM, 2008a, p.79-84. PATEL, Krutartha; PARAMESWARAN, Sri. SHIELD: a software hardware design methodology for security and reliability of MPSoCs. In: DESIGN AUTOMATION CONFERENCE (DAC), 45., 2008, Anaheim. Proceedings… New York: ACM, 2008b. PORQUET, Joel; SCHWARZT, Christian; GREINER, Alain. NoC-MPU: a secure architecture for flexible co-hosting on shared memory MPSoCs. In: DESIGN, AUTOMATION & TEST IN EUROPE CONFERENCE & EXHIBITION (DATE), 2011, Grenoble. Proceedings… [S.l.: s.n.], 2011. p. 1-4. PORQUET, Joel; SCHWARZT, Christian; GREINER, Alain. Multi-compartment a new architecture for secure co-hosting on SoC. In: INTERNATIONAL SYMPOSIUM ON SYSTEMON-CHIP, 11., 2009, Tampere. Proceedings… Piscataway: IEEE Computer Society, 2009. p. 124127. SEPÚLVEDA, M. Johanna; STRUM, Marius; CHAU, Wang Jiang. An hybrid switching approach for NoC-based systems to avoid Denial-of-Service SoC attacks. In: IBERCHIP WORKSHOP, 16., 2010, Iguazu Falls. Proceedings… , Iguazu Falls: IBERCHIP Workshop, 2010. SEPÚLVEDA, M. Johanna; STRUM, Marius; CHAU, Wang Jiang. Performance impact of QoSS (Quality-of-Security-Service) inclusion for NoC-based systems. In: INTERNATIONAL CONFERENCE ON VERY LARGE SCALE INTEGRATION (VLSI-SOC), 17., 2009, Florianópolis. Proceedings… Piscataway: IEEE Computer Society, 2009. STALLINGS, William. Criptografia e segurança de redes: princípios e práticas, 4. ed. New Jersey: Prentice Hall, 2008. STEFAN, Radu; GOOSSENS, Kees. NoC security using multipath routing. In: WORKSHOP ON CIRCUITS, SYSTEMS AND SIGNAL PROCESSING (ProRISC), 20., 2009, Veldhoven. Proceedings… [S.l.: s.n], 2009. p. 522-525. SILVA, Edna L.; MENEZES, Estera M.. Metodologia da Pesquisa e Elaboração de Dissertação. 3. ed. Florianópolis:[s.n], 2001. 112 SUSIN, Altamiro A.; ZEFERINO, Cesar A.. SoCIN: A Parametric and Scalable Network-on-Chip. In: SYMPOSIUM ON INTEGRATED CIRCUITS AND SYSTEMS DESIGN, 2003, São Paulo. Proceedings… Piscataway: IEEE Computer Society, 2003, p. 169-174. TAMIR, Yuval; FRAZIER, Gregory L. Dynamically-allocated multi-queue buffers for VLSI communication switches. In: IEEE Transactions on Computers, 41., 1992, New York. Washington: IEEE Computer Society, 1992. p. 725-737. TEXIER, Matthieu. Network-on-Chip security: overview of existing solutions. Architecture. 2009. Disponível em: <http://www.mtexier.com/noc-security>. Acesso em: 12 jul. 2011. ZEFERINO, Cesar. A. Redes-em-Chip: arquiteturas e modelos para avaliação de área e desempenho. 2003. Tese (Doutorado) – Programa de Pós-Graduação em Computação, Universidade Federal do Rio Grande do Sul, Porto Alegre, 2003. ZEFERINO, Cesar A.; SUSIN, Altamiro A.. SoCIN: a parametric and scalable Network-on-Chip. In: SYMPOSIUM ON INTEGRATED CIRCUITS AND SYSTEMS, 16., 2003, São Paulo. Proceedings... Los Alamitos: IEEE Computer Society Press, 2003. p. 169-174. ZEFERINO, Cesar A.; KREUTZ, Márcio E. e SUSIN, Altamiro A. RASoC: A Router Soft-Core for Networks-on-Chip. In: DESIGN AUTOMATION AND TEST IN EUROPE CONFERENCE AND EXHIBITION, 3., 2004. Paris. Proceedings… Paris: IEEE Computer Society, 2004, p. 198-203. ZEFERINO, CESAR A.; SANTO, FREDERICO G. M. E. e SUSIN, ALTAMIRO A. ParIS: A Parameterizable Interconnect Switch for Network-on-Chip. In: SYMPOSIUM ON INTEGRATED CIRCUITS AND SYSTEM DESIGN, 2004, Pernambuco. Proceedings… New York:ACM, 2004, p. 204-209. 113 APÊNDICE A – REVISÃO SISTEMÁTICA Uma revisão sistemática de literatura é um meio para identificar, interpretar e avaliar todos os resultados relevantes de uma pesquisa acerca de uma questão, área ou fenômeno em particular. Utilizando uma metodologia rigorosa e que possa ser reproduzida posteriormente. A revisão sistemática tem por objetivo apresentar uma avaliação concisa a respeito de um tópico (KITCHENHAN, 2009). A primeira atividade desta revisão sistemática foi a definição de um protocolo, que visa levantar a literatura relevante acerca do tema sobre segurança em NoCs. O escopo da pesquisa é voltado para a identificação de técnicas utilizadas para prover segurança em uma NoC, porém como o tema é ainda recente (FIORIN; PALERMO; SILVANO, 2008), foi incluído no trabalho de revisão sistemática técnicas de segurança relacionada a SoC (System-on-Chip) e a MPSoC (Multiprocessor System-on-Chip). QUESTÃO DA PESQUISA Questão: Quais principais ataques e vulnerabilidades nas NoC? Questão de pesquisa adicional: Quais os requisitos (propriedades) de segurança para uma NoC? Questão de pesquisa adicional: Quais técnicas são adotadas para prover segurança em uma NoC? População: Ataques; Vulnerabilidades ; propriedades de segurança; técnicas de segurança Intervenção: o Para a questão principal: Ataques e vulnerabilidades das NoCs o Para a questão secundária: Propriedades de segurança das NoCs. Resultados: Ataques; Vulnerabilidades ; propriedades de segurança; técnicas de segurança adotadas em NoCs Contexto: Segurança em NoC ou SoC 114 ESTRATÉGIA UTILIZADA PARA PESQUISA DOS ESTUDOS PRIMÁRIOS O escopo da pesquisa se dá em bases de dados eletrônicas, incluindo journals e anais de conferências. Termos de busca: o Em português: “segurança” AND (“redes-em-chip” OR “NoC” OR “rede intrachip” OR “SoC” OR “MPSoC” OR “System-on-Chip”). o Em Inglês: “security” AND ( “network-on-chip” OR “NoC” “OCN” OR “SoC” OR “MPSoC” OR “System-on-Chip”) Fontes: o Google acadêmico: http://scholar.google.com.br o IEEExplore: http://ieeexplore.ieee.org o CAPES: www.periodicos.capes.gov.br o ACM Digital Library: http://portal.acm.org CRITÉRIOS E PROCEDIMENTOS PARA A SELEÇÃO DE ESTUDOS Os trabalhos foram filtrados a partir dos seguintes critérios: Pela análise do título do trabalho; Pela análise do resumo e das conclusões do trabalho; Pela data de publicação do trabalho; Critérios para inclusão de estudo: o Para a questão primária: Foram incluídos no estudo trabalhos cujos títulos e resumos contenham informações referente à segurança em NoC ou SoC . A conclusão foi analisada para verificar a contribuição do trabalho. A data de publicação do trabalho deve ser superior ou igual ao ano 2000. o Para a questão secundária: Os mesmos critérios da questão primária, porém o título e resumo deviam conter também a informação sobre ataques, vulnerabilidades ou técnicas de segurança. Critérios para exclusão de estudo: o Para a questão primária: Foram excluídos do estudo trabalhos cujos títulos e resumos sejam conflitantes, ou seja, o título remete a um assunto enquanto o 115 resumo remete a outro assunto. Os trabalhos publicados antes do ano 2000 não foram analisados. o Para a questão secundária: Os mesmos critérios da questão primária além de que o título e resumo que não estavam informando sobre segurança em NoC ou SoC. Processo de seleção preliminar: o As estratégias de pesquisa foram aplicadas para identificar os estudos primários potenciais. O trabalho selecionado que não atendeu aos critérios de inclusão e também não atendeu aos critérios de exclusão, o mesmo foi incluído. Processo de seleção final: o Cópias dos trabalhos incluídos como resultados da pesquisa inicial foram revisados. Esta revisão concluiu a seleção de trabalhos incluídos no processo de extração de dados. LISTA DE VERIFICAÇÃO E PROCEDIMENTOS PARA AVALIAÇÃO DA QUALIDADE DOS ESTUDOS Os estudos foram avaliados em sua qualidade abordando os seguintes aspectos: Objetivos: Os objetivos do trabalho devem ser no sentido de estabelecer ou aplicar uma técnica para evitar ataques em NoC ou SoC. Os mesmos devem estar bem definidos e delimitados, sem a pretensão de resolver problemas de grande abrangência. Condução: O projeto deve estar bem referenciado e possuir, preferencialmente uma etapa experimental, com a validação das hipóteses. Eventos negativos ocorridos durante o estudo, como por exemplo, dificuldades quanto a população e os equipamentos, tornarão o trabalho elegível a ter uma atribuição de menor qualidade. Experimentos: A população deve ser escolhida de forma aleatória evitando vieses na amostra e com o tamanho considerável (acima de 30) de indivíduos. 116 ESTRATÉGIA PARA EXTRAÇÃO DOS DADOS Para cada artigo aprovado pelo processo de seleção completo, tanto para a questão primária quanto para a questão secundária, foram extraídos os seguintes dados: Informação para referência bibliográfica; Tipo de artigo: teórico, experimental ou ambos; Problema alvo; Propriedades de segurança atacada; NoC utilizada (caso existir); Componentes do circuito atacado; Solução proposta; Metodologia ou materiais utilizados; Resultados obtidos; Métricas de avaliação; Problemas em aberto; SÍNTESE DOS DADOS EXTRAÍDOS Os resultados foram organizados em tabelas. A partir da tabulação dos dados, foram extraídos os dados que possui a maior quantidade de incidentes, identificando qual é o item mais tratado pelos trabalhos relacionados.