Got this idea from bitmessage; these bitmessage addresses could be used for passwordless anonymous login to any system. Or there could be another blockchain delivering bitidentity messages..
Use case, bulletin board:
- user sends a identity request to the page's bitidentity address. For every bitidentity address, there will be a new private key.
- one gets a sessionkey as a reply (maybe direct https - link) which one could use to login to the page and configure nickname etc.
Very secure, no passwords, anonymous identity.
Well, here it is.
On 08.12.2013 00:24, Nite69 wrote:
> Hi all!
>
> First; I was really astonished when I read about SQRL from news; I
> have been working on very much similar QR code log in system for a
> couple of months.
This is getting quite much ready for tests and initial source code (it
is still quite ugly, will clean it up when I get a version control)
release. The source code can be found from following links:
BitLogin CryptoID Android client v0.1.0 (binary package):
https://mega.co.nz/#!hwpRnKiB!Nly8jTVhPgNlyurw6Pk1Y2IT1olDLvUcOvYxjp5h8xI
Source code for BitLogin CryptoID Android client v0.1.0 (binary package):
https://mega.co.nz/#!loQ20JrR!NKBT5hUKh46uqgBXcaWmNh-20UZ3nKlit8udP0MZlv4
Server source code (Java):
https://mega.co.nz/#!l8hGRTJB!d6fNhiDuNK2LXb-31GZshTf6N7xUmrEgxKvy4e92CkE
You also need this (BitcoinECKey, all code extracted from bitcoin java
sources):
https://mega.co.nz/#!0lp0Eb6R!NujAJiYXO8uA_OuPHTfHvRN7GA16dluOvodREih407A
Other libraries needed for compile:
- spongycastle crypto library
- zxinglib
This code is free to use (part of it might have some GPL licenses),
either for improving SQRL or used as is.
I will try to get a sample server running today.
The princible (and differencies) to SQRL are:
- server is identified by it's cryptography keys, the actual URL can
be anything (I think piratebay likes this Good thing is that you
can use the same userbase on any number of servers/services. Bad thing
is that you *must not* lose the master key.
- master key is used to sign microcertificates (uCert). The sample
server creates a new uCert every 10 minutes.
- server offers a sessionid (server is free to generate timestamped
and/or SSLID etc sessionkey) for the client, client identifies the
user by signing the sessionkey with identity's secret key. Server
finds the public key from the signature and logs the user in.
- Client generates a new keypair for every server/username combination.
- Messages are very simple:
Login QR code:
bitid:192.168.7.15:8080/CryptoIDDemo/cid?id=l~B32CB9DE862FAC3D98A04621D605DA45~1PHDDf5b8rexRSyn2mvY5ziuSLPrXWGyQj
Where l=login, B32CB9DE862FAC3D98A04621D605DA45=sessionid,
1PHDDf5b8rexRSyn2mvY5ziuSLPrXWGyQj = server public key (format is
standard bitcoin address)
Reply:
192.168.7.15:8080/CryptoIDDemo/cid?id=l~B32CB9DE862FAC3D98A04621D605DA45&signature=IAiEp1YaQgKOYDyXFTiFCvp-iasTZszt2GFmDK6eQiSeRYpD-pwq3ZSj7s8x5xLP51qnOpf_mRIw-cgY6p8xOWs.
Server finds the identity's public key from the signature and logs the
user in.
Registering QR code:
bitid:192.168.7.15:8080/CryptoIDDemo/cid?id=c~873FEAA9328A766120BD861AF87D07C8~testuser~1PHDDf5b8rexRSyn2mvY5ziuSLPrXWGyQj
Response:
192.168.7.15:8080/CryptoIDDemo/cid?id=c~873FEAA9328A766120BD861AF87D07C8~testuser&signature=ILDIgZibEr9Onqm_q7yPNC0wgaBRTpFl8d_mDww_maOrOqELTUfCCyLovpj_uyqaDlVnJU0qZ4cTxxv8-hwaxgY.
When replying, server identifies itself with uCert (would make the qr
code very big, so it is sent back with http response):
{"message":{"20131215124151+0200~testuser~B32CB9DE862FAC3D98A04621D605DA45"},"signature":"H_lbcQSWrvkBhH09PII4pQmTKaIGHCn3HmzxkJZp8UerfLOLBFLCAaU6GD8U6tMzVPjRoAakNQlekLp
KDeVltFE."},{"uCert":{"key":"1HWHJaisNUnm33EXtKJ5CM7KUrq9pDfEt9","expires":"20131215125151+0200"},"signature":"H0gdU_8FYaGNpCZncwcfws2XvL6PKe8AskJFeCia7-OTFliAAVi5eIkMIr2QUAqgM80XBSYzJVDQRZ1AcN2v-Kg."}
Logged in : testuser:14Gv4XffXoUnQ3sb4eNTgGu4fgjtTidqCu
From the message signature, client finds the server online public key,
1HWHJaisNUnm33EXtKJ5CM7KUrq9pDfEt9, which is certified in the uCert
with the server's master key (which matches the QR code server key).
best regards,
Nite69