「合成数」を含む日記 RSS

はてなキーワード: 合成数とは

2024-10-31

量子コンピュータを用いてRSA暗号を解読する

RSA暗号構造

RSA暗号は、以下の手順で構成される。

1. 素数選択: 2つの大きな素数 p と q を選ぶ。

2. モジュラスの計算: N = p * q

3. オイラートーシェント関数: φ(N) = (p-1)(q-1) を計算する。

4. 公開鍵秘密鍵の生成: 公開鍵は (N, e) であり、e は gcd(e, φ(N)) = 1 を満たす整数である秘密鍵は d であり、d * e ≡ 1 (mod φ(N)) を満たす。

素因数分解問題

RSA暗号安全性は、合成数 N の素因数分解計算的に困難であることに依存している。具体的には、次の問題が考えられる:

N = p * q

この問題解決することがRSA暗号を破る鍵となる。

ショアのアルゴリズム

ショアのアルゴリズムは、量子コンピュータ上で動作する効率的素因数分解アルゴリズムである。以下にその主要なステップを示す。

ステップ1: 整数選択

任意整数 a を選択し、N に対して次の条件を満たすことを確認する:

  • a < N
  • gcd(a, N) = 1 (これは、a が非自明な因子を持たないことを意味する)
ステップ2: 順序の計算

整数 a の順序 r を求める。順序とは、次の条件を満たす最小の整数である

a^r ≡ 1 (mod N)

この順序は、量子フーリエ変換を用いて効率的計算される。

ステップ3: 量子フーリエ変換

量子フーリエ変換は、状態ベクトルを重ね合わせて次のように表現される:

|x⟩ = Σ(k=0 to N-1) |k⟩

ここで、量子フーリエ変換適用することで周期性に関する情報が得られる。具体的には、

QFT |x⟩ = (1/√N) Σ(j=0 to N-1) Σ(k=0 to N-1) e^(2πi jk / N) |j⟩

ステップ4: 古典的な後処理

得られた状態から測定を行うことで周期情報が得られる。この周期情報を用いて次の式を考える:

x = a^(r/2) - 1

y = a^(r/2) + 1

これらが非自明な因子である場合、p と q を次のように計算できる:

p = gcd(x, N)

q = gcd(y, N)

ステップ5: 確率成功率誤り訂正

ショアのアルゴリズム確率的であり、成功率は高いもの100%ではない。そのため、誤り訂正技術複数回実行することで成功確率を向上させる必要がある。

2024-10-29

RSA暗号数学的背景

RSA暗号は、代数的構造特に合同算術および整数環における準同型写像を用いた公開鍵暗号である

RSA安全性は、環の自己同型写像の一方向性と、有限生成群の元の分解が困難であることに基づいている。

この暗号方式整数環 Z/NZ(N = p・q)上の準同型写像の一方向性活用する。

1. 鍵生成における数論的準備

まず、RSAにおける鍵生成は、代数的に以下のように構築される:

1. 整数環の構成

互いに素な大きな素数 p および q を選び、合成数 N = p・q を作成する。

これにより、商環 Z/NZ定義される。ここで、N はRSAにおける「モジュラス」として機能する。

この商環は、全体として単位的な環であり、RSA暗号計算基盤となる。

2. オイラートーシェント関数

オイラートーシェント関数 φ(N) を次のように計算する:

φ(N) = (p - 1)(q - 1)

これは環 Z/NZ の単数群 (Z/NZ)* の位数を表し、RSA準同型構造における指数計算に用いられる。

3. 群の生成元と公開指数 e の選定:

単数群 (Z/NZ)* は、φ(N) を位数とする巡回群であり、一般に生成元 g ∈ (Z/NZ)* を持つ。

RSAでは、この群の生成元から得られる公開指数 e は、φ(N) と互いに素な整数として選ばれる。公開指数 e はRSAの「公開鍵指数」となる。

4. 秘密指数 d の計算

次に、以下の合同式を満たす整数 d を求める。

e・d ≡ 1 (mod φ(N))

これは、e に対する逆元 d の存在保証し、秘密指数として機能する。ここで d はユークリッド互除法により効率的に求められる。

 

以上により、公開鍵 (N, e) と秘密鍵 (N, d) が生成される。これらの鍵は、合同算術と商環上の準同型写像によって定義される。

2. RSA暗号暗号化と復号の代数的構造

RSA暗号は、モジュラー演算によるべき乗写像使用した暗号化および復号過程である。この操作は、(Z/NZ)* 上の自己同型写像に基づいている。

任意メッセージ M ∈ Z/NZ に対し、公開鍵 (N, e) を用いて次の準同型写像作用させる:

C = σ(M) = M^e (mod N)

ここで σ: M → M^e は (Z/NZ)* の自己同型写像として作用し、得られた C は暗号文となる。

この写像はモジュラ指数写像として同型写像であるが、一方向的であるため暗号化に適している。

暗号文 C を受け取った受信者は、秘密指数 d を用いて復号を行う。具体的には次のように計算する:

M = C^d (mod N) = (M^e)^d (mod N) = M^(e・d) (mod N)

ここで e・d ≡ 1 (mod φ(N)) であるため、e・d = kφ(N) + 1(整数 k)と表すことができ、したがって

M^(e・d) = M^(kφ(N) + 1) = (M^(φ(N)))^k・M ≡ 1^k・M ≡ M (mod N)

により、元のメッセージ M を復元することができる。ここでオイラーの定理に基づき、(M^(φ(N))) ≡ 1 (mod N) が成り立つため、この復号化が成立する。

3. RSA暗号抽象代数的な安全性評価

RSA暗号安全性は、以下の代数的な構造依存する。

1. 合成数環の分解問題

RSA暗号は、Z/NZ構成において N = p・q の因数分解が困難であることを仮定する。

合成数 N の素因数分解問題は、現在計算アルゴリズムにおいて指数時間に近い計算量が必要であり、代数的には解読が非常に難しい問題であるとされる。

2. 一方向性関数特性

RSA暗号における暗号化は群の自己同型写像によって構成されるが、逆写像を求めることは一般に困難である

これはRSAの一方向性保証し、現実的に解読不可能構造形成している。

RSA暗号の解読は逆写像としてのべき乗の逆操作計算することに相当し、これを効率的解決する手段存在しないことが安全性根拠となる。

3. 合同条件の準同型

RSA暗号構造は合同算術に基づく準同型性を有し、M → M^e (mod N) というモジュラ指数写像によりメッセージ空間上の一対一対応を実現する。

この準同型性により計算効率保証されつつも一方向性を持ち、安全暗号化が可能である

  

以上より、RSA暗号は合同算術準同型写像、群の生成元と逆元の難解さに基づく暗号であり計算理論抽象代数からその安全性保証されている。

RSA暗号の解読可能性は準同型写像の逆像を効率的に求める方法存在しないことに基づいており数学的にはこの逆像問題の困難性がRSA安全性を支えているといえる。

2022-09-25

anond:20220925005640

考えてみたけど

 

・1点目は、事実Fは2以上√N以下の約数が「一つでも」存在すると言ってるから

 事実Fが偽であるというのは、√N以下の約数が一個も存在しないこと、つまり最小の約数ですら√Nを超えるということでは。

 

・2点目は、最初の回答例の文章が悪い気が…

 すなわち、Nが合成数であり、1以外で最小のNの約数が√Nを超えていると仮定する。←「これをAとする」が必要じゃないのかなあ

 

 N=√N×√Nだから、 B=N/A=(√N×√N)/Aだけど、

 Aは√Nを超えているからBはどうしたって√N未満になってしまう。

 つまり、B = N / A < √Nである

  

ということでは

まちがってたらごめん

2021-10-06

anond:20211006221837

m + n = 2xなので、mとnは両方とも奇数 or 両方とも偶数

m = n = 2のときはx + y = 2を満たす素数x, yは存在しないので不適。したがって、m, nはともに奇数

x - y = nが奇数なので、xとyは一方が奇数でもう一方が偶数。x = 2だと、nが素数にならないので、y = 2。

よって、

(n, x, m) = (x - 2, x, x + 2)

がすべて素数となるxを求めればよい。

x = 5はこの例である。これ以外に解が無い事を示す。x<5のときはx - 2, x, x + 2がすべて素数となるxは無い。

2 ≡ -1 (mod 3)より、x - 2, x, x + 2の1つは必ず3の倍数になる。したがってx>5のとき、x - 2, x, x + 2の少なくとも1つは必ず合成数になる。

以上から、求める解は

(x, y, m, n) = (5, 2, 7, 3)

のみ。

2020-09-03

数学夏祭り 問4

#数学夏祭り ウェブサイト

https://mathmatsuri.org/


#数学夏祭り ツイッターアカウント

https://twitter.com/mathmatsuri



問4


n=6, 8, 10, …, 78, 80の38通りなのですべて書き出せば解けるんだろうが、いか省エネできるか考えながら進めていきたい。まずは実験しないと始まらない。


小さいnから考えるとパターンが少なすぎるので、大きいnから考えてみる。

n=80のとき(3, 77) (5, 75) (7, 73) (9, 71) (11, 69)…の中から素数ペアを探していけばよい。


nによらず同じように書き出していくことを考えると、まずは素数リストがあった方がいい。77まででよい。また2は不要


3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73


n/2よりも小さい素数より、n/2よりも大きい素数の方が多い。計算の回数を減らすために上から順番にnから引き算して素数が残るかどうか判定する。

素数が残る: 73, 67, 61, 43

合成数が残る: 71, 59, 53, 47, 41


pとqがともに素数となる組は(73, 7) (67, 13) (61, 19) (43, 37)とこれらを逆にした8通り。

よってP(80)=8/40=1/5


次、n=78に対して素数リストの上から順番に引き算していく。n/2=39まで。

素数が残る:73, 71, 67, 61, 59, 47, 41

合成数が残る: 53, 43

pとqがともに素数となる組は(73, 5) (71, 7) (67, 11) (61, 17) (59, 19) (47, 31) (41, 37)とこれらを逆にした14通り。よってP(78)=14/39


素数が残るパターンがずいぶん多かった。ところで求めるのはP(n)の最小値。今後分母は減っていくので、組み合わせの数が今のところの最小値の8以上になることが分かった時点でそれ以上計算する意味はなくなる。つまりn/2より大きいpが4つ見つかったらその時点で終了してよい。n/2が素数の時は別で考える必要があるので出てきたら考える。あと合成数が残るパターンは書き残さなくてもよい。


n=76で同様の操作を。

素数が残る:73, 71, 59, 53 ここで終了

n=74

71, 67, 61, 43 ここで終了

n=72

67, 61, 59, 53 終了

n=70のとき67, 59, 53, 47 終了


n=68のとき61, 37の2つだけ。つまりp, qが両方とも素数になるのは(61, 7) (37, 31)とその逆の4通り。

よってP(68)=4/34=2/17

以後はn/2より大きいpが2つ見つかったらその時点で終了してよい。


n=66のとき61, 59 終了

n=62のとき59, 43 終了

n=60のとき53, 47 終了

n=58のとき53, 47 終了

n=56のとき53, 43 終了

n=54のとき47, 43 終了

n=52のとき47, 41 終了

n=50のとき47, 43 終了

n=48のとき41, 37 終了

n=46のとき43, 41 終了

n=44のとき41, 37 終了

n=42のとき37, 31 終了

n=40のとき37, 29 終了

n=38のとき31, 19(=n/2) p, qが両方とも素数になるのは(31, 7) (19, 19) (7, 31)の3通りなのでP(38)=3/19

P(68)=2/17=3/25.5なのでP(38)>P(68)


n=36のとき31, 29 終了

n=34のとき31, 29 終了

n=32のとき29, 19 終了

ここから先はn/2より大きいpが1つ見つかった時点でP(n)=2/(16以下)がP(68)=2/17を超える。


n=30のとき23 終了

n=28とき23 終了

n=26のとき23 終了

n=24とき19 終了

n=22のとき19 終了

n=20とき17 終了

n=18のとき13 終了

n=16のとき13 終了

n=14のとき11 終了

n=12とき7 終了

n=10とき7 終了

n=8のとき5 終了


n=6のとき(p,q)=(3,3)のみ P(6)=1/3=2/6>2/17=P(68)


よってP(n)はn=68のときに最小値2/17をとる



-----------------------------------------------------------------



??「せんせぇ、57は素数に入りますか~?」

2018-06-11

算数初心者なんだけど

新幹線乗ってる間暇だったか中学高校でやってた素数について考えたわけ

そのときさ、「pがp未満かつ1でない全ての自然数に対して割り切れない」って考えたんだけど

「pがp未満の全ての素数に対して割り切れない」って同じじゃねーかなみたいなことふと思ったの

んで同値であることを証明しようと思って、んでたぶん最初命題から次の命題証明するのは簡単じゃん

p未満の全ての素数自然数なんだから自然数で割り切れないんだったら素数でも割り切れないじゃん

でも二番目の命題から一番目の命題のやつだとなんとなく背理法しかわかんないのね

pがp未満の全ての素数に対して割り切れないとき、pがp未満の1以外の自然数で割り切れるとすると

その自然数がもし素数なら、全ての素数に対して割り切れないことと矛盾するじゃん

その自然数合成数だとすると、これはp未満の素数の積だから

この場合素数で割り切れることになってやっぱり全ての素数に対して割り切れないことと矛盾するじゃん

からp未満の全ての素数で割り切れないならやっぱり1以外の全ての自然数でも割り切れないんじゃね?

ってなったのね。間違ってたらすんまそん


最初命題見たんだけど

「1以外の全ての自然数で割り切れない」ことと「全ての素数で割り切れない」ことが一緒になるって普通におかしくね?

どう見ても自然数素数って定義違うし集合も違うのにこのことが同じになったらおかしいじゃん

まり同値ってなんなのか教えて算数エロい

間違ってた場合も教えてエロい

命題の使い方間違ってそう

2014-07-11

http://anond.hatelabo.jp/20140711204740

であることが多い」の反論として「山ほどいる」は妥当なの?

素数は山ほどあるけど、ランダムに選んだ自然数合成数であることが多いよ。

2007-09-27

http://anond.hatelabo.jp/20070926234636

惜しい。いや惜しくはないが興味深い。

42とは互いに素である合成数にして42より小さい、という条件でユニークに決まる。

 
ログイン ユーザー登録
ようこそ ゲスト さん