How should we link the Mithril identity with Cardano identity #508
Replies: 3 comments 10 replies
-
Do we need to append the KES signatures to the Mithril certificate?In a discussion with @pyrros, the following was mentioned:
This means that it is not necessary to include the KES signature and/or opcert to the Mithril certificate. The intuition here is that the guarantee that a given Mithril key really corresponds with its associated stake is implicit in the Mithril certificate by the fact that the signers have agreed on the AVK (and by consequence, on the committed Mithril keys validationIn order for a party to register as a Mithril signer, it needs to authenticate as the rightful owner of the SPO it is registering for. This is done in the same way an SPO authenticates to mint a block, i.e. by leveraging the OpCert and KES signatures. To fully understand how this works, we need to understand that the entity running the registration procedure has knowledge of the stake distribution of Cardano, i.e., it knows the relation PoolID <-> Stake for all registered pools. This information can be extracted by running the node (which can be achieved either via bootstrapping, or using Mithril). Assuming that the registrar knows this information, registration would proceed as follows:
This provides the following link:
The PoolID is sufficient for the registrar to authenticate the registering SPO due to the first two links. Spoofing attacksThere has been a discussion in Discord that points to the direction that if an OpCert is not available on main-net, then any entity can spoof an OpCert. I believe it is better to keep this discussion here, to facilitate visibility and future reference. My argument is that even if OpCerts have not been published on main-net, one cannot spoof them. Recall that the registrar knows the PoolID of existing pools. In order to spoof a certification, and adversary would need to create an OpCert which validates against the pre-image of the PoolID. In other words, the adversary needs to produce a valid signature with the cold sk. Under the security assumptions of Cardano, this can only be performed by the SPO itself. Links of interestThis is being implemented in #433 |
Beta Was this translation helpful? Give feedback.
-
This discussion supersedes #507 hence I locked the former. |
Beta Was this translation helpful? Give feedback.
-
This would then mean that the 500 ADA, which is presently sufficient to prevent attacks on MainNet, would be the primary layer (i.e., to register multiple Mithril pools, one would first need to register multiple L1 pools, each one at a 500 ADA cost) of protection for Mithril, in addition to the corresponding stake for each of the Mithril-registered pools. Is this a valid understanding? |
Beta Was this translation helpful? Give feedback.
-
The mithril paper analyses security under the assumption that the stake distribution links a mithril key (pairing based) with a stake. However, that is not the case in Cardano. The stake distribution links a pool id (blake2b hash of a cold ed25519 verification key) with some stake. In order to link a mithril key with its corresponding pool id, the SPOs will sign the mithril key with their active KES key (up to discussion if we use the VRF key here), and submit it during registration. The registrar verifies this signature, and in case it is valid, includes the link of mithril-key <-> stake in its local hashmap (which contains all valid registrations).
The concern is that the explicit link mithril-key <-> poolId does not exist after registration, meaning that the client cannot validate this. @pyrros, what would be the best way to proceed here? Should we include the KES signature in the mithril certificate to allow clients to validate that explicitly? Is there a workaround to avoid appending all those signatures?
Beta Was this translation helpful? Give feedback.
All reactions