Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Security

Sharing Secrets Among Friends


Let's say you've invented a new, extra-gooey, extra-sweet, creme filling; or a burger sauce that is even more tasteless than before. This stuff is important; you have to keep the recipe secret. You can tell only your most trusted employees the exact mixture of ingredients, but what if one of them defects to the competition? Before, long every grease palace on the block would be making burgers as tasteless as yours. That just wouldn't do.

You can take a message and divide it up into secure pieces. Each of the pieces by itself means nothing, but put them all together and the message appears. If each employee has a piece of the recipe, then only together can they make the sauce (employees could type their portion into a central sauce-making computer or something). If any employee jumps ship with a piece of the recipe, the portion is useless by itself.

Messages

A message of any length can be divided up using these techniques, but for the purposes of illustration I am just going to work with a byte I'll call a message. Realistically, a message of arbitrary length would be encoded using a conventional cryptographic algorithm, such as the Digital Encryption Standard (DES). Then, the algorithm's key would be divided up. Longer messages can be divided, but it's more work. The simplest sharing problem is how to split a message between two people. The answer is simple; generate a random bit string of equal length and XOR it with the message. Give one person the random string and the other person the XOR result. Separately, the two pieces are worthless; XOR them together and the message reappears.

This technique, if done properly, is absolutely secure. No amount of computing power can determine the message from one of the pieces. If the random bit string is truly random, then any message is equally possible. For example, if the message is 00000000 and the random string is 10011011, the XOR is 10011011. A cryptanalyst trying to deduce the message from one part has no way of knowing what the other part is.

The random string could just as easily have been 01100100, making the message 11111111, or any other bit combination in between. A random bit string XORed with a nonrandom bit string produces a random bit string. No amount of computing power can change that result, and no amount of computing power can defeat it.

Any successful attacks against this scheme will be against the method used to generate the random bit string. If you use a linear-feedback shift register, linear congruential generator, or another cryptographically weak algorithm, you're asking for trouble. If you flip a penny (or listen to radioactive decay, atmospheric noise, or measure keyboard latency) you're safe. (T.A. Elkins's "A Highly Random Random-Number Generator" gives a pseudorandom number-generation algorithm that, while cryptographically useless for encryption, is probably good enough to generate a few 56-bit numbers.)


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.