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
- EX004 — Fecho. Arestas: A→B, B→C, C→D, B→E. Liste todos os nós alcançáveis a partir de A. Rubrica: 3 = {A,B,C,D,E}; 2 = falta um; 1 = só os diretos; 0 = nada.
- EX005 — Uso da prova. Explique em duas frases por que acrescentar L3→L1-SIS exige mais revisão do que remover L4→L2. Rubrica: 3 = o acréscimo pode criar novos caminhos transitivos, a remoção não (monotonicidade); 2 = só intuição; 1 = vago; 0 = errado.
- EX006 — Laboratório. Qual aresta isolada do desenho plano dá ao L4 o seu caminho até o L1-SIS? Rubrica: 3 = L2→L1-SIS (com L4→L2 ou L4→L3→L2 a montante); 2 = nomeia só L4→L2; 1 = vago; 0 = errado.
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.