![]() |
![]() |
#1 |
Bemusing Prompter
"Danny"
Dec 2002
California
9C716 Posts |
![]()
I wrote this several weeks ago, which was before PrimeNet v5 was officially launched, so some of these issues may be redundant.
As experienced members of the GIMPS community know, PrimeNet is far from being perfectly secure. One of the most frequently debated subjects is poaching, or testing an exponent that was not assigned to you. Ethics aside, there is also discussion on the possibility of someone sending in forged results to PrimeNet. I'll briefly describe these problems, as well as provide possible solutions. In the examples below, I'll use the characters from Disney's Sleeping Beauty (as a nod to the recent Blu-Ray re-release): Prince Phillip - an avid prime number enthusiast, he is always trying to convince people to install Prime95 whenever he's not doing lovey-dovey things with Aurora. He has also used a large amount of the Enchanted Kingdom's resources to buy computer hardware, much to the kings' chagrin. Princess Aurora - she doesn't care much about math, but she tries to help Phillip find new primes. Flora, Fauna and Merryweather - the three fairies who protect Princess Aurora. They form a team called TGF, short for Three Good Fairies. King Stefan and King Hubert - the fathers of Aurora and Phillip, respectively. Maleficent - a troublemaker, she constantly tries to cause grief for the GIMPS community (as well as Phillip and Aurora). 1. Poaching Poaching is the act of manually testing an exponent assigned to someone else. If a user is assigned an exponent for first-time testing and a poacher finishes it first, the poacher will get the credit. If the original assignee then finishes their test after that, they will still get credit, as it counts as a double check. However, if an exponent assigned for double-checking is poached, the original assignee will get no credit - at least not in PrimeNet v4. Poaching is often the subject of heated debates. Some claim that it helps reach milestones sooner, especially when it comes to low-end exponents that appear to have been abandoned. However, others argue that it is inethical, and serious ramifications can result if a Mersenne prime is discovered through poaching. Suppose that Aurora is assigned to test M43112609, which yields a Mersenne prime. For some reason, Maleficent decides to poach it, and having a slightly faster computer, she finishes two days before Aurora is supposed to. There will no doubt be fierce debate on whether Aurora or Maleficent should be credited for the discovery, especially if it involves a cash prize. Aurora could probably use her status as a princess to ensure that she receives the credit, but in the real world, the person who first discovers a prime would get most of the credit, even if they poeached someone else's assignment. One way to discourage poaching is to not allow poachers to get any credit. This can be done by generating a key pair for each assignment. The key is stored in the save file and on the server. When a result is submitted, the server checks both keys. If they work, the user is credited. Otherwise, the result is rejected unless it was submitted under the same account it was assigned to. However, the server should accept any result whose key matches the one stored on the server, even if it was requested and submitted by different accounts. This would allow users to transfer assignments to another computer, or another user. Of course, there is the problem of milestones being held up by extremely slow computers, or those that are rarely on. To compensate for this, I propose that all assignments have absolute time limits, after which the deadline cannot be extended except in special circumstances. Examples of reasonable time limits are: Code:
Exponent range Limit ----------------------------------- <20M 12 months [20M, 25M) 16 months [25M, 30M) 22 months [30M, 35M) 28 months [35M, 40M] 35 months >40M 45 months or more 2. Cheating on double checks In order to prevent cheating, a double check does not count if it is done by the same person who tested the exponent for the first time. However, cheaters can get around this simply by creating another account. Fake double checks can be spotted if they have an identical shift count, but it seems that shift counts are easy to spoof. Suppose Maleficent is testing M44040419. During this time, she chreates a secondary account, Diablo (using her pet raven's name), specifically for the purpose of cheating on double checks. When she reaches 44 million iterations, she makes a copy of her save file and changes the shift count. After she finishes the test, she manually requests the exponent again, as a double check, on her second account. She then replaces the save file of the double check with her altered one from the original test. Once both results are submitted, it will appear as if M44040419 was tested by Maleficent and independently double-checked by Diablo. Again, the key method I described would eliminate this problem. Since first-time tests and double checks are different assignments, they would have different keys. Thus, if Maleficent tries to cheat by replacing save files, the key would not match and the PrimeNet server would reject it. Even if the server doesn't reject results with non-matching keys, George would see that the key is the same as that from the first-time test and know that the result sent by "Diablo" is not legitimate. The key should be encrypted and incorporated into the save file so users cannot just open the save file and replace the data from the double check with that from the first-time test. Of course, if someone was using two accounts in order to cheat, it may be easily spotted by other users, especially if one account's first-time tests are always "verified" by the same second account. Code:
prime fact Lucas-Lehmer residue or factor exponent bits [residues partially masked] date returned account ID computer ID -------- ---- -- -------------------------------- --------------- -------------- ------------ 36515383 68 0x035F0D232DFB8F__ 01-Feb-59 13:28 king_stefan C20F01AC0 36515753 68 0x2D1B951F480D93__ 15-Feb-59 02:07 Aurora Rose1 36515989 68 0x375A33D480C3FC__ 17-Feb-59 17:06 princephillip castle34 36517561 70 0xB76370AB186E97__ 10-Feb-59 19:07 Maleficent dungeon-c 36517561 70 D 0xB76370AB186E97__ 12-Feb-59 06:22 Diablo birdy 36517771 68 0x56688628FD2916__ 04-Feb-59 17:36 TGF cottage-pc1 36522163 68 0xC12D99DE35AF1E__ 17-Feb-59 17:48 princephillip castle8 36524297 68 0xD698A180A9488E__ 13-Feb-59 17:04 TGF cottage-pc2 36525407 68 0x0F1DE86550A7B8__ 08-Feb-59 14:46 princephillip castle17 36526643 69 F 507002143888688734079 17-Feb-59 17:25 Aurora Rose3 36527213 68 0x1C9B8665661B61__ 01-Feb-59 20:19 princephillip castle42 36527287 67 F 154854743740540302289 14-Feb-59 20:07 TGF cottage-pc2 36528029 68 0xF62D1D84DD3C1B__ 07-Feb-59 14:59 king_stefan CDAE429DF 36528103 70 0x5193F8E0AB77AA__ 04-Feb-59 02:07 Maleficent dungeon-a 36528103 70 D 0x5193F8E0AB77AA__ 06-Feb-59 19:12 Diablo birdo 36537629 68 0x7AEB48EFC0AE6A__ 13-Feb-59 00:12 Hubert hubert-q6600 36538483 68 0x2FFBF9CB351138__ 13-Feb-59 11:02 Hubert hubert-q6600 36540577 68 0xCF2528BFEAB427__ 15-Feb-59 04:50 TGF Flora-laptop 36540989 68 0x4F0C07F4753218__ 17-Feb-59 17:54 Hubert hubert-q6600 36544061 68 0x9C26589B78D522__ 17-Feb-59 19:05 Hubert hubert-q6600 36544831 68 0xF2A140EED75155__ 04-Feb-59 19:36 princephillip castle40 36545513 68 0xD5F758F75B525C__ 05-Feb-59 14:39 Maleficent dungeon-f 36545513 68 D 0xD5F758F75B525C__ 06-Feb-59 03:42 Diablo birdie 36546527 68 0xE78E6BEA353DEF__ 03-Feb-59 19:19 princephillip castle23 36549943 70 0x1B0F5211886FAA__ 12-Feb-59 11:41 princephillip castleserver 36550373 70 0x148A2F06FC31F6__ 13-Feb-07 08:07 princephillip castleserver 36551363 70 0x1845B8A4C9EF22__ 11-Feb-07 22:42 princephillip castleserver 36551563 68 0x96BF6CA893CCC8__ 13-Feb-07 07:59 princephillip castleserver 3. Forged results Another major concern is that people can send spoofed results to the PrimeNet server, such as by using a packet editor or doctoring the prime.spl file. According to George, the only technical safeguard against forged results is that the source code which generates the checksum (which acts as a security measure that ensures the results are valid) is not publicly available. (This is the exact same reason that many parts of the Folding@home client are closed source.) However, someone using a disassembler could still figure out how the checksum is generated. If Maleficent sends a forged prime report to PrimeNet, it would be spotted very quickly because reports of new primes are verified almost immediately. Plus, she would have trouble producing a save file that generates a final residue of zero. However, if Maleficent submits a forged composite result, it would not be discovered until the double-checking "wavefront" reaches that range. If Maleficent submits a fake double check as well (see #2), it probably won't be noticed for a very long time, if ever. Like in #2, forged results could also be easily prevented by using an encrypted key. Someone could make a doctored prime.spl file, but unless they're very good at cracking the encryption, they will be unable to generate the key that validates the result. The downside is that more parts of the Prime95 source code will have to be kept private. While Prime95 was never truly "open source" to begin with, this would still hurt its development. It is very unlikely that anyone will try to send in forged results. However, as GIMPS becomes more popular, we can't just ignore the fact that the chance of someone pulling this off will also increase. 4. PrimeNet v4/Prime95 24.14 security issues In my opinion, version 24.14 isn't very secure. Your account password is stored right there in plaintext, and anyone who had physical access to your computer could steal your credit. All they have to do is log in to their account under "User Information" and the credit would be transfered and the account merged. The only way to prevent this from happening is to prevent access to your computer while you're not using it. The Disney princesses aren't exactly known for their intelligence (well, maybe except for Belle). Suppose that Aurora, being somewhat computer illiterate, fails to set a screen saver password and never upgrades her Prime95 client. As soon as she and Phillip go out for lunch, Maleficent could teleport into the castle and steal Aurora's v4 credit by merging her (Aurora's) account with her own. Even though Aurora could easily get her account back, she would have to go through the hassle of contacting George or Scott to get the merge reversed. This problem was mostly fixed since PrimeNet v5 came out, but those who haven't upgraded to version 25.7.3 (or later) are still at risk. The password should not be visible in plaintext, and users should be required to enter the original account's password if they wish to merge an account. Since the PrimeNet server cannot force a change on the client, the only thing users could do to prevent this from happening is to upgrade their clients as soon as possible. |
![]() |
![]() |
![]() |
#2 | |
Undefined
"The unspeakable one"
Jun 2006
My evil lair
151638 Posts |
![]() Quote:
Please don't get me wrong, I'm not against Primenet in any way. It is a great tool for coordinating the workload. But I don't think that Primenet has any exclusive right to which numbers are tested by whom. |
|
![]() |
![]() |
![]() |
#3 |
Dec 2003
Hopefully Near M48
2×3×293 Posts |
![]()
There's another way to fight the Maleficent + Diablo combo...
Knowing he is a trusted and loyal GIMPS contributor, George appoints Philip to be a "professional triple-checker". Philip triple-checks confirmed LL tests to make sure the residues are in fact correct. To prevent cheaters from staying one step of him, the exponents that Philip triple-checks are chosen randomly. Philip's first few hundred triple-checks confirm the double-checks; but one day Philip discovers that a certain exponent tested by Maleficent and double-checked by Diablo has the wrong residue. This immediately casts great suspicion on both Maleficent and Diablo. An investigation then reveals that this pattern of an incorrect result from one account and a verification from the other has been repeated dozens of times. Both accounts are deleted and all exponents they've tested are returned to the available exponents list to be retested from scratch. Further advantages: 1) Upon hearing that a triple-checking team is in place, Maleficent worries about getting caught and is deterred from cheating. 2) To avoid the suspicion resulting from having a single account always double-checking her results, Maleficent creates 10 helper accounts: Diablo, Diablo_2, Diablo_3, ... Diablo_10 (ok, she chooses less obviously linked usernames instead) and splits the double-checking work between them. Nevertheless, Philip discovers that Diablo_6 has confirmed an incorrect residue from Maleficent. After further investigation, Maleficent still loses her main account. Disadvantage: Maleficent can elude Philip's triple-checking by running her first-time LL test to completion correctly. But even in this case, the harm to GIMPS is minimized because Primenet still has the correct residues for Maleficent's exponents and no Mersenne prime has been missed. One further note: Maleficent could elude all of ixfd64's safeguards by only (requesting exponents from)/(emailing results to) George. Last fiddled with by jinydu on 2008-10-29 at 10:02 |
![]() |
![]() |
![]() |
#4 | |
6809 > 6502
"""""""""""""""""""
Aug 2003
101×103 Posts
2×3×11×167 Posts |
![]() Quote:
I lock my personal machine when I am away from it. That is the only one that I check stats with. (Except of course my home machine). |
|
![]() |
![]() |
![]() |
#5 | |
Oct 2008
11102 Posts |
![]() Quote:
I was wondering how do I request PrimeNet to assign these exponents to me (or to anyone)? Just a few days ago I was assigned an exponent in the 23M range for LL-D which is currently the "wavefront" as someone described it. Why does PrimeNet not assign the smallest available exponent? Doing so would definitely move the milestones a bit quicker. I'm sure there are many users who would like to see these "small" exponents being completed asap. |
|
![]() |
![]() |
![]() |
#6 | |
"Mark"
Feb 2003
Sydney
10758 Posts |
![]() Quote:
In its initial test phase v5 handed out double-checks in the 23M range, past v4's LL-D area. Last time I checked, it still was. I expect this will be fixed once a few higher-priority bugs are squashed. |
|
![]() |
![]() |
![]() |
#7 | |
Dec 2007
Cleves, Germany
2×5×53 Posts |
![]() Quote:
http://v5www.mersenne.org/report_LL/...B1=Get+LL+data For each of the exponents listed (there are dupes), look up its status, e.g.: http://v5www.mersenne.org/report_exp...&B1=Get+status If there is an ASSIGNED line, move on. Otherwise, take note of how far the exponent was trial factored and whether P-1 factoring was done. Then add a line like "DoubleCheck=[exponent],[how_far_factored],[P-1 done]" to your worktodo.txt (or use worktodo.add). For the first exponent in question that would be "DoubleCheck=17001269,69,1". Let your client reserve the exponent. Force a manual communication to send an expected completion date. There you go. Cheers, Carsten |
|
![]() |
![]() |
![]() |
#8 |
"Mark"
Feb 2003
Sydney
3·191 Posts |
![]()
It certainly can be done. But I would not recommend it just yet for anything in the v4 ranges. Wait a bit.
Given the problems with transferring assignments from primenet v4 to v5, including results completed after v4 crashed & before the v4-to-v5 interface, plus the various special features of v4, like manual ranges, I suspect it will be a while before all existing v4 assignments & results are properly transferred to v5. Until then, I wouldn't 100% trust the "assigned" part of v5 reports, and there could be results still to be loaded too. Some of the unverified exponents in the 17M-18M range that v5 says are unassigned definitely were assigned in v4 on 15 October (the last status.txt I have). Cheers Mark |
![]() |
![]() |
![]() |
#9 | |
Oct 2008
E16 Posts |
![]() Quote:
I opened my worktodo.txt and found that there is a long string of characters and numbers between "DoubleCheck=" and "[exponent]". Do I have to be worried about that since I'm going to manually edit the file? This is what my worktodo.txt currently looks like for Worker #2. Code:
[Worker #2] DoubleCheck=CCF1F0522203D2A2FCA8CDD37C547482,23021057,67,1 |
|
![]() |
![]() |
![]() |
#10 |
Dec 2007
Cleves, Germany
2·5·53 Posts |
![]() Code:
Mersenne PrimeNet Server 4.0 (Build 4.0.101) Assigned Exponents Report 20 Oct 2008 09:00 (Oct 20 2008 2:00AM Pacific) But don't scroll down too far... It hurts. ![]() |
![]() |
![]() |
![]() |
#11 |
Dec 2007
Cleves, Germany
10228 Posts |
![]()
It will be added when the exponent is assigned to you. And before you get the idea, don't tamper with existing lines which already have a code there.
|
![]() |
![]() |
![]() |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
ECM RAM issues | yoyo | GMP-ECM | 7 | 2018-04-28 05:51 |
New GPU; new issues... | chalsall | GPU Computing | 18 | 2013-06-12 19:28 |
Using long long's in Mingw with 32-bit Windows XP | grandpascorpion | Programming | 7 | 2009-10-04 12:13 |
I think it's gonna be a long, long time | panic | Hardware | 9 | 2009-09-11 05:11 |
Long-term Primenet archive | delta_t | Data | 3 | 2005-08-25 00:31 |