Author

Topic: Site web secure sans login/password (Read 2238 times)

legendary
Activity: 1946
Merit: 1012
vertex output parameter not completely initialized
November 04, 2015, 12:31:17 AM
#8
OK merci chagry
sr. member
Activity: 505
Merit: 327
Partage des connaissances pour évoluer.
November 02, 2015, 11:12:22 PM
#7
Ce qui est intéressant, c'est que le système de bitcoin apporte déjà une solution de cryptographie asymétriques qu’on peut utiliser pour la partie connexion sans pour autant passer par une api tiers ou d’installer des applications sur le serveur, ce qui serait impossible avec un hébergement mutualisé.

Le bitcoin nous permet de générer une adresse qui est notre identifiant public et une clé privée. Puis il nous permet de faire des signatures avec cette clé et vérifiable avec notre identifiant public. Au final, il nous reste plus qu'à transmettre au serveur l’identifiant public et toute information qui sera transmise sera signée par la clé. Toutes les fonctions existent déjà et sont distribuer en open source.

Cas d’utilisation.

Côté Clients, nous avons une application développée en JavaScript (js). Il nous suffit d’utiliser bitcoinjs. Le client entre une phrase secrète. À partir de cette phrase, un identifiant public est générait et envoyer au serveur.


Code:



Si le client veut envoyer une information au serveur, on utilise la phrase pour générait la clé et signer l’information.

Côté serveur, il nous reste plus qu'a vérifier la signature du client avec son identifiant publique qui est son adresse bitcoin. Si vous utiliser nodejs, il vous suffit d’installer bitcoinjs, si vous utiliser php, il y a ces lib qui sont disponible : bitcoin-php ou bitcoin-signature-routines

Cas de sécurité.
  • Pendant tout le temps de l’exécution de l’application, la phrase secrète reste sur l’ordinateur du client dans une variable js, et n’est jamais transmise au serveur. Mais elle est sauvegardée en claire dans la variable. Pour palier a ça, on peut utiliser un cryptage symétrique : CRP-Crypt Symmetric Cryptography
  • Au moment ou le client rentre ça phrase secrète, on lui demande d’inventer un code pin pour cette session. Le code pin est utiliser pour crypter la phrase, et on ne sauvegarde pas le code pin. La phrase et crypter dans la variable js sur la machine du client.
  • Maintenant si le client doit faire une signature ou juste voire ça clé privée, il devra composer son code pin pour déchiffrer la phrase contenue dans la variable js sur ça machine.
  • C’est un cas assez pratique si vous êtes au bureau ou chez vous et que vous aller aux toilettes, votre collègue, votre femme ou homme ne pourront pas accéder à votre clé sans avoir le code pin.
  • À chaque nouvelle connexion, vous pouvez inventer un nouveau code pin.

Il y a plusieurs avantages à utiliser le system cryptographique du bitcoin directement.
  • Plus de bases de données avec des informations sensibles comme le pass, ce qui enlève pas mal de problème de sécurité.
  • Le client reste maître de sa phrase qui ne quitte jamais ça machine.
  • Je suis sure de l’information de mon client qui est signé avec ça clé.
  • Il n'y a plus besoin de stoker les informations de connexion, car ils seront régénérait de nouveau, des que le client rentrera ça phrase secrète.
  • On peut utiliser l’identifiant pour transmettre des bitcoin au client ou l’inverse.

J’utilise ce système dans le framework chagry ou dans le portefeuille mircoin.
legendary
Activity: 1946
Merit: 1012
vertex output parameter not completely initialized
November 01, 2015, 03:34:03 PM
#6
Merci btchip !
hero member
Activity: 623
Merit: 500
CTO, Ledger
November 01, 2015, 11:12:35 AM
#5
Il y a pas mal de protocoles qui commencent à arriver, tous basés sur des challenges asymétriques.

Dans le monde Bitcoin, il y a BitID http://bitid.bitcoin.blue/ - compatible avec Airbitz, Mycelium et Ledger (et aussi DarkWallet, enfin RIP quoi)

Il y a aussi TREZOR Connect pour ceux qui aiment les solutions propriétaires qui laissent l'utilisateur sans compte quand on a perdu son appareil https://github.com/trezor/connect

Et d'autres travaillent aussi sur leur protocole (genre Onename) - https://github.com/blockstack/blockchain-auth-js ; l'idée en plus sera d'avoir quelque chose de complètement décentralisé (mais c'est encore alpha), basé sur Blockstore https://github.com/blockstack/blockstore

Sinon dans le monde du dehors, on trouve FIDO U2F, qui est déjà adopté par Google, Github et Dropbox avec pas mal de ressources dispo pour l'intégrer facilement. Ce n'est pas directement un login sans mot de passe (c'est un second facteur robuste qui utilise une clé externe), mais ça peut facilement etre utilisé comme ça. https://www.yubico.com/applications/fido/

Et pour terminer dans le meme registre, SQRL avec un téléphone - https://www.grc.com/sqrl/sqrl.htm

J'aurais tendance à conseiller U2F pour une nouvelle intégration vu la traction qu'ils peuvent avoir. J'en ai fait une implémentation Open Source sur KeepKey pendant un meeting un peu trop long, pour ceux qui voudraient avoir des idées https://github.com/LedgerHQ/keepkey-firmware/tree/u2f

legendary
Activity: 1946
Merit: 1012
vertex output parameter not completely initialized
November 01, 2015, 12:55:09 AM
#4
Meuh : Je n'en sais rien...
Chagry :  merci, c'est très intéressant, je vais creuser
legendary
Activity: 1512
Merit: 1011
October 31, 2015, 05:40:12 PM
#3
D'autres méthodes fiables existent-elles basées sur le blockchain ou pas (ceci est une question)  ?

https://www.youtube.com/watch?v=2N_xD1eIFss

blague à part, tu crois franchement que le login et le mdp te sauveront si ta partie serveur est en rade (suite à du DDOS sur l'IP fixe reliée ? Et puis bonne chance pour justifier le traffic lié en question ... si t'es un peu à coté de tes sous)
sr. member
Activity: 505
Merit: 327
Partage des connaissances pour évoluer.
October 31, 2015, 04:18:43 PM
#2
Il n'y a que les cookies ?
D'autres méthodes fiables existent-elles basées sur le blockchain ou pas (ceci est une question)  ?
J'ai pas creusé (ou pas percuté).
Merci  Grin


Site : http://chagry.com
Repositories github pour le serveur en php : https://github.com/chagry/Server-RPC-Framework
Repositories github pour le client en js : https://github.com/chagry/Client-RPC-Framework

Video Youtube
legendary
Activity: 1946
Merit: 1012
vertex output parameter not completely initialized
October 31, 2015, 03:10:10 PM
#1
Il n'y a que les cookies ?
D'autres méthodes fiables existent-elles basées sur le blockchain ou pas (ceci est une question)  ?
J'ai pas creusé (ou pas percuté).
Merci  Grin



Jump to: