All Projects → smuellerDD → lrng

smuellerDD / lrng

Licence: other
Linux Random Number Generator

Programming Languages

c
50402 projects - #5 most used programming language
shell
77523 projects
r
7636 projects
perl
6916 projects
Makefile
30231 projects

Projects that are alternatives of or similar to lrng

Random-Number-Generator
A clean, simple random number generator for Android. Downloaded 180,000+ times and rated 2,000+ times on Google Play with 4.7+ average rating.
Stars: ✭ 30 (-47.37%)
Mutual labels:  random, number
CounterView
一个数字变化效果的计数器视图控件
Stars: ✭ 38 (-33.33%)
Mutual labels:  random, number
rocRAND
RAND library for HIP programming language
Stars: ✭ 68 (+19.3%)
Mutual labels:  random, rng
rxjs-ninja
RxJS Operators for handling Observable strings, numbers, booleans and more
Stars: ✭ 68 (+19.3%)
Mutual labels:  random, number
RNG
A simple state-of-the-art C++ random number generator
Stars: ✭ 19 (-66.67%)
Mutual labels:  random, rng
secrets.clj
A library designed to generate cryptographically strong random numbers.
Stars: ✭ 64 (+12.28%)
Mutual labels:  random, rng
grand
Grand is a Go random string generator
Stars: ✭ 12 (-78.95%)
Mutual labels:  random
javascript-strong-password-generator
JavaScript Strong Password Generator: based on Jeff Atwood's Post "Password Rules Are Bullshit".
Stars: ✭ 21 (-63.16%)
Mutual labels:  random
max-safe-integer
ES2015 Number.MAX_SAFE_INTEGER ponyfill
Stars: ✭ 15 (-73.68%)
Mutual labels:  number
movies-dataset
A dataset of films, directors, actresses and actors
Stars: ✭ 17 (-70.18%)
Mutual labels:  random
from-exponential
Lightweight module to convert number from exponential notation to a human readable string.
Stars: ✭ 27 (-52.63%)
Mutual labels:  number
FsRandom
A purely-functional random number generator framework designed for F#
Stars: ✭ 51 (-10.53%)
Mutual labels:  random
ChangeNumbersJs
Tiny Library for change number from a language in other language.
Stars: ✭ 14 (-75.44%)
Mutual labels:  number
jsrand
A seeded pseudo-random number generator for JavaScript.
Stars: ✭ 19 (-66.67%)
Mutual labels:  random
break infinity.js
A replacement for decimal.js for incremental games who want to deal with very large numbers (bigger in magnitude than 1e308, up to as much as 1e(9e15) ) and want to prioritize speed over accuracy.
Stars: ✭ 145 (+154.39%)
Mutual labels:  number
phonenumber
With a given country and phone number, validate and format the MOBILE phone number to E.164 standard
Stars: ✭ 108 (+89.47%)
Mutual labels:  number
aes-stream
A fast AES-PRF based secure random-number generator
Stars: ✭ 15 (-73.68%)
Mutual labels:  random
Random-Name-Picker
Simple, beautiful Android app to help you choose from a list of names at random. Downloaded 560,000+ times on Google Play with a 4.5+ rating after 3,500+ reviews.
Stars: ✭ 37 (-35.09%)
Mutual labels:  random
hashvis
Rust Program for Deterministic Generation of Random Art.
Stars: ✭ 43 (-24.56%)
Mutual labels:  rng
random-users-details
Random Users details in flutter from randomusers api
Stars: ✭ 14 (-75.44%)
Mutual labels:  random

Linux /dev/random - a new approach

The code in this repository provides a different approach to /dev/random which is called Linux Random Number Generator (LRNG) to collect entropy within the Linux kernel. The main improvements compared to the legacy /dev/random is to provide sufficient entropy during boot time as well as in virtual environments and when using SSDs. A secondary design goal is to limit the impact of the entropy collection on massive parallel systems and also allow the use accelerated cryptographic primitives. Also, all steps of the entropic data processing are testable.

The design and implementation is driven by a set of goals described in [1] that the LRNG completely implements. Furthermore, [1] includes a comparison with RNG design suggestions such as SP800-90B, SP800-90C, and AIS20/31.

The LRNG provides a complete separation of the noise source maintenance and the collection of entropy into an entropy pool from the post-processing using a pseudo-random number generator. Different PRNGs are supported, including:

  • Built-in ChaCha20 PRNG which has no dependency to other kernel frameworks.

  • SP800-90A DRBG using the kernel crypto API including its accelerated raw cipher implementations.

  • Arbitrary PRNGs registered with the kernel crypto API

Booting the patch with the kernel command line option "dyndbg=file drivers/char/lrng* +p" generates logs indicating the operation of the LRNG. Each log is prepended with "lrng:".

The LRNG has a flexible design by allowing an easy replacement of the deterministic random number generator component.

LRNG Tests

Implementation verification as well as performance tests are provided in the test directory.

LRNG Backports

Backports to older kernels are provided with the patch sets in backports. Note, the core idea of these backports is to use the unmodified LRNG patch series and add patches to be applied before and after applying the LRNG patches.

ChaCha20 DRNG

The ChaCha20 DRNG used by the LRNG is implemented following standard pseudo- random number generator architectures. To analyze the characteristics of the ChaCha20 DRNG, the ChaCha20 DRNG is copied into a user space library which is available at [2].

The ChaCha20 DRNG code used for the LRNG is identical to the code in [2] which allows to apply conclusions drawn from [2] to be applied to the LRNG.

Cryptographic Algorithm Testing

The used cryptographic algorithms are testable with the acvpparser [3].

References

[1] doc/lrng.pdf

[2] ChaCha20 DRNG

[3] ACVPParser

Author

Stephan Mueller [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].