• Nenhum resultado encontrado

4 Desenvolvimento

4.2 Projeto

4.2.1 Diagrama de Classes

A metodologia de análise de risco supõe a existência de agentes capazes de realizar e armazenar as estruturas que determinam uma estimativa do risco. Na programação orientada a objetos as estruturas responsáveis por modelar tarefas em um computador são chamadas de classes [1].

A primeira atividade da elaboração do projeto [1] consiste em descrever as classes que modelam a análise de risco, determinando um diagrama de classes. Nosso trabalho consiste nas seguintes etapas:

1. Descobrir as classes necessárias;

2. Determinar as responsabilidades de cada classe; 3. Descrever os relacionamentos entre as classes;

Abaixo se encontram listadas todas as classes necessárias para implementação da análise de risco [6] e ilustradas na Figura 3 – Diagrama de Classes:

 RiskAnalysis: Criar a análise de risco e propor um conjunto de controles para mitigar os risco encontrados;

 Asset: Definir ativo sobre análise e seu comprometimento referente à sua disponibilidade, confidencialidade e integridade. Catalogar vulnerabilidade e ameaças associadas ao ativo;

 Vulnerability: Define características da vulnerabilidade e sua facilidade de exploração. Catalogar todas as ameaças associadas a essa vulnerabilidade;

 Threat: Define características da ameaça, a freqüência de ocorrência, possibilidade de comprometimento da confidencialidade, disponibilidade, integridade;

 RiskInicial: Calcular o risco inicial associado à determinada ameaça, antes de aplicarmos uma série de controles;

 RiskResidual: Calcular o risco residual associado à determinada ameaça;  RiskCurrent: Calcular o risco atualmente associado à determinada ameaça;

 Controle: Define que ações podem ser realizadas para mitigar determinada ameaça e/ou vulnerabilidade;

 Action: Define como a ação determinada pelo controle reduz uma ameaça ou vulnerabilidade na pratica, reduzindo determinados parâmetros;

 DeleteThreat: Mitiga risco, deletando a ameaça associada;

 DeleteVulnerability: Mitiga risco, deletando a vulnerabilidade associada;

 ReduceThreat: Mitiga risco, reduzindo a criticidade do risco da ameaça associada;  ReduceVulnerability: Mitiga risco, reduzindo a criticidade do risco da vulnerabilidade

associada; pkg + getDescription() : String + setDescription() : void + getName() : String + setName() : void + getAti() : int + getAtc() : int + getAtd() : int + setAti() : void + setAtc() : void + setAtd() : void - ati : int = 1 - atc : int = 1 - atd : int = 1 - description : String - name : String Asset + setName() : void + getName() : String + getVef() : void + setVef() : int + getDescrition() : void - name : String - vfe : int - descrition : String Vulnerability + setName() : void + getName() : String + getApo() : int + getAvc() : int + getAcd() : boolean + setAcd() : void + getAci() : boolean + setAci() : void + getAcc() : boolean + setAcc() : void + getAfo() : int + setAfo() : void + getDescription() : String + setDescription() : void - name : String - avc : int - acd : boolean - aci : boolean - acc : boolean - apo : int - afo : int - description : String Threat 0..* 1 + getStakeholder() : String + setStakeholder() : void + getDescription() : String + setDescription() : void + getObject() : String + setObject() : void - stakeholder : String - description : String - object : String RiskAnalysis + implement() : void + getImplemented() : void + get/name() : String + setName() : void + getDescription() : void + setDescription() : void - implemented : boolean - description : String Controle 0..* + setPost() : void + getPost() : String + getName() : String + setName() : void - post : String - name : String Owner 1 1..* + implement() : void - type : int - target : String - reduce : int Action + implement() : void + uDelete() : void + reduce() : void - threatReduce : Threat ReduceThreat + implement() : void + uDelete() : void + reduce() : void DeleteTreat + implement() : void + uDelete() : void + reduce() : void - vulnerabilityReduce : Vulnerability ReduceVulnerability + implement() : void + uDelete() : void + reduce() : void DeleteVunerability 1 1..* Risk 0..1 1 + getRisk() : void - risk : int RiskInitial + getRisk() : void - risk : int RiskResidual + getRisk() : void - risk : int RiskCurrent 0..* 1..* Mitigate - implemented : boolean Mitigate

Figura 3 – Diagrama de Classes

Abaixo se encontram listadas todas as classes necessárias para implementação das regras de negócios, criação e armazenamento das instancias utilizadas nas regras de negócios:

CreateAnalysisEvent: Instancia o objeto da classe RiskAnalysis e armazena essa classe durante a utilização do programa;

CreateAssetEvent: Instancia o objeto da classe Asset e armazena essa classe durante a utilização do programa;

CreateVulnerabilityEvent: Instancia os diversos objetos da classe Vulnerability e armazena esses objetos durante a utilização do programa.

CreateThreatEvent: Instancia os diversos objetos da classe Threat e armazena esses objetos durante a utilização do programa.

CreateControlEvent: Instancia os diversos objetos da classe Controle e armazena e esses objetos durante a utilização do programa.

CreateRiskEvent: Instancia os diversos objetos das classes RiskInitial, RiskResidual, RiskCurrent e armazena e esses objetos durante a utilização do programa.

4.2.2 Regras de Negócio

As regras de negócios são implementadas dentro da estrutura da interface GUI, definindo as atividades que serão realizadas pelo aplicativo a fim de executar a análise de risco. Através de eventos decorrentes da interatividade com o usuário serão feitas chamadas a objetos responsáveis por gerenciar a análise de risco.

Seguindo a metodologia desenvolvida para análise de risco, serão propostos nove grupos de procedimentos responsáveis por desenvolver as regras de negócios e interagir entre si, garantindo o funcionamento do aplicativo conforme esperado:

 Análise de Risco: Responsável por receber informações referentes à análise de risco que será implementada e gerenciar esta informação com as etapas posteriores da análise. Sua implementação é ilustrada na Figura 4 – Aba Análise de Risco.

o Os procedimentos dessa regra de negócio devem incluir:

o Criar objeto RiskAnalysis, caso o mesmo não tenha sido criado. Este objeto deve ser chamado assim que se habilita a checkbox Salvar Informação (saveAnalysis).

o Salvar Objetivo, Descrição dos Sistemas e Processos, Nome, Parceiros no objeto analyse da Classe RiskAnalysis;

o Desabilitar todas as text Box, após as informações serem salvas; o Habilita Aba Ativo;

Figura 4 – Aba Análise de Risco

 Ativo: Responsável por receber informações referentes ao ativo que se deseja analisar e suas características. Esta regra é ilustrada na Figura 5 – Aba Ativo.Os procedimentos dessa regra de negócio devem incluir:

o Criar o objeto asset, caso o mesmo não tenha sido criado. Este objeto deve ser chamado toda vez que o checkbox Salvar Informação (saveAsset) da Aba Ativo for habilitada.

o Salvar o nome, descrição, comprometimento de integridade, comprometimento de disponibilidade, comprometimento de confidencialidade do ativo no objeto asset;

o Desabilitar todas as text Box, após as informações serem salvas; o Habilita Aba Vulnerabilidade, Ameaça e Controles.

Figura 5 – Aba Ativo

 Vulnerabilidade: Conjunto de procedimentos que visam controlar a exclusão, adição e manipulação dos objetos do tipo vulnerabilidade que compõe a análise de risco, conforme apresentado na Figura 6 – Aba Vulnerabilidade. Os procedimentos dessa regra de negócio devem incluir:

o Criar objeto vulnerability, caso o mesmo não tenha sido criado. Este objeto deve ser chamado toda vez que o checkbox Salvar Informação (saveVulnerability) da Aba Vulnerabilidade for habilitada.

o Salvar nome, descrição, facilidade de exploração da vulnerabilidade no objeto vulnerability;

o Associar toda nova vulnerabilidade ao objeto asset correspondente;

o Inserir vulnerabilidade na lista de vulnerabilidade (vulnerabilityTree) da aba ameaças;

o Inserir ameaça na lista de ameaça (threatTree) da aba Controle;

o Habilitar e limpar text box quando o botão Nova Vulnerabilidade (newVulnerabilityButton) é acionado;

o Retirar informações da vulnerabilidade atual e adicionar informações referentes à vulnerabilidade anterior na text box e na lista de ameaças quando o botão Próxima Vulnerabilidade (previousVulnerabilityButton) for acionado; o Apagar todas as referências ao objeto vulnerability quando o botão Apagar

Vulnerabilidade (deleteVulnerabilityButton) for acionado.

Figura 6 – Aba Vulnerabilidade

 Ameaça: Conjunto de procedimentos que visam controlar a exclusão, adição e manipulação dos objetos do tipo ameaça que compõe a análise de risco. A Figura 7 – Aba Ameaçailustra a materialização desta regra, cujos procedimentos devem incluir:

o Criar objeto threat, caso o mesmo não tenha sido criado. Este objeto deve ser chamado toda vez que o checkbox Salvar Informação (saveVulnerability) da Aba Vulnerabilidade for habilitada.

o Salvar toda threat em HashMap [4] no objeto createThreat, associando cada nova ameaça a este objeto;

o Salvar nome, descrição, freqüência de ocorrência da ameaça, possibilidade de comprometimento da confidencialidade, possibilidade de comprometimento da

disponibilidade, possibilidade de comprometimento da integridade no objeto threat;

o Garantir que esta ameaça encontra-se associada a uma vulnerabilidade pelo menos;

o Garantir que pelo menos um dos tipos possíveis de comprometimento encontra-se assinalado, antes de criar a ameaça;

o Associar toda ameaça ao objeto asset correspondente;

o Inserir ameaça na lista de ameaça (threatTree) da aba vulnerabilidade; o Inserir ameaça na lista de ameaça (threatTree) da aba Controle;

o Habilitar e limpar text box quando o botão Nova Ameaça

(newVulnerabilityButton) é acionado;

o Retirar informações da ameaça atual e adicionar informações referentes à ameaça anterior na text box e na lista de ameaças quando o botão Próxima

Ameaça (previousThreatButton) é acionado;

o Apagar todas as referências ao objeto threat quando o botão Apagar Ameaça (deleteThreatButton) é acionado.

Figura 7 – Aba Ameaça

 Relação entre ameaça e vulnerabilidade: Uma ameaça pode estar relacionada a uma ou mais vulnerabilidades. Assim como uma vulnerabilidade pode estar relacionada a uma ou mais ameaças. Essa regra de negócio deve gerenciar esta relação, impedindo que uma ameaça que já esteja relacionada com uma vulnerabilidade seja relacionada novamente com esta vulnerabilidade, mas desta vez com a vulnerabilidade sendo relacionada com a ameaça. Os procedimentos dessa regra de negócio devem incluir:

o Cada item selecionado na lista de vulnerabilidades da aba Ameaças deve ser relacionado à ameaça em análise no momento;

o Cada item selecionado na lista de ameaças da aba Vulnerabilidades deve ser relacionado à vulnerabilidade em análise no momento;

o Cada item desmarcado na lista de vulnerabilidades da aba Ameaças deve ser retirado o relacionamento à vulnerabilidade em análise no momento;

o Cada item desmarcado na lista de ameaças da aba de Vulnerabilidades deve ser retirado o relacionamento à ameaça em análise no momento.

 Controles: Um controle propõe medidas que visa mitigar determinadas vulnerabilidades ou ameaças. Um determinado controle pode agir em uma ameaça ou vulnerabilidade com diferentes níveis de mitigação. Esse objeto gerencia os quatro tipos de ações possíveis de um controle. Os procedimentos do controle, ilustrado na Figura 8 – Aba Controle, devem incluir:

o Criar objeto control, caso o mesmo não tenha sido criado. Este objeto deve ser chamado toda vez que o checkbox Salvar Informação (saveControl) da Aba Controles for habilitada;

o Salvar nome, descrição no objeto control;

o Associar todo controle da ameaça ao objeto riskAnalysis;

o Habilitar e limpar text box quando o botão Novo Controle (newControlButton) é acionado;

o Retirar informações do controle atual e adicionar informações referentes ao controle anterior na text box e na lista de controles quando o botão Próximo

Controle (previousControlButton) é acionado;

o Apagar todas as referências ao objeto control quando o botão Apagar

Controle (deleteControlButton) é acionado.

Figura 8 – Aba Controle

 Mitigação de um risco: Um controle deve ser capaz de atuar sobre uma ameaça ou sobre suas vulnerabilidades, mitigando o risco associado à determinada ameaça. Ação que atua sobre um controle só pode ser determinada após cadastrar e salvar as informações do controle. Os procedimentos dessa regra de negócio devem incluir:

o Clicar na ameaça da lista de ameaças a serem mitigadas ou na vulnerabilidade da lista de vulnerabilidades;

o Selecionar no pop-up menu, ilustrado na Figura 9 – Aba controle – Mitigando Ameaçae 10, que será aberto o tipo de mitigação que será realizada;

o Instanciar objeto control e determinar a ação a ser mitigada;

Figura 9 – Aba controle – Mitigando Ameaça

Figura 10 - Aba Controle – Mitigando Vulnerabilidade

 Seqüenciamento das Abas: A Aba Risco deve exibir os riscos que já foram calculados para determinada ameaça. Os riscos são calculados quando associamos uma ameaça à determinada(s) vulnerabilidade(s) ou quando mitigamos a ameaça. Os procedimentos dessa regra de negócio devem incluir:

o Adicionar uma ameaça, associada ao seu risco inicial, assim que associamos essa ameaça a uma vulnerabilidade na Aba Ameaça;

o Adicionar um risco residual a determinada ameaça, assim que mitigamos uma vulnerabilidade e/ou ameaça;

o Adicionar um risco atual a ameaça, assim que determinado controle proposto for implementado;

o Criar um arquivo XML com todas as ameaças associadas ao risco existentes, quando o botão Exportar Risco (exportXML) é acionado.

 Visualização dos Riscos: Aba devem ser abertas obedecendo à determinada seqüência, de forma a impedir que determinadas ações sejam efetuadas no momento indevido pelo usuário. Os procedimentos dessa regra de negócio devem incluir:

o Ao abrir o programa todas as text box e combo box devem se encontrar desabilitadas;

o Após iniciar uma nova análise ou abrir uma análise anterior, algumas abas são habilitadas;

o A aba análise de risco é a primeira a ser habilitada;

o A aba ativo só é habilitada após cadastrar e salvar a análise de risco; o A aba vulnerabilidade só é habilitada após cadastrar e salvar um ativo; o A aba ameaça só é habilitada após cadastrar e salvar uma vulnerabilidade; o A aba controle só é habilitada após cadastrar uma ameaça.

5 Ferramentas utilizadas

5.1 Eclipse 3.4.0

Eclipse é uma IDE desenvolvida em Java e que começou como um projeto da IBM do Canadá e hoje é mantido pela Eclipse Foundation.

Atualmente o Eclipse é uma das plataformas de desenvolvimento em Java mais utilizadas por programadores, com características marcantes como a possibilidade de adição de plug-ins que permitem ao desenvolvedor modelar o Eclipse de acordo com suas necessidades.

No Eclipse é possível adicionar construção de UML, desenvolvimento de interface gráfica, etc.

O Eclipse foi utilizado no projeto pra implementação do código de forma totalmente satisfatória, se mostrando uma ferramenta robusta e amigável.

5.2 JUDE

JUDE é uma ferramenta de modelagem de UML [3] criada pela empresa Japonesa ChangeVision, atualmente é uma das ferramentas grátis para UML mais poderosas. Com características que não são encontradas nas outras ferramentas grátis, como adicionar métodos no diagrama de seqüência e a alteração se refletir no diagrama de classes.

O JUDE não possui um apelo gráfico tão bom quanto o Poseidon, ou tantas funcionalidades como Rational Rose, mas seu desempenho impressiona, principalmente tratando-se de uma ferramenta desenvolvida totalmente em Java e Swing.

O JUDE foi utilizado no projeto pra criar diagrama de casos de uso [1] e diagramas de UML [1], atendendo perfeitamente as necessidades do projeto.

5.3 WindowsBuilder – SWT Designer

O WindowsBuilder - SWT Designer é um plug-ins para o Eclipse para desenvolvimento de interface GUI. O SWT Designer gera código de interfaces gráficas com as bibliotecas SWT [5] e Swing.

O SWT foi utilizado para desenvolvimento de toda interface GUI integrado ao Eclipse, atendendo perfeitamente as necessidades do projeto.

5.4 JDOM

O JDOM é a biblioteca open source utilizada para modelagem de XML em Java. JDOM é uma integração entre a DOM e a SAX, suportando XPath e XSLT.

O JDOM é utilizado para exportar um arquivo XML, contendo todas as ameaças existentes e seus respectivos riscos.

6 Conclusão

O processo de desenvolvimento deste projeto permitiu a utilização das mais variadas áreas de conhecimento estudadas ao longo do curso de Engenharia Eletrônica e de Computação. Elas abrangeram conhecimentos de Engenharia de Software, programação e desenvolvimento GUI. Este processo foi importante para solidificar os conhecimentos adquiridos na faculdade.

A metodologia utilizada no projeto, a orientação a objeto, foi adequada para o caso e proporcionou que o projeto fosse desenvolvido de forma organizada e objetiva. Através dela conseguimos ver os pontos mais críticos do projeto, assim como planejar as melhores soluções.

Todas as ferramentas utilizadas no projeto atenderam plenamente aos objetivos do sistema, como a linguagem de programação Java e as bibliotecas gráfica SWT, em conjunto com a ferramenta WindowsBuilder – SWT Designer.

Algumas propostas futuras podem ser feitas para a melhoria do sistema como: Geração de Relatório;

Persistência dos dados utilizando XML.

Portanto, pode-se afirmar que o trabalho mostrado neste projeto foi satisfatório, agregando conhecimento ao desenvolvedor, o que será de grande valor ao longo da vida profissional.

7 Referência Bibliograficas

[1] Pressman, Roger S - Software Engineering: A Practitioner's Approach, McGraw-Hill Science/Engineering/Math; 6 edition (2004)

[2] Horstmam, Cay – Big Java, Bookman (2004). Tradução Edson Furmankiewicz. [3] Furlan, José Davi – Modelagem de Objetos através de UML, Makron Book, 1998.

[4] Introduction to the Collections Framework, http://java.sun.com/developer/onlineTraining/collections/ (Acessado em 25 de julho de

2008);

[5] SWT JFACE Eclipse, http://www.java2s.com/Code/Java/SWT-JFace-Eclipse. (Acessado em 08 de agosto de 2008)

[6] Information Security – Management System – Part 3: Guidelines for information security risk management (BS 7799-3:2006), British Standard Institute

Documentos relacionados