[Home]BubbleBabble

Anonymous | YsoldeWiki | RecentChanges | Login

Sometimes refered to as draft-huima-babble-01.txt, archived from [the secsh mailing list].
From ietf-ssh-owner-secsh-archive=odin.ietf.org@netbsd.org  Tue Aug  7 06:31:17 2001
Received: from mail.netbsd.org (mail.netbsd.org [155.53.1.253])
	by ietf.org (8.9.1a/8.9.1a) with SMTP id GAA29675
	for <secsh-archive@odin.ietf.org>; Tue, 7 Aug 2001 06:31:16 -0400 (EDT)
Received: (qmail 25180 invoked by uid 605); 7 Aug 2001 10:28:05 -0000
Delivered-To: ietf-ssh@netbsd.org
Received: (qmail 25170 invoked from network); 7 Aug 2001 10:28:00 -0000
Received: from fw.hel.fi.ssh.com (193.64.193.124)
  by mail.netbsd.org with SMTP; 7 Aug 2001 10:28:00 -0000
Received: from viikuna.hel.fi.ssh.com (viikuna.hel.fi.ssh.com [10.1.0.46])
	by fw.hel.fi.ssh.com (SSH-1.27) with SMTP id f77AW3f02302
	for <ietf-ssh@netbsd.org>; Tue, 7 Aug 2001 13:32:07 +0300 (EEST)
Received: (qmail 6751 invoked from network); 7 Aug 2001 10:32:02 -0000
Received: from unknown (HELO johto.hel.fi.ssh.com) ([10.1.0.48]) (envelope-sender <sjl@i-mail.ssh.fi>)
          by viikuna.hel.fi.ssh.com (qmail-ldap-1.03) with SMTP
          for <ietf-ssh@netbsd.org>; 7 Aug 2001 10:32:02 -0000
Received: (from sjl@localhost)
	by johto.hel.fi.ssh.com (8.9.3/8.9.3) id NAA14487;
	Tue, 7 Aug 2001 13:32:46 +0300
From: "Sami J. Lehtinen" <sjl@ssh.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="fIHgcHgV4k"
Content-Transfer-Encoding: 7bit
Message-ID: <15215.50126.388539.735708@johto.hel.fi.ssh.com>
Date: Tue, 7 Aug 2001 13:32:46 +0300 (EEST)
To: ietf-ssh@netbsd.org
Subject: Bubble Babble
X-Mailer: VM 6.72 under 21.1 (patch 9) "Canyonlands" XEmacs Lucid
Sender: ietf-ssh-owner@netbsd.org
Precedence: list


--fIHgcHgV4k
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit

Here's the document, as requested. Keep in mind that this document
will need atleast some polishing before any formal publication can be
done.


--fIHgcHgV4k
Content-Type: text/plain
Content-Description: Bubble Babble specification
Content-Disposition: inline;
	filename="babble-rfc.txt"
Content-Transfer-Encoding: 7bit

authors==Huima
status==Experimental
title==The Bubble Babble Binary Data Encoding
number==Internet Draft
date==April 2000
Network Working Group                                        Antti Huima
Internet Draft                               SSH Communications Security
draft-huima-babble-01.txt                                     April 2000


		The Bubble Babble Binary Data Encoding

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

Abstract

   This document describes a new encoding method for binary data that is
   intended to be used in conjunction with fingerprints of
   security-critical data.

1. Introduction

   Hash values of certificates and public keys, known as fingerprints
   or thumbprints, are commonly used for verifying that a received
   security-critical datum has been received correctly.  Fingerprints
   are binary data and typically encoded as series of hexadecimal
   digits. However, long strings hexadecimal digits are difficult for
   comprehend and cumbersome to translate reliably e.g. over phone.

   The Bubble Babble Encoding encodes arbitrary binary data into
   pseudowords that are more natural to humans and that can be
   pronounced relatively easily. The encoding consumes asymptotically
   the same amount of space as an encoding of the form

     HH HH HH HH ...

   where `H' is a hexadecimal digit, i.e. carries 16 bits in six
   characters. However, the Bubble Babble Encoding includes a
   checksumming method that can sometimes detect invalid encodings.
   The method does not increase the length of the encoded data.

2. Encoding

   Below, _|X|_ denotes the largest integer not greater than X.

   Let the data to be encoded be D[1] ... D[K] where K is the length
   of the data in bytes; every D[i] is an integer from 0 to 2^8 - 1.
   First define the checksum series C[1] ... C[_|K/2|_] where

     C[1] = 1

     C[n] = (C[n - 1] * 5 + (D[n * 2 - 3] * 7 + D[n * 2 - 2])) mod 36

   The data is then transformed into _|K/2|_ `tuples'
   T[1] ... T[_|K/2|_] and one `partial tuple' P so that

     T[i] = <a, b, c, d, e> 

   where

     a = (((D[i * 2 - 3] >> 6) & 3) + C[i]) mod 6
     b = (D[i * 2 - 3] >> 2) & 15
     c = (((D[i * 2 - 3]) & 3) + _|C[i] / 6|_) mod 6
     d = (D[i * 2 - 2] >> 4) & 15; and
     e = (D[i * 2 - 3]) & 15.

   The partial tuple P is

     P = <a, b, c>

   where if K is even then

     a = (C[i]) mod 6
     b = 16
     c = _|C[i] / 6|_

   but if it is odd then

     a = (((D[K] >> 6) & 3) + C[i]) mod 6
     b = (D[K] >> 2) & 15
     c = (((D[K]) & 3) + _|C[i] / 6|_) mod 6
   
   The `vowel table' V maps integers between 0 and 5 to vowels as
 
     0 - a
     1 - e
     2 - i
     3 - o
     4 - u
     5 - y

   and the `consonant table' C maps integers between 0 and 16 to
   consonants as

     0 - b
     1 - c
     2 - d
     3 - f
     4 - g
     5 - h
     6 - k
     7 - l
     8 - m
     9 - n
    10 - p
    11 - r
    12 - s
    13 - t
    14 - v
    15 - z
    16 - x
   
   The encoding E(T) of a tuple T = <a, b, c, d, e> is then the string

     V[a] C[b] V[c] C[d] `-' C[e]
 
   where there are five characters, and `-' is the literal hyphen.

   The encoding E(P) of a partial tuple P = <a, b, c> is the
   three-character string

     V[a] C[b] V[c].

   Finally, the encoding of the whole input data D is obtained as

     `x' E(T[1]) E(T[2]) ... E(T[_|K/2|_]) E(P) `x'

   where `x's are literal characters.

3. Decoding

   Decoding is obviously the process of encoding reversed.

   To check the checksums, when a tuple <a, b, c, d, e> or partial
   tuple <a, b, c> has been recovered from the encoded string, an
   implementation should check that ((a - C[i]) mod 6) < 4 and that
   ((c - C[i]) mod 6) < 4. Otherwise the encoded string is not a valid
   encoding of any data and should be rejected.

4. Checksum Strength

   Every vowel in an encoded string carries 0.58 bits redundancy; thus
   the length of the `checksum' in the encoding of an input string
   containing K bytes is 0.58 * K bits.

5. Test Vectors

   ASCII Input       Encoding
   ------------------------------------------------------------------
   `' (empty string) `xexax'
   `1234567890'      `xesef-disof-gytuf-katof-movif-baxux'
   `Pineapple'       `xigak-nyryk-humil-bosek-sonax'

6. Author's Address

   Antti Huima
   SSH Communications Security, Ltd.
   [XXX]

7. Full Copyright Statement

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain
   it or assist in its implementation may be prepared, copied,
   published and distributed, in whole or in part, without restriction
   of any kind, provided that the above copyright notice and this
   paragraph are included on all such copies and derivative works.
   However, this document itself may not be modified in any way, such
   as by removing the copyright notice or references to the Internet
   Society or other Internet organizations, except as needed for the
   purpose of developing Internet standards in which case the
   procedures for copyrights defined in the Internet Standards process
   must be followed, or as required to translate it into languages
   other than English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on
   an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
   IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

--fIHgcHgV4k
Content-Type: text/plain; charset=us-ascii
Content-Description: .signature
Content-Transfer-Encoding: 7bit


-- 
[sjl@ssh.com          --  Sami J. Lehtinen  --           sjl@iki.fi]
[work:+358 20 5007425][gsm:+358 40 864 3001][http://www.iki.fi/~sjl]
[SSH Communications Security Corp               http://www.ssh.com/]

--fIHgcHgV4k--



Note that there is a typo in the original spec
     e = (D[i * 2 - 3]) & 15.
should read
     e = (D[i * 2 - 2]) & 15.

- JohnMeacham?


Anonymous | YsoldeWiki | RecentChanges | Login
This page is read-only | View other revisions
Last edited April 16, 2004 8:28 am (viewing revision 2, which is the newest) (diff)
Search: