Programação de rede segura - Secure Network Programming
Secure Network Programming (SNP) é um protótipo do primeiro Secure Sockets Layer , projetado e construído pelo Networking Research Laboratory da Universidade do Texas em Austin , liderado por Simon S. Lam . Este trabalho foi publicado na conferência técnica de verão USENIX de 1994. Por este projeto, os autores ganharam o 2004 ACM Software System Award .
Este trabalho começou em 1991 como uma investigação teórica pelo Networking Research Laboratory sobre o significado formal de uma camada de protocolo que satisfaz uma especificação de interface superior como um provedor de serviço e uma especificação de interface inferior como um consumidor de serviço. O Networking Research Laboratory recebeu uma bolsa da National Security Agency em junho de 1991 para investigar como aplicar sua teoria de módulos e interfaces à verificação de segurança. Naquela época, havia três sistemas de autenticação bem conhecidos construídos ( Kerberos do MIT ) ou em desenvolvimento (SPX do DEC e KryptoKnight da IBM). Todos esses sistemas sofriam de uma desvantagem comum: eles não exportavam uma interface limpa e fácil de usar que pudesse ser facilmente usada por aplicativos da Internet. Por exemplo, seria necessário um enorme esforço para “kerberizar” um aplicativo distribuído existente.
Em direção ao objetivo de "programação de rede segura para as massas", os inventores do SNP conceberam soquetes seguros como uma abstração de alto nível adequada para proteger aplicativos da Internet. Em 1993, eles projetaram e construíram um protótipo de SNP. Projetado como uma subcamada de aplicativo sobre os soquetes, o SNP fornece uma interface de usuário muito semelhante aos soquetes. Essa semelhança foi projetada para que a segurança pudesse ser adaptada aos programas de soquete existentes com apenas pequenas modificações. Além disso, com essa subcamada cuidadosamente projetada e sua implementação totalmente depurada, ela pode ser facilmente usada por qualquer aplicativo da Internet que use soquetes para comunicações ponta a ponta. Esta é uma ideia natural em retrospectiva, mas, em 1993, era uma novidade e um grande afastamento da pesquisa de segurança de rede convencional na época.
Os sockets seguros SNP suportam semântica de stream e datagrama com garantias de segurança (ou seja, autenticidade de origem de dados, autenticidade de destino de dados, integridade de dados e confidencialidade de dados.) Muitas das ideias e opções de design em SNP podem ser encontradas em camadas de sockets seguros subsequentes, incluindo : colocação de terminais de comunicação autenticados na camada de aplicativo , uso de criptografia de chave pública para autenticação, protocolo de handshake para estabelecer o estado da sessão, incluindo um segredo compartilhado, uso de criptografia de chave simétrica para confidencialidade de dados e gerenciamento de contextos e credenciais na camada de soquetes seguros.
O artigo apresentado em 8 de junho de 1994 na Conferência Técnica de Verão da USENIX inclui o design do sistema junto com os resultados da medição de desempenho da implementação do protótipo para demonstrar claramente a praticidade de uma camada de soquetes segura.
SNP inventou soquetes seguros para aplicativos de Internet em geral, de forma independente e simultaneamente com o projeto e desenvolvimento do protocolo HTTP para a web que ainda estava em sua infância em 1993. Camadas de soquete seguras subsequentes ( SSL por Netscape e TLS por IETF ) , reimplementado vários anos depois usando ideias-chave apresentadas pela primeira vez no SNP, permitiu o comércio eletrônico seguro entre navegadores e servidores. Hoje, muitos aplicativos da Internet (incluindo e-mail ) usam HTTPS, que consiste em HTTP executado em uma camada de soquetes segura.