create account

Proof of BOINC UserID ownership using public key cryptography by cm-steem

View this thread on: hive.blogpeakd.comecency.com
· @cm-steem · (edited)
$78.66
Proof of BOINC UserID ownership using public key cryptography
https://i.imgur.com/ZzreiC8.png

## [Proof of BOINC UserID ownership using public key cryptography](https://github.com/BOINC/boinc/issues/2118)

# Transparency/Background

* [Original 'project-rain' cryptocurrency field issue](https://github.com/BOINC/boinc/issues/1998): The PR was rejected in accordance with the PMC's policies against the explicit inclusion of (and reference to) virtual currency related code within the core BOINC repo (still possible on an individual project basis).
* [Single user-data field](https://github.com/BOINC/boinc/issues/2087): A scaled back version of 'project-rain' with no explicit reference to virtualcurrencies (implied use, not explicit intended use). Several legitimate risks to BOINC projects were identified during the 2017 workshop, such as painting a massive target on BOINC projects (externally/internally) to hackers monetarily motivated (since projects would have been storing the data being scraped by 3rd party systems).

# Purpose

To prove within any external system that you are the owner of an UserID for an individual BOINC project, without storing external system data within the BOINC project's servers.

# Proposed steps within BOINC

* Introduce an additional openssl public/private key pair for this feature, keeping the existing keys separate and safe. Storing the public key in a scrape-able location (perhaps alongside the stats dumps).
* Introduce a link to the user's profile, taking them to a separate php page for generating the signed message.
* Within the new page there would be:
  * Some explanation text.
  * An input textbox (external system data for full handshake).
  * A button for executing the message signing function.
  * An output textbox where the output data will temporarily be displayed.
* The message signing function will:
  * Require:
    * A minimum RAC before enabling the function - reducing the ease of claiming idle account ownership.
    * A verified email account (unless the project doesn't use email verification).
  * Use:
    * [openssl_sign](https://secure.php.net/manual/en/function.openssl-sign.php) to sign the message "$UserID $External_System_Key"
    * External_system_key to provide full handshake, preventing extraction of master UserID from one network for replay on another.
  * Limit the length and accepted characters for $External_System_Key.
  * Potentially be limited to once an hour, if computationally expensive.
     * Downside being the requirement for an additional SQL table.
  * Output the signature and original message to the in-page output textbox. It will not store this data on the BOINC server (message is temporary).

# Proposed use within external system

Pre-req: External system downloads the public-keys (used solely for this function, not the existing keys) from each of the involved projects.

* User manually inputs their UserID signatures generated within each individual BOINC project.
  * If OAuth2 is implemented, streamline this process to improve user experience.
* Broadcast registration transactions for for each project, including the generated encrypted messages. 
* Peers upon receiving the registration transaction:
  * Attempt to verify the signed message (contained within broadcast registration transaction) with the appropriate project public key.
    * If successful:
       * Attempt to verify that the contained $External_System_Key matches the user's beacon key (perform same check for UserID).
         * If keys & Ids match: Approve ownership of UserID.
         * Else: Reject ownership of UserID.
    * If unsuccessful:
       * Reject ownership of UserID.

# Advantages over a [single user-data field](https://github.com/BOINC/boinc/issues/2087)

It's more difficult for an attacker to claim external system rewards if a MinRAC and Email Verification is required. Offsets the risk of account compromise on a large scale for the purpose of claiming rewards (concern raised within the workshop).

If a project wishes to cut off external systems from rewarding new users they can remove the public key from the scrape-able location, however an external system may cache the keys which would enable all currently registered users to continue earning rewards. If at any point a project administrator/owner doesn't want their volunteer userbase rewarded they should contact representatives of the external systems for streamlined removal (not a problem on the GRC network).

An upside of using UserID over CPID is that external system functionality wouldn't be interrupted by a CPID change (either accidental or malicious). A disadvantage of UserID is that each user will need to advertise a registration operation for each individual project (an external system's burden, not boinc's problem).

If an UserID registration is ever stolen on an external system, or if a hacker breaks into their account and issues a new registration transaction, the user just needs to log back in (change their password), generate a new message and advertise a new beacon. No more need for a centralized entity responsible for maintaining the registered userbase (improved decentralization).

# Affected code

* Profile: Link to new PHP page. Alternatively: propose a better link location?
* New PHP page for this function: 
* schema.sql: Potentially require introduction of an additional sql table to prevent dos of server resources by spamming the key generation.
* Make_Project scripts:
  * Generating an additional openssl public/private key pair.
  * Difficult: Introducing an additional MISC option to enable this functionality at build time.
* Additional openssl public/private key pair.

# Issue changelog

* Changed the openssl function section - It was identified that I used incorrect terminology (sign/verify private key signed message, not decryption of private key encrypted data).
* Changed advantages to be more accurate.

# Thoughts?

Any suggestions/constructive-criticism would be greatly appreciated, thus far I have not begun to implement this however I don't believe it will be that difficult.

Suggestions for alternatives to openssl? ([Related article](https://paragonie.com/blog/2015/11/choosing-right-cryptography-library-for-your-php-project-guide))
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 92 others
properties (23)
authorcm-steem
permlinkproof-of-boinc-userid-ownership-using-public-key-cryptography
categoryboinc
json_metadata{"tags":["boinc","beyondbitcoin","gridcoin","cryptography","blockchain"],"image":["https://i.imgur.com/ZzreiC8.png"],"links":["https://github.com/BOINC/boinc/issues/2118","https://github.com/BOINC/boinc/issues/1998","https://github.com/BOINC/boinc/issues/2087","https://secure.php.net/manual/en/function.openssl-sign.php","https://paragonie.com/blog/2015/11/choosing-right-cryptography-library-for-your-php-project-guide"],"app":"steemit/0.1","format":"markdown"}
created2017-09-14 15:37:09
last_update2017-09-16 00:50:42
depth0
children26
last_payout2017-09-21 15:37:09
cashout_time1969-12-31 23:59:59
total_payout_value76.036 HBD
curator_payout_value2.628 HBD
pending_payout_value0.000 HBD
promoted10.000 HBD
body_length6,212
author_reputation58,522,774,254,119
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,875,104
net_rshares27,542,745,237,842
author_curate_reward""
vote details (156)
@abdel-ali ·
good posting
properties (22)
authorabdel-ali
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t154746518z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 15:47:36
last_update2017-09-14 15:47:36
depth1
children0
last_payout2017-09-21 15:47:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length12
author_reputation-273,324,103,528
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,876,124
net_rshares0
@abontikazaman ·
$0.05
nice@cm-steem, improvising about your project and it will developed boinc alot, thanks.
👍  
properties (23)
authorabontikazaman
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t183937173z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 18:39:39
last_update2017-09-14 18:39:39
depth1
children0
last_payout2017-09-21 18:39:39
cashout_time1969-12-31 23:59:59
total_payout_value0.041 HBD
curator_payout_value0.013 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length87
author_reputation2,684,877,663,799
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,891,626
net_rshares19,914,228,863
author_curate_reward""
vote details (1)
@adnanrabbani · (edited)
$1.53
it looks like these are some improvement in Boinc project, i hope these developments improve boinc alot, thanks for sharing.
👍  
properties (23)
authoradnanrabbani
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t154445997z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 15:44:54
last_update2017-09-14 15:46:36
depth1
children0
last_payout2017-09-21 15:44:54
cashout_time1969-12-31 23:59:59
total_payout_value1.151 HBD
curator_payout_value0.382 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length124
author_reputation93,370,785,737,224
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,875,851
net_rshares537,617,386,322
author_curate_reward""
vote details (1)
@alfa-good ·
a very good post thanks for sharing my story I wanted to share a good story but I have not been able to! success is always friends
properties (22)
authoralfa-good
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t153858873z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 15:39:00
last_update2017-09-14 15:39:00
depth1
children0
last_payout2017-09-21 15:39:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length130
author_reputation1,130,135,742,804
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,875,270
net_rshares0
@brittansiusan ·
@cm-steem Sharing to have this witnessed far more (and perhaps open up the eyes of some)! Thanks  for the properly put up and documented report! Resteemed.
👍  
👎  
properties (23)
authorbrittansiusan
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t193214170z
categoryboinc
json_metadata{"tags":["boinc"],"users":["cm-steem"],"app":"steemit/0.1"}
created2017-09-14 19:32:15
last_update2017-09-14 19:32:15
depth1
children0
last_payout2017-09-21 19:32:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length155
author_reputation-796,398,750,287
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,896,196
net_rshares-1,631,246,530,797
author_curate_reward""
vote details (2)
@buzzbeergeek ·
$1.75
I really don't understand the techical detials, but I am a fan of Gridcoin which is obviously a close relative to BOINC.

Advertised BOINC in my last beer tasting post. Hope it gets you more visibility and clicks!

Cheers
👍  , ,
properties (23)
authorbuzzbeergeek
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t171702382z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 17:17:00
last_update2017-09-14 17:17:00
depth1
children0
last_payout2017-09-21 17:17:00
cashout_time1969-12-31 23:59:59
total_payout_value1.317 HBD
curator_payout_value0.436 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length221
author_reputation220,781,585,123,283
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,884,374
net_rshares616,230,637,114
author_curate_reward""
vote details (3)
@emmalynnemiriam ·
@cm-steem yeah! Why I have never considered that until eventually now. Tend to be the animals immortal in advance of male fully commited sin??? Upvoted.
properties (22)
authoremmalynnemiriam
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t210841445z
categoryboinc
json_metadata{"tags":["boinc"],"users":["cm-steem"],"app":"steemit/0.1"}
created2017-09-14 21:08:42
last_update2017-09-14 21:08:42
depth1
children0
last_payout2017-09-21 21:08:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length152
author_reputation-995,670,637,569
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,903,460
net_rshares0
@farihelper ·
very informative article 
sir i want to ask something sir i write very informative article about steemit but its doesn't  earn why sir i am confuse can you help me if you have time sir
properties (22)
authorfarihelper
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t164733625z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 16:47:33
last_update2017-09-14 16:47:33
depth1
children2
last_payout2017-09-21 16:47:33
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length184
author_reputation3,539,060,974,508
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,881,730
net_rshares0
@cm-steem ·
> sir i want to ask something sir i write very informative article about steemit but its doesn't earn why sir i am confuse can you help me if you have time sir

Just keep posting articles of good quality.
👍  
properties (23)
authorcm-steem
permlinkre-farihelper-re-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t182052300z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 18:20:51
last_update2017-09-14 18:20:51
depth2
children1
last_payout2017-09-21 18:20:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length204
author_reputation58,522,774,254,119
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,889,974
net_rshares1,198,092,758
author_curate_reward""
vote details (1)
@farihelper ·
Sir if you have time then see my article is that value able or not . is this right way which i choose
properties (22)
authorfarihelper
permlinkre-cm-steem-re-farihelper-re-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170915t070529513z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-15 07:05:30
last_update2017-09-15 07:05:30
depth3
children0
last_payout2017-09-22 07:05:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length101
author_reputation3,539,060,974,508
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,939,654
net_rshares0
@ghasemkiani ·
Reblogged — let’s promote quality content!
properties (22)
authorghasemkiani
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170917t144947907z
categoryboinc
json_metadata{"tags":[],"app":"juya/test","format":"markdown"}
created2017-09-17 14:49:48
last_update2017-09-17 14:49:48
depth1
children0
last_payout2017-09-24 14:49:48
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length42
author_reputation90,438,911,242,538
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id15,142,939
net_rshares0
@hassanabid ·
$0.12
Boinc Rocks <3
👍  
properties (23)
authorhassanabid
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170916t170115004z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-16 17:01:27
last_update2017-09-16 17:01:27
depth1
children1
last_payout2017-09-23 17:01:27
cashout_time1969-12-31 23:59:59
total_payout_value0.093 HBD
curator_payout_value0.030 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length14
author_reputation85,694,454,774,657
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id15,071,262
net_rshares48,363,127,239
author_curate_reward""
vote details (1)
@hassanabid ·
best of luck <3
properties (22)
authorhassanabid
permlinkre-hassanabid-re-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170916t170226771z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-16 17:02:36
last_update2017-09-16 17:02:36
depth2
children0
last_payout2017-09-23 17:02:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length15
author_reputation85,694,454,774,657
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id15,071,362
net_rshares0
@ivanviso ·
$0.45
The implementation indeed doesnt seem that hard. But what are you planing for the transition?
👍  ,
properties (23)
authorivanviso
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t141858119z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 16:19:03
last_update2017-09-14 16:19:03
depth1
children0
last_payout2017-09-21 16:19:03
cashout_time1969-12-31 23:59:59
total_payout_value0.338 HBD
curator_payout_value0.113 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length93
author_reputation448,087,264,912
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,879,097
net_rshares159,294,040,391
author_curate_reward""
vote details (2)
@jedigeiss ·
$1.58
hi @cm-steem, read it once and read it twice, i think it would make sense to go down this road, especially for the decentralisation part.  It really does not seem to be that difficult but most likely theres a detail that i did not see yet. Transition needs to be planned thoroughly...
👍  ,
properties (23)
authorjedigeiss
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t171230893z
categoryboinc
json_metadata{"tags":["boinc"],"users":["cm-steem"],"app":"steemit/0.1"}
created2017-09-14 17:12:30
last_update2017-09-14 17:12:30
depth1
children0
last_payout2017-09-21 17:12:30
cashout_time1969-12-31 23:59:59
total_payout_value1.189 HBD
curator_payout_value0.395 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length284
author_reputation326,601,261,931,660
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,883,967
net_rshares557,163,437,060
author_curate_reward""
vote details (2)
@lahcen80 ·
Really nice post.....I enjoyed reading
properties (22)
authorlahcen80
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t162444053z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 16:24:45
last_update2017-09-14 16:24:45
depth1
children0
last_payout2017-09-21 16:24:45
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length38
author_reputation105,900,808,796
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,879,639
net_rshares0
@ratul8940 ·
highly informative post
👍  ,
properties (23)
authorratul8940
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t160254194z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 16:02:57
last_update2017-09-14 16:02:57
depth1
children0
last_payout2017-09-21 16:02:57
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length23
author_reputation-565,838,797,745
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,877,630
net_rshares5,602,701,221
author_curate_reward""
vote details (2)
@regie ·
Join Regalcoin ICO...

Register here: https://regalcoin.co/ref/REEDG
👎  ,
properties (23)
authorregie
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170915t163501012z
categoryboinc
json_metadata{"tags":["boinc"],"links":["https://regalcoin.co/ref/REEDG"],"app":"steemit/0.1"}
created2017-09-15 16:35:00
last_update2017-09-15 16:35:00
depth1
children0
last_payout2017-09-22 16:35:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length68
author_reputation-6,960,031,839
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,983,195
net_rshares-479,397,294,021
author_curate_reward""
vote details (2)
@rocksg ·
$0.12
This BOINC project looks very promising. We hope all the very best for its future.
👍  
properties (23)
authorrocksg
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170916t121438955z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-16 12:14:39
last_update2017-09-16 12:14:39
depth1
children0
last_payout2017-09-23 12:14:39
cashout_time1969-12-31 23:59:59
total_payout_value0.093 HBD
curator_payout_value0.030 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length82
author_reputation116,981,533,538,953
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id15,050,428
net_rshares48,363,127,239
author_curate_reward""
vote details (1)
@romanaz00 · (edited)
$0.36
This system has almost endless possibilities IF applied properly. Good luck with it!
👍  
properties (23)
authorromanaz00
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t154219606z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-14 15:42:21
last_update2017-09-14 15:42:36
depth1
children0
last_payout2017-09-21 15:42:21
cashout_time1969-12-31 23:59:59
total_payout_value0.274 HBD
curator_payout_value0.090 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length84
author_reputation2,109,778,187
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,875,591
net_rshares128,004,139,600
author_curate_reward""
vote details (1)
@sheikh27 ·
$0.13
nice presentation, full of information, thanks for sharing.
👍  
properties (23)
authorsheikh27
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170916t034141261z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-16 03:41:57
last_update2017-09-16 03:41:57
depth1
children0
last_payout2017-09-23 03:41:57
cashout_time1969-12-31 23:59:59
total_payout_value0.096 HBD
curator_payout_value0.032 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length59
author_reputation31,287,734,702,835
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id15,021,761
net_rshares48,363,127,239
author_curate_reward""
vote details (1)
@starkerz ·
@cm-steem, this is very interesting reading! I love steemit, as I did not even think this stuff was possible, until i try reading blogs like this! 

I am working with the #promo-uk team and @stephenkendal to promote steemit on a UK tour around 22 universities during freshers week! As a promonent UK steemian, we would like to ask for your support and if you have time, even to come and join us for whatever time you can spare at your nearest university! 

The tour started in Manchester today, does a trip around the country and ends up in Lancaster on 07th Oct.  

[THIS](https://steemit.com/promo-steem/@starkerz/promo-uk-steemit-freshers-week-roadshow-volunteers-needed) link will show you the tour route, meeting times and meet up locations.

[THIS](https://steemit.com/promo-steem/@starkerz/day-1-of-22-university-freshers-promotion-tour-steemit) link shows you our success around Manchester today!

It would be really great if you could make it to one of these promotional events to have some fun talking Steemit and letting people know how great it is!!

We are also presenting at the London investors fair on 20th October.  We plan to get together with some steemians in a London bar after the event for some drinks (which we will put 150 GBP behind the bar for)
[HERE](https://steemit.com/promo-uk/@joannaaxinte/fomo-alert-about-last-night-s-steemit-promo-uk-birmingham-meet-up) is a summary of our last meetup


Please reply to this or contact me in [steemit.chat](https://steemit.chat/home) if you are interested to take part or support our work!
properties (22)
authorstarkerz
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170918t220513345z
categoryboinc
json_metadata{"tags":["promo-uk","boinc"],"users":["cm-steem","stephenkendal"],"links":["https://steemit.com/promo-steem/@starkerz/promo-uk-steemit-freshers-week-roadshow-volunteers-needed","https://steemit.com/promo-steem/@starkerz/day-1-of-22-university-freshers-promotion-tour-steemit","https://steemit.com/promo-uk/@joannaaxinte/fomo-alert-about-last-night-s-steemit-promo-uk-birmingham-meet-up","https://steemit.chat/home"],"app":"steemit/0.1"}
created2017-09-18 22:05:03
last_update2017-09-18 22:05:03
depth1
children0
last_payout2017-09-25 22:05:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,558
author_reputation107,320,470,462,549
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id15,269,134
net_rshares0
@steemit-bank ·
<p><a href="https://steemit.com/@steemit-bank">Steemit Bank</a> invested in your post.</p>
<p>Follow <a href="https://steemit.com/@steemit-bank">Steemit Bank</a></p>
<p>Support the project by upvoted the this comment.</p>
👍  
properties (23)
authorsteemit-bank
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t160107732z
categoryboinc
json_metadata{"tags":["boinc"],"links":["https://steemit.com/@steemit-bank"],"app":"steemit/0.1"}
created2017-09-14 16:01:00
last_update2017-09-14 16:01:00
depth1
children0
last_payout2017-09-21 16:01:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length221
author_reputation615,129,545,920
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,877,443
net_rshares5,689,072,871
author_curate_reward""
vote details (1)
@tomasbrod · (edited)
$1.94
First, I am happy that you @cm-steem, started working on the issue of CPID/UserID Ownership.
Website [boinc signature](http://signature.statseb.fr/), requires boinc account authenticator to prove ownership. As authenticator grants full control of the account, this is obviously out of question.

What you propose, is for a project to maintain signing key-pair and a api/form to sign UserID + custom data with the project key. Then this signature proves that the user has access to the boinc account.

>  ... decrypt message with project's public key

In your article, you used said project server *encrypts* the message with project private key and peers then *decrypt* it with the public part. I assume you mean *sign* and *verify*, because one does not decrypt with public key. (encrypt with public, decrypt with private, sign with private, verify with public)

I don't know if you realize the effects, but with this proposal, gridcoin nodes will not need to make a single request to the project server to verify the association! The project public key can be included into the project beacon.

> Timestamp to prevent replay attack within a network.

Can you elaborate on what replay attack is possible without this timestamp? If it was not there, attacker could capture an re-send the registration, but it would be essentially a no-op, as it would simply associate the same External_System_Key with the UserID.

> If a project wishes to cut off external systems from rewarding their users, they can simply change or remove the public key.

This claim is false. As the key will remain cached in the external system.

> It's more difficult for an attacker to claim external system rewards if they aren't able to just include an address in their profile & they need to run a wallet per UserID they claim.

This is again false. If attacker can gains access to boinc account to edit profile, he can as easily use the message signing form. And one wallet will suffice for claiming multiple UserIDs, if they are attackers, they can edit the source.

Advantages:
 * verify association without contacting server
 * better than current state, obviously
 * independent of CPID

Disadvantages:
 * requires (non-trivial) modification to boinc server software
 * project admins must maintain yet another key-pair
 * user must  perform registration of every project

And Last, current state it's issues and some research on the topic is available on [CPID Ownership wiki](https://github.com/gridcoin/Gridcoin-Research/wiki/DEV-CPID-Ownership).
👍  , , , , ,
properties (23)
authortomasbrod
permlinkre-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170914t183508386z
categoryboinc
json_metadata{"tags":["boinc"],"users":["cm-steem"],"links":["http://signature.statseb.fr/","https://github.com/gridcoin/Gridcoin-Research/wiki/DEV-CPID-Ownership"],"app":"steemit/0.1"}
created2017-09-14 18:35:09
last_update2017-09-14 19:26:42
depth1
children2
last_payout2017-09-21 18:35:09
cashout_time1969-12-31 23:59:59
total_payout_value1.475 HBD
curator_payout_value0.461 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,531
author_reputation868,427,350,086
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,891,206
net_rshares682,942,812,065
author_curate_reward""
vote details (6)
@cm-steem · (edited)
$0.22
> First, I am happy that you @cm-steem, started working on the issue of CPID/UserID Ownership.

Thanks, it's a natural progression from the last few issues & rain related projects. Hopefully this research can be used by many external systems (not just gridcoin).

> Website boinc signature, requires boinc account authenticator to prove ownership. As authenticator grants full control of the account, this is obviously out of question.

Wow, that's pretty bad!

On the upside, during the BOINC workshop Marius from cosmology@home began working on the removal of the account key web-authentication, so the account key effectively becomes a weak auth key.

>> ... decrypt message with project's public key
>
> In your article, you used said project server encrypts the message with project private key and peers then decrypt it with the public part. I assume you mean sign and verify, because one does not decrypt with public key. (encrypt with public, decrypt with private, sign with private, verify with public)

Whoops - misuse of terminology & under-specification as a result.

If the message being verified (signed with private key) is not encrypted, then we'll need to hash the message  prior to signing the hash on the BOINC server, then within the Gridcoin client recreate the hash using the same original message data ("$UserID $External_System_Key $Current_Time") for comparison, right?

So perhaps the output text box should include:

```
Plaintext: $UserID $External_System_Key $Current_Time
Signed_Hash: function_output
```

To which we then paste (one project at a time) into the Gridcoin client, which hashes the plaintext and performs the signature verification.

Sound better? Or additional areas for improvement? 

> I don't know if you realize the effects, but with this proposal, gridcoin nodes will not need to make a single request to the project server to verify the association! The project public key can be included into the project beacon.

Indeed, the client will only need to maintain an updated list of project public keys for beacon verification, there would be zero need for providing the gridcoin client an email address too (since with this proposal you establish full proof of account ownership).

Additionally, given that UserID's don't change (unlike CPID) we could move towards permanent beacons, especially if we were to utilize burn addresses (instead of looking back 6 months of blocks).

>> Timestamp to prevent replay attack within a network.
>
> Can you elaborate on what replay attack is possible without this timestamp? If it was not there, attacker could capture an re-send the registration, but it would be essentially a no-op, as it would simply associate the same External_System_Key with the UserID.

If the 'External_System_Key' was the address used to register the beacon, then sure the timestamp wouldn't play any serious role & in fact it should be removed to improve simplicity of generating the hash of the originally signed message.

If the 'key' was simply GRC/ETH/ETC (ticker term instead of address) then the timestamp would play a role in preventing replay of the beacon within a network and upon external networks.

I think you're right that the timestamp could be phased out entirely, in favour of just $UserID & $External_System_Key.

>> If a project wishes to cut off external systems from rewarding their users, they can simply change or remove the public key.
>
> This claim is false. As the key will remain cached in the external system.

It would cut off new registrations, but you're right that anyone that had successfully proven their UserID ownership with the project's public keys cached would continue earning rewards despite the key being removed from the BOINC server.

This would be grounds from removal from the whitelist. If we didn't bundle these keys within the gridcoin client, then on first boot if the keys weren't present the superblock mechanism may experience instability as some may simply not recognize the project's beacons as legit.

>> It's more difficult for an attacker to claim external system rewards if they aren't able to just include an address in their profile & they need to run a wallet per UserID they claim.
>
> This is again false. If attacker can gains access to boinc account to edit profile, he can as easily use the message signing form. And one wallet will suffice for claiming multiple UserIDs, if they are attackers, they can edit the source.

You're possibly right that a modified client could potentially register one beacon per address, and never attempt to stake across UserIDs (flagging to the rest of the network a duplicate UserID registration), which would reduce the cost of registering many accounts.

I proposed a couple additional security measures to make hackers lives harder:

### Require:

* A minimum RAC before enabling the function - reducing the ease of claiming idle account ownership.
* A verified email account (unless the project doesn't use email verification).

---

> ### Disadvantages:

> requires (non-trivial) modification to boinc server software

If accepted in the main repo, and enabled perhaps with an MISC build option then only projects which have heavily modified the web server implementation would have difficulties implementing the new functionality (WCG, Einstein).

Otherwise, it's a rather simple chunk of code to develop, especially if we're just using openssl instead of an alternative public key cryptography library.

> project admins must maintain yet another key-pair

This is true, however it's not as critical as the other key-pairs.

Currently, project admins are advised to take private keys offline or move to a more secure location, we'll possibly need to investigate securing the private key for hot use (instead of cold storage).

---

Thanks for the reply, much appreciated.

Best regards,
CM.
👍  
properties (23)
authorcm-steem
permlinkre-tomasbrod-re-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170915t004952154z
categoryboinc
json_metadata{"tags":["boinc"],"users":["cm-steem"],"app":"steemit/0.1"}
created2017-09-15 00:49:54
last_update2017-09-15 00:59:06
depth2
children0
last_payout2017-09-22 00:49:54
cashout_time1969-12-31 23:59:59
total_payout_value0.168 HBD
curator_payout_value0.056 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length5,864
author_reputation58,522,774,254,119
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id14,916,655
net_rshares80,450,450,367
author_curate_reward""
vote details (1)
@cm-steem ·
I've updated the original post with your input in mind.
properties (22)
authorcm-steem
permlinkre-tomasbrod-re-cm-steem-proof-of-boinc-userid-ownership-using-public-key-cryptography-20170916t005231318z
categoryboinc
json_metadata{"tags":["boinc"],"app":"steemit/0.1"}
created2017-09-16 00:52:30
last_update2017-09-16 00:52:30
depth2
children0
last_payout2017-09-23 00:52:30
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length55
author_reputation58,522,774,254,119
root_title"Proof of BOINC UserID ownership using public key cryptography"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id15,013,333
net_rshares0