<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Help design a cipher for my crypto&#160;wedding-rings!</title>
	<atom:link href="http://boingboing.net/2008/09/05/help-design-a-cipher.html/feed" rel="self" type="application/rss+xml" />
	<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html</link>
	<description>Brain candy for Happy Mutants</description>
	<lastBuildDate>Sat, 25 May 2013 14:28:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
	<item>
		<title>By: spiderbill</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276997</link>
		<dc:creator>spiderbill</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276997</guid>
		<description>Well, it could be very usefull for another form of user verification.

Like a challnge response kind of thing with the shared secret being your key.  

You have a predifined start key like Schneier&#039;s AEB. On the first of the month, you send your username and encrypted password. Next day,t he second ,beign an even day, you rotate the second right clockwise if you want to log in. The next day, the third, you rotate the third ring clounter clockwise. 

It ends up being something simular to a DUKPT key changing scheme. </description>
		<content:encoded><![CDATA[<p>Well, it could be very usefull for another form of user verification.</p>
<p>Like a challnge response kind of thing with the shared secret being your key.  </p>
<p>You have a predifined start key like Schneier&#8217;s AEB. On the first of the month, you send your username and encrypted password. Next day,t he second ,beign an even day, you rotate the second right clockwise if you want to log in. The next day, the third, you rotate the third ring clounter clockwise. </p>
<p>It ends up being something simular to a DUKPT key changing scheme. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: htom</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-283143</link>
		<dc:creator>htom</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-283143</guid>
		<description>Rather than adding the values, skip the arithmetic and use a matrix of letters and just look up the flipped or rolled values.

x 123456
1 abcdef
2 ghijkl
3 mnopqr
4 stuvwx
5 yz0123
6 456789

first flip , second , third , fourth , fifth  :

ab cd . ef gh - ij kl . mn op / qr st . uv wx - yz 01 . 23 45 

Obviously, if you flip or roll a value that goes out of the desired values you try again. Does anyone know of an extension of the von Neumann procedure for &quot;fairing&quot; a coin to a die?</description>
		<content:encoded><![CDATA[<p>Rather than adding the values, skip the arithmetic and use a matrix of letters and just look up the flipped or rolled values.</p>
<p>x 123456<br />
1 abcdef<br />
2 ghijkl<br />
3 mnopqr<br />
4 stuvwx<br />
5 yz0123<br />
6 456789</p>
<p>first flip , second , third , fourth , fifth  :</p>
<p>ab cd . ef gh &#8211; ij kl . mn op / qr st . uv wx &#8211; yz 01 . 23 45 </p>
<p>Obviously, if you flip or roll a value that goes out of the desired values you try again. Does anyone know of an extension of the von Neumann procedure for &#8220;fairing&#8221; a coin to a die?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Takuan</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276233</link>
		<dc:creator>Takuan</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276233</guid>
		<description>must key somehow to unique characteristics of your anatomies... boring old ten fingers/toes I suppose?</description>
		<content:encoded><![CDATA[<p>must key somehow to unique characteristics of your anatomies&#8230; boring old ten fingers/toes I suppose?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daemon</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276498</link>
		<dc:creator>Daemon</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276498</guid>
		<description>Learn a second language. Don&#039;t tell anyone you are learning that language. Use that language exclusively for the secret messages. Anyone trying to crack the code will assume the cleartext is english, and have a much harder time of it.</description>
		<content:encoded><![CDATA[<p>Learn a second language. Don&#8217;t tell anyone you are learning that language. Use that language exclusively for the secret messages. Anyone trying to crack the code will assume the cleartext is english, and have a much harder time of it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CryptoRobert</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276251</link>
		<dc:creator>CryptoRobert</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276251</guid>
		<description>I&#039;m just chalking it up to cruel fate that I&#039;m probably going to spend time I don&#039;t have fretting over this. Cripes it&#039;s like the contest was specifically designed to suck me in. 

Robert Richardson
GoCSIblog.com</description>
		<content:encoded><![CDATA[<p>I&#8217;m just chalking it up to cruel fate that I&#8217;m probably going to spend time I don&#8217;t have fretting over this. Cripes it&#8217;s like the contest was specifically designed to suck me in. </p>
<p>Robert Richardson<br />
GoCSIblog.com</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: spiderbill</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-277276</link>
		<dc:creator>spiderbill</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-277276</guid>
		<description>A clarification on my previous post.

Those are actually two different ideas with the same key rotation.

1) used for challange response authentication. Where the website presents you with a captcha ( just to make it more expensive for any automated cracker). You then encrypt the Captcha word and send it back. Proving you are you.  This has the nice feature that the password is different every time. No replay attacks and you are always encrypting different passwords, rather than the same one over and over.

2) DUKPT functionality: You have one password. 

Say Day 1 your password is password, you encrypt it to get uejowuop. That is your password for that day. Next day you take uejowuop and encrypt that with the days new key to get poivmeqi. That is your password for that day.  And on and on and on. Might not be the most user friendly for the casual users bank password. Or you could actually do the key rotation on each successful use of the password, if you can make sure that both the bank and you agree when you&#039;ve been authenticated. 
 
</description>
		<content:encoded><![CDATA[<p>A clarification on my previous post.</p>
<p>Those are actually two different ideas with the same key rotation.</p>
<p>1) used for challange response authentication. Where the website presents you with a captcha ( just to make it more expensive for any automated cracker). You then encrypt the Captcha word and send it back. Proving you are you.  This has the nice feature that the password is different every time. No replay attacks and you are always encrypting different passwords, rather than the same one over and over.</p>
<p>2) DUKPT functionality: You have one password. </p>
<p>Say Day 1 your password is password, you encrypt it to get uejowuop. That is your password for that day. Next day you take uejowuop and encrypt that with the days new key to get poivmeqi. That is your password for that day.  And on and on and on. Might not be the most user friendly for the casual users bank password. Or you could actually do the key rotation on each successful use of the password, if you can make sure that both the bank and you agree when you&#8217;ve been authenticated. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Art Carnage</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-277532</link>
		<dc:creator>Art Carnage</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-277532</guid>
		<description>You mean you want the rings to say something *other* than &quot;nerds in love&quot;?</description>
		<content:encoded><![CDATA[<p>You mean you want the rings to say something *other* than &#8220;nerds in love&#8221;?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: redstarr</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-278044</link>
		<dc:creator>redstarr</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-278044</guid>
		<description>Make the code linked to something else that has meaning to the both of you.  Like all the letters or numbers in the ring cypher correspond to words or pages numbers or letter numbers in a book or poem or story or run times in a movie that&#039;s meaningful to the two of you.
So even if someone figured out the cypher itself, it would be just a series of seemingly random numbers or letters if they didn&#039;t know what book or movie served as the &quot;Key&quot;.  And it would add that extra bit of special sentiment to it for the two of you to have it linked to something special,too.  
</description>
		<content:encoded><![CDATA[<p>Make the code linked to something else that has meaning to the both of you.  Like all the letters or numbers in the ring cypher correspond to words or pages numbers or letter numbers in a book or poem or story or run times in a movie that&#8217;s meaningful to the two of you.<br />
So even if someone figured out the cypher itself, it would be just a series of seemingly random numbers or letters if they didn&#8217;t know what book or movie served as the &#8220;Key&#8221;.  And it would add that extra bit of special sentiment to it for the two of you to have it linked to something special,too.  </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Takuan</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276256</link>
		<dc:creator>Takuan</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276256</guid>
		<description>mwahahaha!</description>
		<content:encoded><![CDATA[<p>mwahahaha!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kleer001</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-302884</link>
		<dc:creator>kleer001</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-302884</guid>
		<description>Construction of a regular 6x6 grid of 36 alpha numeric characters (A-Z &amp; 0-9) from 2d6. 

Draw out your 6x6 grid.x &amp; y axes corespond to 0-5 left-right and top to bottom. 
One die is always the 6&#039;s place, the other is the 1&#039;s place.
Start with the character zero, roll.  &quot;0&quot; goes in the square defined by that roll. Next character is &quot;A&quot;... and so on. 

Once your 6x6 grid is full that becomes your alphabet coordinates for generating cypher text. If your first plain letter is C, and C is at position 5,3 then your cypher letter is (5x6)+(3x1) = 31 = 26+5 = &quot;5&quot;

There&#039;s 36! grid keys. 3.719e41

It seems to be vulnerable to something. I&#039;m not sure what. It&#039;s not iterative, nor is there feedback. You could solve it part way and get a partial plain text, I think. </description>
		<content:encoded><![CDATA[<p>Construction of a regular 6&#215;6 grid of 36 alpha numeric characters (A-Z &#038; 0-9) from 2d6. </p>
<p>Draw out your 6&#215;6 grid.x &#038; y axes corespond to 0-5 left-right and top to bottom.<br />
One die is always the 6&#8242;s place, the other is the 1&#8242;s place.<br />
Start with the character zero, roll.  &#8220;0&#8243; goes in the square defined by that roll. Next character is &#8220;A&#8221;&#8230; and so on. </p>
<p>Once your 6&#215;6 grid is full that becomes your alphabet coordinates for generating cypher text. If your first plain letter is C, and C is at position 5,3 then your cypher letter is (5&#215;6)+(3&#215;1) = 31 = 26+5 = &#8220;5&#8243;</p>
<p>There&#8217;s 36! grid keys. 3.719e41</p>
<p>It seems to be vulnerable to something. I&#8217;m not sure what. It&#8217;s not iterative, nor is there feedback. You could solve it part way and get a partial plain text, I think. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kleer001</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-300837</link>
		<dc:creator>kleer001</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-300837</guid>
		<description>Quick question. 
Under what conditions would make a winning technique?
-
And if you want to only use two die you address a bit more, 10 more. 
0ABCDE
FGHIJK
LMNOPQ
RSTUVW
XYZ123
456789
It&#039;s &quot;naught&quot;, A, B, C... The number zero. It&#039;ll make sense when you roll a double 6 and count &quot;A&quot; as 1. Regular human counting, natural not digital.

I wonder, if you had a room full of people throwing dice, if that would work well as a random number generator. Sounds like the backdrop to a caper movie. A casino is being  used to crack government codes. Someone on the inside wants out. Can they trust the black market net cafe owner?! Blockbusterlarity ensues. 

Or maybe a triple pendulum with atomic controlled actuators. Just a tiny bit from a smoke detector. How cheap could you make them?
</description>
		<content:encoded><![CDATA[<p>Quick question.<br />
Under what conditions would make a winning technique?<br />
-<br />
And if you want to only use two die you address a bit more, 10 more.<br />
0ABCDE<br />
FGHIJK<br />
LMNOPQ<br />
RSTUVW<br />
XYZ123<br />
456789<br />
It&#8217;s &#8220;naught&#8221;, A, B, C&#8230; The number zero. It&#8217;ll make sense when you roll a double 6 and count &#8220;A&#8221; as 1. Regular human counting, natural not digital.</p>
<p>I wonder, if you had a room full of people throwing dice, if that would work well as a random number generator. Sounds like the backdrop to a caper movie. A casino is being  used to crack government codes. Someone on the inside wants out. Can they trust the black market net cafe owner?! Blockbusterlarity ensues. </p>
<p>Or maybe a triple pendulum with atomic controlled actuators. Just a tiny bit from a smoke detector. How cheap could you make them?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kleber</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-298790</link>
		<dc:creator>kleber</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-298790</guid>
		<description>Yes, for the TETS scheme each message is encoded and decoded with a shared 3-letter key.

There are all the usual choices for key management.  They could agree on a 3-letter &quot;word of the day&quot; in the morning and use that for every message (or one word each, eg he sends to her with key &#039;cat&#039; and she sends to him with key &#039;dog&#039;).  They could pick a &quot;phrase of the day&quot; (each) and use 3-letter chunks from it for successive messages.  They could preserve the ring state and decode the second-received message in a day from the state at which the first message ended.

And so on; what&#039;s best depends on use patterns...
</description>
		<content:encoded><![CDATA[<p>Yes, for the TETS scheme each message is encoded and decoded with a shared 3-letter key.</p>
<p>There are all the usual choices for key management.  They could agree on a 3-letter &#8220;word of the day&#8221; in the morning and use that for every message (or one word each, eg he sends to her with key &#8216;cat&#8217; and she sends to him with key &#8216;dog&#8217;).  They could pick a &#8220;phrase of the day&#8221; (each) and use 3-letter chunks from it for successive messages.  They could preserve the ring state and decode the second-received message in a day from the state at which the first message ended.</p>
<p>And so on; what&#8217;s best depends on use patterns&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: False Data</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-280877</link>
		<dc:creator>False Data</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-280877</guid>
		<description>Now that I&#039;ve had more time to play with Conjugal, it gives a more even distribution of ring positions if you calculate the advance a bit differently, both when initializing and when encrypting/decrypting.

1. Start with 1.
2. Look at the letter on ring 2 next to the A on ring 1.  If there&#039;s a dot above, add 2.  If there&#039;s a dot below, add 1.
3. Look at the letter on ring 3 next to the A on ring 1.  If there&#039;s a dot above, add 6.  If there&#039;s a dot below, add 3.</description>
		<content:encoded><![CDATA[<p>Now that I&#8217;ve had more time to play with Conjugal, it gives a more even distribution of ring positions if you calculate the advance a bit differently, both when initializing and when encrypting/decrypting.</p>
<p>1. Start with 1.<br />
2. Look at the letter on ring 2 next to the A on ring 1.  If there&#8217;s a dot above, add 2.  If there&#8217;s a dot below, add 1.<br />
3. Look at the letter on ring 3 next to the A on ring 1.  If there&#8217;s a dot above, add 6.  If there&#8217;s a dot below, add 3.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kleer001</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-304429</link>
		<dc:creator>kleer001</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-304429</guid>
		<description>Ok, 36 letter alphabet. In 45 minutes or so I:
- folded a square piece of paper in half, half again, in thirds in one direction, unfold, in thirds the other way. 
- rolled 2d6 36 times for a monster key of 12 triplets
- rolled 2d6 another bloody 36 times for the shuffled alphabet written on the other side of the sheet. 
- Rolled 2d6 6 times, (mod 2) for the binary triplet switches.
- copied the key and alphabet to another sheet. 

Of course it could all be for naught if my scheme is worth bupkis, or the pad is compromised. 

36!*(26^2+(3*6*9))^12 (4.46e76) keys.  

</description>
		<content:encoded><![CDATA[<p>Ok, 36 letter alphabet. In 45 minutes or so I:<br />
- folded a square piece of paper in half, half again, in thirds in one direction, unfold, in thirds the other way.<br />
- rolled 2d6 36 times for a monster key of 12 triplets<br />
- rolled 2d6 another bloody 36 times for the shuffled alphabet written on the other side of the sheet.<br />
- Rolled 2d6 6 times, (mod 2) for the binary triplet switches.<br />
- copied the key and alphabet to another sheet. </p>
<p>Of course it could all be for naught if my scheme is worth bupkis, or the pad is compromised. </p>
<p>36!*(26^2+(3*6*9))^12 (4.46e76) keys.  </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Faustus</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276530</link>
		<dc:creator>Faustus</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276530</guid>
		<description>@Daemon

oh yeah, what a staggeringly easy cipher. If you&#039;re going to do that why don&#039;t you learn to very quickly multiply prime numbers together, forget about the rings, write your public key on your forehead and encipher all your messages in mental arithmetic RSA.

I don&#039;t think there&#039;s going to be that much of a rush to decode these communications...so maybe ease of use slightly trumps learning a new language.</description>
		<content:encoded><![CDATA[<p>@Daemon</p>
<p>oh yeah, what a staggeringly easy cipher. If you&#8217;re going to do that why don&#8217;t you learn to very quickly multiply prime numbers together, forget about the rings, write your public key on your forehead and encipher all your messages in mental arithmetic RSA.</p>
<p>I don&#8217;t think there&#8217;s going to be that much of a rush to decode these communications&#8230;so maybe ease of use slightly trumps learning a new language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kleer001</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-295730</link>
		<dc:creator>kleer001</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-295730</guid>
		<description>Wow, what was I smoking?! Those numbers are way too big. Exciting though. 
It&#039;s actually 3*(26^2) PLUS 3*(162) =  2514 places in a 9 character key. 
and an 80 triplet key with associated binary assignments would give you a 80*(26^2+162)= 67,040 key space. Much more reasonable sounding. 

I think it might be pretty strong against a fequency attack if the keys are picked randomly (which you can get pretty easily with a few 6 sided dice) AND if you mangle the plain text (disemvowel and misspell). Without a better maths background I&#039;m not certain, but I think it would be difficult to pinpoint the keylength from the cypher text alone. Any mathHeads what can set me straight?




</description>
		<content:encoded><![CDATA[<p>Wow, what was I smoking?! Those numbers are way too big. Exciting though.<br />
It&#8217;s actually 3*(26^2) PLUS 3*(162) =  2514 places in a 9 character key.<br />
and an 80 triplet key with associated binary assignments would give you a 80*(26^2+162)= 67,040 key space. Much more reasonable sounding. </p>
<p>I think it might be pretty strong against a fequency attack if the keys are picked randomly (which you can get pretty easily with a few 6 sided dice) AND if you mangle the plain text (disemvowel and misspell). Without a better maths background I&#8217;m not certain, but I think it would be difficult to pinpoint the keylength from the cypher text alone. Any mathHeads what can set me straight?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: boing_x</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276790</link>
		<dc:creator>boing_x</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276790</guid>
		<description>I like the ring, I don&#039;t understand the purpose of the dots.  No one seems to have mentioned them, unless I missed it.</description>
		<content:encoded><![CDATA[<p>I like the ring, I don&#8217;t understand the purpose of the dots.  No one seems to have mentioned them, unless I missed it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gtllama</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-292408</link>
		<dc:creator>gtllama</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-292408</guid>
		<description>Ha ha, one of the first things that came to my mind was balanced ternary, too (@snakeon, #55). My method is slightly different; instead of tritwise addition, just add the number represented by the dots to the plaintext letter by counting forward through the alphabet (or backward, if the dots represent a negative number). This has the advantage of not requiring the lookup table of balanced ternary representations of each letter.

Here is a detailed description of how to convert a triple of letters into a number, for those unfamiliar with balanced ternary. I will abbreviate a dot above the letter as &quot;^&quot;, a dot below the letter as &quot;v&quot;, and no dot as 0. These correspond to the balanced ternary digits +1 (up), -1 (down), and zero.

1. Align the three letters on the rings.
2. The first ring is the nines place.  ^ = 9, v = -9, 0 = 0
3. The second ring is the threes place.  ^ = 3, v = -3, 0 = 0
4. The third ring is the ones place.  ^ = 1, v = -1, 0 = 0
5. Sum up the values of the rings.

For example, AAA has dots ^^^, which equals 13 (9 + 3 + 1). RRR has dots vvv, which equals -13 ((-9) + (-3) + (-1)). PPP has dots ^0v, which equals 8 (9 + 0 + (-1)).

Thus the rings embody a kind of hash function from letter triples to numbers in the range -13 to 13.

The cipher (when the key stream is generated by the random generator described below, I call it the Rusty cipher):

1. For a key stream, you need a sequence of letters at least three times as long as the message.
2. For each letter in the plaintext, take the next three letters from the key stream and line them up on the rings.
3. Convert the dots on those three letters into a number.
4. If the number is positive, count forward that many letters in the alphabet, starting from the plaintext letter.  If the number is negative, count backward. If you reach one end of the alphabet, wrap around to the other end. If the number is zero, use the plaintext letter unchanged.

To decipher, follow the same process, but flip the sign on the number in step 3.

Example, using a pseudorandom key stream (generated below):

key stream:  HEN  ULR  HFC  YMH  ...
dots      :  0v0  vvv  0v^  ^^v  ...
numbers   :  -3   -13  -2   11   ...
plain text:   h    a    n    k   ...
ciphertext:   E    N    L    V   ...

Using the text of a book as the key stream is easy, but letter frequencies and (most applicable to this method) trigram frequencies are well known, and would bias the output of this cipher. A random key stream would be better. Of course, if you had a way to share a truly random key stream, you would do a OTP, but that is impractical, so...

Here is a way to generate a pseudorandom key stream using only one operation that is easy to perform on the cipher rings. This kind of PRNG is called a Lagged Fibonacci Generator (LFG). LFGs are not cryptographically secure, but combined with the crypto-ring hash function, they would have rocked in the classical crypto era.

The key can be a word or a phrase or random letters. You need at least two letters. For best results, at least one should be one of: BDFHJLPRTVXZ. This is because we are effectively adding mod 26, with A=0, B=1, etc., and those are the letters that are relatively prime to 26.

The sequence of letters produced by the LFG is defined as S[n] = S[n-k] + S[n-k+1], where k is the key length and + is the operation of adding letters together using the crypto rings.  To add X and Y, for example, line up A on ring 1 with X on ring 2, then find Y on ring 1, and see what it lines up with on ring 2 (V, so X + Y = V).

For example, using the key DEAN:
D+E = H
E+A = E
A+N = N
N+H = U
H+E = L
E+N = R
N+U = H
U+L = F
L+R = C
R+H = Y
H+F = M
F+C = H
.
.
.

Take the output starting at the first letter after the key.

LFGs are sensitive to initial state (in this case, the key).  But with a key length of just five, most periods seem to range from 30941 to 649761, which should be long enough for any message you are likely to work by hand.  Here is a table showing the maximum period I found for small key lengths.

2 &#124; 84
3 &#124; 1281
4 &#124; 10980
5 &#124; 649761
6 &#124; 7797132</description>
		<content:encoded><![CDATA[<p>Ha ha, one of the first things that came to my mind was balanced ternary, too (@snakeon, #55). My method is slightly different; instead of tritwise addition, just add the number represented by the dots to the plaintext letter by counting forward through the alphabet (or backward, if the dots represent a negative number). This has the advantage of not requiring the lookup table of balanced ternary representations of each letter.</p>
<p>Here is a detailed description of how to convert a triple of letters into a number, for those unfamiliar with balanced ternary. I will abbreviate a dot above the letter as &#8220;^&#8221;, a dot below the letter as &#8220;v&#8221;, and no dot as 0. These correspond to the balanced ternary digits +1 (up), -1 (down), and zero.</p>
<p>1. Align the three letters on the rings.<br />
2. The first ring is the nines place.  ^ = 9, v = -9, 0 = 0<br />
3. The second ring is the threes place.  ^ = 3, v = -3, 0 = 0<br />
4. The third ring is the ones place.  ^ = 1, v = -1, 0 = 0<br />
5. Sum up the values of the rings.</p>
<p>For example, AAA has dots ^^^, which equals 13 (9 + 3 + 1). RRR has dots vvv, which equals -13 ((-9) + (-3) + (-1)). PPP has dots ^0v, which equals 8 (9 + 0 + (-1)).</p>
<p>Thus the rings embody a kind of hash function from letter triples to numbers in the range -13 to 13.</p>
<p>The cipher (when the key stream is generated by the random generator described below, I call it the Rusty cipher):</p>
<p>1. For a key stream, you need a sequence of letters at least three times as long as the message.<br />
2. For each letter in the plaintext, take the next three letters from the key stream and line them up on the rings.<br />
3. Convert the dots on those three letters into a number.<br />
4. If the number is positive, count forward that many letters in the alphabet, starting from the plaintext letter.  If the number is negative, count backward. If you reach one end of the alphabet, wrap around to the other end. If the number is zero, use the plaintext letter unchanged.</p>
<p>To decipher, follow the same process, but flip the sign on the number in step 3.</p>
<p>Example, using a pseudorandom key stream (generated below):</p>
<p>key stream:  HEN  ULR  HFC  YMH  &#8230;<br />
dots      :  0v0  vvv  0v^  ^^v  &#8230;<br />
numbers   :  -3   -13  -2   11   &#8230;<br />
plain text:   h    a    n    k   &#8230;<br />
ciphertext:   E    N    L    V   &#8230;</p>
<p>Using the text of a book as the key stream is easy, but letter frequencies and (most applicable to this method) trigram frequencies are well known, and would bias the output of this cipher. A random key stream would be better. Of course, if you had a way to share a truly random key stream, you would do a OTP, but that is impractical, so&#8230;</p>
<p>Here is a way to generate a pseudorandom key stream using only one operation that is easy to perform on the cipher rings. This kind of PRNG is called a Lagged Fibonacci Generator (LFG). LFGs are not cryptographically secure, but combined with the crypto-ring hash function, they would have rocked in the classical crypto era.</p>
<p>The key can be a word or a phrase or random letters. You need at least two letters. For best results, at least one should be one of: BDFHJLPRTVXZ. This is because we are effectively adding mod 26, with A=0, B=1, etc., and those are the letters that are relatively prime to 26.</p>
<p>The sequence of letters produced by the LFG is defined as S[n] = S[n-k] + S[n-k+1], where k is the key length and + is the operation of adding letters together using the crypto rings.  To add X and Y, for example, line up A on ring 1 with X on ring 2, then find Y on ring 1, and see what it lines up with on ring 2 (V, so X + Y = V).</p>
<p>For example, using the key DEAN:<br />
D+E = H<br />
E+A = E<br />
A+N = N<br />
N+H = U<br />
H+E = L<br />
E+N = R<br />
N+U = H<br />
U+L = F<br />
L+R = C<br />
R+H = Y<br />
H+F = M<br />
F+C = H<br />
.<br />
.<br />
.</p>
<p>Take the output starting at the first letter after the key.</p>
<p>LFGs are sensitive to initial state (in this case, the key).  But with a key length of just five, most periods seem to range from 30941 to 649761, which should be long enough for any message you are likely to work by hand.  Here is a table showing the maximum period I found for small key lengths.</p>
<p>2 | 84<br />
3 | 1281<br />
4 | 10980<br />
5 | 649761<br />
6 | 7797132</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Albatross</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-278074</link>
		<dc:creator>Albatross</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-278074</guid>
		<description>While these rings may represent only a nod in the direction of truly robust encryption, for the purposes of ROMANCE to be adequately served your spouse&#039;s ring needs to be designed to securely store the encryption key of your ring. 

These rings demonstrate to the world that True Love is an Enigma. 

I get misty just thinking about it.</description>
		<content:encoded><![CDATA[<p>While these rings may represent only a nod in the direction of truly robust encryption, for the purposes of ROMANCE to be adequately served your spouse&#8217;s ring needs to be designed to securely store the encryption key of your ring. </p>
<p>These rings demonstrate to the world that True Love is an Enigma. </p>
<p>I get misty just thinking about it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Waelwulf</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276803</link>
		<dc:creator>Waelwulf</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276803</guid>
		<description>Dmn Cry, y sr d psh yr bk hrd. Mny, mny f yr psts hv n sm wy dvrtsd t.  gt t bt t jst sms wrd n  blg tht&#039;s nt yrs spcfclly, yh?</description>
		<content:encoded><![CDATA[<p>Dmn Cry, y sr d psh yr bk hrd. Mny, mny f yr psts hv n sm wy dvrtsd t.  gt t bt t jst sms wrd n  blg tht&#8217;s nt yrs spcfclly, yh?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hinermad</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-277827</link>
		<dc:creator>Hinermad</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-277827</guid>
		<description>Ciphers, keys, passwords. For crying out loud, do you people know nothing about security?

http://history1900s.about.com/library/photos/blywwiip123.htm

Just kidding, Cory. I think it&#039;s a great thing you&#039;ve done. But having a wife who shares your unconventionality is even better. Kudos to both of you!

Dave
</description>
		<content:encoded><![CDATA[<p>Ciphers, keys, passwords. For crying out loud, do you people know nothing about security?</p>
<p><a href="http://history1900s.about.com/library/photos/blywwiip123.htm" rel="nofollow">http://history1900s.about.com/library/photos/blywwiip123.htm</a></p>
<p>Just kidding, Cory. I think it&#8217;s a great thing you&#8217;ve done. But having a wife who shares your unconventionality is even better. Kudos to both of you!</p>
<p>Dave</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-278091</link>
		<dc:creator>Jeff</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-278091</guid>
		<description>
You will have a one time pad-type code. Both of you will know the key, so the code you come up with can mean anything you need it too--your own special code for something important, like your first date, or anniversary.  Maybe you could have the interiors inscribed with elfin script:  Two rings to bind us both, remind us that we took an oath: Forever yours, Forever mine, until the very end of time.  
</description>
		<content:encoded><![CDATA[<p>You will have a one time pad-type code. Both of you will know the key, so the code you come up with can mean anything you need it too&#8211;your own special code for something important, like your first date, or anniversary.  Maybe you could have the interiors inscribed with elfin script:  Two rings to bind us both, remind us that we took an oath: Forever yours, Forever mine, until the very end of time.  </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kleer001</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-291147</link>
		<dc:creator>kleer001</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-291147</guid>
		<description>another constraint: Cannot be solved with pen and paper attacks. </description>
		<content:encoded><![CDATA[<p>another constraint: Cannot be solved with pen and paper attacks. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-281420</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-281420</guid>
		<description>htom (forgot my registration, I&#039;ll find or fix it, the message is as I said at Schneier&#039;s blog) &lt;p&gt; Perfect pangrams are the first thought of how to extend it. The question is whether to use them as an additional, invisible ring, or in some other fashion. Imperfect pangrams, with repletions ignored, might be useful, too. &lt;p&gt; And I want to use the dots to key transpositions. After doing the letter substitution on four letters, the dots and non-dots above the current trio of &quot;active&quot; letters on the rings indicate swapping; dot on left, swap the first pair of letters currently being encrypted with each other, dot on right, swap the second pair letters, dot in middle, swap the first pair and second pair.</description>
		<content:encoded><![CDATA[<p>htom (forgot my registration, I&#8217;ll find or fix it, the message is as I said at Schneier&#8217;s blog)
<p> Perfect pangrams are the first thought of how to extend it. The question is whether to use them as an additional, invisible ring, or in some other fashion. Imperfect pangrams, with repletions ignored, might be useful, too. </p>
<p> And I want to use the dots to key transpositions. After doing the letter substitution on four letters, the dots and non-dots above the current trio of &#8220;active&#8221; letters on the rings indicate swapping; dot on left, swap the first pair of letters currently being encrypted with each other, dot on right, swap the second pair letters, dot in middle, swap the first pair and second pair.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bachrach44</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276305</link>
		<dc:creator>bachrach44</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276305</guid>
		<description>What does it matter which ring doesn&#039;t move? If the middle ring is fixed (relative to what? your finger?), then essentially all three rings can move relative to each other, allowing any initial setting you would like, right? (Or am I missing something?)

BTW - I want to you to know I&#039;m totally jealous of the ring. :-)</description>
		<content:encoded><![CDATA[<p>What does it matter which ring doesn&#8217;t move? If the middle ring is fixed (relative to what? your finger?), then essentially all three rings can move relative to each other, allowing any initial setting you would like, right? (Or am I missing something?)</p>
<p>BTW &#8211; I want to you to know I&#8217;m totally jealous of the ring. :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Liaf</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-287826</link>
		<dc:creator>Liaf</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-287826</guid>
		<description>http://www.jbentovim.com/encoder%20rings.htm
different, but still neat-o.</description>
		<content:encoded><![CDATA[<p><a href="http://www.jbentovim.com/encoder%20rings.htm" rel="nofollow">http://www.jbentovim.com/encoder%20rings.htm</a><br />
different, but still neat-o.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RevEng</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-288595</link>
		<dc:creator>RevEng</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-288595</guid>
		<description>There are some constraints on this problem that people suggesting ciphers should be aware of:
&lt;ol&gt;
&lt;li&gt;All existing public-key ciphers require difficult, multi-digit calculations.  Assuming that they don&#039;t want to use an arbitrary precision calculator with their rings, this is out.&lt;/li&gt;
&lt;li&gt;Without the option of a public-key cipher, a shared-key cipher is the only choice.&lt;/li&gt;
&lt;li&gt;The cipher will be well-known (no security through obscurity).  The construction of the rings is well-known and since only a handful of ciphers have been suggested, it&#039;s expected that somebody will be able to try all of the suggestions to find out which one Cory and his wife are using (assuming he doesn&#039;t tell us straight out).&lt;/li&gt;
&lt;li&gt;Therefore, the only secret is the shared key.&lt;/li&gt;
&lt;li&gt;Unless otherwise stated, we should assume only simple additional tools (coins, pen, paper, etc.).  This will limit us to simple math.  It may also limit the size of the shared secret to something they can remember (carrying a book around may not be feasible).&lt;/li&gt;
&lt;li&gt;The key will not change very often.  This is arguable, but being that they are human, they will not want to memorize a large amount.  Assuming that they don&#039;t carry a large source of key material (such as a novel), they will be limited to memorizing, at most, a few, short keys.&lt;/li&gt;
&lt;/ol&gt;

Any other constraints that anyone can see?  It helps to have requirements before designing algorithms (how can you tell I&#039;m an engineer?).

We should probably list the scope limitations as well:
&lt;ol&gt;
&lt;li&gt;The algorithm doesn&#039;t have to be secure against computer analysis.  Given the key space and the limited number of calculations we can make, this level of security is unreasonable.&lt;/li&gt;
&lt;li&gt;The messages will be short.  One could argue that this isn&#039;t a necessary requirement, but them both being human, they won&#039;t want to spend four hours encoding/decoding a dissertation.  Should they wish to have further secure communication, the rings could be used to establish a more secure channel elsewhere (such as meeting in a secluded place).&lt;/li&gt;
&lt;/ol&gt;</description>
		<content:encoded><![CDATA[<p>There are some constraints on this problem that people suggesting ciphers should be aware of:</p>
<ol>
<li>All existing public-key ciphers require difficult, multi-digit calculations.  Assuming that they don&#8217;t want to use an arbitrary precision calculator with their rings, this is out.</li>
<li>Without the option of a public-key cipher, a shared-key cipher is the only choice.</li>
<li>The cipher will be well-known (no security through obscurity).  The construction of the rings is well-known and since only a handful of ciphers have been suggested, it&#8217;s expected that somebody will be able to try all of the suggestions to find out which one Cory and his wife are using (assuming he doesn&#8217;t tell us straight out).</li>
<li>Therefore, the only secret is the shared key.</li>
<li>Unless otherwise stated, we should assume only simple additional tools (coins, pen, paper, etc.).  This will limit us to simple math.  It may also limit the size of the shared secret to something they can remember (carrying a book around may not be feasible).</li>
<li>The key will not change very often.  This is arguable, but being that they are human, they will not want to memorize a large amount.  Assuming that they don&#8217;t carry a large source of key material (such as a novel), they will be limited to memorizing, at most, a few, short keys.</li>
</ol>
<p>Any other constraints that anyone can see?  It helps to have requirements before designing algorithms (how can you tell I&#8217;m an engineer?).</p>
<p>We should probably list the scope limitations as well:</p>
<ol>
<li>The algorithm doesn&#8217;t have to be secure against computer analysis.  Given the key space and the limited number of calculations we can make, this level of security is unreasonable.</li>
<li>The messages will be short.  One could argue that this isn&#8217;t a necessary requirement, but them both being human, they won&#8217;t want to spend four hours encoding/decoding a dissertation.  Should they wish to have further secure communication, the rings could be used to establish a more secure channel elsewhere (such as meeting in a secluded place).</li>
</ol>
]]></content:encoded>
	</item>
	<item>
		<title>By: Takuan</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-276309</link>
		<dc:creator>Takuan</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-276309</guid>
		<description>The instructions have to be coded into a nursery rhyme for Posey to learn.</description>
		<content:encoded><![CDATA[<p>The instructions have to be coded into a nursery rhyme for Posey to learn.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RevEng</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-288601</link>
		<dc:creator>RevEng</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-288601</guid>
		<description>One suggestion for ciphers: rather than using both rotating rings in the same cipher, use them for different purposes.  For example, consider the common technique of having a real and a fake password.  We do something similar, only we use one rotating ring as the &quot;real&quot; ring and the other ring as the &quot;fake&quot; ring.  The couple chooses these ahead of time (it&#039;s a simple secret, but it&#039;s not meant to be secure against guessing).  Normally they encrypt everything with the &quot;real&quot; ring, but if they are forced to divulge their secret, they tell the attacker to use the other ring.  The recipient will immediately be able to tell that the message wasn&#039;t encoded with the real ring, and can then verify that it was actually encoded with the fake ring.  They then know that the message is a fake, and know what the (intentionally misleading) message is.

One possible hole in the above is that one ring isn&#039;t used at all, which seems suspicious.  Instead, you could make a cipher which uses both rings, but switch the order that rings are used in.</description>
		<content:encoded><![CDATA[<p>One suggestion for ciphers: rather than using both rotating rings in the same cipher, use them for different purposes.  For example, consider the common technique of having a real and a fake password.  We do something similar, only we use one rotating ring as the &#8220;real&#8221; ring and the other ring as the &#8220;fake&#8221; ring.  The couple chooses these ahead of time (it&#8217;s a simple secret, but it&#8217;s not meant to be secure against guessing).  Normally they encrypt everything with the &#8220;real&#8221; ring, but if they are forced to divulge their secret, they tell the attacker to use the other ring.  The recipient will immediately be able to tell that the message wasn&#8217;t encoded with the real ring, and can then verify that it was actually encoded with the fake ring.  They then know that the message is a fake, and know what the (intentionally misleading) message is.</p>
<p>One possible hole in the above is that one ring isn&#8217;t used at all, which seems suspicious.  Instead, you could make a cipher which uses both rings, but switch the order that rings are used in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kleer001</title>
		<link>http://boingboing.net/2008/09/05/help-design-a-cipher.html#comment-283745</link>
		<dc:creator>kleer001</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">#comment-283745</guid>
		<description>Hmmm HTOM, that looks interesting, but there&#039;s no numbers on the rings. 

I did some counting with my flipping and adding and found a strangely pretty and lumpy fractal distribution that looks a little like one side of a Kock snowflake. 
M seems to be the favored letter. It&#039;s not evenly spaced because 100+011 is the same as 010+101... 

:(</description>
		<content:encoded><![CDATA[<p>Hmmm HTOM, that looks interesting, but there&#8217;s no numbers on the rings. </p>
<p>I did some counting with my flipping and adding and found a strangely pretty and lumpy fractal distribution that looks a little like one side of a Kock snowflake.<br />
M seems to be the favored letter. It&#8217;s not evenly spaced because 100+011 is the same as 010+101&#8230; </p>
<p>:(</p>
]]></content:encoded>
	</item>
</channel>
</rss>
