• Nenhum resultado encontrado

Uma análise de desempenho do protótipo implementado foi realizada por [6], que di-vidiu a execução dos testes em dois estudos de caso. O primeiro utilizou como métrica de avaliação o tempo médio de resposta de um serviço que é amplamente utilizado pela PCDF e suas instituições parceiras. O tempo médio de resposta consiste no tempo despendido desde o momento da solicitação do serviço até a chegada da resposta na máquina do usuá-rio. Já o segundo, visou a obtenção de resultados mais próximos da realidade vivenciada na PCDF, analisando o protocolo em um cenário extremo de utilização e considerando como métricas, o tempo médio de resposta e a vazão das requisições.

Os estudos de caso realizados evidenciaram que a utilização do protocolo proposto

— com SSL/TLS e várias etapas de negociação até a concretização do acesso ao serviço, impactam de forma significativa o desempenho geral da aplicação. Contudo, mesmo com desempenho inferior, os tempos médios de resposta obtidos nos experimentos atendem aos requisitos de negócio da PCDF e estão dentro do esperado.

Por fim, é importante frisar que não foram realizadas otimizações de desempenho no código-fonte da aplicação que, a nível de protótipo, teve como objetivo a implementação correta da arquitetura e dos mecanismos de segurança especificados, a fim de validar o protocolo proposto.

Capítulo 6

Conclusão e Trabalhos Futuros

Este trabalho apresentou a utilização de programação funcional, mais especificamente, da linguagem Haskell, na implementação de um protocolo criptográfico para o provimento de serviços de forma segura em uma arquitetura orientada a serviços baseada em REST.

As características de Haskell, sobretudo, o sistema de tipos forte, a expressividade e o alto grau de modularidade, a colocam como uma alternativa interessante para o desen-volvimento de soluções, inclusive em nichos predominantemente imperativos, permitindo a rápida prototipação e a escrita de programas com menos bugs. No entanto, Haskell carece de um ambiente de desenvolvimento e ferramentas que facilitem o desenvolvimento de aplicações de médio ou grande porte. Além disso, enfrentou-se problemas referentes ao gerenciamento de dependências e portabilidade da aplicação, que se mostrou incom-patível com versões diferentes da plataforma Haskell disponíveis para diferentes sistemas operacionais.

Como contribuições deste trabalho, tem-se uma implementação em software de um sistema em rede que atende aos requisitos de segurança e desempenho da PCDF e que pode ser generalizado e facilmente implantado em outros contextos, onde uma entidade deseja prover serviços de forma segura e escalável a parceiros conhecidos pela Internet.

Mais especificamente, foram desenvolvidos: dois servidores — um de autenticação e au-torização e outro de fachada, um módulo cliente baseado em REST para automatização dos passos do protocolo e uma biblioteca criptográfica minimalista, totalmente escrita em Haskell, implementando parcialmente a especificação JWT. Essa biblioteca, denominada jwt-min, é pioneira, uma vez que até o momento do desenvolvimento deste trabalho, não foram encontradas implementações estáveis ou minimamente funcionais em Haskell dessa especificação.

Como trabalhos futuros, propõe-se a realização de um processo de auditoria no código-fonte e nas APIs de terceiros utilizadas, tendo-se em vista aspectos de programação segura;

melhorias na documentação e exportação para formatos mais acessíveis; otimizações de desempenho através da detecção de gargalos e profiling de código; e melhoria no empaco-tamento e distribuição dos artefatos de software desenvolvidos.

Por fim, todos os artefatos de software produzidos durante o desenvolvimento deste trabalho estão publicamente disponíveis no GitHub 1.

1https://github.com/alexandrelucchesi/pfec/.

Referências

[1] Algebraic data type. http://www.haskell.org/haskellwiki/Algebraic_data_

type, July 2014. 23

[2] Typeclassopedia. http://www.haskell.org/haskellwiki/Typeclassopedia, July 2014. 34,37

[3] J. Chris Anderson, Jan Lehnardt, and Noah Slater. CouchDB: The Definitive Guide.

O’Reilly Media, Inc., 2010. 67

[4] Elisa Bertino, Lorenzo D. Martino, Federica Maria Francesca Paci, and Anna Squic-ciarini. Security for Web Services and Service-Oriented Architectures. Springer, 2010.

4

[5] G. Brassard. A note on the complexity of cryptography (corresp.). IEEE Trans. Inf.

Theor., 25(2):232–233, September 2006. 13

[6] R. A. da Conceição, R. B. Almeida, and E. D. Canedo. Arquitetura de referência orientada a serviços com foco em segurança. 2014. 1, 2, 4, 12,38, 39, 51,71

[7] Thomas Erl. Service-Oriented Architecture: Concepts, Technology, and Design. Pren-tice Hall PTR, Upper Saddle River, NJ, USA, 2005. 17

[8] Thomas Erl. SOA Principles of Service Design (The Prentice Hall Service-Oriented Computing Series from Thomas Erl). Prentice Hall PTR, Upper Saddle River, NJ, USA, 2007. 15,16

[9] S. Even and Y. Yacobi. Cryptography and np-completeness. volume 293 of Proce-edings of the 7th International Colloquium on Automata, Languages, and Program-ming, pages 195–207. Springer-Verlag, 1980. 13

[10] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, and T. Berners-Lee. Rfc 2616, hypertext transfer protocol – http/1.1, 1999. 20

[11] Roy Fielding. Rest apis must be hypertext-driven. http://roy.gbiv.com/

untangled/2008/rest-apis-must-be-hypertext-driven, October 2008. 18 [12] Roy Thomas Fielding. Architectural Styles and the Design of Network-based Software

Architectures. PhD thesis, 2000. AAI9980887. 18, 19

[13] Snap Framework. Snap framework documentation. http://snapframework.com, March 2014. 56

[14] Elisabeth Freeman, Eric Freeman, Bert Bates, and Kathy Sierra. Head First Design Patterns. O’ Reilly & Associates, Inc., 2004. 26

[15] Camille Furtado, Vinícios Pereira, Leonardo Azevedo, Fernanda Baião, and Flávia Santoro. Arquitetura orientada a serviço — conceituação. 2009. 15

[16] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns:

Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, 1st edition, 1994. 26, 66, 70

[17] Michael R. Garey and David S. Johnson. Computers and Intractability; A Guide to the Theory of NP-Completeness. W. H. Freeman & Co., New York, NY, USA, 1990.

13

[18] Mikhail Glushenkov. An introduction to cabal sandboxes. http://coldwa.st/e/

blog/2013-08-20-Cabal-sandbox.html, July 2014. 47

[19] Oded Goldreich. Foundations of Cryptography: Basic Techniques. Cambridge Uni-versity Press, 2001. x, 13

[20] Joachim Grollmann and Alan L. Selman. Complexity measures for public-key cryp-tosystems. SIAM J. Comput., 17(2):309–335, April 1988. 13

[21] Paul Hudak, John Hughes, Simon Peyton Jones, and Philip Wadler. A history of haskell: Being lazy with class. In Proceedings of the Third ACM SIGPLAN Con-ference on History of Programming Languages, HOPL III, pages 12–1–12–55, New York, NY, USA, 2007. ACM. 2

[22] John Hughes. Why functional programming matters. The Computer Journal, 32:98–

107, 1984. 31,61

[23] M. B. Jones. Json web algorithms (jwa) — draft-ietf-jose-json-web-algorithms-23. http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-23, March 2014. 48, 52

[24] M. B. Jones, J. Bradley, and N. Sakimura. Json web signature (jws)

— draft-ietf-jose-json-web-signature-23. http://tools.ietf.org/html/

draft-ietf-jose-json-web-signature-23, March 2014. 48

[25] M. B. Jones, J. Bradley, and N. Sakimura. Json web token (jwt)

— draft-ietf-oauth-json-web-token-18. http://tools.ietf.org/html/

draft-ietf-oauth-json-web-token-18, March 2014. 48

[26] M. B. Jones, E. Rescorla, and J. Hildebrand. Son web encryption (jwe) — draft-ietf-jose-json-web-encryption-23. http://tools.ietf.org/html/

draft-ietf-jose-json-web-encryption-23, March 2014. 48

[27] Simon L Peyton Jones et al. Haskell 98 language and libraries: the revised report.

Cambridge University Press, 2003. 2

Documentos relacionados