jeudi 23 novembre 2006
Le jeudi 23 novembre 2006 à 22:23:: Laurent - CyberSDF:: Dev Web - Securite Informatique - 4807 ouvertures
Si vous êtes comme moi, vous ne faites qu'une confiance partielle aux différents couples de login et mot de passe.
En effet, sans même entrer dans le détail du nombre de petits programmes espions que pourrait contenir votre ordinateur ou de quelqu'un qui écoute votre réseau, n'importe qui peut regarder derrière votre épaule et voir vos identifiants.
Pour pallier à tout ça, il a été inventé le principe d'authentification forte[1] que j'ai déjà introduit dans ce blog.
Pour mémoire, le concept de l'authentification forte repose sur l'utilisation d'au moins deux facteurs parmi les suivants :
- Ce que l'utilisateur connaît (login, un mot de passe, un code PIN),
- Ce que l'utilisateur détient (une carte magnétique, une carte à puce, un « authentifieur »),
- Ce que l'utilisateur est (empreinte digitale, empreinte rétinienne, structure de la main, structure osseuse du visage ou tout autre élément biométrique)
On voit donc des solutions arriver, que ce soit en biométrie ou des secureID à mettre autour du cou, etc.
Le hic, c'est que toutes ces technologies coûtent de l'argent (et pas qu'un peu pour certaines d'entre elles), et moi de l'argent, je vous avoue que je n'en ai pas beaucoup...
Pourtant, pour certaines applications (quelles qu'elles soient) j'aimerais bien leur proposer une authentification forte quand même. Comment faire ?
Et bien je vais vous donner une méthode simplissime qui ne vous coûtera pas un rond !
Bon déjà on oublie la biométrie, donc ce que l'utilisateur est on met de côté.
On se concentre donc sur ce que l'utilisateur connaît et ce que l'utilisateur détient.
L'idée est de fournir à votre utilisateur (en plus d'un nom d'utilisateur et d'un mot de passe) une carte du style bataille navale de n colonnes sur n lignes (tout dépend de ce que vous voulez faire).
Votre utilisateur entre donc son login (CyberSDF) et son password (12345678), l'application le reconnaît (elle peut même lui dire bonjour) et, pour confirmer que c'est bien CyberSDF himself qui veut se connecter, lui demande la valeur de la case D7 de SA carte. Il cherche partout sa carte, la trouve, cherche la case D7, entre la valeur 2e68 et envoie.
Si la réponse est correcte, le serveur lui donne l'accès, sinon l'envoie bouler.
Là vous me dites, t'es bien gentil mais comment je fais pour lui créer ta carte de bataille navale ?
Rien de plus simple ! Tout ce dont vous avez besoin c'est de son login (normalement ça devrait être bon) et d'un grain de sel[2], qui est associé à l'utilisateur qui sera stocké quelque part.
Aller, le bout de code et on explique après :
[php]
<?php
function gencard($login='CyberSDF',$salt18 = 'voilàmongraindesel') {
$temp = md5($login.$salt18);
$alphabet = 'ABCDE';
for($i=1; $i<=5; $i++) {
for($j=0; $j<5; $j++) {
$foo[$i][$alphabet[$j]] = dechex( (ord($temp[$i])*ord($temp[$j])) );
}
}
return $foo;
}
?>
Voilà une fonction qui nous génère notre carte de 5 colonnes sur 5 lignes dans un tableau à deux dimensions.
Pour le remplissage du tableau, je me suis inventé un petit truc où je multiple les valeurs ASCCI de deux lettres et je transforme le résultat en hexadécimal. Pourquoi de l'hexa ? Tout simplement pour avoir de temps en temps des lettres, je trouve juste que c'est plus sympathique 
Deux mises en garde tout de même [3] :
- Mon modèle mathématique est horrible !!! En effet, si vous comptez bien, je ne peux créer qu'une carte de 32 cases (mon MD5) donc pour une carte d'au-delà de 5*5 il y a forcement des répétitions. Le but ici n'est pas de vous donner le meilleur modèle mathématique mais de vous présenter le principe, charge à vous de faire votre propre machin.
- Le grain de sel ne doit pas être transmis en clair (pour le login on s'en fiche)
Là, rien de plus simple, c'est un simple parcours de tableau :
[php]
<?php $bar = gencard(); ?>
<table border="1" cellpadding="5">
<tr>
<th> </th>
<?php
$alpha = 'ABCDE';
for($j=0; $j<strlen($alpha); $j++) {
echo " <th>".$alpha[$j]."</th>\r\n";
}
?>
</tr>
<?php
for($i=1; $i<=10; $i++) {
echo " <tr>\r\n <th>".$i."</th>\r\n";
for($j=1; $j<=strlen($alpha); $j++) {
echo " <td>".$bar[$i][$alpha[$j-1]]."</td>\r\n";
}
echo "</tr>\r\n";
}
?>
</table>
On a généré la carte qui va bien, notre utilisateur l'a imprimée, il ne reste plus qu'à l'utiliser.
On lui demande une case au pif :
[php] <?php $ltr = 'ABCDE'; echo $case = $ltr[mt_rand(0,4)].mt_rand(1,5); ?>
Notre utilisateur envoie à l'application le contenu de la case, et pour vérifier le résultat il n'y a plus qu'à recréer la carte (sans l'afficher bien sûr) et de comparer la valeur trouvée avec la valeur envoyée.
[php] <form method="post" id="monform" name="monform" action="<?php echo $_SERVER['PHP_SELF'] ?>"> <input type="text" id="val" name="val" /> <input type="hidden" id="case" name="case" value="<?php echo $case ?>" /> <input type="submit" /> </form>
[php]
<?php
function verifcase() {
if($_REQUEST['val']!='') {
$plop = gencard();
if($plop[substr($_REQUEST['case'],1,2)][substr($_REQUEST['case'],0,1)] == $_REQUEST['val'])
return true;
else
return false
}
}
?>
Et voilà ! Simple comme tout non ?
Si jamais vous voulez voir ça en action, j'ai fait une démo
[1] Faudra que quelqu'un pense à compléter ça http://fr.wikipedia.org/wiki/Authentification_forte
[2] Une explication de la technique du grain de sel très claire
[3] Si vous utilisez mon code tel quel, c'est à vos risques et périls hein
dimanche 11 septembre 2005
Le dimanche 11 septembre 2005 à 14:24:: Laurent - CyberSDF:: Securite Informatique - 1713 ouvertures
Vous avez peut être entendu parlé de la faille de sécurité sur le module IDN et qui à pour conséquence de faire planter Mozilla Firefox toutes plate formes et toutes versions.
Cette faille a été découverte le 4 septembre 2005 par Tom Ferris, remontée à la Mozilla Fundation le 6 septembre et publiée le 8 septembre
Comme a son habitude, les développeurs de Mozilla ont réagi avec la rapidité de l'éclair et ont publié dès le lendemain un patch et une procédure manuelle pour s'en prémunir.
vendredi 2 septembre 2005
Le vendredi 2 septembre 2005 à 19:12:: Laurent - CyberSDF:: Securite Informatique - 5548 ouvertures
Cher gros boulet,
Tu as l'air de bien t'amuser avec mon plugin Web2Mail en essayant de trouver une faille de sécurité pour spamer à partir du formulaire du plugin et ainsi utiliser abusivement les serveurs SMTP des pauvres blogueurs qui utiliseraient mon plugin.
Que tu cherches une faille de sécurité de ce plugin, je veux bien, il y en a eu une et elle à été corrigée rapidement dès que me l'a reporté et il y en a peut être d'autres ; Qui sait ? Nul n'est infaillible... et je serais même heureux qu'on me les rapportes si quelqu'un en trouves.
Mais toi tu es vraiment le pire hacker que j'ai pus voir
En tout cas, un gros boulet ça sert parfois car tu m'as donné plein d'idées d'améliorations et de sécurisation de ce plugin.
Bien cordialement
samedi 25 juin 2005
Le samedi 25 juin 2005 à 21:43:: Laurent - CyberSDF:: Securite Informatique - Dev Web - 5287 ouvertures
Il y a quelques mois, John Gallet avait lancé un fil de discussion dans les groupes <news:fr.comp.lang.php> et <news:fr.comp.securite> Pratiques de codage php et webapps. Il nous avait promis à l'époque de nous faire une petite synthèse des réponses et débats que ce fil engendrait.
Voila qui est fait ! Ca a mis presque 7 mois et il y en aura bien fallu 3 pour l'écrire, mais connaissant le bonhomme ils s'est documenté à foison, fouillé partout, fait des tests sur ses propres machines.
Il nous affuble donc de 24 pages passionantes au format PDF écrite avec sa verve habituelle qui nous détaille les choses à ne pas faire et comment mieux protéger.
Un document indispensable à lire et à garder dans un coin et ce quelque soit son niveau en développement web dynamique.
samedi 28 mai 2005
Le samedi 28 mai 2005 à 15:10:: Laurent - CyberSDF:: Securite Informatique - 12837 ouvertures
Pratiquement toutes les banque proposent désormais de se connecter sur le site pour voir l'état de ses compte et effectuer quelques opérations.
Personnellement je suis depuis de nombreuses années chez une banque ou tout ce qu'il peu être possible de faire avec son compte existe dans la version web et je dois avouer que cela me facilite grandement la vie.
Je suis convaincu du sérieux de ma banque quant à la sécurité de leur réseau et serveurs. Je sais qu'ils ont pris les mesures techniques qui s'imposent, a savoir cryptage des transactions HTTP, pas de pages existantes sur le serveur web mais créées à la volée via une transmission d'informations chiffrées, divers audits d'intrusions, etc. Et sans nul doute que toutes les autres font de même (plus ou moins bien en fonction du sérieux ; Non je ne donnerais pas de nom)
Toute cette panoplie de mesure à de quoi rassurer et je le suis, surtout qu'ils affirment qu'à ce jour ils ne déplorent aucun piratage ni alerte de sécurité majeure.
Seulement dans tout ça il y a une énorme faille et ce n'est rien d'autre que vous, d'ailleurs je vous en ai déjà parlé.
En effet la plupart des banques (du moins françaises) ne proposent pour se connecter qu'un simple couple login/mot de passe. Le login est souvent le numéro de compte et le mot de passe se résume à une série de chiffre et (en fonction de la banque) peu être personnalisé.
Que se passe-t-il si quelqu'un trouve vos identifiants et vide votre compte ? Que ce soit par phishing, comme ça a été déjà le cas, par un trojan qui récupère les frappes claviers, par récupération des mots de passe enregistré dans votre navigateur (a ne surtout pas faire) à cause d'une faille de celui ci, par analyse du flux réseau, etc. ou tout simplement arrive à le deviner ?
Eh bien je vais vous le dire, la banque se décharge de toute responsabilité sur vous. Ben oui, c'est vos identifiants, c'est donc à vous d'en prendre soin et donc à vous de tout mettre en oeuvre pour les protéger ; Exactement comme votre code confidentiel de votre carte banquaire.
Il serait temps que NOS banques se penchent un peu plus sur les diverses méthodes d'authentification forte (il en existe des peu contraignantes et peu coûteuses), je vous invite donc à faire comme moi : écrire à vos banques afin de les sensibiliser un peu plus au problème pour qu'elle proposent des solutions pour mieux nous protéger.
Le concept de l'authentification forte repose sur l'utilisation d'au moins de deux facteurs parmi les suivants :
vendredi 27 mai 2005
Le vendredi 27 mai 2005 à 19:40:: Laurent - CyberSDF:: Securite Informatique - 1520 ouvertures
Je l'ai trouvé marrante celle la alors j'ai hésité entre la catégorie sécurité informatique et humour.
Imaginez le topo :
jeudi 28 avril 2005
Le jeudi 28 avril 2005 à 21:06:: Laurent - CyberSDF:: Securite Informatique - 1873 ouvertures
Les accès en ligne aux banques est très loin d'être sécurisé, c'est un fait. Pour la plupart, un simple couple identifiant - mot de passe suffit et c'est très loin d'être sécure. En effet il suffit de se procurer ces identifiant pour pouvoir vider votre compte en quelques clics (et avec le jeu des transfert...)
Il existe pourtant des dizaines de méthodes (plus ou moins dures) pour authentifier de manière plus sures un client.
Les banques anglaises collaborent pour le choix d'un outil de sécurité commun qui pourrait être utilisé par tous leurs clients. Ils se tourneront vraisemblablement vers quelque chose d'hyper technologique faisant appel à du chiffrage ou des clés à révocation courtes.
Il existe d'autres méthodes, plus simple, moins techno, à pas cher pour augmenter l'authentification.
Je vous en livre une ici :
Donner à chaque client une carte contenant un tableau style bataille navale, dans ce tableaux on y met des lettres et des chiffres (en fonction d'un algo correspondant au client et d'autres paramètres).
Quand on se connecte sur le serveur, on y entre comme auparavant son identifiant et son mot de passe et la, le serveur demande : M6
Vous cherchez la case M6 sur votre carte et répondez au serveur ce qu'elle contient.
Voila. Maintenant on peu aussi donner une carte magnétique, une carte a puce, voir utiliser son empreinte digitale, empreinte rétinienne, structure de la main, structure osseuse du visage ou tout autre élément biométrique, ou, le plus courant un SecureID
mercredi 6 avril 2005
Le mercredi 6 avril 2005 à 10:22:: Laurent - CyberSDF:: Securite Informatique - 1505 ouvertures
Presence-pc nous informe que Internet Explorer se voit affublé d'une nouvelles failles permettent aisément et à n'importe qui d'installer des chevaux de Troie à l'insu de l'utilisateur.
Heureusement pour les utilisateurs de IE : La société [...] attendra que les correctifs soient en ligne avant de diffuser des détails sur les versions affectées par ce défaut.
et aucune exploitation de ces failles n'a été constatée
.
mardi 5 avril 2005
Le mardi 5 avril 2005 à 19:48:: Laurent - CyberSDF:: Securite Informatique - 1308 ouvertures
Une vulnérabilité bien génante, encore non patchée mais modérément critique, du moteur Javascript des navigateurs Netscape6+|7+ Mozilla1+ et Firefox1+ à été révélée par secunia. Celle vulnérabilité, grâce à du code malicieux permet de récupérer l'état mémoire ce qui peu permettre la fuite d'information sensible.
Solution :
Ressources :
Le mardi 5 avril 2005 à 09:52:: Laurent - CyberSDF:: Monde de geek - Securite Informatique - 2773 ouvertures
Le partage de connexion internet privée, bien relayée par l'association Paris-SansFil est de plus en plus suivis et médiatisé. J'en veux pour preuve un article de 01net vantant le partage de sa connexion ADSL via wifi avec les voisins.
Personnellement, et bien que je sois assé d'accord avec l'idée qu'une connexion internet devrait être du service publique et gratuite, je me pose quelques questions.
Pour moi c'est celui qui partage qui a la main sur le réseau, donc c'est lui qui est responsable en cas de plainte.
Celui qui paye le FAI, donc le partageur, ira expliquer à Mr le Juge que ce n'est pas lui mais son voisin qui se connecte via son IP parce qu'il a créé un réseau local wifi. Maintenant pour savoir quel voisin incriminer, il va falloir regarder de plus près les logs.
On ne peut tout simplement pas être sur ; Il faut faire confiance ou tout chiffrer sur le LAN.
Donc pour moi, si vous voulez partager votre connexion ou utiliser celle d'un autre, ok pourquoi pas, si vous voulez mais à vos risques et périls.
Toutes les fautes d'orthographes présentes sur ce site sont protégées par la licence
Creative common
|
|
|
|
Design décliné de [ON]Simple par [ NikO ]
Hébergé par Typhon.Network