The task
Encrypt data in a way that a freely choosable quorum of n people out of a group of m participants are required to decrypt that data.
It is not necessary to have to fulfil the quorum to encrypt data.
What crypto systems and algorithms exist that solve this task?
Example: A poor solution that does the trick
A method that seems obvious but scales poorly, is to create a separate ciphertext for each permutation of n people, creating m keys and encrypting each plaintext-copy n times with n different keys.
m = 4, n = 3
ciphertext1 = m( m( m( plain, keyA ), keyB ), keyC )
ciphertext2 = m( m( m( plain, keyA ), keyB ), keyD )
ciphertext3 = m( m( m( plain, keyA ), keyC ), keyD )
ciphertext4 = m( m( m( plain, keyB ), keyC ), keyD )
Downsides:
- This requires a single point of trust. Whereever the plaintext is encrypted, all keys have to be known as well.
- It does not scale. The effort in storing and distributing keys and ciphertext is very high. Furthermore the encryption function needs to be called m*n times
A slightly better variant would use the scheme above and instead of encrypting the payload, an encryption key that works on actual data would be encrypted instead. This removes the need to perform the encryption operation on the payload multiple times and to store multiple copies of the encrypted payload.