create account

Current progress & overview of BOINC PR "Proof of UserID ownership using public key cryptography (openssl) #2134" by cm-steem

View this thread on: hive.blogpeakd.comecency.com
· @cm-steem ·
$11.69
Current progress & overview of BOINC PR "Proof of UserID ownership using public key cryptography (openssl) #2134"
# What's this about?

[BOINC pull request #2134](https://github.com/BOINC/boinc/pull/2134) provides a method of establishing a public key based cryptographic proof of BOINC UserId ownership on an individual BOINC project basis, allowing the user to prove account ownership on any external system/network permanently.

# What's changed?

After the 2017 BOINC workshop, I went back to the drawing board and created [PR2134](https://github.com/BOINC/boinc/pull/2134) accounting for input from multiple parties.

At the 2018 BOINC workshop we discussed 2134 again, an initial peer review of the code was performed and several changes were requested. I was then provided [an opportunity to present the PR in front of approx 30 workshop attendees](https://drive.google.com/open?id=1hWjfgHLjsBjKPZ_dl0zuIq1TM80eNQA2) which was positively received & resulted in several additional change requests after the presentation was over. [See here for more about the workshop](https://steemit.com/gridcoin/@cm-steem/reflecting-on-the-2018-boinc-workshop-in-oxford)

The output from the signing process is now provided in a text box/area & a button to copy the contents of the textbox has replaced the XML download prompt. This was requested to improve compatibility with all devices without introducing complexities.

There were changes to how the recaptcha component was implemented, it is now implemented by default - any project administrator who doesn't want to us recaptcha may have to edit the code to work around this check. It's a good deterrent against potential automated abuse of the signing form.

A couple weeks after the workshop I attempted to reimplement the test environment using the latest BOINC and BOINC-Server-Docker repositories which caused several previously unobserved issued to be spotted. We now perform additional key checks, utilize an alternative method of reading the keys into memory and have somewhat solved file permission issues (needs generalized steps for all projects).

What's left to go now? Perhaps some back and forth discussion about the file permission issue then the code needs a final peer review and evaluation for pull request merge into the master repo branch.

[You can test out the function on this test server!](https://boinc.grcnode.co.uk/boincserver/) Just make an account, navigate to your profile then click 'Generate signature' to explore the new functionality.

# Preview: OpenSSL signing form

> ![](https://whaleshares.io/imageupload_data/92331fa5d92b945953001690f5d47a225387ef85)

The user can input anything, it will be be signed using the project's ```external system private key``` alongside the user's UserID. External systems are free to establish their own handshake within the contents of the user input.

Any special characters input by the user are converted to their HTML equivalent, so external systems need to bear this in mind when planning their user_data input:

```
// Convert special characters to HTML equivalent
$user_data = htmlentities(post_str("user_data", true), ENT_QUOTES, "UTF-8"); 
```

## Preview: Output of OpenSSL signing form

> ![](https://whaleshares.io/imageupload_data/08288744b44665227a6b4d7988fdc20b83d235dd)

```
<boinc_user_id_verification>
<master_url>http://boinc.grcnode.co.uk/boincserver/</master_url>
<msg>2 Address Version123</msg>
<signature>luNkSdylEMtpn3Y9DYXWH5NhPfkCbTcCRxxB/w6GLbIej3WvTD77llAQipdO5eQyYdwzE4udO9cdprzsW8aOzsPssyrdwp2Rxhi1Yenx2JxjtrKYD1+ntF7k71KfoKdKnlge6h8yTF8l/AUuolLOT/xVGspDDvWxquvLfqBKWYGz/osrg8JIHslTODq6+4yb5VW+zmuTuhuiL9HP3iq0hnH7DlpAp4b+BhPBeRzGJm0HZSILTW4R2Cg9lwmQeXMzUvbhOrBU/1YcdpfdGX7tq6XTTwB3SB40UKL9jeN81/iP8Frrf88lst55PwE59RrAcx0yWV9yEzTIVZ3071W9Yg==</signature>
</boinc_user_id_verification>
```

The output takes the form of XML since BOINC outputs are in XML. It could be easily modified to output JSON instead but no need to complicate things for now. External systems could either parse this entire copied textbox or they could instruct users to copy and paste just the signature into their system since they'd already know the expected message and master_url.

## Possible use cases

* A cryptocurrency could use "Address_String Version_Int" to produce a message of "UserId Address_String Version_Int" associate an address with a BOINC UserID and allow updating of address via latest version - decentralizing the process of proving account ownership. Decentralized network participants could verify the signature using the project's public key.
* Proving ownership of an account for signature generator websites.
* Prove ownership of account for discounts or membership benefits online proportional to BOINC computation.

## How to verify UserID signature

* Requires OpenSSL
* Retrieve the project's appropriate 'external system' public key.
* Instruct user to navigate to this openssl signing form, input their personalized message provided by your external service (like their external account id) then provide the external system the returned output.
* Extract signature from returned output.
* Double check project & message contents.
* Attempt to verify signature using project's external system public key & OpenSSL's verify functions.

## Where to find out more?

Check out [BOINC PR #2134](https://github.com/BOINC/boinc/pull/2134) for more info on its ongoing development!

See the [related Gridcoin-Research UserId beacon proposal](https://github.com/gridcoin-community/Gridcoin-Research/wiki/DEV-CPID-Ownership#cms-proposal) on the wiki.

---

Interested in the above or have any questions? Do reply below! 👍
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 8 others
properties (23)
authorcm-steem
permlinkcurrent-progress-and-overview-of-boinc-pr-proof-of-userid-ownership-using-public-key-cryptography-openssl-2134
categorygridcoin
json_metadata{"tags":["gridcoin","boinc","cryptocurrency","programming","cryptography"],"image":["https://whaleshares.io/imageupload_data/92331fa5d92b945953001690f5d47a225387ef85","https://whaleshares.io/imageupload_data/08288744b44665227a6b4d7988fdc20b83d235dd"],"links":["https://github.com/BOINC/boinc/pull/2134","https://drive.google.com/open?id=1hWjfgHLjsBjKPZ_dl0zuIq1TM80eNQA2","https://steemit.com/gridcoin/@cm-steem/reflecting-on-the-2018-boinc-workshop-in-oxford","https://boinc.grcnode.co.uk/boincserver/","https://github.com/gridcoin-community/Gridcoin-Research/wiki/DEV-CPID-Ownership#cms-proposal"],"app":"steemit/0.1","format":"markdown"}
created2018-08-31 01:21:36
last_update2018-08-31 01:21:36
depth0
children3
last_payout2018-09-07 01:21:36
cashout_time1969-12-31 23:59:59
total_payout_value9.621 HBD
curator_payout_value2.065 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length5,554
author_reputation58,522,774,254,119
root_title"Current progress & overview of BOINC PR "Proof of UserID ownership using public key cryptography (openssl) #2134""
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id69,846,447
net_rshares8,012,052,268,488
author_curate_reward""
vote details (72)
@as-abir ·
Great,
The post is different from all posts. Very good
I learned something new today. Thank you very much for sharing the post among us
👍  , ,
properties (23)
authoras-abir
permlinkre-cm-steem-2018831t182935487z
categorygridcoin
json_metadata{"tags":["gridcoin","boinc","cryptocurrency","programming","cryptography"],"app":"esteem/1.6.0","format":"markdown+html","community":"esteem"}
created2018-08-31 12:29:39
last_update2018-08-31 12:29:39
depth1
children0
last_payout2018-09-07 12:29:39
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_length135
author_reputation184,066,483,697
root_title"Current progress & overview of BOINC PR "Proof of UserID ownership using public key cryptography (openssl) #2134""
beneficiaries
0.
accountesteemapp
weight1,000
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id69,887,912
net_rshares8,094,793,035
author_curate_reward""
vote details (3)
@ilovecoding ·
$0.47
Hello! Your post has been resteemed and upvoted by @ilovecoding because **we love coding**! Keep up good work! Consider upvoting this comment to support the @ilovecoding and increase your future rewards! ^_^ Steem On! 
 ![](https://codingforspeed.com/images/i-love-coding.jpg)
👍  , ,
👎  
properties (23)
authorilovecoding
permlink20180831t012148288z
categorygridcoin
json_metadata{"tags":["ilovecoding"],"app":"ilovecoding"}
created2018-08-31 01:21:48
last_update2018-08-31 01:21:48
depth1
children0
last_payout2018-09-07 01:21:48
cashout_time1969-12-31 23:59:59
total_payout_value0.456 HBD
curator_payout_value0.014 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length276
author_reputation40,845,997,808
root_title"Current progress & overview of BOINC PR "Proof of UserID ownership using public key cryptography (openssl) #2134""
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id69,846,459
net_rshares323,036,580,400
author_curate_reward""
vote details (4)
@steemitboard ·
Congratulations @cm-steem! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/commented.png)](http://steemitboard.com/@cm-steem) Award for the number of comments received

<sub>_Click on the badge to view your Board of Honor._</sub>
<sub>_If you no longer want to receive notifications, reply to this comment with the word_ `STOP`</sub>



> Do you like [SteemitBoard's project](https://steemit.com/@steemitboard)? Then **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
properties (22)
authorsteemitboard
permlinksteemitboard-notify-cm-steem-20180901t153900000z
categorygridcoin
json_metadata{"image":["https://steemitboard.com/img/notify.png"]}
created2018-09-01 15:39:00
last_update2018-09-01 15:39:00
depth1
children0
last_payout2018-09-08 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_length684
author_reputation38,975,615,169,260
root_title"Current progress & overview of BOINC PR "Proof of UserID ownership using public key cryptography (openssl) #2134""
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id70,011,932
net_rshares0