[Joke-RFC] RFC1439 一意な識別子の一意性

# はじめに

* この文書は [RFC1439](https://www.rfc-editor.org/rfc/rfc1439.txt) を勉強と好奇心のため適当に訳したものです。
* 翻訳の正確さは全く保証しません。
* 誤字誤訳等の指摘はいつでも大歓迎です。

+ 1993 年 3 月に発行されていますが、おそらくはジョーク RFC ではないかと思っている物です（番号が隣の RFC1437 ～ 1438 は 4 月 1 日に発行されているジョーク RFC）。

# The Uniqueness of Unique Identifiers（一意な識別子の一意性）

* Network Working Group
* Request for Comments: 1439

+ C. Finseth
+ University of Minnesota
+ March 1993

## Status of this Memo（このメモの位置づけ）

> This memo provides information for the Internet community.
> It does not specify an Internet standard.
> Distribution of this memo is unlimited.

このメモはインターネットコミュニティのための情報を提供するものである。
インターネット標準を指定するものではない。
このメモの配布は無制限である。

## Abstract（概要）

> This RFC provides information that may be useful when selecting a method to use for assigning unique identifiers to people.

この RFC は、一意である識別子を人に割り当てる方法を選択する際に役立つ情報を提供する。

## 1. The Issue（問題）

> Computer systems require a way to identify the people associated with them.
> These identifiers have been called "user names" or "account names."
> The identifers are typically short, alphanumeric strings.
> In general, these identifiers must be unique.

コンピュータシステムには、関連する人々を識別する方法が必要である。
これらの識別子は、「ユーザー名」または「アカウント名」と呼ばれている。
通常、識別子は短い英数字の文字列である。
一般に、これらの識別子は一意である必要がある。

> The uniqueness is usually achieved in one of three ways:

一意性は通常、次の 3 つの方法のいずれかで実現される。

> (1) The identifiers are assigned in a unique manner without using information associated with the individual.  Example identifiers are:

(訳注：原文は片カッコ `1)` ですが、マークダウンが箇条書きにしてしまうので、両カッコに書き換えています。以下同様)

(1) 識別子は、個人に関連付けられた情報を使用せずに一意の方法で割り当てられる。 識別子の例は次のとおり。

```
           ax54tv
           cs00034
```

> This method was often used by large timesharing systems.
> While it achieved the uniqueness property, there was no way of guessing the identifier without knowing it through other means.

この方法は、大規模なタイムシェアリングシステムでよく使用されていた。
一意性は実現されているが、他の手段で識別子を知らなければ識別子を推測する方法はない。

> (2) The identifiers are assigned in a unique manner where the bulk of the identifier is algorithmically derived from the individual's name.
> Example identifers are:

(2) 識別子の大部分は、個人の名前からアルゴリズムで導き出される特定の方法で割り当てられている。
識別子の例は以下の通り。

```
           Craig.A.Finseth-1
           Finseth1
           caf-1
           fins0001
```

> (3) The identifiers are in general not assigned in a unique manner: the identifier is algorithmically derived from the individual's name and duplicates are handled in an ad-hoc manner.
> Example identifiers are:

(3) 一般に、識別子は特定の方法で割り当てられていない：識別子は個人の名前からアルゴリズムで導き出され、重複はアドホックに処理される。
識別子の例は以下の通り。

```
           Craig.Finseth
           caf
```

> Now that we have widespread electronic mail, an important feature of an identifier system is the ability to predict the identifier based on other information associated with the individual.
> This other information is typically the person's name.

電子メールが普及した現在、識別子システムの重要な特徴は、個人に関連する他の情報に基づいて識別子を予測する能力である。
この他の情報とは、一般的にその人の名前である。

> Methods two and three make such predictions possible, especially if you have one example mapping from a person's name to the identifier.
> Method two relies on using some or all of the name and algorithmically varying it to ensure uniqueness (for example, by appending an integer).
> Method three relies on using some or all of the name and selects an alternate identifier in the case of a duplication.

特に、人名から識別子へのマッピングの例が 1 つでもあれば、方法 2 と 3 でそのような予測が可能になる。
方法 2 は、名前の一部または全部を使用し、アルゴリズムで変化させて一意性を確保する（例えば、整数を付加する）ことに依存する。
方法 3 は、名前の一部または全部を使用することに依存し、重複する場合には代替識別子を選択する。

> For both methods, it is important to minimize the need for making the adjustments required to ensure uniqueness (i.e., an integer that is not 1 or an alternate identifier).
> The probability that an adjustment will be required depends on the format of the identifer and the size of the organization.

いずれの方法においても、一意性を確保するために必要な調整（1 でない整数や代替識別子など）を最小限に抑えることが重要である。
調整が必要となる確率は、識別子の形式や組織の規模によって異なる。

## 2. Identifier Formats（識別子のフォーマット）

> There are a number of popular identifier formats.
> This section will list some of them and supply both typical and maximum values for the number of possible identifiers.
> A "typical" value is the number that you are likely to run into in real life.
> A "maximum" value is the largest number of possible (without getting extreme about it) values.
> All ranges are expressed as a number of bits.

一般的な識別子のフォーマットはいくつかある。
この章では、それらをリストアップし、可能な識別子数の一般的な値と最大の値の両方を提供する。
「一般的」な値とは、実生活で遭遇する可能性が高い数値のことである。
「最大」の値とは、（極端なケースを除けば）可能な最大の値のことである。
すべての範囲はビット数で表している。

### 2.1 Initials（イニシャル）

> There are three popular formats based on initials: those with one, two, or three letters.
> (The number of people with more than three initials is assumed to be small.)
> Values:

イニシャルを基準にすると、1 文字、2 文字、3 文字の 3 つの形式が一般的である。
(3 文字を超えるイニシャルを持つ人は少ないと思われる）。
値を示す。

| format<br>フォーマット | typical<br>一般的 | maximum<br>最大 |
|:-------|:--------|:--------|
| I      |    4    |    5    |
| II     |    8    |    10   |
| III    |    12   |    15   |

> You can also think of these as first, middle, and last initials:

これらは、ファーストネーム、ミドルネーム、ラストネームのイニシャルと考えることもできる。

| format<br>フォーマット | typical<br>一般的 | maximum<br>最大 |
|:-------|:--------|:--------|
| I      |    4    |    5    |
| F L    |    8    |    10   |
| F M L  |    12   |    15   |

### 2.2 Names（名前）

> Again, there are three popular formats based on using names: those with the first name, last name, and both first and last names.
> Values:

ここでも、名前を使うことを前提に、「ファーストネーム」「ラストネーム」「ファーストネームとラストネームの両方」の 3 つの形式が一般的である。
値を示す。

| format<br>フォーマット | typical<br>一般的 | maximum<br>最大 |
|:-----------|:--------|:--------|
| First      |    8    |    14   |
| Last       |    9    |    13   |
| First Last |    17   |    27   |

### 2.3 Combinations（組み合わせ）

> I have seen these combinations in use ("F" is first initial, "M" is middle initial, and "L" is last initial):

このような組み合わせで使われているケースもある（「F」がファーストイニシャル、「M」がミドルイニシャル、「L」がラストイニシャル）。

| format<br>フォーマット | typical<br>一般的 | maximum<br>最大 |
|:-------------|:--------|:--------|
| F Last       |    13   |    18   |
| F M Last     |    17   |    23   |
| First L      |    12   |    19   |
| First M Last |    21   |    32   |

### 2.4 Complete List（完全なリスト）

> Here are all possible combinations of nothing, initial, and full name for first, middle, and last.
> The number of Middle names is assumed to be the same as the number of First names.
> Values:

ここでは、ファースト、ミドル、ラストについて、無し、イニシャル、フルネームのすべての可能な組み合わせを紹介する。
ミドルネームの数はファーストネームの数と同じであると仮定している。
値を示す。

| format<br>フォーマット | typical<br>一般的 | maximum<br>最大 |
|:------------------|:--------|:--------|
| _ _ _             |    0    |    0    |
| _ _ L             |    4    |    5    |
| _ _ Last          |    9    |    13   |
| _ M _             |    4    |    5    |
| _ M L             |    5    |    10   |
| _ M Last          |    13   |    18   |
| _ Middle _        |    8    |    14   |
| _ Middle L        |    12   |    19   |
| _ Middle Last     |    17   |    27   |
| F _ _             |    4    |    5    |
| F _ L             |    5    |    10   |
| F _ Last          |    13   |    18   |
| F M _             |    5    |    10   |
| F M L             |    12   |    15   |
| F M Last          |    17   |    23   |
| F Middle _        |    12   |    19   |
| F Middle L        |    16   |    24   |
| F Middle Last     |    21   |    32   |
| First _ _         |    8    |    14   |
| First _ L         |    12   |    19   |
| First _ Last      |    17   |    27   |
| First M _         |    12   |    19   |
| First M L         |    16   |    24   |
| First M Last      |    21   |    32   |
| First Middle _    |    16   |    28   |
| First Middle L    |    20   |    33   |
| First Middle Last |    26   |    40   |

## 3. Probabilities of Duplicates（重複の確率）

> As can be seen, the information content in these identifiers in no case exceeds 40 bits and the typical information content never exceeds 26 bits.
> The content of most of them is in the 8 to 20 bit range.
> Duplicates are thus not only possible but likely.

このように、これらの識別子の情報量は 40 ビットを超えることはなく、一般的な情報量は 26 ビットを超えることはない。
その内容は、8 ビットから 20 ビット台のものがほとんどである。
そのため、重複が起こりえるというだけでなく、起こる可能性も高い。

> The method used to compute the probability of duplicates is the same as that of the well-known "birthday" problem.
> For a universe of N items, the probability of duplicates in X members is expressed by:

重複の確率を計算するために使用される方法は、よく知られている「誕生日」の問題と同じである。
N 個のアイテムからなるユニバースに対して、X 個のメンバーで重複する確率は次式で表される。

```
           N   N-1   N-2         N-(X-1)
           - x --- x --- x ... x -------
           N    N     N             N
```

```math
\frac{N}{N} \times \frac{N - 1}{N} \times \frac{N - 2}{N} \times \cdots \times \frac{N - ( X - 1) }{N}
```

https://ja.wikipedia.org/wiki/%E8%AA%95%E7%94%9F%E6%97%A5%E3%81%AE%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9

> A program to compute this function for selected values of N is given in the appendix, as is its complete output.

この関数を N の値に応じて計算するプログラムとその完全な出力を付録として提供する。

> The "1%" column is the number of items (people) before an organization of that (universe) size has a 1% chance of a duplicate.
> Similarly for 2%, 5%, 10%, and 20%.

「1%」の欄は、その（ユニバース）規模の組織が 1% の確率で重複する前のアイテム（人）の数である。
2%、5%、10%、20%についても同様である。

|          bits |     universe   |  1%   |  2%   |  5%   |  10%  |  20%  |
|--------------:|---------------:|:------|:------|:------|:------|:------|
|           6   |             64 | 2     | 3     | 4     | 5     | 6     |
|           7   |            128 | 3     | 3     | 5     | 6     | 8     |
|           8   |            256 | 3     | 4     | 6     | 8     | 12    |
|           9   |            512 | 4     | 6     | 8     | 11    | 16    |
|          10   |          1,024 | 6     | 7     | 11    | 16    | 22    |
|          11   |          2,048 | 7     | 10    | 15    | 22    | 31    |
|          12   |          4,096 | 10    | 14    | 21    | 30    | 44    |
|          13   |          8,192 | 14    | 19    | 30    | 43    | 61    |
|          14   |         16,384 | 19    | 27    | 42    | 60    | 86    |
|          15   |         32,768 | 27    | 37    | 59    | 84    | 122   |
|          16   |         65,536 | 37    | 52    | 83    | 118   | 172   |
|          17   |        131,072 | 52    | 74    | 117   | 167   | 243   |
|          18   |        262,144 | 74    | 104   | 165   | 236   | 343   |
|          19   |        524,288 | 104   | 147   | 233   | 333   | 485   |
|          20   |      1,048,576 | 146   | 207   | 329   | 471   | 685   |
|          21   |      2,097,152 | 206   | 292   | 465   | 666   | 968   |
|          22   |      4,194,304 | 291   | 413   | 657   | 941   | 1369  |
|          23   |      8,388,608 | 412   | 583   | 929   | 1330  | 1936  |
|          24   |     16,777,216 | 582   | 824   | 1313  | 1881  | 2737  |
|          25   |     33,554,432 | 822   | 1165  | 1856  | 2660  | 3871  |
|          26   |     67,108,864 | 1162  | 1648  | 2625  | 3761  | 5474  |
|          27   |    134,217,728 | 1644  | 2330  | 3712  | 5319  | 7740  |
|          28   |    268,435,456 | 2324  | 3294  | 5249  | 7522  | 10946 |
|          29   |    536,870,912 | 3286  | 4659  | 7422  | 10637 | 15480 |
|          30   |  1,073,741,824 | 4647  | 6588  | 10496 | 15043 | 21891 |
|          31   |  2,147,483,648 | 6571  | 9316  | 14844 | 21273 | 30959 |

> For example, assume an organization were to select the "First Last" form.
> This form has 17 bits (typical) and 27 bits (maximum) of information.
> The relevant line is:

例えば、ある組織が "First Last" 形式を選択したとする。
この形式は 17 ビット（一般的）、27 ビット（最大）の情報量を持つ。
該当する行は以下の通り：

|          bits |     universe   |  1%   |  2%   |  5%   |  10%  |  20%  |
|--------------:|---------------:|:------|:------|:------|:------|:------|
|          17   |        131,072 | 52    | 74    | 117   | 167   | 243   |

> For an organization with 100 people, the probability of a duplicate would be between 2% and 5% (probably around 4%).
> If the organization had 1,000 people, the probability of a duplicate would be much greater than 20%.

100 人規模の組織であれば、重複する確率は 2% から 5% （おそらく 4% 程度）であろう。
仮に 1,000 人規模の組織であれば、重複する確率は 20% よりはるかに高くなる。

## Appendix: Reuse of Identifiers and Privacy Issues（識別子の再利用とプライバシーの問題）

> Let's say that an organization were to select the format:

例えば、ある組織がフォーマットを選択したとしよう。

```
           First.M.Last-#
```

> as my own organization has.
> Is the -# required, or can one simply do:

私の所属する組織では上記を選択した。
`-#` は必須なのだろうか、それともシンプルに：

```
           Craig.A.Finseth
```

> for the first one and

1 人目はこのようにして、そして

```
           Craig.A.Finseth-2
```

> (or -1) for the second?
> The answer is "no," although for non-obvious reasons.

(あるいは `-1` を) 2 人目から付与すればよい？
答えは「ノー」である。これには、明白ではない理由がある。

> Assume that the organization has made this selection and a third party wants to send e-mail to Craig.A.Finseth.
> Because of the Electronic Communications Privacy Act of 1987, an organization must treat electronic mail with care.
> In this case, there is no way for the third party user to reliably know that sending to Craig.A.Finseth is (may be) the wrong party.
> On the other hand, if the -# suffix is always present and attempts to send mail to the non-suffix form are rejected, the third party user will realize that they must have the suffix in order to have a unique identifier.

組織がこの選択を行い、第三者が Craig.A.Finseth にメールを送りたい場合を想定する。
1987 年に制定された電子通信プライバシー法により、組織は電子メールを慎重に扱わなければならない。
この場合、Craig.A.Finseth への送信が誤った相手である（かもしれない）ことを、第三者であるユーザーが確実に知ることができる方法はない。
一方、`-#` サフィックスが常に存在し、サフィックスなしの形式でメールを送ろうとすると拒否される場合、サードパーティユーザーは、ユニークな識別子を持つためにはサフィックスが必要であることを認識することになる。

> For similar reasons, identifiers in this form should not be re-used in the life of the mail system.

同様の理由で、この形式の識別子は、メールシステムの寿命が尽きるまで再利用されるべきではない。

## Appendix: Perl Program to Compute Probabilities（確率を計算する Perl プログラム）

```perl
#!/usr/local/bin/perl

for $bits (6..31) {
        &Compute($bits);
        }
exit(0);

# ------------------------------------------------------------

sub Compute {
        $bits = $_[0];
        $num = 1 << $bits;
        $cnt = $num;

        print "bits $bitsnumber $num:0;

        for ($prob = 1; $prob > 0.99; ) {
                $prob *= $cnt / $num;
                $cnt--;
                }

        print "", $num - $cnt, "$prob0;

        for (; $prob > 0.98; ) {
                $prob *= $cnt / $num;
                $cnt--;
                }
        print "", $num - $cnt, "$prob0;

        for (; $prob > 0.95; ) {
                $prob *= $cnt / $num;
                $cnt--;
                }
        print "", $num - $cnt, "$prob0;

        for (; $prob > 0.90; ) {
                $prob *= $cnt / $num;
                $cnt--;
                }
        print "", $num - $cnt, "$prob0;

        for (; $prob > 0.80; ) {
                $prob *= $cnt / $num;
                $cnt--;
                }
        print "", $num - $cnt, "$prob0;

        print "0;
        }
```

## Appendix: Perl Program Output（Perl プログラムの出力）

```
bits 6  number 64:
        2       0.984375
        3       0.95361328125
        4       0.90891265869140625
        5       0.85210561752319335938
        6       0.78553486615419387817

bits 7  number 128:
        3       0.9766845703125
        3       0.9766845703125
        5       0.92398747801780700684
        6       0.88789421715773642063
        8       0.79999355674331695809

bits 8  number 256:
        3       0.988311767578125
        4       0.97672998905181884766
        6       0.94268989971169503406
        8       0.89542306910786462204
        12      0.76969425214152431547

bits 9  number 512:
        4       0.98832316696643829346
        6       0.97102570187075798458
        8       0.94652632751096643648
        11      0.89748056780293572476
        16      0.78916761796439427457

bits 10 number 1024:
        6       0.98543241551841020964
        7       0.97965839745873206645
        11      0.94753115178840541244
        16      0.88888866335604777014
        22      0.79677613655632184564

bits 11 number 2048:
        7       0.98978773152834598203
        10      0.97823367137821537476
        15      0.94990722378677450166
        22      0.89298119682681720288
        31      0.79597589885472519455

bits 12 number 4096:
        10      0.98906539062491305447
        14      0.97800426773009718762
        21      0.94994111694430838355
        30      0.89901365764115603874
        44      0.79312138620093930452

bits 13 number 8192:
        14      0.98894703242829806733
        19      0.97932692503837115439
        30      0.94822407309193512681
        43      0.89545741661906652631
        61      0.7993625840767998314

bits 14 number 16384:
        19      0.98961337517641645434
        27      0.97879319536756481668
        42      0.94876352395820107155
        60      0.89748107890372830209
        86      0.79973683158771624591

bits 15 number 32768:
        27      0.98934263776790121181
        37      0.97987304880641035165
        59      0.94909471808051404373
        84      0.89899774209805793923
        122     0.79809378598190949816

bits 16 number 65536:
        37      0.98988724065590050216
        52      0.97996496661944154649
        83      0.94937874420413270737
        118     0.89996948010355670711
        172     0.79884228150816105618

bits 17 number 131072:
        52      0.98993311138884398925
        74      0.97960010416289267088
        117     0.94952974978505377823
        167     0.89960828942716541956
        243     0.79894309171178368167

bits 18 number 262144:
        74      0.98974844864797828503
        104     0.97977315557223210174
        165     0.94968621078621640041
        236     0.8995926348279144058
        343     0.7994422793765953994

bits 19 number 524288:
        104     0.98983557888923057178
        147     0.97973841652874515962
        233     0.94974719445364064185
        333     0.89991342619657743729
        485     0.79936749144148444568

bits 20 number 1048576:
        146     0.98995567500195758015
        207     0.97987072919607220989
        329     0.94983990872655321702
        471     0.89980857451706741656
        685     0.79974215234216872172

bits 21 number 2097152:
        206     0.98998177463778547214
        292     0.97994400939715686771
        465     0.94985589918092261374
        666     0.89978055267663470396
        968     0.79994886751736571373

bits 22 number 4194304:
        291     0.98999013137747737812
        413     0.97991951242142538714
        657     0.94991674892578203959
        941     0.89991652739633254399
        1369    0.79989205747440361716

bits 23 number 8388608:
        412     0.98995762604049764022
        583     0.97997846530691334888
        929     0.94991024716640248826
        1330    0.89999961063320443877
        1936    0.79987028265451087794

bits 24 number 16777216:
        582     0.98997307486745211857
        824     0.97999203469417239809
        1313    0.94995516684099989835
        1881    0.89997049960675035152
        2737    0.79996700222056416063

bits 25 number 33554432:
        822     0.98999408609360783906
        1165    0.9799956928177964155
        1856    0.9499899669674316538
        2660    0.8999664414095410736
        3871    0.79992328289672998132

bits 26 number 67108864:
        1162    0.98999884535478044345
        1648    0.9799801637652703068
        2625    0.94997437525354821997
        3761    0.89999748465616635773
        5474    0.79993922903192515861

bits 27 number 134217728:
        1644    0.9899880636014986024
        2330    0.97998730103356856969
        3712    0.94997727934463771504
        5319    0.89998552434244594167
        7740    0.79999591580103557309

bits 28 number 268435456:
        2324    0.98999458855588851058
        3294    0.97999828329325222587
        5249    0.94998397932368705554
        7522    0.89998576049206902017
        10946   0.79999058777500076101

bits 29 number 536870912:
        3286    0.98999717306002099626
        4659    0.97999160965267329004
        7422    0.94999720388831232487
        10637   0.89999506567702891591
        15480   0.7999860979665908145

bits 30 number 1073741824:
        4647    0.98999674474047760775
        6588    0.97999531736215383937
        10496   0.94999806770951356061
        15043   0.89999250738244507275
        21891   0.79999995570982085358

bits 31 number 2147483648:
        6571    0.98999869761078929109
        9316    0.97999801528523688976
        14844   0.94999403283519279206
        21273   0.89999983631135749285
        30959   0.79999272222201334159
```

## References（参考文献）

> Bruce Lansky (1984).  The Best Baby Name Book.  Deephaven, MN: Meadowbrook.  ISBN 0-671-54463-2.

ブルース・ランスキー著 (1984年) 「最高の赤ちゃんの名前の本」 ディープヘイブン, MN: Meadowbrook 発行 ISBN 0-671-54463-2

> Lareina Rule (1988).  Name Your Baby.  Bantam.  ISBN 0-553-27145-8.

ラレイナ・ルール著 (1988年) 「あなたの赤ちゃんの名前」 Bantam 発行 ISBN 0-553-27145-8

## Security Considerations（セキュリティに関する考察）

> Security issues are not discussed in this memo.

セキュリティの問題については、このメモでは触れていない。

## Author's  Address

```
   Craig A. Finseth
   Networking Services
   Computer and Information Services
   University of Minnesota
   130 Lind Hall
   207 Church St. SE
   Minneapolis, MN 55455-0134

   EMail: Craig.A.Finseth-1@umn.edu or
          fin@unet.umn.edu

   Phone: +1 612 624 3375
   Fax: +1 612 626 1002
```