BSD

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • Hardware RNG speed

    3 answers - 1644 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    Hello to the list,
    I'm working on a cryptography project, and one of the things the project
    requires is a moderately high-bandwidth source of truly random numbers.
    To accomplish this, I set up BSD on a board with a (Soekris) Hifn 7955
    accelerator card, but the rate I'm getting by reading out of /dev/srandom
    is pretty low (200B/s). However, this has to be coming from the card,
    because the machine has no other reasonable source of entropy other than
    the network: no hard drive, no keyboard, etc.
    Now, unless the card's specs are deceptive, its random number generator
    must support a higher rate than this: it claims 70 1024-bit Diffie-Hellman
    key exchanges per second, and each such key exchange requires a full
    1024-bit random number, which comes out to 8.8kB/s. The minimum data rate
    for my application is about 1k/s, and I would strongly prefer not to use a
    PRNG.
    Is there a more direct way to query the RNG? random(4) claims that the
    RNG is not mapped directly to a device (/dev/random is not currently
    implemented), but rather that it periodically refreshes the system entropy
    pool. Is there a way to force this to occur more often, or to transfer
    more data? do the numbers lie, and I'm getting all the data I can?
    Thanks for your time,
    Mike Hamburg
    P.S. I'm looking at different sources of random numbers, and cost and
    integration are important factors. Would an AMD Geode LX or VIA C3 or C7
    processor's on-board RNG provide a significantly higher data rate than
    a Soekris card, at a comparable quality?
  • No.1 | | 2043 bytes | |

    12/19/05, Michael Alexander Hamburg <hamburg (AT) fas (DOT) harvard.eduwrote:
    Hello to the list,

    I'm working on a cryptography project, and one of the things the project
    requires is a moderately high-bandwidth source of truly random numbers.
    To accomplish this, I set up BSD on a board with a (Soekris) Hifn 7955
    accelerator card, but the rate I'm getting by reading out of /dev/srandom
    is pretty low (200B/s). However, this has to be coming from the card,
    because the machine has no other reasonable source of entropy other than
    the network: no hard drive, no keyboard, etc.

    Now, unless the card's specs are deceptive, its random number generator
    must support a higher rate than this: it claims 70 1024-bit Diffie-Hellman
    key exchanges per second, and each such key exchange requires a full
    1024-bit random number, which comes out to 8.8kB/s. The minimum data rate
    for my application is about 1k/s, and I would strongly prefer not to use a
    PRNG.

    Is there a more direct way to query the RNG? random(4) claims that the
    RNG is not mapped directly to a device (/dev/random is not currently
    implemented), but rather that it periodically refreshes the system entropy
    pool. Is there a way to force this to occur more often, or to transfer
    more data? do the numbers lie, and I'm getting all the data I can?

    Thanks for your time,
    Mike Hamburg

    P.S. I'm looking at different sources of random numbers, and cost and
    integration are important factors. Would an AMD Geode LX or VIA C3 or C7
    processor's on-board RNG provide a significantly higher data rate than
    a Soekris card, at a comparable quality?

    What about taking a cord that's plugged into the sound card port and
    microphone port, and reading in from the microphone? I've heard that
    is a pretty good source of randomness (all that annoying feedback),
    although I may be completely wrong, feel free to correct me if I am.

    Jason
  • No.2 | | 1202 bytes | |

    Hello to the list,

    I set up BSD on a board with a (Soekris) Hifn 7955
    accelerator card, but the rate I'm getting by reading out of /dev/srandom
    is pretty low (200B/s).

    I am happily using VIA C3s for a project that requires high-quality
    entropy. In the industry I'm involved in, hardware random is de-rigeur.
    The VIA C3, using /dev/srandom, gives me somewhere right around 6KB/s. I
    was hoping for a higher rate, but we just ended up using multiple machines
    as a network random-number service (also yields fault-tolerance).

    In doing reading (but not of the acutal code), I remember having the
    distinct impression that /dev/srandom uses MD5 to "cook" the actual stream
    generated by the C3's on-die HRNG. You have to figure that it is
    compressing the stream. You may wish to look closely at the device driver
    code. There is quite a bit of very good data about the C3's HRNG
    available via google. analysis of this HRNG made it clear that
    "cooking" may be redundant, given the right settings in the driver. I
    made the decision that the developers know what they're up to and left it
    at that.

    Hope this is helpful.
  • No.3 | | 1978 bytes | |

    I tought one of the new features of the Intel Pentium 4, was it's new
    real hardware-based random number generator, I remember reading about it.

    Also take a look at this:

    If you need alot of random numbers in a short time, you are looking for
    a pseudo-random device.

    Michael Alexander Hamburg wrote:
    Hello to the list,

    I'm working on a cryptography project, and one of the things the project
    requires is a moderately high-bandwidth source of truly random numbers.
    To accomplish this, I set up BSD on a board with a (Soekris) Hifn 7955
    accelerator card, but the rate I'm getting by reading out of /dev/srandom
    is pretty low (200B/s). However, this has to be coming from the card,
    because the machine has no other reasonable source of entropy other than
    the network: no hard drive, no keyboard, etc.

    Now, unless the card's specs are deceptive, its random number generator
    must support a higher rate than this: it claims 70 1024-bit Diffie-Hellman
    key exchanges per second, and each such key exchange requires a full
    1024-bit random number, which comes out to 8.8kB/s. The minimum data rate
    for my application is about 1k/s, and I would strongly prefer not to use a
    PRNG.

    Is there a more direct way to query the RNG? random(4) claims that the
    RNG is not mapped directly to a device (/dev/random is not currently
    implemented), but rather that it periodically refreshes the system entropy
    pool. Is there a way to force this to occur more often, or to transfer
    more data? do the numbers lie, and I'm getting all the data I can?

    Thanks for your time,
    Mike Hamburg

    P.S. I'm looking at different sources of random numbers, and cost and
    integration are important factors. Would an AMD Geode LX or VIA C3 or C7
    processor's on-board RNG provide a significantly higher data rate than
    a Soekris card, at a comparable quality?

Re: Hardware RNG speed


max 4000 letters.
Your nickname that display:
In order to stop the spam: 4 + 3 =
QUESTION ON "BSD"

EMSDN.COM