![]() |
|
|
#1 |
|
"Mihai Preda"
Apr 2015
3·457 Posts |
A longstanding problem is how to get rid of the expensive double-checking for PRP.
Let's assume that PRP with GEC is "perfect" i.e. produces no errors, ever. Now the double-checking is still needed against attackers who intentionally fake it: they submit bogus results; they put significant effort in manufacturing genuine-looking fake results; they read the double-checking source code and mersenneforum.org and attempt to work-around any checks and tricks there. We'd like to find a technique allowing to reliably detect a fake with less effort then the effort that was put into manufacturing the fake. So here it comes: The server chooses a *special* iteration number, fixed, let's say K=36756720, and asks the user to send the "bits" at that iteration. i.e. for m==M(p)==2^p - 1, to send R = 3^(2^K) %m together with the result. (the cost: no additional computation cost as the user anyway computes that, but network transfer cost for m bits, and storage cost (m bits) on the server until validation). Validation: The server chooses, randomly, a set of primes p_i such that (p_i - 1) | K Computes X = 3^product(p_i) Computes S = R/3 = 3^(2^K - 1) %m (which can be trivially computed from R) And verifies that X divides S (e.g. by checking that GCD(X, S)==X). In addition, the server chooses a value L < K, as large as practical, and verifies that 3^(2^L) | R The thesis is that the cheapest way for the attacker to reliably pass the test is to actually compute 3^(2^K) (there's no easy way to fake it); And the server can do the verification much cheaper than that. |
|
|
|
|
|
#2 |
|
"Mihai Preda"
Apr 2015
3×457 Posts |
|
|
|
|
|
|
#3 |
|
"Mihai Preda"
Apr 2015
25338 Posts |
There are 742 (!) primes such that z(p) | 36756720.
See attached. |
|
|
|
|
|
#4 |
|
"Mihai Preda"
Apr 2015
3×457 Posts |
And the *sorted* list of primes:
|
|
|
|
|
|
#5 |
|
Jun 2003
5,051 Posts |
|
|
|
|
|
|
#6 |
|
"Mihai Preda"
Apr 2015
3×457 Posts |
|
|
|
|
|
|
#7 |
|
Jun 2003
5,051 Posts |
ok, so they can compute (3^((prod p_i)+1)*(3^2^L) [L as large as practical to effectively fake residue]?
EDIT:- Scratch that. I think it needs to be 3^((prod p_i)*C+1), such that 2^L | ((prod p_i)*C+1). Should be doable - C will be appr. L bits Last fiddled with by axn on 2018-09-24 at 04:11 |
|
|
|
|
|
#8 |
|
"Mihai Preda"
Apr 2015
3×457 Posts |
I think my initial idea doesn't work at all. I did some huge mistakes in my initial write-up. My apologies. Maybe a moderator could delete the whole thread, thanks!
|
|
|
|
|
|
#9 |
|
Jun 2003
5,051 Posts |
|
|
|
|
|
|
#10 |
|
"Mihai Preda"
Apr 2015
3·457 Posts |
|
|
|
|
|
|
#11 |
|
3·53·17 Posts |
|
|
![]() |
| Thread Tools | |
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Double checking | gd_barnes | Riesel Prime Search | 69 | 2021-03-21 00:54 |
| What about double-checking TF/P-1? | 137ben | PrimeNet | 6 | 2012-03-13 04:01 |
| Double checking | Unregistered | Information & Answers | 19 | 2011-07-29 09:57 |
| Double-checking milestone? | jobhoti | Math | 17 | 2004-05-21 05:02 |
| Any glory in double checking? | Quacky | Lounge | 5 | 2003-12-03 02:20 |