draft-ietf-tsvwg-tinymt32-04.txt   draft-ietf-tsvwg-tinymt32-05.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: December 14, 2019 V. Roca (Ed.) Expires: December 19, 2019 V. Roca (Ed.)
E. Baccelli E. Baccelli
INRIA INRIA
June 12, 2019 June 17, 2019
TinyMT32 Pseudo Random Number Generator (PRNG) TinyMT32 Pseudo Random Number Generator (PRNG)
draft-ietf-tsvwg-tinymt32-04 draft-ietf-tsvwg-tinymt32-05
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. The main small-sized variant of Mersenne Twister (MT) PRNG. The main
advantage of TinyMT32 over MT is the use of a small internal state, advantage of TinyMT32 over MT is the use of a small internal state,
compatible with most target platforms that include embedded devices, compatible with most target platforms that include embedded devices,
while keeping a reasonably good randomness that represents a while keeping a reasonably good randomness that represents a
skipping to change at page 1, line 42 skipping to change at page 1, line 42
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 December 14, 2019. This Internet-Draft will expire on December 19, 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 2, line 27 skipping to change at page 2, line 27
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. TinyMT32 PRNG Specification . . . . . . . . . . . . . . . . . 3 3. TinyMT32 PRNG Specification . . . . . . . . . . . . . . . . . 3
3.1. TinyMT32 Source Code . . . . . . . . . . . . . . . . . . 3 3.1. TinyMT32 Source Code . . . . . . . . . . . . . . . . . . 3
3.2. TinyMT32 Usage . . . . . . . . . . . . . . . . . . . . . 7 3.2. TinyMT32 Usage . . . . . . . . . . . . . . . . . . . . . 7
3.3. Specific Implementation Validation and Deterministic 3.3. Specific Implementation Validation and Deterministic
Behavior . . . . . . . . . . . . . . . . . . . . . . . . 8 Behavior . . . . . . . . . . . . . . . . . . . . . . . . 8
4. Security Considerations . . . . . . . . . . . . . . . . . . . 9 4. Security Considerations . . . . . . . . . . . . . . . . . . . 9
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
7.1. Normative References . . . . . . . . . . . . . . . . . . 10 7.1. Normative References . . . . . . . . . . . . . . . . . . 10
7.2. Informative References . . . . . . . . . . . . . . . . . 10 7.2. Informative References . . . . . . . . . . . . . . . . . 10
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11
1. Introduction 1. Introduction
This document specifies the TinyMT32 PRNG, as a specialization of the This document specifies the TinyMT32 PRNG, as a specialization of the
reference implementation version 1.1 (2015/04/24) by Mutsuo Saito and reference implementation version 1.1 (2015/04/24) by Mutsuo Saito and
Makoto Matsumoto, from Hiroshima University, that can be found at Makoto Matsumoto, from Hiroshima University, that can be found at
[TinyMT-web] (TinyMT web site) and [TinyMT-dev] (Github site). This [TinyMT-web] (TinyMT web site) and [TinyMT-dev] (Github site). This
skipping to change at page 4, line 6 skipping to change at page 4, line 6
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/tinymt32dc.0.1048576.txt, by Kenji Rikitake, sets in file tinymt32dc/tinymt32dc.0.1048576.txt, by Kenji Rikitake,
and available at [TinyMT-params]. This is also the parameter set and available at [TinyMT-params]. This is also the parameter set
used in [KR12]. used in [KR12].
The TinyMT32 PRNG reference implementation is reproduced in Figure 1. The TinyMT32 PRNG reference implementation is reproduced in Figure 1.
This is a C language implementation, compatible with the C99 (ISO/IEC This is a C language implementation, written for C99 [C99]. This
9899:1999), C11 (ISO/IEC 9899:2011) and C18 (ISO/IEC 9899:2018) reference implementation differs from the original source code as
versions of the C language. This reference implementation differs follows:
from the original source code as follows:
o the original copyright and license have been removed by the o the original copyright and license have been removed by the
original authors who are now authors of this document, in original authors who are now authors of this document, 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;
o the unused parts of the original source code have been removed. o the unused parts of the original source code have been removed.
This is the case of the tinymt32_init_by_array() alternative This is the case of the tinymt32_init_by_array() alternative
initialisation function. This is also the case of the initialisation function. This is also the case of the
skipping to change at page 10, line 36 skipping to change at page 10, line 33
ADAPTIVE/>. ADAPTIVE/>.
[Baccelli18] [Baccelli18]
Baccelli, E., Gundogan, C., Hahm, O., Kietzmann, P., Baccelli, E., Gundogan, C., Hahm, O., Kietzmann, P.,
Lenders, M., Petersen, H., Schleiser, K., Schmidt, T., and Lenders, M., Petersen, H., Schleiser, K., Schmidt, T., and
M. Wahlisch, "RIOT: An Open Source Operating System for M. Wahlisch, "RIOT: An Open Source Operating System for
Low-End Embedded Devices in the IoT", IEEE Internet of Low-End Embedded Devices in the IoT", IEEE Internet of
Things Journal (Volume 5, Issue 6), DOI: Things Journal (Volume 5, Issue 6), DOI:
10.1109/JIOT.2018.2815038, December 2018. 10.1109/JIOT.2018.2815038, December 2018.
[C99] "Programming languages - C: C99, correction 3:2007",
International Organization for Standardization, ISO/IEC
9899:1999/Cor 3:2007, November 2007.
[KR12] Rikitake, K., "TinyMT Pseudo Random Number Generator for [KR12] 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 14, 2012, Copenhagen, Denmark, DOI: September 14, 2012, Copenhagen, Denmark, DOI:
http://dx.doi.org/10.1145/2364489.2364504, September 2012. http://dx.doi.org/10.1145/2364489.2364504, September 2012.
[MT98] Matsumoto, M. and T. Nishimura, "Mersenne Twister: A [MT98] Matsumoto, M. and T. Nishimura, "Mersenne Twister: A
623-dimensionally equidistributed uniform pseudorandom 623-dimensionally equidistributed uniform pseudorandom
number generator", ACM Transactions on Modeling and number generator", ACM Transactions on Modeling and
Computer Simulation (TOMACS), Volume 8 Issue 1, Jan. 1998, Computer Simulation (TOMACS), Volume 8 Issue 1, Jan. 1998,
pp.3-30, January 1998, DOI:10.1145/272991.272995, January pp.3-30, January 1998, DOI:10.1145/272991.272995, January
 End of changes. 7 change blocks. 
9 lines changed or deleted 12 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/