O uso de um signatário remoto ou um razão realmente melhora a segurança?
1 responda
- votos
-
- 2019-04-05
O signatário de Tezos suporta - autenticação de reiquire,- Magic-bytese opções demarca d'água alta. Você deveentenderisso.
$ Tezos-signater Man -V 3 ... - Uma autenticação: requer uma assinatura do chamadorpara assinar. ... -M - Magic-bytes & lt; 0xhh,0xhh,... > valorespermitidospara osbytesmágicos,padrões a qualquer -W -check-high-watermark: restrição demarca d'água alta Armazena onívelmais alto assinadoparablocose endossospara cada endereçoe proíbe assinar umnível que sejainferior ouigual depois,excetopara osmesmos dados deentrada. ... Adicionar chave autorizadae LT; PK & GT; [-Name & lt;name >] Autorize uma determinada chavepúblicaparaexecutar solicitações de assinatura. & lt; PK & GT; Teclapública completa (base58 codificada) -N -nome & lt;nome >: umnome opcionalpara a chave (padrõespara o hash)
O aplicativo do ledgerpor obsidian valida obytemágico,permitindo apenas 0x01e 0x02,que são usados parablocose endossos (respectivamente). Vocêpodeencontrarestesbytesmágicosem signer_messages.ml >. Obytemágico "generic_operation" 0x03 é usadoparatodas as outras operações assinadas definidaspeloprotocolo:transferências,origens,delegação,votação,etc.
O aplicativo de cozimentotambémmantém um altonível demarca d'águaparaevitar duplas. Você só deve ser capaz debagunçarisso com
Set Ledger Alto Watermark
(com Confirmaçãono Dispositivo),durante as atualizações do aplicativo (que limpar o hwm),ou usando vários LEDgerspara amesmatecla.Se o segmento Tezosestiver seguroe funcionar comopretendido,e você usarpelomenos
-bytesmágicos
e-marca demarca d'água de verificação
corretamente,Devefuncionar aproximadamente como o aplicativo Ledger: alguémganhando acessonormal só deve ser capaz de assinarblocose endossos,sem causar duplas.Ainda assimpoderia ser ruimpara você,porque vocêpodeperderblocos/endossose perder recompensas. Poderá ser ruimpor outras razõestambém ...masnãoestá assinandotransferências!
Usando
- Require-Authentication
éprovavelmente umaboaideia,masteremos omesmoproblemanovamente. O cliente (porexemplo,Baker) usando um assistente remoto com autenticação deve ser capaz de assinartodas as solicitaçõespara o signatário com uma chave autorizada,e teremos asmesmasperguntas sobre a segurança desta chave autorizada comofizemospara a chave assinando osblocos/endossos/etc.Observe que deve serpossível usar outro signatário (local ou remoto) Tezospara a chave de autenticação. Eunãotentei isso.
tezos-signer supports --require-authentication, --magic-bytes, and --check-high-watermark options. You should understand these.
$ tezos-signer man -v 3 ... -A --require-authentication: Require a signature from the caller to sign. ... -M --magic-bytes <0xHH,0xHH,...>: values allowed for the magic bytes, defaults to any -W --check-high-watermark: high watermark restriction Stores the highest level signed for blocks and endorsements for each address, and forbids to sign a level that is inferior or equal afterwards, except for the exact same input data. ... add authorized key <pk> [-N --name <name>] Authorize a given public key to perform signing requests. <pk>: full public key (Base58 encoded) -N --name <name>: an optional name for the key (defaults to the hash)
The Ledger baking app by Obsidian validates the magic byte, allowing only 0x01 and 0x02, which are used for blocks and endorsements (respectively). You can find these magic bytes in signer_messages.ml. The "Generic_operation" 0x03 magic byte is used for all other signed operations defined by the protocol: transfers, originations, delegation, voting, etc.
The baking app also keeps a high watermark level to prevent doubles. You should only be able to mess this up with
set ledger high watermark
(with confirmation on the device), during baking app upgrades (which wipe the HWM), or by using multiple Ledgers for the same key.If the tezos-signer is secure and working as intended, and you use at least
--magic-bytes
and--check-high-watermark
properly, then it should work roughly like the Ledger app: someone gaining normal access should only be able to sign blocks and endorsements, without causing doubles.That could still be bad for you, because you might miss blocks/endorsements and lose rewards. It could maybe be bad for other reasons too... But it's not signing transfers!
Using
--require-authentication
is probably a good idea, but we will have the same problem again. The client (e.g. baker) using a remote signer with authentication must be able to sign all requests to the signer with an authorized key, and we will have the same questions about the security of this authorized key as we did for the key signing the blocks/endorsements/etc.Note that it should be possible to use another (local or remote) tezos-signer for the authentication key. I haven't tried this.
-
Ah,esta é uma ótimainformação.Muito obrigado.Em relação ao uso de - Magic-bytese - Autenticação --requirejuntosespecificamente,isso soa como a soluçãoperfeita.Seeu usar ambas asbandeiras,isso significa que as solicitações com 0x01e 0x02passarãopornãoexigir validação,mas atransferênciae outras solicitações aindaprecisarão de autenticação?Se sim,isso éexatamente o queeu quero.Mastalveznãofuncione dessamaneira como vocêmencionanofinal da suapostagem "Usando - Autenticação de require éprovavelmente umaboaideia,mas vocêterá omesmoproblemanovamentepara a chave de autenticação".Ah, this is great information. Thanks so much. Regarding using --magic-bytes and --require-authentication together specifically, this sounds like the perfect solution. If I use both of these flags does it mean that requests with 0x01 and 0x02 will pass through not requiring validation, but transfer and other requests will still require authentication? If so, that's exactly what I want. But perhaps it doesn't work a that way as you mention at the end of your post "Using --require-authentication is probably a good idea, but you will have the same problem again for the authentication key."
- 0
- 2019-04-05
- lostdorje
-
Edit: vaipassarpornãoexigir * autenticação *edit: will pass through not requiring *authentication*
- 0
- 2019-04-05
- lostdorje
-
Umbilhete velho,mas de acordo comisso: https://gitlab.com/tezos/tezos/issues/185 Parece,sim,o signatárioinicial com ambos os sinalizadores - Magic-bytese - de autenticação - de autenticação devemfuncionar.0x02 Mensagenspassarão comnenhumanecessidade demais autenticação/senhas,etc. 0x03 (transações)exigirão assinatura (ou como vocêmencionoue vinculada,talvez onovo valor seja 0x04?)An old ticket, but according to this: https://gitlab.com/tezos/tezos/issues/185 it sounds like, yes, starting signer with both the --magic-bytes and --require-authentication flags should work. 0x02 messages will go through with no need for further authentication/passwords etc.. 0x03 (transactions) will require signing (or as you mentioned and linked to, maybe the new value is 0x04?)
- 0
- 2019-04-05
- lostdorje
-
Não,a validaçãoe autenticação dobytemágico são ortogonais.Se a autenticaçãofornecessária,é semprenecessário.Se osbytesmágicosforem validados,eles são sempre validados (nenhum dado com umbytemágico diferente será assinado,autenticação ounão.) Vou atualizar a respostapara ser umpoucomais claro sobre osbytesmágicos.No, magic byte validation and authentication are orthogonal. If authentication is required, it is always required. If magic bytes are validated, they are always validated (no data with a different magic byte will be signed, authentication or not.) I will update the answer to be a bit more clear about the magic bytes.
- 0
- 2019-04-05
- Tom
-
Eujoguei com as coisasmaise bati aquelebloco deestrada.Faz sentido.As duasideias devem ser ortogonais.Por outro lado,issoparece um caso de usomuito válido.Deixe o assinante assinarbloqueiose assinarendossos sem autenticaçãoextra.Noentanto,se umbloco de 0x03 ou 0x04etcentrar,exigir queeletenha autenticaçãoextra.Isso seriamuito útil -embora ainda haja oproblema depagamentos automatizados (porexemplo:backerei)e deixe-se correr semter que autenticar otempotodo.I played around with things more and hit that road-block. It makes sense. The two ideas should be orthogonal. On the other hand, this seems like a very valid use-case. Let the signer sign baked blocks and sign endorsements without extra authentication. However if a 0x03 or 0x04 etc block comes in, require it to have extra authentication. This would be very useful -- although there is still the automated payouts problem (eg: backerei) and letting that run without having to authenticate it all the time.
- 0
- 2019-04-05
- lostdorje
-
Ignore o queeu disse sobre 0x04.Eutentei esclarecer.Vocêpode seimportar com 0x04 setentar usar um assinante Tezospara assinar solicitações autenticadaspara outro assinante de Tezos;É aí que é usado.Ignore what I said about 0x04. I tried to clarify. You might care about 0x04 if you try to use a tezos-signer to sign authenticated requests to another tezos-signer; that's where it's used.
- 0
- 2019-04-07
- Tom
tl; dr Usando um assinante remoto ou um razãofaz um ótimotrabalhoem proteger as chaves secretas. Masnãoprotege contra a retirada do XTZ de contas. Qualquerpessoa queganha acesso aopadeiropode retirarfundos dele usando um simples comando Tezos-Client. Issoestá correto?
Eupensei quetinhatudoisso descobrindoe tinha uma sensação aconchegante demeuspequenos Tebzies dormindo com segurança ànoite. Mas agoraestou questionandotudo o quefizparaprendê-los. Euperguntei a um Pergunta sobre segurança com cozimento solo ummês ou dois atráse agora voltouparame assombrar.
Resumo rápido:
Eutenho umpadeiro com apenas ummínimo de XTZpara cobrir depósitos. Eutenho umendereço KT1 originado que criei apartir de umendereçoimplícito TZ1 Ledger. Amaioria domeu xtz é razoavelmente segura.
Noentanto,paraproteger o XTZ domeupadeiro,decidi configurar um signatário remotoem uma caixa diferentee muitoisolada. Paratodos osfinspráticos,apenasmeunó de Tezospodefalar comele através de uma redeprivada.
Como Luke apontounaminhapergunta anterior ligada a acima,e o queeunãoentendi completamentena épocaera:
Agoraeuentendo completamente o queele quis dizer. Então,qual é oponto deter um signatário remoto deuesseproblema?
Mesmo queeuestivesse usando um livro,oproblema aindanão seria omesmo? Seeupudesseter acesso ao sistema de cozimento,eupoderia retirar dinheiro da conta.
Nos cenários de diretos remotose razão,parece queprotegemos as chaves -elesficam seguros -mas o XTZ aindapode sertransferidoe não é seguro.
Se quisermos automatizar o cozimento (assinante remoto ou razão),precisamos definir as coisas dessamaneira. Nãopodemosnos sentarem torno denossos computadores o diatodoe digite a senha quando solicitado.
O queestouperdendo aqui?