Читать книгу Security Engineering - Ross Anderson - Страница 197
5.7.7 Special-purpose primitives
ОглавлениеResearchers have invented a large number of public-key and signature primitives with special properties. Two that have so far appeared in real products are threshold cryptography and blind signatures.
Threshold crypto is a mechanism whereby a signing key, or a decryption key, can be split up among principals so that any out of can sign a message (or decrypt). For the construction is easy. With RSA, for example, you can split up the private key as . For it's slightly more complex (but not much – you use the Lagrange interpolation formula) [554]. Threshold signatures were first used in systems where a number of servers process transactions independently and vote independently on the outcome; they have more recently been used to implement business rules on cryptocurrency wallets such as ‘a payment must be authorised by any two of the seven company directors’.
Blind signatures are a way of making a signature on a message without knowing what the message is. For example, if we are using RSA, I can take a random number , form (mod ), and give it to the signer who computes (mod ). When he gives this back to me, I can divide out to get the signature . Now you might ask why on earth someone would want to sign a document without knowing its contents, but there are some applications.
The first was in digital cash; you might want to be able to issue anonymous payment tokens to customers, and the earliest idea, due to David Chaum, was a way to sign ‘digital coins’ without knowing their serial numbers [413]. A bank might agree to honour for $10 any string with a unique serial number and a specified form of redundancy, bearing a signature that verified as correct using the public key . The blind signature protocol ensures a customer can get a bank to sign a coin without the banker knowing its serial number, and it was used in prototype road toll systems. The effect is that the digital cash can be anonymous for the spender. The main problem with digital cash was to detect people who spend the same coin twice, and this was eventually fixed using blockchains or other ledger mechanisms, as I discuss in section 20.7. Digital cash failed to take off because neither banks nor governments really want payments to be anonymous: anti-money-laundering regulations since 9/11 restrict anonymous payment services to small amounts, while both banks and bitcoin miners like to collect transaction fees.
Anonymous digital credentials are now used in attestation: the TPM chip on your PC motherboard might prove something about the software running on your machine without identifying you. Unfortunately, this led to designs for attestation in SGX (and its AMD equivalent) which mean that a single compromised device breaks the whole ecosystem. Anonymous signatures are also found in prototype systems for conducting electronic elections, to which I will return in section 25.5.