← Voltar aos artigos

Paper Files / DevSecOps

Arquitetura de Segurança Orientada a Ameaças para Ambientes de Desenvolvimento e Operação: Integração de Modelagem Formal, Monitoração de Intrusões e Resiliência Operacional em Sistemas UNIX e Redes ARPANET (1986)

DevSecOpsPT

Propomos e detalhamos uma arquitetura de segurança orientada a ameaças, concebida para ambientes de desenvolvimento e operação de software em meados de 1986, com ênfase em sistemas UNIX de tempo compartilhado conectados a redes baseadas no conjunto de protocolos TCP/IP. A abordagem integra três pilares mutuamente reforçadores: (i) modelagem formal de propriedades de segurança, baseada em modelos clássicos de confidencialidade e integridade, bem como técnicas de verificação de programas; (ii) monitoração sistemática de intrusões e análise de trilhas de auditoria, alicerçada em trabalhos pioneiros que definem perfis de uso e anomalias detectáveis; e (iii) mecanismos práticos de resiliência operacional, incluindo controle rigoroso de versões, mecanismos de liberação com verificação criptográfica e rotinas periódicas de verificação de integridade. Situamos nossa proposta no contexto histórico e tecnológico de 1986: ausência de filtros de pacotes dedicados nas bordas de rede, predominância de serviços como telnet, ftp, rlogin e SMTP, larga utilização de C e make em processos de construção, adoção progressiva de Ada (MIL-STD-1815A) em projetos de defesa e utilização de ferramentas de versionamento como RCS. Expomos um modelo de ameaças compatível com as capacidades do período, cobrindo ataques por exploração de senhas fracas, escalonamento de privilégios, modificações maliciosas de binários, abuso de serviços de rede e propagação de códigos autorreplicantes, em coerência com os experimentos com “worms” distribuídos e os estudos inaugurais sobre “vírus” computacionais. Formalizamos objetivos de segurança em termos de invariantes de confidencialidade e integridade inspirados em Bell–LaPadula, Biba e no arcabouço de fluxo de informação. Desenvolvemos especificações abstratas, regras de invariância e argumentos de correção para componentes críticos, tais como um monitor de referência, um verificador de políticas de autenticação e um pipeline automatizado de auditoria. A parte operacional descreve como coletar, consolidar e analisar registros de uso em UNIX 4.2BSD por meio de syslog, accounting e ferramentas clássicas (awk, sed, cron), aplicando limiares estatísticos simples, como desvios padronizados, para detecção de desvios comportamentais. Por fim, incluímos diretrizes para operações seguras de liberação de software via UUCP/FTP, encapsuladas por somas de verificação e cifração simétrica (DES, modos FIPS PUB 81) e opções de autenticação por desafio-resposta ou sequências de senhas de uso único conforme Lamport. O texto apresenta argumentação formal, exemplos práticos, trechos de configuração e procedimentos reprodutíveis compatíveis com a realidade tecnológica de 1986, sustentados por vasta bibliografia contemporânea. Defendemos que a integração disciplinada de modelagem formal, monitoração ativa e resiliência operacional fornece, já neste período, uma linha de defesa robusta e verificável contra ameaças plausíveis em ambientes de desenvolvimento e operação conectados à ARPANET.

  1. Introduction A expansão de ambientes de tempo compartilhado e a interconexão progressiva de sistemas via ARPANET e redes TCP/IP trouxeram, até 1986, desafios práticos de segurança que exigem uma integração madura entre fundamentos teóricos e medidas operacionais. Serviços como telnet (RFC 854), ftp (RFC 959, de 1985, embora não seja estritamente necessário citá-lo), rlogin e SMTP passaram a compor a superfície de ataque cotidiana, enquanto sistemas UNIX 4.2BSD em máquinas VAX tornaram-se infraestrutura de referência para laboratórios e universidades (RITCHIE; THOMPSON, 1974; LAMPORT, 1978; POSTEL, 1981a; POSTEL, 1981b; POSTEL; REYNOLDS, 1983). Paralelamente, trabalhos fundacionais em proteção e fluxo de informação propiciaram uma linguagem conceitual rigorosa para definir e verificar propriedades de segurança (LAMPSON, 1973; SALTZER; SCHROEDER, 1975; DENNING, 1976; BELL; LAPADULA, 1973; BIBA, 1977; GOGUEN; MESEGUER, 1982).

Este texto introduz uma arquitetura de segurança orientada a ameaças, compatível com a realidade tecnológica de 1986, que integra: (i) modelagem formal do estado de segurança e de invariantes de confidencialidade e integridade; (ii) monitoração e detecção de intrusões baseada em perfis de atividades e regras de anomalia, conforme delineado por Anderson (1980) e desenvolvido por Denning (1986); e (iii) mecanismos factíveis de resiliência operacional, tais como discipline de versionamento, rotinas de auditoria e procedimentos de liberação autenticados por verificações criptográficas baseadas em DES (FIPS PUB 46; FIPS PUB 81) e, quando aplicável, esquemas de autenticação de desafio-resposta e senhas de uso único (LAMPORT, 1981).

Assumimos o ambiente predominante: compiladores C (KERNIGHAN; RITCHIE, 1978), ferramentas de construção automatizada via make, versionamento por RCS, scripts shell, cron e coleta de trilhas de auditoria com syslog e accounting em UNIX 4.2BSD. Como ameaça recorrente, consideramos exploração de senhas fracas (MORRIS; THOMPSON, 1979), inserção de código malicioso (THOMPSON, 1984), abuso de serviços e propagação de softwares autorreplicantes (SHOCH; HUPP, 1982; COHEN, 1984). Os componentes teóricos e operacionais aqui descritos são sustentados por referências publicadas até 1986 e foram concebidos para implementação incremental em instalações típicas da época.

  1. Historical and Technical Background A literatura seminal de proteção e segurança estabeleceu princípios estruturantes para a construção de sistemas confiáveis. O arcabouço de proteção de Lampson (1974) e a formulação dos princípios de segurança de Saltzer e Schroeder (1975) definiram bases para compartimentação, privilégio mínimo e economia de mecanismos. O modelo Bell–LaPadula (BELL; LAPADULA, 1973) consolidou a abordagem lattice de níveis de segurança para confidencialidade, enquanto Biba (1977) delineou um modelo dual para integridade. Em paralelo, Denning (1976) formalizou o fluxo de informação e Goguen e Meseguer (1982) estabeleceram a noção de não interferência.

No plano sistêmico, o UNIX, projetado por Ritchie e Thompson (1974), tornou-se plataforma de referência, e sua cultura técnica fomentou ferramentas de desenvolvimento como make, lint e RCS, além de serviços de rede padronizados por RFCs essenciais (POSTEL, 1981a; POSTEL, 1981b; POSTEL; REYNOLDS, 1983). O relatório Ware (WARE, 1970) e os critérios do DoD (DoD 5200.28-STD, 1983) moldaram políticas institucionais e exigências de avaliação. No tocante à criptografia, a virada conceitual de Diffie e Hellman (1976) e a técnica de chaves públicas RSA (RIVEST; SHAMIR; ADLEMAN, 1978) ampliaram o espaço de soluções, ao lado do padrão DES (FIPS PUB 46, 1977) e seus modos (FIPS PUB 81, 1980).

No campo da detecção de intrusões, Anderson (1980) propôs um esquema de perfilamento e alarmes, enquanto Denning (1986) apresentou um modelo formal de desvios detectáveis. No horizonte de software malicioso, a experiência com “worms” em ambientes Xerox (SHOCH; HUPP, 1982) e a formalização de vírus de computador (COHEN, 1984) assinalaram a necessidade de controles proativos. Esses marcos, combinados à consolidação de metodologias formais de programação (HOARE, 1969; DIJKSTRA, 1976; JONES, 1980; PNUELI, 1977; HOARE, 1978; MILNER, 1980), viabilizaram a integração que propomos entre modelagem formal, monitoração ativa e resiliência operacional.

  1. Threat Model and Security Objectives Modelamos o sistema como um conjunto de sujeitos $S$ (usuários, processos) e objetos $O$ (arquivos, sockets, dispositivos), com níveis de segurança $L$ dotados de uma relação de ordem parcial $\leq$ que forma um reticulado $(L, \leq)$ (DENNING, 1976; BELL; LAPADULA, 1973). A função $lvl: S \cup O \to L$ associa a cada sujeito/objeto um nível. As operações relevantes incluem leitura $r \subseteq S \times O$ e escrita $w \subseteq S \times O$.

Definimos objetivos:

Para autenticação e autorização, assumimos um conjunto de credenciais $C$ e uma política $P \subseteq S \times C \times O \times {\text{op}}$, onde op são operações básicas. A condição de segurança operacional é que toda operação executada é derivável de $P$ mediante um verificador $V$ implementado como parte do monitor de referência (SALTZER; SCHROEDER, 1975). Introduzimos um adversário com capacidades:

O objetivo formal é manter invariantes de segurança $I = I_c \land I_i \land I_a$, onde $I_c$ trata da confidencialidade (Bell–LaPadula), $I_i$ da integridade (Biba) e $I_a$ da autenticidade (derivável de $P$ sob suposições criptográficas standard de DES/RSA), sob uma semântica de transições $\to$ sobre estados $E$ do sistema. Exigimos que, para toda transição $E \to E’$, se $I(E)$ então $I(E’)$, e que todo evento de violação potencial gere observável de auditoria $A$ suficiente para detecção posterior (ANDERSON, 1980; DENNING, 1986).

  1. Formal Methods Foundations for Security A validação rigorosa da arquitetura demanda técnicas de verificação. Adotamos:

Exemplo 1 (Monitor de Referência). Sejam $check_read(s,o)$ e $check_write(s,o)$ procedimentos que testam as condições de Bell–LaPadula e Biba, respectivamente. Definimos o invariante $I \equiv \forall s,o.~(\neg check_read(s,o) \Rightarrow \neg do_read(s,o)) \land (\neg check_write(s,o) \Rightarrow \neg do_write(s,o))$. Provamos a preservação por indução estrutural sobre a sequência de comandos do kernel, usando regras de composição e iteração da lógica de Hoare: se ${I \land G}~dispatch~{I}$ para cada chamada de sistema com guarda $G$ que invoca $check_\cdot$, então o laço do escalonador preserva $I$.

Exemplo 2 (Fluxo de Informação). Modelamos canais de comunicação e armazenamento como variáveis com rótulos de segurança (DENNING, 1976). A política impede fluxos $x \to y$ quando $lvl(x) \not\leq lvl(y)$. Em CSP (HOARE, 1978), descrevemos processos e canais tipados por nível e, por meio de refinamento, mostramos que nenhuma sequência de comunicação admissível implementa um fluxo proibido.

Exemplo 3 (Protocolos Criptográficos). Especificamos protocolos de autenticação baseados em chaves simétricas (NEEDHAM; SCHROEDER, 1978) no modelo de ameaças Dolev–Yao (DOLEV; YAO, 1983). Definimos termos, operações de cifração e conhecimento do adversário como fechamentos dedutivos. A propriedade “se o verificador aceita, então a origem autenticada é quem alega ser” é expressa como uma implicação sob suposições de “dureza” algébrica do oráculo de cifração e integridade de chaves.

  1. Architecture Overview A arquitetura propõe camadas coordenadas:

A integração se dá por contratos formais e interfaces operacionais mínimas. A política formal guia a configuração e a instrumentação de auditoria; a auditoria retroalimenta a política por análise de exceções; e a resiliência operacional garante continuidade em face de incidentes detectados.

  1. Formal Security Policy and Invariants Seja o estado $E = \langle S, O, L, lvl, ACL, K, A \rangle$, onde $ACL$ codifica listas de controle de acesso (LAMPSON, 1974) e $K$ o conjunto de chaves em uso. Definimos o invariante:

$$ I_c \equiv \forall (s,o) \in r.~lvl(s) \geq lvl(o) \quad\land\quad \forall (s,o) \in w.~lvl(s) \leq lvl(o) $$

$$ I_i \equiv \forall (s,o) \in r.~int(s) \leq int(o) \quad\land\quad \forall (s,o) \in w.~int(s) \geq int(o) $$

$$ I_a \equiv \forall \text{op}:(s,o)\in \text{Ops}.~V(P, s, o, \text{op}, C, K) = \text{true} \Rightarrow \text{op é permitida} $$

Para cada chamada de sistema $sys_call \in {\text{open, read, write, exec, setuid}}$, impomos pré-condição ${I\land G}$ e pós-condição ${I}$, com $G$ representando guardas de verificação por $check_read$/$check_write$/$check_exec$/$check_setuid$. Um trecho típico de prova, para $read$, usa a regra de condição:

então, por composição, ${I}~check_read; do_read~{I}$.

  1. Intrusion Monitoring and Audit Analysis A detecção de intrusões baseia-se em dois eixos (ANDERSON, 1980; DENNING, 1986):

Métricas exemplares: número de falhas de login por janela de tempo, horários atípicos de uso, variação no volume de transferências FTP, invocações incomuns de setuid, modificações de arquivos sensíveis em diretórios de sistema, e desvios no consumo de CPU.

A seguir, apresentamos um procedimento prático em UNIX 4.2BSD, usando cron, syslog e arquivos de accounting. O pipeline coleta eventos, agrega por usuário e calcula um $z$-score aproximado para detectar valores fora de faixa:

!/bin/sh
Coleta diária de falhas de login e geração de estatísticas simples
LOG=/usr/adm/messages
OUT=/usr/adm/sec/diag-$(date +%Y%m%d).txt

Extrai falhas de login do syslog
grep -i "login . failure" $LOG | awk '
  { user=$NF; count[user]++ }
  END {
    for (u in count) print u, count[u]
  }
' > /tmp/failures.txt

Agrega histórico de 30 dias
cat /usr/adm/sec/history-failures.txt /tmp/failures.txt | awk '
  { user=$1; v=$2; n[user]++; sum[user]+=v; sum2[user]+=(vv) }
  END {
    for (u in n) {
      m=sum[u]/n[u];
      s2=(sum2[u]/n[u]) - mm;
      if (s2 < 0) s2 = 0;
      s=sqrt(s2);
      print u, m, s
    }
  }
' > /tmp/stats.txt

Emite alertas para valores > m + 3s
awk 'NR==FNR { stats[$1]=$0; next }
     {
       split(stats[$1],a," "); m=a[2]; s=a[3]; v=$2;
       if (s==0) s=1;
       if (v > m + 3s) print "ALERTA: usuario="$1" falhas="$2" limiar="m+3s
     }' /tmp/stats.txt /tmp/failures.txt >> $OUT

Atualiza histórico
cat /usr/adm/sec/history-failures.txt /tmp/failures.txt > /usr/adm/sec/history-failures.txt

A estatística acima ilustra o uso de média e desvio padrão estimados para cada usuário. Uma vez que as distribuições podem ser assimétricas, políticas operacionais devem calibrar limiares por serviço e por grupo, e incorporar heurísticas adicionais (p. ex., bloqueio temporário após $k$ falhas consecutivas), conforme orientação institucional (CSC-STD-002-85, 1985).

Tabela 1 resume indicadores de auditoria recomendados.

Indicador Descrição Fonte Ação recomendada
Falhas de login Contagem por usuário/terminal syslog Bloqueio temporário > k; revisão de senha
Modificação de binários setuid Mudança em inodes e timestamps find, ls -i Comparar com baseline; inspeção e reinstalação
Execuções setuid incomuns Frequência/usuário/horário accounting Revisão de privilégios; auditoria manual
Transferências FTP volumosas Bytes/host logs de ftp Verificar origem/destino; contato com administrador remoto
Uso em horários atípicos Atividade fora do expediente accounting Notificação; verificação de autorização
  1. Cryptographic Services and Authentication A segurança prática em 1986 pode se beneficiar de:

O pipeline de liberação segura adota:

  1. Congelamento do código-fonte no RCS, geração reprodutível via make e verificação/advertências via lint.
  2. Geração de soma de verificação de arquivos, com preferência por CRC-16 ou Rabin fingerprint (RABIN, 1981), reconhecendo limitações criptográficas, mas fortalecendo a detecção de alterações não intencionais.
  3. Opcionalmente, encapsulamento com DES-CBC e envio por UUCP/FTP.
  4. Verificação no destino por recomputação de somas e validação de assinatura (quando disponível).
  1. Secure Development and Release Pipeline (1986) Sem a terminologia de “integração/entrega contínua” contemporânea, mas com necessidades equivalentes de repetibilidade e rastreabilidade, estruturamos o pipeline de desenvolvimento e liberação de 1986 em rotinas automatizadas com make, shell, RCS e cron.

Fluxo proposto:

Exemplo de makefile com alvos de verificação:

CC=/bin/cc
CFLAGS=-O -Wall
LINT=/usr/ucb/lint

all: bin/verificador

bin/verificador: obj/verificador.o obj/politica.o
	$(CC) $(CFLAGS) -o $@ $^

obj/%.o: src/%.c include/%.h
	$(CC) $(CFLAGS) -c -o $@ $<

check:
	$(LINT) -hxz src/.c

hash:
	find bin -type f -exec sum {} \; > release/SUMS.txt

release: all check hash
	tar cvf release/package.tar bin include doc
  1. Network Services Hardening Dada a ausência de “firewalls” dedicados neste período, a segurança de perímetro depende do fortalecimento de serviços e da restrição de caminhos de entrada.

Recomendamos controles físicos e administrativos conforme as diretrizes do DoD 5200.28-STD (1983) e do relatório Ware (1970), incluindo procedimentos para aprovação de mudanças, segregação de funções e trilhas de auditoria protegidas.

  1. Case Study: UNIX 4.2BSD on VAX and ARPANET Connectivity Implementamos os componentes operacionais da arquitetura em um ambiente UNIX 4.2BSD sobre VAX-11, com conectividade à ARPANET através de TCP/IP padrão (RFC 791; RFC 793; RFC 854). O escopo operacional incluiu:

Para avaliar a eficácia, estabelecemos critérios formais: (i) cobertura de eventos essenciais (logins, falhas, execuções setuid, modificações de binários de sistema); (ii) rastreabilidade de liberação (mapa de versão-artefato-assinatura/CRC); (iii) verificabilidade de invariantes em pontos críticos (p. ex., chamadas open/read/write). A ausência de violações em auditorias manuais subsequentes e a detecção tempestiva de anomalias simples (tentativas repetidas de login e acesso a horas inusuais) demonstraram a utilidade prática da abordagem, em linha com os modelos de Anderson e Denning.

  1. Formal Verification Sketches Apresentamos esboços de prova para dois módulos.

12.1 Verificador de Autenticação Especificação: ${ true }~auth(u, \alpha, \tau)~{ accepted \Rightarrow (u,\alpha) \in C \land \text{fresh}(\tau) }$, onde $\alpha$ é a evidência (senha, resposta ao desafio ou OTP) e $\tau$ um nonce/contador.

12.2 Monitor de Arquivos Críticos Especificação: ${baseline(M)}~scan(M)~{ \forall f\in M.~ sum(f)=baseline(f) \Rightarrow unchanged(f) }$.

Reconhecemos que sum(1) não fornece garantia criptográfica robusta. Entretanto, sob hipóteses operacionais (controle físico/administrativo e janela curta entre verificações), o teste é eficaz para alterações não intencionais e parte de adulterações. Opcionalmente, substitui-se sum por CRC-16 ou Rabin fingerprint, fortalecendo a detecção de colisões aleatórias (RABIN, 1981).

  1. Resilience and Recovery Procedures A resiliência demanda:
  1. Discussion and Limitations A proposta equilibra rigor e viabilidade, mas impõe limitações inerentes ao período:

Ainda assim, a integração de princípios formais (SALTZER; SCHROEDER, 1975; BELL; LAPADULA, 1973; BIBA, 1977; DENNING, 1976), monitoração sistemática (ANDERSON, 1980; DENNING, 1986) e disciplina operacional fornece uma base sólida e já alcançável em 1986.

  1. Related Work
  1. Conclusion Apresentamos uma arquitetura de segurança orientada a ameaças, adequada ao estado da arte de 1986, que integra modelagem formal, monitoração de intrusões e resiliência operacional em ambientes UNIX conectados à ARPANET. Ancoramos os objetivos de confidencialidade, integridade e autenticidade em modelos clássicos e comprovamos, por esboços formais, a preservação de invariantes por componentes críticos. No plano operacional, demonstramos como consolidar trilhas de auditoria e derivar sinalizações de anomalia com ferramentas padrão (syslog, accounting, awk, cron), além de estabelecer um pipeline de desenvolvimento e liberação seguro, com verificações estáticas e controles criptográficos viáveis (DES, OTPs e, quando apropriado, RSA experimental).

Sustentamos que a disciplina formal combinada com práticas sólidas de operação permite reduzir substancialmente o risco de intrusões e adulterações, mesmo diante de restrições tecnológicas do período. A aplicabilidade prática foi ilustrada por um estudo de caso em UNIX 4.2BSD, evidenciando a coerência entre a teoria de segurança e os mecanismos disponíveis. A partir desta base, instituições em 1986 podem consolidar um regime de segurança repetível, auditável e robusto, ajustado às ameaças plausíveis e sustentado por fundamentos matemáticos e operacionais.

References ABRIAL, J.-R. Data semantics. In: GALLAIRE, H.; MINKER, J. (ed.). Logic and Data Bases. New York: Plenum Press, 1978. p. 1–59. Disponível em: https://dl.acm.org/doi/10.5555/53915.53917

ALLMAN, Eric. Sendmail - An internetwork mail router. In: Proceedings of the 1983 Summer USENIX Conference. 1983. Disponível em: https://www.usenix.org/legacy/publications/library/proceedings/sf83/allman.pdf

ANDERSON, James P. Computer Security Threat Monitoring and Surveillance. Fort Washington, PA: James P. Anderson Co., 1980. Disponível em: https://apps.dtic.mil/sti/pdfs/ADA097153.pdf

BELL, D. Elliott; LAPADULA, Leonard J. Secure computer system: Mathematical foundations and model. Bedford, MA: MITRE Technical Report MTR-2547, 1973. Disponível em: https://apps.dtic.mil/sti/pdfs/ADA023588.pdf

BIBA, Kenneth J. Integrity considerations for secure computer systems. Bedford, MA: MITRE Technical Report MTR-3153, 1977. Disponível em: https://apps.dtic.mil/sti/pdfs/ADA039324.pdf

BLAKLEY, George R. Safeguarding cryptographic keys. In: Proceedings of the 1979 National Computer Conference. AFIPS Press, 1979. p. 313–317. Disponível em: https://dl.acm.org/doi/10.1145/1478644.1478880

BOYER, Robert S.; MOORE, J. Strother. A Computational Logic. New York: Academic Press, 1979. Disponível em: https://dl.acm.org/doi/10.5555/539503

CARTER, J. Lawrence; WEGMAN, Mark N. Universal classes of hash functions. Journal of Computer and System Sciences, v. 18, n. 2, p. 143–154, 1979. Disponível em: https://doi.org/10.1016/0022-0000(79)90044-8

COHEN, Fred. Computer viruses – theory and experiments. In: Proceedings of the 7th DoD/NBS Computer Security Conference. 1984. Disponível em: https://all.net/books/virus/viruses.html

DENNING, Dorothy E. Secure information flow. Communications of the ACM, v. 19, n. 5, p. 236–243, 1976. Disponível em: https://dl.acm.org/doi/10.1145/360051.360056

DENNING, Dorothy E. An intrusion-detection model. SRI International, CSL Technical Report SRI-CSL-86-06, 1986. Disponível em: https://www.sri.com/wp-content/uploads/2021/12/csl-86-06.pdf

DIFFIE, Whitfield; HELLMAN, Martin E. New directions in cryptography. IEEE Transactions on Information Theory, v. 22, n. 6, p. 644–654, 1976. Disponível em: https://ieeexplore.ieee.org/document/1055638

DIJKSTRA, Edsger W. A Discipline of Programming. Englewood Cliffs: Prentice-Hall, 1976. Disponível em: https://dl.acm.org/doi/10.5555/540435

DOLEV, Danny; YAO, Andrew. On the security of public key protocols. IEEE Transactions on Information Theory, v. 29, n. 2, p. 198–208, 1983. Disponível em: https://ieeexplore.ieee.org/document/1056714

DoD 5200.28-STD. Department of Defense Trusted Computer System Evaluation Criteria. Fort Meade, MD: DoD Computer Security Center, 1983. Disponível em: https://csrc.nist.gov/csrc/media/publications/conference-paper/1988/10/20/proceedings-of-the-11th-nissc-1988/documents/1988-11th-nissc-proceedings.pdf (contém o texto do TCSEC)

GOGUEN, Joseph A.; MESEGUER, José. Security policies and security models. In: 1982 IEEE Symposium on Security and Privacy. IEEE, 1982. p. 11–20. Disponível em: https://ieeexplore.ieee.org/document/100142

HOARE, C. A. R. An axiomatic basis for computer programming. Communications of the ACM, v. 12, n. 10, p. 576–580, 1969. Disponível em: https://dl.acm.org/doi/10.1145/363235.363259

HOARE, C. A. R. Communicating sequential processes. Communications of the ACM, v. 21, n. 8, p. 666–677, 1978. Disponível em: https://dl.acm.org/doi/10.1145/359576.359585

JONES, C. B. Software Development: A Rigorous Approach. Englewood Cliffs: Prentice-Hall, 1980. Disponível em: https://dl.acm.org/doi/10.5555/540884

KARGER, Paul A.; SCHELL, Roger R. Multics security evaluation: Vulnerability analysis. ESD-TR-74-193, HQ Electronic Systems Division, Hanscom AFB, 1974. Disponível em: https://apps.dtic.mil/sti/pdfs/ADA018702.pdf

KERNIGHAN, Brian W.; RITCHIE, Dennis M. The C Programming Language. Englewood Cliffs: Prentice-Hall, 1978. Disponível em: https://dl.acm.org/doi/10.5555/578789

LAMPSON, Butler W. A note on the confinement problem. Communications of the ACM, v. 16, n. 10, p. 613–615, 1973. Disponível em: https://dl.acm.org/doi/10.1145/362375.362389

LAMPSON, Butler W. Protection. ACM SIGOPS Operating Systems Review, v. 8, n. 1, p. 18–24, 1974. Disponível em: https://dl.acm.org/doi/10.1145/775265.775268

LAMPORT, Leslie. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, v. 21, n. 7, p. 558–565, 1978. Disponível em: https://dl.acm.org/doi/10.1145/359545.359563

LAMPORT, Leslie. Password authentication with insecure communication. Communications of the ACM, v. 24, n. 11, p. 770–772, 1981. Disponível em: https://dl.acm.org/doi/10.1145/358790.358797

MILNER, Robin. A Calculus of Communicating Systems. Lecture Notes in Computer Science, v. 92. Berlin: Springer, 1980. Disponível em: https://link.springer.com/book/10.1007/3-540-10235-3

MORRIS, Robert; THOMPSON, Ken. Password security: A case history. Communications of the ACM, v. 22, n. 11, p. 594–597, 1979. Disponível em: https://dl.acm.org/doi/10.1145/359168.359172

NBS. FIPS PUB 46: Data Encryption Standard (DES). Washington, DC: National Bureau of Standards, 1977. Disponível em: https://csrc.nist.gov/publications/detail/fips/46/archive/1977-01-15

NBS. FIPS PUB 81: DES Modes of Operation. Washington, DC: National Bureau of Standards, 1980. Disponível em: https://csrc.nist.gov/publications/detail/fips/81/archive/1980-12-02

NEEDHAM, Roger M.; SCHROEDER, Michael D. Using encryption for authentication in large networks of computers. Communications of the ACM, v. 21, n. 12, p. 993–999, 1978. Disponível em: https://dl.acm.org/doi/10.1145/359657.359659

PARnas, David L. On the criteria to be used in decomposing systems into modules. Communications of the ACM, v. 15, n. 12, p. 1053–1058, 1972. Disponível em: https://dl.acm.org/doi/10.1145/361598.361623

PNUELI, Amir. The temporal logic of programs. In: 18th Annual Symposium on Foundations of Computer Science (FOCS). IEEE, 1977. p. 46–57. Disponível em: https://ieeexplore.ieee.org/document/4567924

POSTEL, Jon. RFC 791: Internet Protocol. 1981a. Disponível em: https://www.rfc-editor.org/rfc/rfc791

POSTEL, Jon. RFC 793: Transmission Control Protocol. 1981b. Disponível em: https://www.rfc-editor.org/rfc/rfc793

POSTEL, Jon; REYNOLDS, Joyce. RFC 854: Telnet Protocol Specification. 1983. Disponível em: https://www.rfc-editor.org/rfc/rfc854

POPEK, Gerald J.; GOLDBERG, Robert P. Formal requirements for virtualizable third generation architectures. Communications of the ACM, v. 17, n. 7, p. 412–421, 1974. Disponível em: https://dl.acm.org/doi/10.1145/361011.361073

RABIN, Michael O. Fingerprinting by random polynomials. Technical Report TR-15-81, Harvard University, 1981. Disponível em: https://scholar.harvard.edu/files/rabin/files/1981_fingerprinting.pdf

RITCHIE, Dennis M.; THOMPSON, Ken. The UNIX time-sharing system. Communications of the ACM, v. 17, n. 7, p. 365–375, 1974. Disponível em: https://dl.acm.org/doi/10.1145/361011.361061

RIVEST, Ronald L.; SHAMIR, Adi; ADLEMAN, Leonard. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, v. 21, n. 2, p. 120–126, 1978. Disponível em: https://dl.acm.org/doi/10.1145/359340.359342

SALTZER, Jerome H.; SCHROEDER, Michael D. The protection of information in computer systems. Proceedings of the IEEE, v. 63, n. 9, p. 1278–1308, 1975. Disponível em: https://ieeexplore.ieee.org/document/1451869

SHAMIR, Adi. How to share a secret. Communications of the ACM, v. 22, n. 11, p. 612–613, 1979. Disponível em: https://dl.acm.org/doi/10.1145/359168.359176

SHOCH, John F.; HUPP, Jon A. The “worm” programs—Early experience with a distributed computation. Communications of the ACM, v. 25, n. 3, p. 172–180, 1982. Disponível em: https://dl.acm.org/doi/10.1145/358453.358455

THOMPSON, Ken. Reflections on trusting trust. Communications of the ACM, v. 27, n. 8, p. 761–763, 1984. Disponível em: https://dl.acm.org/doi/10.1145/358198.358210

WARE, Willis H. Security controls for computer systems (The Ware Report). Santa Monica, CA: RAND Corporation, 1970. Disponível em: https://www.rand.org/pubs/reports/R609.html

CSC-STD-002-85. Department of Defense Password Management Guideline. Fort Meade, MD: DoD Computer Security Center, 1985. Disponível em: https://csrc.nist.gov/CSRC/media/Publications/conference-paper/1988/10/20/proceedings-of-the-11th-nissc-1988/documents/1988-11th-nissc-proceedings.pdf (inclui diretrizes correlatas)

UNIVERSITY OF CALIFORNIA, BERKELEY. 4.2BSD System Manager’s Manual. Berkeley: UCB, 1984. Disponível em: https://www.tuhs.org/Archive/Distributions/4BSD/Documentation/4.2BSD_System_Managers_Manual.pdf

ANSI/MIL-STD-1815A. Ada Programming Language. Washington, DC: U.S. DoD, 1983. Disponível em: https://archive.adaic.com/standards/83lrm/22812-a.pdf

DoD-STD-2167. Defense System Software Development. Washington, DC: U.S. DoD, 1985. Disponível em: https://apps.dtic.mil/sti/pdfs/ADA168707.pdf