◇ OpenCyber Academy
Engenharia · Capítulo 2 · Português

Capítulo 2 — Matemática discreta

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

Capítulo 2 — Matemática discreta

Mapa da aula

Aula 02 publicada. Mapa, exemplo, EX004.

flowchart TD
  N0["2.1 Grafos de condutos"]
  N1["2.2 Alcançabilidade"]
  N2["2.3 Prova de monotonicidade"]
  N3["Síntese"]
  N0 --> N1 --> N2 --> N3
  N3 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX004"]

Desenho lógico

flowchart LR
  N0["2.1 Grafos de condutos"]
  N1["2.2 Alcançabilidade"]
  N2["2.3 Prova de monotonicidade"]
  N3["Síntese"]
  N0 --> N1 --> N2 --> N3 --> Q["EX004"]
[2.1 Grafos de condutos]
    |
    v
[2.2 Alcançabilidade]
    |
    v
[2.3 Prova de monotonicidade]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX004]

Objetivos de aprendizagem

Você vai (1) representar uma rede de TO como um grafo direcionado; (2) calcular a alcançabilidade entre os níveis Purdue; (3) provar que remover uma aresta não pode acrescentar um caminho.

2.1 Grafos de condutos

No vocabulário da ISA/IEC 62443, zonas são grupos de ativos com requisitos de segurança comuns, e condutos são os caminhos de comunicação permitidos entre elas. Um grafo direcionado modela isso exatamente: os nós são as zonas (L4 escritório, L3.5 DMZ, L3 historiador, L2 SCADA, L1 CLP, L1 SIS, L0 E/S) e uma aresta a→b significa que a pode iniciar tráfego para b. Perguntar "a rede do escritório consegue escrever no sistema de segurança?" vira "o L1-SIS é alcançável a partir do L4?".

Lena monta o grafo da ABP a partir da exportação do firewall, e não do diagrama de rede, porque a exportação é o que é de fato aplicado.

2.2 Alcançabilidade

A busca em profundidade calcula o conjunto de nós alcançáveis a partir de um nó inicial em tempo proporcional ao número de nós mais arestas. A alcançabilidade é transitiva: se L4→L3, L3→L2 e L2→L1-SIS, então o L4 alcança o SIS mesmo sem nenhuma regra direta. As revisões de firewall que conferem as regras uma a uma deixam passar exatamente essa composição, e é por isso que os engenheiros calculam o fecho em vez de ler listas de regras.

Lena executa a busca a partir de cada zona, não só do escritório, e guarda o resultado como uma tabela que a próxima revisão pode comparar.

2.3 Prova de monotonicidade

Alegação: apagar uma aresta nunca aumenta um conjunto alcançável. Prova: qualquer caminho no grafo menor usa apenas arestas que também existem no grafo maior, então todo nó alcançável depois da remoção já era alcançável antes. Daí decorre a regra prática: remoções de regras podem ser aprovadas rapidamente; acréscimos de regras exigem análise, porque podem criar novos caminhos transitivos.

# Lab 23 - reachability count on a synthetic Purdue-layered OT network
# Nodes: L5-ERP, L4-Office, L3.5-DMZ, L3-Hist, L2-SCADA, L1-PLC, L1-SIS, L0-IO
edges_flat=[("L5","L4"),("L4","L3"),("L3","L2"),("L2","L1-PLC"),("L2","L1-SIS"),("L1-PLC","L0"),("L1-SIS","L0"),("L4","L2")]
edges_zoned=[("L5","L4"),("L4","L3.5"),("L3.5","L3"),("L3","L2"),("L2","L1-PLC"),("L1-SIS","L0"),("L1-PLC","L0")]  # SIS not reachable from SCADA
def reach(edges, start):
    g={};
    for a,b in edges: g.setdefault(a,[]).append(b)
    seen=set(); stack=[start]
    while stack:
        n=stack.pop()
        if n in seen: continue
        seen.add(n); stack.extend(g.get(n,[]))
    return seen
for name,e in (("flat",edges_flat),("zoned",edges_zoned)):
    r=reach(e,"L4")
    print(f"{name}: L4 reaches {sorted(r)} count={len(r)} writes_to_SIS={'L1-SIS' in r}")

Saída esperada:

flat: L4 reaches ['L0', 'L1-PLC', 'L1-SIS', 'L2', 'L3', 'L4'] count=6 writes_to_SIS=True
zoned: L4 reaches ['L0', 'L1-PLC', 'L2', 'L3', 'L3.5', 'L4'] count=6 writes_to_SIS=False

Caso sintético — Ashford Batch Plant. A rede original da ABP tinha uma regra de conveniência L4→L2 para a visualização remota da IHM. O laboratório de alcançabilidade mostra que, no desenho plano, a zona do escritório alcança o L1-SIS; no desenho zoneado, com uma DMZ e sem conduto SCADA→SIS, não alcança.

2.4 Erros e limites

Os grafos modelam a iniciação permitida, não o tráfego real nem as vulnerabilidades. Protocolos bidirecionais e ferramentas de acesso remoto podem criar arestas reversas ocultas; inventarie-as explicitamente.

Lena acrescenta uma ferramenta de acesso remoto usada por um fornecedor como uma aresta explícita de fora da planta para o L2, já que as suas sessões são iniciadas para fora, mas carregam comandos para dentro. Sem essa aresta, o grafo mostraria o escritório isolado do SCADA enquanto uma sessão de suporte ainda poderia alcançá-lo. Cada uma dessas arestas é listada com o seu dono e o registro que a justifica, e o grafo é reconstruído depois de qualquer mudança nas ferramentas de acesso remoto ou nos contratos com fornecedores.

Exercícios

Síntese

Zonas e condutos são um grafo; é a alcançabilidade, e não a leitura regra por regra, que responde quem pode tocar o sistema de segurança.

Continue estudando — capítulo 02 de 50

← Capítulo 01 · Índice de capítulos do curso · Capítulo 03 →

Siga para a próxima lição escrita.