L'utilisation d'un signataire distant ou d'un grand livre améliore-t-elle vraiment la sécurité?
1 réponses
- votes
-
- 2019-04-05
Tezos-Signerprenden charge la recherche-authentification,--Magic-octetset options -CHeck-high-filmark. Vous devriez comprendre ceux-ci.
$ Tezos-Signer Man -V 3 ... -A -Require-authentification:nécessite une signature de l'appelantpour signer. ... -M --Magic-bytes & lt; 0xhh,0xhh,... > valeurs autoriséespour les octetsmagiques,par défaut de -W -Check-High-Watermark: restriction defiligrane élevée Stocke leniveau leplus élevé signépour desblocageset des recommandationspour chaque adresseet interdit de signer unniveauinférieur ou égal à ensuite,saufpour lesmêmes données d'entréeexactes. ... Ajouter une clé autorisée & lt;pk > [-N --Name & lt;nomet gt;] Autoriser une clépublique donnéepoureffectuer des demandes de signature. & lt;pk > Touchepublique complète (base58 codée) -N --Name & lt;nomet gt ;: unnomfacultatifpour la clé (par défaut du hachage)
L'application de cuisson degrand livrepar Obsidian valide l'octetmagique,permettant uniquement de 0x01et de 0x02,qui sont utiliséspour lesblocset les appels de supports (respectivement). Vouspouveztrouver ces octetsmagiques dans Signer_Messages.ml . L'octetmagique "generic_operation" 0x03est utilisépourtoutes les autres opérations signées définiespar leprotocole:transferts,origines,délégation,vote,etc.
L'application de cuisson conserve également unniveau defiligrane élevépourprévenir les doubles. Vousne devriez être capable que de vousgâcher avec
SET LEDGER High Watermark
(avec confirmation de l'appareil),lors de lamise àniveau de l'application de cuisson (quiessuyez le HWM) ouen utilisantplusieurs rebordspour lamême clé.Si le Signer Tezosest sécuriséet fonctionne commeprévu,et que vous utilisez aumoins
-magic-bytes
et- check-high-filark
correctement,puis Il devraitfonctionner àpeuprès à l'application dugrand livre: unepersonnegagnant un accèsnormalne doit être capable que de signer desblocset des recommandations sans causer de double.Celapourraittoujours êtremauvaispour vous,car vous risquez demanquer deblocs/d'endossementset deperdre des récompenses. Ilpourraitpeut-être êtremauvaispour d'autres raisons aussi ...mais cen'estpas la signature detransferts!
Utiliser
- Exiger-authentification
estprobablement unebonneidée,maisnous aurons lemêmeproblème ànouveau. Le client (parexemple Baker) à l'aide d'un signataire distant avec authentification doitpouvoir signertoutes les demandes au signataire avec une clé autoriséeet nous aurons lesmêmes questions sur la sécurité de cette clé autorisée quenous l'avonsfaitpour la signature de la clé desblocs./endossements/etc.Notez qu'il doit êtrepossible d'utiliser un autre signataire (local ou distant) Tezos-Signerpour la clé d'authentification. Jen'aipasessayé cela.
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,c'est unebonneinformation.Mercibeaucoup.En ce qui concerne l'utilisation de --Magic-octetset une authentification -Require-authentificationensemble spécifiquement,cela ressemble à la solutionparfaite.Sij'utilise ces deux drapeaux,cela signifie que les demandes avec 0x01et 0x02passeront sansnécessiter de validation,mais letransfertet d'autres demandesnécessiteronttoujours une authentification?Si oui,c'estexactement ce queje veux.Maispeut-être que celane fonctionnepas de cettefaçon,comme vous lementionnez à lafin de votremessage "L'utilisation de l'authentification --Require-authentificationestprobablement unebonneidée,mais vous aurez lemêmeproblèmepour la clé d'authentification."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:passera sansnécessiter * authentification *edit: will pass through not requiring *authentication*
- 0
- 2019-04-05
- lostdorje
-
Un vieuxticket,mais selon ceci: https://gitlab.com/tezos/tezos/issues/185 On dirait que,oui,le signataire de départ avec les drapeaux -Magic-octetset les drapeaux d'authentification -Require-authentification devraitfonctionner.0x02 Lesmessagespasseront sans avoirbesoin d'une authentification/mots depasse supplémentaire,etc. 0x03 (Transactions)nécessitera la signature (ou comme vous l'avezmentionnéet lié à,peut-être que lanouvelle valeurest 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
-
Non,la validationet l'authentification des octetsmagiques sont orthogonales.Si l'authentificationest requise,elleesttoujours requise.Si des octetsmagiques sont validés,ils sonttoujours validés (aucune donnée avec un octet demagie différentne sera signée,authentification ounon.) Je vaismettre àjour la réponse à être unpeuplus claire sur les octetsmagiques.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
-
J'aijoué avec des chosespluset j'aifrappé cebloc-route.Ca a du sens.Les deuxidées doivent être orthogonales.D'autrepart,cela semble être un cas d'utilisationtrès valide.Laissez le signataire signe desblocs deboulangerieet signe des recommandations sans authentification supplémentaire.Toutefois,si unbloc de 0x03 ou 0x04et etcestentré dans,exigez qu'il ait une authentification supplémentaire.Cela seraittrès utile -bien qu'il resteencore leproblème depaiement automatisé (parexemple: Backerei)et laissant celafonctionner sans avoir à vous authentifiertout letemps.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
-
Ignorer ce quej'ai dit àpropos de 0x04.J'aiessayé de clarifier.Vous vous souciezpeut-être d'environ 0x04 si vousessayez d'utiliser un Signer Tezospour signer des demandes authentifiées à un autre Tezos-Signer;C'est là que c'est utilisé.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 L'utilisation d'un signataire distant ou d'ungrand-coureurfait unexcellenttravailpourprotéger les clés secrètes. Mais celane protègepas contre le retrait de XTZ des comptes. Toutepersonne quigagne l'accès au Bakerpeut retirer desfonds àpartir d'une simple commande Tezos-Client. Est-ce correct?
Jepensais quej'avaistout compriset j'aieu une sensation confortable demespetitestextes qui dort soienten toute sécurité lanuit. Maismaintenantje interrogetout ce quej'aifaitpour les sécuriser. J'ai demandé à un Question sur la sécurité avec Solo Caking Il y a unmois ou deuxestmaintenant revenume hanter.
Résumé rapide:
J'ai unboulanger avec unminimum de XTZpour couvrir les dépôts. J'ai une adresse KT1 originée quej'ai créée àpartir d'une adresseimplicite de Ledger TZ1. Lamajorité demes XTZ sont raisonnablement sécurisés.
Cependant,pourprotégermon XTZ de Baker,j'ai décidé de configurer un signataire distant sur uneboîte différenteet trèsisolée. Pourtoutes les raisonspratiques,monnœud Tezospeut luiparler via un réseauprivé.
Comme Luke a souligné dansma questionprécédente liée au-dessus,et ce queje n'aipasbien compris à l'époque était:
Maintenant,je comprendsparfaitement ce qu'il voulait dire. Alors,quelest lepoint d'avoir un signataire distant donné ceproblème?
Même sij'utilisais ungrand livre,leproblèmene serait-ilpas lemême? Sije pouvais avoir accès au système de cuisson,je pourrais se retirer de l'argent du compte.
Dans les scénarios à distanceet les scénarios degrand livre,il semble quenousprotégeons les clés -elles restenten sécurité -mais le XTZpeuttoujours êtretransféréet n'estpas sûr.
Sinous voulons automatiser la cuisson (signataire distant ou ledger),nous devons définir des choses de cettefaçon. Nousne pouvonspas vous asseoir autour denos ordinateurstoute lajournéeet entrer lemot depasse lorsque vous y êtesinvité.
Qu'est-ce queje manqueici?