Depois de ter brincado com um #YubiHSM durante cerca de 4 dias inteiros, estou meio feliz com a escolha! 😁 Dito isso, também deixa a desejar em vários aspectos, então a sua experiência pode variar (também em alguns lugares onde eu precisava que não deixasse a desejar). 🧵
Onde realmente brilha é nas suas capacidades e na relativa elegância e facilidade de uso. Ao contrário de um YubiKey, onde você se comunica diretamente com o dispositivo, o HSM é geralmente exposto através de um servidor web que o interage. Isso permite que você use o HSM remotamente (com os complicados problemas de opsec).
A Yubico fornece um shell CLI que pode comunicar-se com o YubiHSM, o que é bom porque você pode começar imediatamente (você realmente não quer criar seu próprio protocolo aqui). Por outro lado, não é... o CLI de alto perfil ao qual estamos acostumados atualmente. Tem muita dívida técnica e armadilhas.
Infelizmente, os YubiHSMs não são muito comuns, então as bibliotecas de interface de outras linguagens são quase inexistentes. A Yubico faz em python, então você pode optar por isso, ou voltar para o shell... apenas lembre-se das armadilhas.
O meu principal problema com footguns é "oops, assinei algo inválido". Bem, sim, oops, porque nunca conseguirás explicar essa entrada do registo de auditoria nem provar o que assinaste (principalmente porque nem saberás ou conseguirás provar isso). O que nos leva ao lado negativo: auditoria.
O YubiHSM afirma ter um registo de auditoria assinado à prova de manipulação. Bem, a parte assinada acabou por ser marketing, não está assinada. O registo de auditoria *é* ligado por hash, infelizmente, sem uma assinatura, também é inútil para auditorias offline, pois qualquer registo pode ser forjado e hashado.
A única maneira de auditar um YubiHSM é ter uma conexão ao vivo com ele. Isso porque você pode provar que está conectado a um HSM da Yubico (via certificados assinados), então se você confia na Yubico e no seu hardware HSM, quando ele diz que está no hash H, você acredita. Mas é interativo.
O outro ponto negativo é que o registo de auditoria contém apenas as operações que foram realizadas, mas não os dados. Isso é de certa forma compreensível, mas também torna os registos muito menos úteis: o seu script executou 10 vezes e assinou a string vazia? Bem, há 10 oportunidades para assinaturas maliciosas.
Além disso, pelo menos por agora, não encontrei uma maneira de demonstrar a um auditor que uma chave específica *está* no dispositivo. Se você der a um auditor acesso para atestar suas chaves, então sim, funciona, mas simplesmente parece errado. Sem isso, só posso provar que *em algum momento eu tive chaves*.
A minha dor pessoal é porque quero criar um relatório de transparência para o meu projeto @dark_dot_bio, que parece semi-impossível com o YubiHSM. Se o seu modelo de ameaça é proteger as chaves de atores mal-intencionados, um YubiHSM é perfeito. Se você quer demonstrar que não houve uso indevido, azar.
No geral, não parece haver um produto melhor no mercado numa faixa de preço que eu realmente possa pagar, então o YubiHSM terá que servir, mas quem estiver interessado, esteja avisado, a capacidade de auditoria assume uma *grande* confiança que poderia ter sido evitada, mas simplesmente não foi. Fin.
2,4K