読者です 読者をやめる 読者になる 読者になる

何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

「マイナンバーは素数だ!」発言による情報漏洩

Mathematics

マイナンバーは素数だ!」発言の危うさ

この世には素数に異常な執着をもつ人がいる。マイナンバーも素数ならばきっとうれしくなってしまうのだろう。 しかし、マイナンバーが素数であることをTwitterなどのSNSで公言するのは果たしてどれだけ危うい行為であるのかを求めてみたい。

素数の個数、密度

自然数の集合に素数がいくつ含まれているのか、という問題は紀元前3世紀ごろにEuclidが『原論』にて述べている事実である。 しかし、この証明からは素数がどのように分布しているのかという情報は全くない。 素数の分布に関する重要な定理として素数定理が知られている(トートロジーめいた発言)。 18世紀にGaussやLegendreが予想し、PoussinとHadamardがそれぞれ独立に証明した。

素数定理の詳しい説明は適当な専門書を見てもらうこととして、{\pi(x)}{x}以下の素数の個数を表す函数とすると、  \pi(x) \sim \frac{x}{\ln{x}} と近似できることが素数定理からわかる。 また、{x}以下の自然数に含まれる素数の割合は \frac{\pi(x)}{x} \sim \frac{1}{\ln{x}} となる。

漏洩する情報量

マイナンバーは11桁の自然数から一様な確率で選ばれると仮定し、また、11桁に満たない場合は0でパディングすると仮定する。 すると、マイナンバーが素数となる確率は素数の密度から \frac{1}{\ln{10^{11}}} となる。 よって、「マイナンバーは素数だ!」発言の情報量は \log_{2}(11\ln{10})となる。

Pythonで計算すると、

>>> import math
>>> help(math.log)
Help on built-in function log in module math:

log(...)
    log(x[, base])

    Return the logarithm of x to the given base.
    If the base not specified, returns the natural logarithm (base e) of x.

>>> math.log(11 * math.log(10), 2)
4.66268609133702

より、「マイナンバーは素数だ!」発言の情報量は約5ビットとなる。

…で、危ういの?

5ビットの情報量がどれだけ危険なのかは僕には判断できない。 しかし、些細な発言でも情報が漏洩するという事実は知っておくべきである。