mardi, 13 mars 2007

Travail de Master : quelques chiffres (suite)

Quelques chiffres supplémentaires pour mon travail et mon Master en général :

  • Note finale du travail de Master : 6 (sur 6 donc :))
  • Moyenne de Master (sur 93 crédits) : 5.79
  • Et pas une note en dessous de 5.
Je tenais juste à remercier Marius Erni, Dominique Bongard et Samuel Gmehlin grâce à qui j'ai réussi à me surpasser durant ces presque 2 ans de Master.

samedi, 24 février 2007

Bon anniversaire !

Avec pas mal de retard, hop une année de plus. Ca me fait maintenant 20 ans et 6 ans d'expérience :)

jeudi, 22 février 2007

Travail de Master : quelques chiffres

Rendu vendredi 16 février 2007 à 11h10 et défendu le vendredi suivant, soit le 23 février à 10h30, voici quelques chiffres au sujet de mon travail de Master :

Analyse et ingénierie inverse de récepteur satellite Free-To-Air


Le projet se déroulait sur 24 semaines, donc 120 jours. Retranchés des 8 jours de vacances dont j'ai pu jouir, ça nous fait 112 jours de travail effectif.

Au final un rapport de 70 pages, 17'426 mots pour 109'036 caractères, et une présentation de 45 minutes supportée par 44 slides encouragé par 300 visites de mon superviseur.

Mon projet c'est aussi 10'000 lignes de code réparties dans 4 projets (dont IDA Pro et Mame) écrites en 1000 heures de travail grâce à 100 litres de Coca-cola Light. C'est aussi 200 heures de trajets en voiture, 16'800 km parcourus sur l'autoroute A12 entre Matran et Lausanne-Blécherette, 384 mails envoyés en interne et 1640 mails en externe, donc une moyenne de plus de 27 mails envoyés par jour.

Tout cela pour un travail dont je suis entièrement satisfait, quant par le cadre de travail offert par l'équipe du CSO Office du groupe Kudelski que par les résultats intéressants que j'ai développés.

Et bien entendu la note finale que je vous laisse deviner reflète la qualité du travail :)

mercredi, 14 février 2007

Article de L'Objectif

Je suis dans le journal L'Objectif paru vendredi 9 février 2007. Je vous laisse découvrir l'article, en précisant que les noms correspondant à la photo sont faux. Il ne s'agit pas de Frédéric Neukomm derrière à gauche, mais bien Miguel Egger, un employé.



dimanche, 4 février 2007

Digression sur l'incohérence entre les discours et les actions

L'argent n'est pas une finalité, mais un moyen.
Cette phrase qui résonne dans ma tête depuis sa rédaction par Tristan Nitot, directeur de Mozilla Europe (voir l'article en question : les revenus du projet Mozilla), est le départ de cette digression sur mon dégout par rapport à la société capitaliste actuelle.

Quand un projet fonctionne, quel qu'il soit, tout le monde veut sa part du gâteau et en tirer les bénéfices. Les exemples sont nombreux. Ils passent par la Fondation Mozilla (discuté sur un précédent billet : La liberté a un prix), ou récemment en discutant avec mon père d'une jeune gymnaste à l'artistique, dotée d'un énorme talent, qui ne trouve pas d'entrainements adaptés à son niveau dans notre canton et qui s'entraine donc ailleurs, et concours maintenant sous les couleurs de cet autre canton. La finalité pour cette gymnaste est sa progression et son épanouissement, où elle s'entraine et qui elle représente n'est qu'une question de gout et de couleurs. La finalité dans cette histoire doit revenir à la jeune fille, et non pas à l'entraineur du club dans lequel par chance elle s'est présentée un jour... Ce genre d'attribution de finalité n'est que trop souvent appliqué. En politique je n'en parle même pas...

La question devrait plutôt être :

Quelle est la finalité de mon combat (action, engagement) ? Mon propre confort ou celui des autres, de la société, de celui/celle pour qui je me bats ou de ce pour quoi je me bats ? Est-ce que ça va plus me rapporter à moi qu'à la personne que j'aide ?

Est-ce que je suis le cheminement "Faites comme je dis et pas comme je fais" (cf les beaux discours sur l'environnement faits par des dirigeants venus en jet privés lors du WEF), ou "C'est l'intention qui compte" ?

Autant de points qui me révoltent en silence. Autant d'efforts gaspillés par les seuls caprices de gens plus fortunés... J'entendais à la radio un témoignage d'une personne concernant l'éventuelle introduction d'une taxe de circulation au centre de Montreux : "Moi je gagne très bien ma vie, et je me réjouis d'avoir les routes [du centre de Montreux] pour moi tout seul."
Ne comprenez vous pas dans ces propos les fondements même du socialisme ? Le partage des richesses, le cout de la vie en fonction du revenu ? Comment justifier la différence de la proportion de la TVA (de 7.6% chez nous) sur un litre de lait par exemple pour quelqu'un qui gagne 150'000.- par rapport à quelqu'un qui gagne 60'000 ? Tellement d'idée qui sont simplement balayées par des arguments populistes qui dit par exemple "Si vous votez pour nous, nous améliorerons les conditions de vie en limitant le chômage grâce au durcissant la loi sur les étrangers", mais en cachant à la vox populi que ce "nous" fera passer par la même occasion un tarif dégressif des impôts et des avantages fiscaux pour les grandes fortunes. Comment garder un avis objectif, un esprit critique quand la politique passe par du markéting de masse, ne tenant plus compte des idées à défendre mais les moyens mis en place pour la faire passer.

La vanité. C'est par ce nom que l'homme est mauvais. Par ce nom que l'homme pille peu scrupuleusement la planète. Par ce nom que l'homme est prêt à tuer son voisin si il peut y gagner une miette de terre. Par ce nom que certains hommes sont honteusement riche. Par ce nom que l'homme a asservi l'homme, qu'il a massacré l'homme, qu'il a violé l'homme.
C'est par ce nom que les bonnes actions ne durent pas longtemps et finissent par se transformer en corruption. C'est ce nom que je maudis tous les matins...

jeudi, 1 février 2007

PEAR::Mail_Queue2

C'est annoncé officiellement par le mainteneur actuel du projet, je prête mes 10 doigts pour le développement du paquet PEAR::Mail_Queue2, qui est une réécriture de PEAR::Mail_Queue. En effet ce dernier souffre, comme on peut le lire sur l'interface reportant les bugs, de problèmes internes assez ennuyeux et qui ne peuvent pas être corrigés sans casser la compatibilité arrière (backward compatibility, ou BC pour les intimes).

Comme le paquet PEAR::Mail_Queue est noté comme stable, la BC doit être gardée, d'où le paquet Mail_Queue2.

Au menu :

  • Destinataires multiples,
  • Processing concurrent,
  • Management des erreurs,
  • Meilleure gestion du buffer de queue,
  • Multithreading (!, mais uniquement pour Unix)
  • SMTP persistante,
  • ... (et tout ce qui me passera par la tête et sur la mailinglist) ...

jeudi, 25 janvier 2007

Tarpitting, ou comment faire perdre de l'argent aux spammers

Le tarpitting (désolé maman pour l'utilisation d'un mot d'anglais de plus dans mes billets) est un concept émergeant dans le domaine de la protection des mails.

Comme on s'aperçoit qu'on est mal embranché pour réduire la quantité de spam (voir We are loosing this war badly), des solutions en désespoir de cause se mettent petit à petit en place : autant essayer d'ennuyer le plus possible les spammers, en ajoutant un délai lors de la réception d'emails. La constatation est simple : si pour délivrer un mail, on ajoute un temps d'attente d'une seconde, l'utilisateur normal ne sera pas pénaliser car il n'est pas à une seconde près, mais le spammer qui envoie 1'000'000 de spam se verra pénaliser d'un million de seconde d'attente, soit plus de 11 jours. Bien sûr il peutva paralléliser l'envoi de ses mails, mais cela ne va réduire que linéairement son temps de pénalité.

De plus en plus de solution de la sorte voient le jour (principalement les systèmes de greylisting implémentent le tarpitting), et personnellement j'encourage fortement ce genre de solutions : si le mail courant est détecté comme du spam (pour éviter de reproduire ce couteux temps d'attente aux mailing "propres"), je temporise sa réception.

Spammers, chez moi vous allez perdre votre argent, car le temps, c'est de l'argent !

vendredi, 19 janvier 2007

De la sécurité des sessions PHP

Dans la majorité des espaces requierant une authentification sur un site web, le soin du suivi de l'utilisateur est laissé aux sessions, ces petits cookies qui viennent se placer chez le client afin de permettre à l'application web de le reconnaitre lors du passage à la page suivante.

Ce modèle de sécurité a du être imaginé à cause de la nature "connexionless" du protocole HTTP, c'est-à-dire la fermeture de la connexion TCP au serveur entre 2 chargements de page consécutifs (contrairement aux modèles de connexions "continues").

Malheureusement différentes techniques pour voler ces informations de sessions existent, elles se nomment credential token stealing, et sont souvent réalisables grâce à des failles de type XSS.

Cet article va expliquer quel est le point faible des sessions, ainsi que présenter une solution pour en améliorer la sécurité. Un exemple d'implémentation sera une fois de plus donné en PHP.

Problèmes des sessions

Le problème lié aux sessions est que l'identité de l'utilisateur, une fois identifiée, repose entièrement sur ce cookie. Si une personne malveillante parvient à obtenir la valeur du cookie, elle pourra alors se faire passer pour la personne légitime aux yeux de l'application.

Meilleure emprunte (fingerprint)

Une première amélioration est d'associer la valeur du cookie à d'autres éléments qu'une personne malveillante ne peut pas modifier : l'ip de connexion, la signature du navigateur, etc...
Tous ces éléments combinés ensemble donnent ce qu'on appelle l'emprunte de la session, et tous ces éléments sont nécessaires pour pouvoir usurper une identité. La principale difficulté est l'adresse ip de connexion, mais si la personne malveillante est sur le même sous-réseau que la personne légitime, l'adresse ip n'est plus un problème. Autre désavantage d'un fingerprinting étendu, si la personne légitime est sur une connexion à adresse ip dynamique, elle devra se réauthentifier à chaque changement d'adresse ip.

ID de session temporaire

Une autre amélioration est la regénération dynamique de la valeur du cookie. A chaque nouvelle connexion, on test si l'utilisateur est légitime, et on génère une nouvelle valeur qu'on lui envoie.
Si une personne malveillante arrive à voler un cookie, sa valeur ne sera que temporaire et dès le prochain chargement de page, la valeur volée devient obsolète.
Mais cela est aussi vrai à l'inverse, si la personne malveillante arrive à usurper l'identité avant que la personne légitime ne redemande une page, c'est la personne légitime qui sera déconnectée du site.

Implémentation en PHP

Une combinaison des 2 méthodes améliorera la sécurité des sessions, sans pour autant la rendre infaillible.

Voici une petite implémentation en PHP :

<?php
/*
* Inspirated from SecureSession class
* initially written by Vagharshak Tozalakyan <vagh@armdex.com>
*/
class SecureSession {

private $_check_browser;
private $_check_ip_blocks = 0;
private $_padding = '*ftt56+g zwc%&gh7/3-lf%254*6c_qm';
private $_regenerate_id = true;
private $_session_var_name = __CLASS__;

public function _construct($check_browser = true,
$check_ip_block = 0, $regenerate_id = true)
{
$this->_check_browser = $check_browser;
$this->_check_ip_block = $check_ip_block;
$this->_regenerate_id = $regenerate_id;

$_SESSION[$this->_session_var_name] = $this->_fingerprint();
$this->_regenerateId();
}

public function isValid()
{
$this->_regenerateId();
return (isset($_SESSION[$this->_session_var_name])
&& $_SESSION[$this->_session_var_name] == $this->_fingerprint());
}

private function _fingerprint()
{
$fingerprint = "";
if ($this->_check_browser) {
$fingerprint .= $_SERVER['HTTP_USER_AGENT'];
}
if ($this->_check_ip_blocks) {
$num_blocks = min(abs(intval($this->check_ip_blocks)), 4);
$blocks = explode('.', $_SERVER['REMOTE_ADDR']);
for ($i=0; $i<$num_blocks; $i++) {
$fingerprint .= $blocks[$i] . '.';
}
}
return sha1($fingerprint . $this->_padding);
}

private function _regenerateId()
{
if ($this->_regenerate_id && function_exists('session_regenerate_id')) {
session_regenerate_id(true);
}
}
}

?>

jeudi, 18 janvier 2007

A quoi juge-t-on qu'on est trop "geek" ?

Voilà que je me surprends à ajouter subtilement des ; à la fin des lignes d'une lettre de demande de congé pour l'armée...


Cette fois mes craintes se justifient : je suis vraiment un geek.

mercredi, 17 janvier 2007

Une authentification sur les serveurs smtp des providers

Non content de perdre la guerre du spam, les providers contre-attaques.

Relayé par Rags, voici le mail explicatif de Green :

Chers clients de green.ch

Dans le cadre d'un projet commun, les 4 grands fournisseurs de service internet en
Suisse (Bluewin, Cablecom, green.ch et Sunrise) mettent en place des mesures pour
combattre l'affluence massive des spams. La 1.ère étape est l'imposition de
l'authentification du serveur SMTP (Simple Mail Transfert Protocole). Cela signifie
que votre programme eMail, pour la récéption et l'envoi des emails, doit toujours
s'authentifier au niveau du serveur mail avec un nom d'utilisateur et mot de passe.

Il est possible que cela soit déjà le cas à votre niveau. Pour être sûr, nous vous
invitons à procéder à une vérification.

Le guide pour le paramétrage exacte ainsi que la configuration de votre compte eMail
se trouve ici: http://dtg.green.ch nous vous invitons à suivre la démarche pas à
pas.

Si vous utilisez exclusivement le Webmail pour vos eMails, vous ne devez rien
entreprendre.

Il est préférable d'effectuer le contrôle tout de suite afin de vous assurer que vos
eMails seront aussi envoyés à l'avenir.

Nous vous remercions de votre coopération.

Avec nos meilleures salutations

Votre équipe de support de green.ch


Les clients des providers vont donc immédiatement devoir modifier les paramètres de leur compte mail sortant afin d'y ajouter une authentification.

Cette authentification a deux effets :
  • premièrement elle est ABSOLUMENT INUTILE contre l'envoi de spam, puisque les malwares qui envoient du spam passent très majoritairement par des open-proxies, ou se connectent directement sur le smtp du MX du domaine.
  • deuxièmement elle force à avoir une adresse email @<super_provider_de_luxe>, ce qui rend les clients dépendant d'eux, car il est pénible de changer une adresse email déjà diffusée à tous ses amis/contacts. Elle empêche de ce fait le confort d'utilisation que nous fourni des adresses email comme Gmail (à noter que le webmail n'est pas touché par cette restriction).

A mon humble avis, cette solution a dû être trouvée par les économistes du top management et ne sert qu'à se donner un semblant de paraitre d'essayer de combattre le spam, tout en fidélisant de force leur clients.

De ce point de vue, chapeau, il n'aurait jamais été si facile de faire passer la pilule sans cet argument de combattre le spam. D'un point de vu efficacité réelle, autant dire que c'est même pas un pet de constipé dans l'eau, c'est de la poudre aux yeux sans poudre. J'espère simplement que vous, chers providers, avez pensé à renforcer vos équipes de
hotline
, et que vous les avez former pour répondre à la question : "Je reçois toujours autant de spam, que faire ?".

Je serais tellement content de pouvoir expliquer mon poing point de vue à un décideur d'une de ces entreprises...