Skip to main content
IBM 
ShopSupportDownloads
IBM HomeProductsConsultingIndustriesNewsAbout IBM
IBM : developerWorks : Security : Education - online courses
Introduction to cryptology: Pt. 3
Download tutorial zip fileView letter-sized PDF fileView A4-sized PDF fileE-mail this tutorial to a friend
Main menuSection menuGive feedback on this tutorialNext
4. "Exotic" protocols
  


Shared secrets, part 1 page 1 of 12


The general idea behind secret sharing is that you might want to require multiple parties to cooperate in order to decrypt a certain cipher text. It is not enough for one person to have her key, she needs some help accessing the plain text. It turns out that you can design schemes of arbitrary complexity that specify exactly who has to cooperate to decrypt a particular message. For example, you could specify a "Chinese menu" approach, where you need two from column A, three from column B, and one from column C, to decrypt a message. Even more complex dependencies are possible as well. For example, if Alice uses her key, she needs Bob's help; if Carol uses her key, she needs Dave's help (only one combination will work).

The simplest case of secret sharing is secret splitting. This protocol requires the cooperation of all parties (two or more) to decrypt a message. The protocol is quite simple:


	    
Given a secret M, of length n.
Given N persons who will share the secret (named P1, P2, ..., PN).
Generate random bit strings R{1}, R{2}, ..., R{N-1}, or length n.
Calculate S = M XOR R{1} XOR R{2} ... XOR R{N-1}.
Destroy or hide M.
Give S to P1
Give R{1} to P2
[...]
Give R{N-1} to PN

The secret splitters need not even know which one receives S, and which ones receive the Rs. Either way, M can only be constructed by XOR-ing back together the information given to every person. This works just like a one-time pad, and has the same degree of absolute security (it is subject to bad random numbers and human weaknesses, but those contravene the explicit protocol).


Main menuSection menuGive feedback on this tutorialNext
PrivacyLegalContact