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