OpenCyber Academy
Graduação · Capítulo 15 · Português
Código do curso: OCA-100Capítulo 15: OCA-100-C015

Capítulo 15 — Evidências e medição

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Mapa da aula

Aula 15 publicada. Mapa, exemplo, EX043.

flowchart TD
  N0["15.1 Por que os logs precisam de proteção"]
  N1["Laboratório — Log de auditoria encadeado por hashes"]
  N2["15.2 Ler a cadeia"]
  N3["15.3 Medir os controles"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX043"]

Desenho lógico

flowchart LR
  N0["15.1 Por que os logs precisam de proteção"]
  N1["Laboratório — Log de auditoria encadeado por hashes"]
  N2["15.2 Ler a cadeia"]
  N3["15.3 Medir os controles"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX043"]
[15.1 Por que os logs precisam de proteção]
    |
    v
[Laboratório — Log de auditoria encadeado por hashes]
    |
    v
[15.2 Ler a cadeia]
    |
    v
[15.3 Medir os controles]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX043]

Objetivos de aprendizagem

Você vai (1) tornar os logs evidentes a adulterações com cadeias de hashes; (2) medir os controles de segurança com definições claras; (3) interpretar as evidências com honestidade.

15.1 Por que os logs precisam de proteção

Quando um leitor reclama que alguém acessou seu registro, a Tidewell confere o log de acesso. Mas um insider que tivesse usado os dados indevidamente também poderia editar o log. Priya aprende que as evidências precisam ser evidentes a adulterações (tamper-evident): as mudanças precisam ser detectáveis. Uma cadeia de hashes faz isso incluindo o hash de cada entrada na entrada seguinte, de modo que editar qualquer entrada muda todos os hashes posteriores. Publicar ou guardar separadamente o hash mais recente, chamado de cabeça (head), permite a um auditor detectar edições. Os logs do Certificate Transparency, definidos na RFC 6962, usam uma estrutura relacionada, uma árvore de Merkle, em escala de internet.

Laboratório — Log de auditoria encadeado por hashes

"""Tamper-evident audit log: each entry's hash includes the previous hash (SHA-256)."""
import hashlib
def chain(entries):
    prev, out = "0" * 64, []
    for e in entries:
        prev = hashlib.sha256((prev + e).encode()).hexdigest(); out.append(prev)
    return out

def main():
    log = ["2026-05-01 admin login", "2026-05-01 patron export", "2026-05-02 key rotated"]
    good = chain(log)
    print("head:", good[-1][:16])
    log[1] = "2026-05-01 report viewed"
    bad = chain(log)
    print("head after editing entry 2:", bad[-1][:16])
    print("first differing entry:", next(i + 1 for i, (x, y) in enumerate(zip(good, bad)) if x != y))

if __name__ == "__main__":
    main()

Execute com python3 lab_chain.py. Saída verificada:

head: 4492b592d8b729f0
head after editing entry 2: c36641715cd10666
first differing entry: 2

15.2 Ler a cadeia

O log de três entradas tem uma cabeça que começa com 4492b592. Quando a segunda entrada é editada de "patron export" para "report viewed", a cabeça passa a ser c3664171, e o primeiro hash diferente está na entrada 2, mostrando exatamente onde a adulteração começou. Priya anota o limite: se um insider puder reescrever a cadeia inteira e a cabeça guardada, nada é detectado. A cabeça precisa, portanto, ser guardada onde o insider não possa alterá-la, por exemplo enviada diariamente ao sistema de um auditor separado ou assinada por outra equipe.

15.3 Medir os controles

Priya define medidas para os controles da Tidewell: a porcentagem de contas da equipe que usam chaves de segurança, o número de dias de antecedência com que os certificados são renovados antes da expiração e a proporção de entradas do log de acesso revisadas. Cada medida tem uma definição precisa e uma fonte de dados. Ela relata as linhas de base com honestidade: até agora, apenas 40 por cento da equipe usa chaves de segurança, e as revisões de log acontecem mensalmente, e não semanalmente. Ela resiste a apresentar apenas os números favoráveis, porque as decisões da direção dependem de um quadro preciso. Ela mostra cada medida como uma tendência ao longo dos meses, para que a direção veja se os controles estão melhorando ou piorando.

Exemplo resolvido

Priya constrói um log encadeado por hashes, mostra que uma edição muda a cabeça de 4492b592 para c3664171 e a localiza na entrada 2, e relata as linhas de base dos controles, incluindo a adoção de 40 por cento das chaves de segurança.

Caso sintético. As entradas do log e as linhas de base são inventadas; a RFC 6962 é real.

Erros e limites

As cadeias de hashes só detectam adulterações se a cabeça for protegida separadamente. Medidas sem definição produzem números inconsistentes.

Exercícios

Síntese

Logs à prova de adulteração e medidas relatadas com honestidade transformam afirmações de segurança em evidências que outros podem conferir.

Respostas comentadas

EX043. Cada hash cobre o hash anterior, então uma mudança se propaga pelo restante da cadeia.

EX044. A cabeça mudou de 4492b592 para c3664171, com a primeira diferença na entrada 2.

EX045. Fora do controle do insider, como o sistema de um auditor separado; do contrário, a cadeia inteira pode ser reescrita.