Capítulo 32 — Criptografia e serviços de confiança: confiabilidade
Mapa da aula
Aula 32 publicada. Mapa, exemplo, EX094.
flowchart TD
N0["32.1 Confiabilidade das pessoas e dos serviços"]
N1["Laboratório — Quórum de custodiantes"]
N2["32.2 Ler os resultados do quórum"]
N3["32.3 Redundância para os serviços"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX094"]
Desenho lógico
flowchart LR
N0["32.1 Confiabilidade das pessoas e dos serviços"]
N1["Laboratório — Quórum de custodiantes"]
N2["32.2 Ler os resultados do quórum"]
N3["32.3 Redundância para os serviços"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX094"]
[32.1 Confiabilidade das pessoas e dos serviços]
|
v
[Laboratório — Quórum de custodiantes]
|
v
[32.2 Ler os resultados do quórum]
|
v
[32.3 Redundância para os serviços]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX094]
Objetivos de aprendizagem
Você vai (1) modelar a disponibilidade dos custodiantes de chaves e dos serviços; (2) escolher tamanhos de quórum para a recuperação; (3) projetar redundância sem enfraquecer a segurança.
32.1 Confiabilidade das pessoas e dos serviços
Uma chave que não pode ser usada quando necessário é uma falha de confiabilidade. Aiyana modela o processo de recuperação da raiz do firmware, que exige custodiantes com smart cards. Se apenas um custodiante guardar o backup da raiz, a raiz ficará indisponível sempre que essa pessoa estiver doente ou viajando, e perdida se ela sair. Se todos os cinco precisarem estar presentes, a disponibilidade cai bruscamente. Esquemas de quórum, em que quaisquer m de n custodiantes bastam, equilibram as duas coisas. Ela usa probabilidade para escolher m e n, dada a disponibilidade de cada custodiante.
Laboratório — Quórum de custodiantes
"""Probability that at least m of n key custodians are reachable (each independently with prob a)."""
from math import comb
def at_least(m, n, a):
return sum(comb(n, k) * a ** k * (1 - a) ** (n - k) for k in range(m, n + 1))
def main():
for m, n in [(1, 1), (2, 3), (3, 5), (5, 5)]:
print(f"{m}-of-{n}, each 0.90 reachable: P = {at_least(m, n, 0.90):.4f}")
if __name__ == "__main__":
main()
Execute com python3 lab_quorum.py. Saída verificada:
1-of-1, each 0.90 reachable: P = 0.9000
2-of-3, each 0.90 reachable: P = 0.9720
3-of-5, each 0.90 reachable: P = 0.9914
5-of-5, each 0.90 reachable: P = 0.5905
32.2 Ler os resultados do quórum
Com cada custodiante alcançável 90 por cento do tempo, um único custodiante dá disponibilidade de 0,90, dois de três dão 0,972, três de cinco dão 0,9914, e exigir todos os cinco dá apenas 0,5905. Exigir todo mundo é pior do que depender de uma só pessoa. Aiyana recomenda três de cinco para a raiz: alta disponibilidade, e nenhum par de custodiantes consegue conspirar para recuperar a chave sozinho. O recurso de divisão de chaves do fornecedor do HSM implementa a divisão; ela não implementa por conta própria o compartilhamento de segredos, coerente com a regra contra a criptografia caseira. Sua escolha é registrada na política de gerenciamento de chaves.
32.3 Redundância para os serviços
Para o serviço de chaves online, Aiyana projeta réplicas ativo-standby em dois data centers, com as chaves replicadas em forma cifrada entre HSMs do mesmo modelo. A replicação usa o mecanismo seguro de transferência de chaves do fornecedor, de modo que as chaves nunca aparecem em texto claro. O failover é testado a cada trimestre. Ela registra um trade-off: mais réplicas significam mais lugares a proteger e auditar. Ela limita as réplicas a dois sites e exige os mesmos controles físicos em ambos. Confiabilidade e segurança só se reforçam mutuamente quando a redundância é projetada com o mesmo rigor que o sistema primário.
Exemplo resolvido
Aiyana escolhe um quórum de três de cinco custodiantes (disponibilidade de 0,9914) implementado pelo fornecedor do HSM e réplicas ativo-standby do serviço de chaves em dois sites, com testes trimestrais de failover.
Caso sintético. Os números de disponibilidade são premissas inventadas.
Erros e limites
As premissas de independência falham se os custodiantes viajarem juntos ou trabalharem no mesmo prédio. Mais réplicas aumentam a superfície de ataque.
Exercícios
-
EX094 — Quórum de todos os cinco. Que disponibilidade se obtém exigindo todos os cinco custodiantes, e por que isso é ruim? Rubrica: 3 = 0,5905, pior do que um único custodiante;; 2 = número;; 1 = bom;; 0 = nenhuma.
-
EX095 — Quórum recomendado. Que quórum Aiyana recomenda, e por quê? Rubrica: 3 = três de cinco: disponibilidade de 0,9914, e nenhum par consegue conspirar;; 2 = 3 de 5;; 1 = 1 de 1;; 0 = nenhuma.
-
EX096 — Implementação da divisão. Quem implementa a divisão da chave, e por quê? Rubrica: 3 = o recurso do fornecedor do HSM, evitando a criptografia caseira;; 2 = fornecedor;; 1 = Aiyana;; 0 = nenhuma.
Síntese
Projetos de quórum e de redundância mantêm as chaves disponíveis sem concentrar poder, desde que construídos sobre mecanismos avaliados e testados.
Continue estudando — aula 32 (capítulo 32 de 50)
← Capítulo 31 · Índice das aulas · Capítulo 33 →
Continue para a próxima aula já escrita.