Segurança e honestidade

Segurança dos Commands

Como o Ploy protege os Commands e o seu histórico: impressões digitais das versões, níveis de sensibilidade, a credencial do Mac, a cifra e a chave de recuperação, aprovações assinadas, recibos e o registo de auditoria.

Um Command pode ter regras de uma empresa, e o histórico dele pode ter de provar, mais tarde, quem fez cada versão, quem a aprovou, quem a correu, que versão exata correu, quando, o que fez e o que deu. Esta página diz como o Ploy guarda essas provas e em que condições valem. Nenhuma garantia é absoluta: cada uma vale com o que está escrito ao lado dela.

Há quatro coisas diferentes, e o Ploy não as mistura:

O quê A pergunta No Ploy
Cifra Quem consegue ler o conteúdo? Os Commands confidenciais e críticos ficam cifrados no disco.
Autenticação É mesmo esta pessoa? A credencial do Mac, com o Touch ID ou a palavra-passe do Mac.
Autorização Esta pessoa pode fazer isto a este Command? Os papéis na equipa e o nível do Command. Confirmar quem és, sozinho, não dá acesso a nada.
Aprovação Uma pessoa responsável aceitou exatamente este conteúdo? Uma declaração assinada sobre a impressão digital da versão.

Identidades e impressões digitais

  • Cada Command tem uma identidade que nunca se repete, mostrada como CMD- e oito caracteres (por exemplo CMD-3F9A21C7). Um Command de equipa mantém a mesma em todos os Macs.
  • Cada versão tem o número e a impressão digital: o SHA-256 da definição guardada, que cobre tudo (objetivo, passos, regras, critérios, informações, ferramentas, tipo de trabalho, «Pedir autorização antes de cada ação», recuperação, resultados, testes e nível). O cabeçalho de cada Command mostra a identidade, a versão e o início da impressão digital.
  • Cada execução tem uma identidade com a data, por exemplo RUN-20261027-5B0C7D2E.
  • Cada pessoa aparece com o nome e a impressão digital da sua chave de assinatura.

As versões não mudam depois de guardadas: cada alteração faz uma versão nova, e repor uma antiga também. Se o conteúdo de uma versão for mexido fora do Ploy, deixa de bater com a impressão digital, e a página diz «O conteúdo guardado não corresponde à impressão digital da versão: foi alterado fora do Ploy. Não corre nem se aprova.»

Os níveis de sensibilidade

Cada Command tem um nível, que escolhes em «Editar…» › «Ferramentas e permissões» › «Sensibilidade». A página do Command mostra-o com o que ele pede.

Nível Confirmar quem és Aprovações Cifrado no disco
Normal Não 1 Não
Restrito Sim, e vale 60 minutos 1 Não
Confidencial Sim, e vale 15 minutos 1 Sim
Crítico Em cada execução 2 pessoas diferentes; quem o escreveu nunca aprova sozinho Sim

Aprovar uma versão acima de normal também pede que confirmes quem és. Uma equipa pode dar outro nome aos níveis e torná-los mais exigentes, nunca menos. Quando a versão que corre e a mais recente têm níveis diferentes, vale o mais exigente.

A credencial deste Mac

Em Commands, o botão «+» › «Segurança…» abre «Segurança dos Commands».

  • «Registar este Mac…» pede o Touch ID ou a palavra-passe do Mac e cria, dentro do Secure Enclave, uma credencial que confirma que és tu e uma chave de conteúdo que abre os Commands confidenciais. O Ploy nunca vê nem guarda dados biométricos: o macOS confirma, e a credencial assina um desafio novo de cada vez.
  • Sem credencial, «os Commands normais funcionam como sempre; os outros não correm nem se aprovam».
  • «Registar de novo…» faz credenciais novas e passa para elas o que as antigas abriam. A chave de recuperação que já guardaste continua a valer.
  • «Bloquear o confidencial agora» volta a fechar os Commands confidenciais abertos nesta sessão.

A chave de recuperação

Na primeira vez que registas o Mac, o Ploy mostra «Guarda a chave de recuperação»: um código de 52 letras e números, em grupos de cinco, sem as letras e os algarismos que se confundem (I, O, 0 e 1). «Se perderes este Mac, é a única forma de voltar a abrir os Commands confidenciais. Escreve-a num papel ou guarda-a no gestor de palavras-passe. O Ploy não a guarda e não a volta a mostrar.» A folha só fecha depois de marcares «Guardei a chave».

Num Mac novo, registas o Mac e usas «Recuperar com a chave guardada…»: o que a chave abria passa a abrir-se também com a chave de conteúdo do Mac novo. Maiúsculas, espaços e hífenes no código não contam; um carácter errado é recusado.

A cifra

O conteúdo de um Command confidencial ou crítico fica cifrado com AES-256-GCM, com uma chave nova por versão. Essa chave é guardada à parte, embrulhada para cada chave que a pode abrir: a chave de conteúdo deste Mac (no Secure Enclave), a chave de recuperação e, numa equipa, as chaves de leitura dos membros que o podem ler.

  • Um Command fechado mostra «Conteúdo cifrado: abre-se depois de confirmares que és tu.», com «Abrir…». Depois de confirmares, fica aberto por um tempo limitado, ou até carregares em «Bloquear o confidencial agora».
  • Quando não há chave que o abra, o Command fica fechado: vês o nome e o nível, e nada corre, nada se publica e nada se guarda em claro.
  • Ter uma chave não chega: abrir pede também o direito de ler. Numa equipa, quem perdeu esse papel não o volta a abrir.

Aprovações e retiradas

Uma aprovação é uma declaração assinada sobre a impressão digital de uma versão. Só conta quando a assinatura confere e quando vem de quem pode aprovar aqui: tu, nos teus Commands; os aprovadores da equipa, nos da equipa. Dois Macs da mesma pessoa contam como um aprovador. Uma aprovação escrita à mão na base de dados, com outra chave, não conta.

Em cada versão, «Retirar…» pergunta «Retirar a versão N?» e pede «Porquê (fica no registo)». A versão «Fica guardada, assinada e no registo, mas não volta a correr. Se for a versão aprovada, nada corre até aprovares uma nova.» Uma versão retirada também deixa de correr como teste.

Antes, durante e depois de uma execução

Antes. O Ploy confirma, por esta ordem: o Command e a versão; que podes corrê-lo (numa equipa, com os papéis e as retiradas lidos de novo da biblioteca); que a versão está aprovada, com aprovações que conferem, e não foi retirada; quem és, se o nível o pede; e que o conteúdo, aberto, bate com a impressão digital. A execução fica presa à versão e à impressão digital que viste: se entretanto for aprovada outra versão ou esta for retirada, a execução para. A folha de execução mostra antes o que a versão pode fazer.

Durante. Num Command de equipa, a biblioteca é relida de meio em meio minuto. Se a equipa retirar a versão ou tirar o teu direito, uma execução confidencial ou crítica para logo e as outras acabam.

Depois. O Ploy faz um recibo a partir dos acontecimentos guardados da execução, assina-o com a tua chave e regista-o na auditoria. Uma execução que estava a meio quando o Ploy fechou é registada como interrompida no arranque seguinte.

Recibos

Em cada execução, no Studio, «Recibo» abre o «Recibo de execução»:

  • a identidade da execução e o estado;
  • se está íntegro: «Íntegro: assinado por … e registado na auditoria deste Mac.», ou que a assinatura não confere, ou que está assinado mas não está nesta auditoria (pode vir de outro Mac);
  • o Command, a versão com a impressão digital, o autor da versão, quem a aprovou, quem a correu e como confirmou quem era;
  • o início, o fim, a duração e o relógio usado;
  • as informações dadas, só como impressões digitais, nunca os valores;
  • as ações, os ficheiros (caminho, tamanho e SHA-256) e os critérios, com os que foram «lidos por um modelo» marcados.

«Exportar…» grava o recibo assinado num ficheiro JSON com o nome da execução (RUN-….json), que podes verificar com ploy receipt verify. Uma execução de antes de haver recibos diz que não tem recibo, em vez de um botão que não faz nada. Os recibos ficam depois de reiniciar e depois de apagares o Command.

Contestar. No recibo, podes «Contestar a execução», «Acrescentar uma nota ou evidência» ou «Registar a decisão da revisão». Cada uma é um acontecimento novo, assinado e ligado ao recibo: «nada do que já está escrito muda. Serve para reconstruir os factos, não para decidir culpas.»

Comparar. «Comparar» em duas execuções abre «Comparar duas execuções»: se correram a mesma versão, o estado, quem correu, o início, a duração, as informações dadas, as ações, as ferramentas, os critérios cumpridos e os pedidos e erros. Os valores das informações não se comparam, e a folha lembra que os registos mostram factos, não competência nem culpa.

As horas

As horas ficam em UTC e aparecem na hora local, com o fuso. Vêm do relógio deste Mac, e o recibo di-lo. Uma execução que acaba antes de começar, uma ação mais antiga do que a anterior ou um acontecimento da auditoria mais antigo do que o anterior ficam assinalados como problema de relógio, nunca corrigidos.

O registo de auditoria

Cada versão, aprovação, retirada, execução e contestação fica num registo encadeado: cada acontecimento leva a impressão digital do anterior e é assinado com a chave deste Mac. O Ploy não o deixa reescrever nem encurtar: a base de dados recusa alterar ou apagar estes registos, as aprovações e os recibos.

Em «Segurança dos Commands», «Verificar o registo» percorre a cadeia e diz «Íntegro: N eventos», ou «Quebrado no evento N», com o motivo. «Exportar o registo…» grava-o num ficheiro JSON (de origem registo-de-auditoria-ploy.json). Na linha de comandos, ploy audit verify faz o mesmo (Linha de comandos).

Por ser só de acrescentar, o registo de auditoria e os recibos ficam mesmo depois de «Apagar todo o histórico…» (ver Pastas e dados).

O que isto protege e o que não protege

Quem O que pode tentar O que o impede O que fica
Um colega com acesso de escrita à pasta da equipa Acrescentar, mudar ou substituir ficheiros Cada ficheiro é assinado e só é lido quando a assinatura confere e a chave é de confiança Apagar ficheiros: cada Mac guarda o que já aceitou, e o apagado é assinalado
Quem quer mudar um procedimento depois de correr Guardar ou publicar outra versão As versões não mudam, cada execução fica presa à impressão digital que correu, e os recibos são assinados por quem correu Quem controla um Mac e as suas chaves pode forjar o histórico desse Mac: o recibo exportado é a prova que sai das tuas mãos
O autor de um Command crítico Aprová-lo sozinho São precisas duas pessoas diferentes, contadas pelo armazenamento, não pela interface Duas pessoas que combinem entre si
Alguém com o Mac desbloqueado à frente Correr Commands Restritos e acima pedem o Touch ID ou a palavra-passe, como o nível diz Os Commands normais correm, de propósito
Alguém que copia a base de dados Lê-la Confidenciais e críticos estão cifrados Os normais e os restritos leem-se, como as tuas conversas
Uma página, um documento ou um email lido durante uma execução Dar ordens ao modelo Não alarga permissões, não aprova, não paga, não apaga, e os critérios são verificados pelo código Os critérios lidos por um modelo são a leitura de um modelo, e dizem-no

Fora do âmbito, e dito onde importa: esconder um procedimento de quem o corre no seu próprio Mac (o conteúdo tem de ser legível pelo processo que o corre; uma empresa que precise disso tem de correr a parte confidencial numa máquina que controla), e proteger contra um administrador do Mac.

O que está provado e o que falta

  • Testado: as impressões digitais, as versões imutáveis, as aprovações e retiradas assinadas, a cifra com o Secure Enclave real, o comportamento sem chave, a chave de recuperação, os papéis, a regra das duas pessoas com chaves reais, os recibos e a cadeia de auditoria. Uma execução real com o Saturn (um orçamento de pintura, quatro critérios em quatro) deu um recibo que ploy receipt verify e ploy audit verify confirmam, e uma cópia com outra pessoa como executante foi recusada.
  • Feito, sem teste automático: a confirmação de identidade por nível, o registo e a recuperação do Mac, e a paragem de uma execução quando a equipa tira o direito, porque precisam de uma pessoa ao Mac ou de um modelo a correr.
  • O teu passo: registar o Mac com o Touch ID é teu; o Ploy não confirma por ti.
  • Ainda não existe: chaves de acesso (passkeys), um registo de auditoria num servidor da empresa, papéis centrais, e tudo isto em Windows.