draft-ietf-tsvwg-tinymt32-00.txt   draft-ietf-tsvwg-tinymt32-01.txt 
TSVWG M. Saito TSVWG M. Saito
Internet-Draft M. Matsumoto Internet-Draft M. Matsumoto
Intended status: Standards Track Hiroshima University Intended status: Standards Track Hiroshima University
Expires: October 4, 2019 V. Roca (Ed.) Expires: October 10, 2019 V. Roca (Ed.)
E. Baccelli E. Baccelli
INRIA INRIA
April 2, 2019 April 8, 2019
TinyMT32 Pseudo Random Number Generator (PRNG) TinyMT32 Pseudo Random Number Generator (PRNG)
draft-ietf-tsvwg-tinymt32-00 draft-ietf-tsvwg-tinymt32-01
Abstract Abstract
This document describes the TinyMT32 Pseudo Random Number Generator This document describes the TinyMT32 Pseudo Random Number Generator
(PRNG) that produces 32-bit pseudo-random unsigned integers and aims (PRNG) that produces 32-bit pseudo-random unsigned integers and aims
at having a simple-to-use and deterministic solution. This PRNG is a at having a simple-to-use and deterministic solution. This PRNG is a
small-sized variant of Mersenne Twister (MT) PRNG, also designed by small-sized variant of Mersenne Twister (MT) PRNG, also designed by
M. Saito and M. Matsumoto. The main advantage of TinyMT32 over MT M. Saito and M. Matsumoto. The main advantage of TinyMT32 over MT
is the use of a small internal state, compatible with most target is the use of a small internal state, compatible with most target
platforms including embedded devices, while keeping a reasonably good platforms including embedded devices, while keeping a reasonably good
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 4, 2019. This Internet-Draft will expire on October 10, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 49 skipping to change at page 3, line 49
The TinyMT32 PRNG requires to be initialized with a parameter set The TinyMT32 PRNG requires to be initialized with a parameter set
that needs to be well chosen. In this specification, for the sake of that needs to be well chosen. In this specification, for the sake of
simplicity, the following parameter set MUST be used: simplicity, the following parameter set MUST be used:
o mat1 = 0x8f7011ee = 2406486510 o mat1 = 0x8f7011ee = 2406486510
o mat2 = 0xfc78ff1f = 4235788063 o mat2 = 0xfc78ff1f = 4235788063
o tmat = 0x3793fdff = 932445695 o tmat = 0x3793fdff = 932445695
This parameter set is the first entry of the precalculated parameter This parameter set is the first entry of the precalculated parameter
sets in file tinymt32dc.0.1048576.txt, by Kenji Rikitake, and sets in file tinymt32dc/tinymt32dc.0.1048576.txt, by Kenji Rikitake,
available at <https://github.com/jj1bdx/tinymtdc- and available at <https://github.com/jj1bdx/tinymtdc-longbatch/>.
longbatch/blob/master/tinymt32dc/tinymt32dc.0.1048576.txt>. This is This is also the parameter set used in [KR12].
also the parameter set used in [KR12].
The TinyMT32 PRNG reference implementation is reproduced in Figure 1, The TinyMT32 PRNG reference implementation is reproduced in Figure 1,
with the following differences with respect to the original source with the following differences with respect to the original source
code: code:
o the original copyright and licence have been removed, in o the original copyright and licence have been removed, in
accordance with BCP 78 and the IETF Trust's Legal Provisions accordance with BCP 78 and the IETF Trust's Legal Provisions
Relating to IETF Documents (http://trustee.ietf.org/license-info); Relating to IETF Documents (http://trustee.ietf.org/license-info);
o the source code initially spread over the tinymt32.h and o the source code initially spread over the tinymt32.h and
tinymt32.c files has been merged; tinymt32.c files has been merged;
skipping to change at page 5, line 4 skipping to change at page 4, line 50
uint32_t mat1; uint32_t mat1;
uint32_t mat2; uint32_t mat2;
uint32_t tmat; uint32_t tmat;
} tinymt32_t; } tinymt32_t;
static void tinymt32_next_state (tinymt32_t * s); static void tinymt32_next_state (tinymt32_t * s);
static uint32_t tinymt32_temper (tinymt32_t * s); static uint32_t tinymt32_temper (tinymt32_t * s);
/** /**
* Parameter set to use for this IETF specification. Don't change. * Parameter set to use for this IETF specification. Don't change.
* This parameter set is the first entry of the precalculated * This parameter set is the first entry of the precalculated
* parameter sets in file tinymt32dc.0.1048576.txt, by Kenji * parameter sets in file tinymt32dc/tinymt32dc.0.1048576.txt, by
* Rikitake, available at: * Kenji Rikitake, available at:
* https://github.com/jj1bdx/tinymtdc-longbatch/blob/master/
* tinymt32dc/tinymt32dc.0.1048576.txt * https://github.com/jj1bdx/tinymtdc-longbatch/
* It is also the parameter set used: * It is also the parameter set used:
* Rikitake, K., "TinyMT Pseudo Random Number Generator for * Rikitake, K., "TinyMT Pseudo Random Number Generator for
* Erlang", ACM 11th SIGPLAN Erlang Workshop (Erlang'12), * Erlang", ACM 11th SIGPLAN Erlang Workshop (Erlang'12),
* September, 2012. * September, 2012.
*/ */
const uint32_t TINYMT32_MAT1_PARAM = UINT32_C(0x8f7011ee); const uint32_t TINYMT32_MAT1_PARAM = UINT32_C(0x8f7011ee);
const uint32_t TINYMT32_MAT2_PARAM = UINT32_C(0xfc78ff1f); const uint32_t TINYMT32_MAT2_PARAM = UINT32_C(0xfc78ff1f);
const uint32_t TINYMT32_TMAT_PARAM = UINT32_C(0x3793fdff); const uint32_t TINYMT32_TMAT_PARAM = UINT32_C(0x3793fdff);
/** /**
skipping to change at page 9, line 20 skipping to change at page 9, line 20
specific security risks per se. specific security risks per se.
5. IANA Considerations 5. IANA Considerations
This document does not require any IANA action. This document does not require any IANA action.
6. Acknowledgments 6. Acknowledgments
The authors would like to thank Belkacem Teibi with whom we explored The authors would like to thank Belkacem Teibi with whom we explored
TinyMT32 specificities when looking to an alternative to the Park- TinyMT32 specificities when looking to an alternative to the Park-
Miler Linear Congruential PRNG. The authors would like to thank the Miler Linear Congruential PRNG. The authors would like to thank Greg
three TSVWG chairs, Wesley Eddy, our shepherd, David Black and Gorry Skinner, the three TSVWG chairs, Wesley Eddy, our shepherd, David
Fairhurst, as well as Spencer Dawkins and Mirja Kuhlewind. Last but Black and Gorry Fairhurst, as well as Spencer Dawkins and Mirja
not least, the authors are really grateful to the IESG members, in Kuhlewind. Last but not least, the authors are really grateful to
particular Benjamin Kaduk, Eric Rescorla, and Adam Roach for their the IESG members, in particular Benjamin Kaduk, Eric Rescorla, and
highly valuable feedbacks that greatly contributed to improve this Adam Roach for their highly valuable feedbacks that greatly
specification. contributed to improve this specification.
7. References 7. References
7.1. Normative References 7.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
 End of changes. 8 change blocks. 
20 lines changed or deleted 18 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/