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/ |