Você está aqui: Kiko > SoftwareEUtilitarios > ProgramaShareSec | Imprimível | fim do tópico |
English Version |
ShareSec
Reparte um segredo gerado pelo computador ou escolhido pelo usuário em m partes das quais n serão posteriormente necessárias para reavê-lo. Útil como contingência quando o dono primário do segredo fica indisponível.
Imagine que seus empregados, preocupados com a segurança como são, cifram todo material sensível em seus computadores. Na noite anterior a uma importante licitação, o cara que preparou a proposta é atropelado por um caminhão. Os médicos dizem que ele vai viver, mas não vai acordar nem tão cedo. Você poderia perder a licitação porque seu esquema de cifragem é tão seguro que você não tem como destravar os arquivos do moribundo.
Com efeito, essa é uma das razões pelas quais muitas empresas não usam criptografia -- ela é segura demais: tanto que não provê, naturalmente e por si própria, um plano B para situações como essa.
O programa sharesec
provê uma solução para esse caso na forma de uma "caução compartilhada de chaves": quando você inventa ou gera uma frase-senha, ela é dividida em várias partes que você distribui entre as pessoas em que você mais ou menos confia. Se você ficar indisponível, uma certa quantidade delas pode concordar em usar suas partições para reconstruir sua frase-senha.
No nosso exemplo, seu empregado teria diligentemente repartido a chave de criptografia e entregue as partições para, digamos, seu chefe e colegas de trabalho. Ao ouvirem a má notícia, alguns deles decidiriam, por acordo mútuo, que a situação é séria o bastante para requerer a reconstrução da chave, de forma a obterem acesso aos arquivos e poderem participar da licitação.
Por que não simplesmente fazer com que o empregado desse uma cópia da frase-senha dele para o patrão? Porque isso o capacitaria a ler os dados do empregado a qualquer momento, sem informar nem pedir licença a ninguém -- um chamariz para abusos. Repartindo a frase-senha em vários pedaços, precisa-se de quorum mínimo para isso.
O sharesec
resolve dois outros problemas:
sharesec
incorpora um gerador aleatório de senhas. Ele representa a senha como várias palavras curtas para torná-las menos difíceis de decorar e digitar. Quando usado em modo interativo, o programa mostra várias sugestões e permite que o usuário escolha aquela que ache mais fácil de lembrar.
sharesec
pode emitir seus resultados já na forma de mensagens cifradas pelo PGP para os respectivos detentores de partições. Dessa forma, depois que o usuário tiver escolhido sua frase-senha, nenhuma informação sensível aparece na tela.
Imagine que o Sr. Fulano de Tal acaba de entrar na empresa e é hora de preparar seu volume cifrado. Para gerar a frase-senha, ele executa o sharesec
na máquina dele, como mostrado no exemplo abaixo, onde especificamos que a frase-senha seja partida em três partições e que sejam necessários pelo menos dois para reconstruí-la.
$ sharesec -t 2 -n 3 -w johndoe -g diceware::pt-br -i -r kiko,evandro,lincoln Choose: below we have 6 passphrase suggestions (more if you think of columns ------- instead of just rows). Choose one you find the easiest to memorize: 1: dois raio cola bege nino pong 2: urso lima zeca peca cole suga 3: eram aura mero crua irei caca 4: popa nora homo puxe povo pios 5: tutu teor nono quis pule nada 6: asas emas tesa bela sova roca Tip: take your time. Don't try to choose in a hurry. -- Press ENTER when ready to practice or any other key for more suggestions -- Attempt 1/3 -- New passphrase: [ OK ] (... o usuário digita corretamente uma das senhas acima ...) Attempt 2/3 -- New passphrase: [ OK ] (... de novo ...) Attempt 3/3 -- New passphrase: [ OK ] (... outra vez ...) Using a 232 bit security level. Using '/home/kiko/.gnupg/pubring.gpg' -----BEGIN PGP MESSAGE----- Version: sharesec-0.8.1 Comment: fulano-1/3 to kiko on 2007-04-03 wcFOA1QoVsH6jef9EAgA4FTIcaQpfELdWMOzqSxXv3zCORI/M7nTIv83pWVwATaF 4FKHeqNTrY0elZokMZQm8IaP7SttieUeottYAVZgbvW8bJpPBgzlTpHclfwvyyt+ 4Y3wb3d/CqHmvbdWQY5TJtl85BjmQfs788RoR4lNnUgARtROhBlXmuE00812UEp+ skccfuHW1KkQf5ugcTKnMKYAFEIH9ku8m+nROjO6gkrQTnLhKs34/wxNBnLNEiaU 2QVWfACdNtNzsz5FSW1pE1uk7F8gZi/j8kk/F2Lhq+l2WxLI+KDoFgO4/GJG9Ar9 po5FcrUlYg9tkwxNNIxQUg0qFE6rnoa/fcdAdiSxUggA0rL/Bmo3TPFZQyIHdyGl +6hUupPGePYX1jsnCkBT800RpSDVSo2CrgnB4/oRo4hWYzg9YQBBlZIZrC743s/J vKVDp5CQcRWhr9tKWFb9L8qhVo6enEuwMhRx8Qk4nA1BN/NnxilpvwugbIX3cuNp k3YyxBWMDX/dqP6CEH2yPeAbRqEPU/ukz/LWvSXdzZukGpGfHwnRHeHhbEHCVLxZ 3mrEwyaG1PJWSdiNt75BloLZ/SQJMW3D25NqP9Fu8D7rkO0+cQhhBCWKowLL0qWf GXvu+wFMjtCfc3Vu1NWH4ZBFGt63M3tFDMRRuh1jgqQlkxoVPYOOikOm1CUk4Pxx JMlXJLCAQNUbmcJNDp2Qyeq8esBs0aEOWh698zLG/UyIJms7XFarxM+L1rr7P3UU 7fgaZnO+fWP3wAcl8EdVaWWXSGuwrPyIKSimf0VGn1otcGhSEdc72ejm =hQBu -----END PGP MESSAGE----- -----BEGIN PGP MESSAGE----- Version: sharesec-0.8.1 Comment: fulano-2/3 to evandro on 2007-04-03 wcFOA9623ev/bXs/EAf7BssYgLjEfBxcgBxV1xZje+5TsjcgFEaqub64BxpAPpSc KsPKIm/MMbZAAz7Jc4MYiZCO2tP4XyLsVWExB/HXKI45oqfwluw2hFAKhxqGO72a 2INqaOT86ezi9MW1tX7ToGNgjvZGqq/3PjwCLgWJw+MB4jRctEkR9xGWq+sgg1Uk 0UPN7SpkChN3OoO+aH2oIxze4PQmgO4/vQ8xbEPwjxYfF7t20TC41gR8o5IJVT0L vdrt6lvi4Bl9+p4asJenoVG1vhYYMEK0IXkhY+DL8AmMjJMk4666bMoLx+zurkf0 c1DFLfdiqTAx/e9eU7iIcFjDHX5Tx59si4luf72Z8ggA2hlDjAqrg5AmivG8f1Gi ITcI7bfM9PLEdaXMx/BCST74G/OUmpNkXh0eSne/eRVOVqM1/eXzIQV++3v/or/C 81f3DGo1zvIgqjNmuzgVCkghcFOpfrnQM9p/Z/j19qb7IzTI1ENeFQPmJ9t4Uv9y hBLm3AGHXhpR3uh9vfJ8ISFgAmQrr4cV3bJWjxHU/YYIBnK/7SbzdSST2Pyq3/HT ew1ZCLh54O9NMKXUBP9jlzzI39BibMp7aWHMfgbjX9BkWo0xOoJyhN8gMmZJLD19 B8e2alfGJzTMhFx52qTMOANYj+V9G9qXobjCiAFCg9bHzajJua9qZVVmCK7l3RrZ n8lXgvWCx8tIN9OZtZ4XraYiAYEQGS0J/KNpRK6gi8UA5eW1wswno9Bg4ypZSFtV 554417K8bpycp0z0HfiytC3jihQaSINGl/6IICvoR8Z1ayRyhVaFht9v =f673 -----END PGP MESSAGE----- -----BEGIN PGP MESSAGE----- Version: sharesec-0.8.1 Comment: fulano-3/3 to lincoln on 2007-04-03 wcFOA2YpBGrW72eAEAf/VuejnAe5bWfbbkMb9qtWfOKrYs3lPOZCrKpQwLzMBIBG BWQQ+kv9WscZy8SXQDO4uOlUuHEOLdAf2nwXpL3+JNSOqdJcfIR6kFb3nMCXIIEN v+5xzv+jKnR1yGwutiR92G/p3jTKxRR4dnY3YGeo7l/0ULFTSkYwYV78KVuXsvZL zSt3up/c/YGyFlZpOAmYPGvklkiWsswXSMwPcFO3yXq0/BKBTBzTBB8wCYoAqFoj 5V44CHmLmV+DDLDeoGLTxUtviUMgAujaIf8SYwiVgMZXvTVq1GImuzW9YNrOCJ1r dUjNVhVSY1imBCywgECdZvkdCROlsffeX0dIvy/WXgf/aYL1E5Sq4QkWWGXMPfWa Oe860uHQLp6bvAlEaaCHKczfH0TgRRMeo/DxsCh6V6BdUq2byO4Efa3ZPiNXGFBv iTnqWStxo1NQOwcdSLx3ln98+Agsp+VysVPdeKaX75q3UubeA39RVzYYI5kFjXEK kTZSJV32AjdGD6ahBXZun4cumRPHG3ebC1bLC+dhuDpw/BA+awpdAzPCHy22MKsT FqnOitD6nJ6JP6s92bLJmcuXJSGUHhOEub/Vyg6CqO+I3K9n16bk6Smtjz8/804Z 2hBnfJn+FqF88YiOkRyiH8ZchZssB6bGOtf0jd80ND6ml7aabUQVX4s2h/Lp3k0M 8slXZ8duBuYWGWXKazEevXhUqG2FSZCNTcIILy454iEidSmDkmDpYYyf4IN9roNd nL3bg9mblD5DRoycVX8QGnJsKy57w0OBNwhrZhcrRONBs6YFVZY1IMZn =fcfj -----END PGP MESSAGE-----
Ele então envia essas mensagens PGP via correio eletrônico para cada detentor.
Agora suponha que o Fulano está de férias na Chapada Diamantina, bem longe da cobertura celular e de qualquer tipo de conectividade. O departamento comercial então avisa que precisam urgente de um arquivo dele. Após convencerem a mim e algum outro detentor (Evandro, digamos) que não tem outro jeito, nós concordamos em recombinar nossas partições. Eu uso o meu PGP para decifrar a mensagem endereçada a mim, reavendo a partição; e Evandro faz o mesmo. Depois é só inserir as partições no sharesec
, tal como mostrado abaixo:
# sharesec -t 2 Enter 2 shares separated by newlines: Share [1/2]: fulano-1/3-A299108721C5EA509BCA6E99CFE441BB752DAD5C9D48262ABD11718E87 (... aqui o programa limpa a tela para que um detentor não veja a partição do outro ...) Share [2/2]: fulano-2/3-3D699AAFE2518628145915445A2474A1F8BFA7BCF9B4BA80985383FDD3 Resulting secret: dois raio cola bege nino pong
O sharesec
também pode gerar frase-senha em batch ou aceitar segredos da sua própria escolha vindos da entrada padrão. Além disso, ele pode gerar partições sem cifrá-las.
Os binários são muito maiores do que precisariam ser. O algoritmo de particionamento de segredos usa a GNU MP, ao passo que a parte de cifragem PGP usa a CryptLib, de sorte que acabamos com duas bibliotecas de aritmética de precisão arbitrária distintas. Talvez uma abordagem muito melhor fosse reescrever o programa inteiro para usar apenas ou a GMP ou a CryptLib. Ou poderíamos escrever uma biblioteca de cifragem PGP minimalista usando a OpenSSL e reescrever o particionamento de segredos para também usar a OpenSSL. (Tom Zerucha escreveu uma PGP baseada no OpenSSL, mas eu não consegui colocá-la para funcionar... mas talvez tenha sido porque eu não me esforcei muito, uma vez que fazer cifragem PGP com a CryptLib me pareceu tão mais fácil).
Mas eu duvido muito que eu tenha tempo para fazer nada disso. Feia como está, a solução atual funciona suficientemente bem para mim.
O sharesec
é baseado no utilitário ssss-0.5 original escrito por B. Poettering. Visite a página dele:
O sharesec
e o ssss
são compatíveis; você pode gerar as partições com um e reconstrui-las com o outro e vice-versa.
O sharesec
usa o CryptLib Encryption Toolkit do Peter Gutmann.
O sharesec
é disponibilizado sob a GNU GPL v2.
cygwin1.dll
).