MyCryptoChat, version 0.1 et code source en ligne

icon Tags de l'article : ,

Décembre 13, 2013


Bonjour à tous ! Comme promis il y a quelques jours, je viens juste de publier le code source de MyCryptoChat !

Ceux qui suivent déjà mes liens savent déjà de quoi je parle, alors voici un petit récapitulatif pour les autres...

MyCryptoChat est une petite application de chat très simple, sécurisée à la ZeroBin. C’est-à-dire que les conversations sont intégralement chiffrées côté client.

Vous créez une conversation, vous donnez le lien à un ami, et hop, vous pouvez converser en toute sécurité.
Les seules personnes qui peuvent accéder à la conversation sont celles qui ont eu l’url de la conversation et la clef de chiffrement contenue dans l’ancre (après le # dans l’url).

Les fonctionnalités en détail :
  • Ultra simple car seulement 2 boutons : “créer une salle de chat” et “envoyer le message”.
  • Les chiffrements et déchiffrements sont intégralement réalisés par le navigateur. Le serveur ne sait absolument pas ce que vous dites.
  • Chaque salle de chat a une durée de vie (de 15 minutes à 24 heures). A la fin, toute trace de la conversation aura disparu.
  • Les données sont chiffrées avec AES 256bits.
  • 1 minute après avoir quitté le chat, le serveur ne sait déjà plus qui vous étiez ni quelle était votre adresse IP (même les pseudos sont chiffrés !)
  • Vous pouvez changer vous-même la clef de chiffrement en modifiant l’ancre dans l’url (la partie après le #) avant d’envoyer votre premier message.
  • Le nombre de personnes qui suivent la conversation est affiché.
  • Génération d’avatars pour chaque utilisateur (afin d’éviter l’usurpation d’identité).

Vous trouverez toutes les informations ainsi que le code source sur la page du projet chez codeplex : http://mycryptochat.codeplex.com/

Sinon vous pouvez tester en live sur http://mycryptochat.azurewebsites.net/

Et si vous avez la moindre question, les commentaires sont là pour ça.

Allez, bon weekend à tous !

Photo Credit: rpongsaj

27 commentaires

Cyril - 13/12/2013 à 14:44:47

Bien sympa ce petit outil de chat en ligne !
J'ai été content de faire partie des bêta testeurs et je compte bien l'utiliser de manière régulière maintenant.
Une bonne appli KISS, félicitations ;)

@répondre #lien

Bric3d - 13/12/2013 à 21:41:12

Ça franchement pas mal ce chat, beau travail :p

@répondre #lien

jerry wham - 14/12/2013 à 17:35:48

Et une version php, c'est possible ???

@répondre #lien

jerry wham - 14/12/2013 à 18:00:38

@jerry wham : Désolé, je n'avais pas lu tes liens. Tu en es où du dev ?

@répondre #lien

Tommy - 15/12/2013 à 11:55:46

Au tout début, mais ça va venir, il faut juste compter une semaine je pense, peut-être un peu plus car certaines notions changent beaucoup entre l'ASP.Net et le PHP ;)

@répondre #lien

Blogus - 15/12/2013 à 13:11:56

Bonjour,

Question de profane (désolé...) : comment l'installe-t-on sur son serveur ?
J'ai copié le dossier MycryptoChatWeb sur mon serveur, mais ensuite...
Merci pour votre aide

@répondre #lien

thibsert - 15/12/2013 à 14:57:02

Salut,

mon serveur est sous linux donc j'attends la version php pour l'installer, mais je te remercie par avance de partager cet outil super pratique.

J'ai une question : si j'envoie par email le lien contenant la clé, quiconque intercepte l'email peut suivre la conversation ? Une solution serait de se mettre d'accord à l'avance sur un salt de la clé (par exemple, ajouter 3 au dernier chiffre de l'url), mais c'est pas très KISS (je me vois mal expliquer ça à ma mère...). Est-ce que tu as une astuce pour faciliter ça ?

@répondre #lien

thibsert - 15/12/2013 à 18:07:45

@thibsert : Oups, en parcourant tes liens je viens de trouver la réponse, en passant par une première conversation avec pas plus d'un visiteur :)

@répondre #lien

Tommy - 16/12/2013 à 09:40:28

Haha oui, j'ai créé ce type de conversations exprès : si plus d'un visiteur a accédé à l'url, le contenu est immédiatement supprimé. Du coup on crée une première conversation "1 visiteur seulement", avec un lien vers une seconde conversation. Tranquille comme ça :)

@répondre #lien

Tommy - 16/12/2013 à 09:41:54

@Blogus : Tout dépend de ton serveur. Si c'est un serveur Windows il faut créer un site web, copier le contenu du dossier applicatif dedans, et ça marchera.

Si c'est un serveur Linux (ou hébergement PHP) il vaut mieux attendre la version PHP (à moins de vouloir s'amuser avec Mono) ;)

@répondre #lien

Gilles - 17/12/2013 à 15:25:14

Good work :)
Suggestions :
- afficher le temps restant d'ouverture de la room, avec un refresh "Ajax" si possible.
- permettre une durée "infini" de plus de 24h et du coup un timestamp avec date genre YYYY-MM-DD:HH:MM:SS

Pas compris le "self destroy if more than one visitor".

@répondre #lien

Blogus - 17/12/2013 à 19:51:26

@Tommy :

Merci pour la réponse, c'est un hébergement chez 1and1 et un serveur linux...

@répondre #lien

Tommy - 18/12/2013 à 08:22:33

@Gilles :

Très bonne suggestion pour l'affichage du temps restant, je vais ajouter ça dans la version 1.5.

Pour la durée infinie ce sera peut-être pour la version 1.6, car actuellement les données sont stockées en application, pas en fichier, donc il ne peut y avoir plus d'une certaine persistance. Mais je vais regarder pour améliorer ça.

Enfin la fonctionnalité "self-destroy if more than one visitor" sert à créer une salle où pour partager quelque chose de sensible. Ainsi si un bot ou un man in the middle s'incruste et ouvre le lien avant la personne concernée, la personne concernée sera directement prévenue car il lui sera affiché que l'information a été détruite. Et si la personne cible s'est connectée avant, le pisteur arrivera lui devant ce message.

C'est utile par exemple dans un cas : tu veux discuter avec un quelqu'un dont le seul contact est une adresse mail gmail. Tu crée une conversation "self-destroy", dans laquelle tu donnes le lien vers une seconde conversation. Ensuite tu lui envoie le lien de la première conversation par mail, et voilà !

@répondre #lien

Gilles - 18/12/2013 à 08:30:15

Ok pour le self destroy.

Pour le stockage en cas de permanence, en fait je ne sais pas comment marche cette techno obsolète qu'est l'ASP (un troll, où ça ?) :p mais... pourquoi tu ne conserverais pas une copie fichier créée comme Zerobin ?
Des sous-répertoires, et au final un fichier crypté que l'hébergeur ne peux pas ouvrir.

J'attends la version PHP moi :)

@répondre #lien

Tommy - 18/12/2013 à 09:14:34

@Gilles : Pas ASP, ASP.Net. La différence est titanesque entre les deux. (C'est un peu comme comparer une Peugeot 404 et une Peugeot 408 sous prétexte qu'elles ont presque le même "nom".)

Oui je sais, don't feed the troll, mais bon. ASP.Net est une des meilleures (La meilleure ?) technos web avec lesquelles j'ai pu travailler. Et Visual Studio l'un des meilleurs IDE. Et l'ensemble des deux ça fait des chocapics.

Mais je sais bien qu'ASP.Net n'est pas adapté au monde web hors entreprise, donc je vais travailler sur la version PHP.

Oui, je vais devoir passer par des fichiers ou par une BDD. De préférence une BDD car un chat c'est énormément d'accès, donc devoir lire et mettre à jour énormément de fichiers en permanence. Ce n'est pas forcément judicieux pour le disque dur du serveur...

A creuser, je pense qu'il faudra que je fasse des tests de perfs...

@répondre #lien

Gilles - 18/12/2013 à 09:25:37

Je crois que Timo ou Seb ont déjà fait des comparaisons de perfs en accès fichiers nombreux.
D'ailleurs, au maxi, c'est du SQLite : plus léger et il me semble assez performant côté accès.
Soit SQLite soit NoSQL (fichiers texte)...

Et pour info mon progiciel de boulot est une grosse merde qui sort des .asp (je ne sais pas si c'est de l'ASP, du ASP.Net, etc.) avec du JS et de l'ActiveX donc tu m'excuses mais dès qu'il y a les 3 lettres "ASP" dans une techno, j'ai des boutons, vu les perfs ici.

@répondre #lien

Tommy - 18/12/2013 à 09:40:51

Ouaaaaah ! .asp = ASP classique, techno obsolète et totalement moisie. C'était déjà moisi il y a 8 ans quand j'ai commencé mes études alors aujourd'hui... Je comprends que ça te file des boutons :D

Oui SQLite est une solution. Je leur ai posé la question via Shaarli, on verra :)

@répondre #lien

ArthurHoaro - 18/12/2013 à 09:48:59

@Tommy : Je pense qu'il vaut mieux partir sur un vrai SGBD. SQLite peut être un bon compromis pour la souplesse.

L'idéal serait un ORM light en PHP, qui permettrait de choisir le SGBD en fonction des préférences de chacuns.
En tout cas, si tu pars sur des fichiers... tu vas te faire chier pour rien. :)

@répondre #lien

titlap - 18/12/2013 à 09:57:03

Mais quelle classe Tommy ! Je ne savais pas que c'était toi derriere MyCryptoChat ! :) J'avais entendu parler de ce sujet via Korben ... Joli :)

@répondre #lien

Gilles - 18/12/2013 à 09:58:10

Si tu as besoin d'aide pour tester, j'ai un bon hébergeur en PHP sous la main :)
Bon courage pour la suite ;)

@répondre #lien

Tommy - 18/12/2013 à 10:46:14

@ArthurHoaro : Oui, mais l'application étant pur KISS, devoir passer par un SGBD = une installation pas KISS du tout.

Passer des fichiers ou du SQLite = installation KISS : on copie/colle le dossier et ça marche !

@titlap : Merci :) Oui je viens de voir l'article sur Korben :D

@Gilles : Ca marche, dans un premier temps je testerais en local et dans Azure mais si j'ai besoin d'un bêta testeur je te ferais suivre l'appli ;)

@répondre #lien

Gilles - 18/12/2013 à 11:14:13

Azure gère le PHP.
MS s'ouvre à la concurrence (2ème troll discret) ?

Attention : SQLite est une SGBD ;)

@répondre #lien

Tommy - 18/12/2013 à 11:39:05

Azure gère le PHP, le node.js, le python, le ruby, il peut également héberger n'importe quel type de VM (Linux, Windows, etc.), Microsoft est totalement ouvert à la concurrence avec Azure ;)

Et oui, SQLite est un SGBD mais sur de très nombreuses requêtes les performances sont souvent en deçà de véritables SGBD (à installer j'entends).

Mais je pense de plus en plus me tourner vers SQLite. J'y réfléchis ;)

@répondre #lien

Gilles - 18/12/2013 à 12:05:57

L'intérêt de SQLite est de n'avoir rien à installer à part PHP 5.3 mini je crois.

@répondre #lien

Chris - 03/01/2014 à 13:35:50

Bonjour,
Intéressé également par la version php, je profite pour saluer l'initiative et pour vous souhaiter à tous une excellente année 2014.

Ce n'est certes pas kiss pour l'install mais assez complet et portable pour les tests (voir plus sur un pc windows 'bloqué' en entreprise) : j'ai noté xampp en version portable (http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.8.2/) que j’utilise pour les premiers tests loin de mon pc ou dee mon hebergeur.

@répondre #lien

mio - 18/04/2015 à 01:00:31

j'ai pas compris , après avoir changer le seed , qu'est ce que je fait pour ouvrir le chat ???

@répondre #lien

icon Flux RSS des commentaires de cet article

Les commentaires sont fermés pour cet article