Sécurité par empreintes digitales sur une machine tactile : il n’y aurait pas comme un os ?

En entendant que le prochain iPhone pourrait avoir un lecteur d’empreintes digitales, je me suis demandé quel sens cela pouvait avoir sur une machine tactile. Je me suis personnellement amusé à contourner ce genre de protection sur les premiers lecteurs d’empreintes digitales. Il ne suffisait alors que d’une empreinte sur un bout de scotch posé au bout d’une gomme blanche pour que ça passe dans un cas sur deux.

C’était le cas sur ce genre de dispositifs, où on mettait le doigt à plat :

usingfinger

Pour contrer le problème, la plupart des lecteurs plus récents ont commencé à lire la conductivité du contact pour valider la présence d’un doigt humain : la salinité et l’humidité combinée font que la peau est électriquement conductive, ce qui est d’ailleurs utilisé dans la plupart des écrans tactiles, qui ne peuvent pas fonctionner si vous utilisez des gants.

Comme d’habitude, les hackers ont trouvé la parade, en utilisant un support en gélatine, comme vous ne trouverez expliqué dans cet excellent article : http://stdot.com/pub/ffs/hack3.html (crédit pour la photo ci-dessus, d’ailleurs).

Depuis, les lecteurs sont passés pour la plupart à des systèmes comme celui-ci :

Dans ce cas, le doigt doit défiler sur le système, et ceci rend plus complexe l’attaque par scotch ou gélatine. Surtout, les plus professionnels de ces lecteurs embarquent également un capteur infra-rouge qui permet de vérifier la température émise par le doigt, et donc de sécuriser encore plus la reconnaissance.

Du coup, les pirates ont visiblement abandonné les attaques physiques (ou peut-être simplement qu’ils ne communiquent plus dessus), mais cela n’est pas nécessairement une bonne nouvelle, car cela peut tout simplement vouloir dire que c’est plus simple de s’attaquer au software (voir http://www.brightsideofnews.com/news/2012/9/12/hacking-your-fingerprint-elcomsoft-finds-security-holes-in-biometric-readers.aspx)

En lisant http://www.inquisitr.com/490728/authentec-iphone-6-fingerprint-detection-and-apple-release-date-rumors/, je suis tombé sur un montage qui m’a fait me poser la question de l’intérêt d’un lecteur d’empreinte sur un dispositif tactile.

AuthenTec iPhone 6 Fingerprint Detection And Apple Release Date Rumors

Le site imagine un lecteur d’empreintes intégré à l’écran, ce qui pourrait laisser imaginer que la reconnaissance se fait de manière uniquement visuelle, et donc sans les sécurités dont nous parlions juste avant.

Or, les dispositifs à reconnaissance d’empreintes se basent en partie sur le fait qu’il n’est pas immédiat de relever une empreinte. Mais sur un dispositif tactile, l’écran en est en général recouvert après quelques minutes d’utilisation à peine !

Un autre article (http://www.ibtimes.com/apple-iphone-6-rumors-features-may-include-fingerprint-sensor-home-button-added-security-video) m’a rassuré sur le fait que le précédent n’était qu’une vue d’artiste, et qu’il serait plutôt question que le lecteur d’empreintes soit intégré au bouton “home”. Mais du coup, cela parait difficilement compatible avec un système à défilement, et on reviendrait donc sur les capteurs statiques d’ancienne génération, plus faciles à tromper… et avec une magnifique sources d’empreintes juste au-dessus, sur l’écran Sourire.

Je me doute bien qu’Apple aura bien réfléchi à tout ça, mais je serais curieux de savoir l’option qu’ils ont choisi, et quelle sera la sensibilité finale aux attaques “gomme” ou “gélatine”…

Posted in Sécurité | 2 Comments

OData pour les nuls… en 10 minutes chrono

Suite à la demande d’un collègue (qui se reconnaitra), voici une petite explication rapide et technique de ce qu’est OData.

SQL, mais pour le web

Pour faire on ne peut plus court, OData est un protocole qui est l’équivalent pour le web de la norme SQL pour les bases de données. De la même manière que SQL est un langage qui permet de requêter de la donnée filtrée, triée, projetée, depuis un SGBD, OData est une syntaxe qui permet les mêmes opérations, mais sur des sources de données rendus disponibles par le biais du protocole HTTP.

Dans le cas d’une base de données, on utilise un client qui fournit la syntaxe au serveur, qui exécute la requête et renvoie les données. Dans le cas d’un service OData, le fonctionnement est absolument identique : le client (n’importe quel client web, comme un navigateur par exemple) envoie une requête suivant la syntaxe OData, et reçoit le résultat.

Ni standard, ni norme, mais un protocole

OData est un protocole, qui n’est pas encore normé. Microsoft est à l’origine de ce protocole fortement ressemblant à GData (que Google n’a jamais réussi à faire prendre par manque de serveurs et de clients l’utilisant), et l’a proposé à normalisation à l’Oasis si mes infos sont correctes.

En attendant, il se trouve un peu comme un standard de fait pour le requêtage et l’exposition de données sur les protocoles web. Bien sûr, les produits de Microsoft se basent dessus (les collections de SharePoint, les sources de PowerPivot, un plugin pour utiliser du OData dans Excel, des points d’exposition sur SQL Server, etc.) mais ce qui est intéressant est que d’autres s’y mettent aussi  (IBM, SAP, e-Bay, etc.)

OData ≠ Open Data… mais il y a quand même un lien

OData est un protocole technique, tandis qu’Open Data est un mouvement politique prônant l’ouverture des données publiques sous une forme électronique, de façon à favoriser son appropriation par les citoyens, sa réutilisabilité dans l’économie, ainsi que la transparence générale de l’Etat et des administrations par rapport aux administrés.

Evidemment, le nommage n’est pas anodin, et la ressemblance est forte à dessein. Microsoft livre un framework OGDI en Open Source qui permet aux collectivités locales de mettre en place des services Open Data sur internet, typiquement sur Azure, le Cloud de Microsoft. Le Conseil Général de Saône et Loire a été le précurseur sur cette technologie. Et bien évidemment, le protocole d’exposition des données préférentiel d’OGDI est OData. Le besoin d’interopérabilité au niveau des données est réel pour que le mouvement Open Data puisse atteindre la taille critique et montrer ses bienfaits. OData veut se poser en protocole de référence pour cette interopérabilité des sources.

Un exemple

Une source OData bien connue est le catalogue d’informations sur les films NetFlix. Cette source est disponible sur l’URL suivante :

http://odata.netflix.com/v2/Catalog/

Si vous allez sur cette URL, vous obtiendrez l’affichage suivant :

image

Un service OData contient plusieurs collections de données qui ont un sens à être groupées, traditionnellement parce qu’elles ont des liens. Par exemple, dans notre cas, il y a un lien entre la collection des titres de films et la collection des genres associés. Du coup, on peut commencer par regarder la liste des films en rajoutant simplement Titles/ dans l’URL, ce qui donne l’affichage suivant :

image

Internet Explorer affiche de manière particulière le contenu car il s’agit d’un flux AtomPub, qu’il reconnait, mais si on regarde le source, voici ce qu’on trouve :

image

Plus de détails sur la sortie

Assez indigeste si on le regarde tel quel, mais si on s’attache au squelette, et qu’on met en valeur le plus important, c’est assez simple comme flux de données :

<?xml version=”1.0″ encoding=”utf-8″ standalone=”yes”?>
<feed xmlns=”
http://www.w3.org/2005/Atom”>
  <title>Titles</title>
  <id>
http://odata.netflix.com/v2/Catalog/Titles/</id>
  <updated>2013-03-12T22:26:53Z</updated>
  <entry>
    <id>
http://odata.netflix.com/v2/Catalog/Titles(’13aly’)</id>
    <title>Red Hot Chili Peppers: Funky Monks</title>
    <summary>Lead singer Anthony Kiedis, bassist Flea, (…)</summary>
    <link rel=”
http://schemas.microsoft.com/ado/2007/08/dataservices/related/Genres” type=”application/atom+xml;type=feed” title=”Genres” href=”Titles(’13aly’)/Genres” />
    <m:properties>
      <d:AverageRating m:type=”Edm.Double”>3.3</d:AverageRating>
      <d:ReleaseYear m:type=”Edm.Int32″>1991</d:ReleaseYear>
      <d:TinyUrl>
http://movi.es/13aly</d:TinyUrl>
    </m:properties>
  </entry>
  <entry>
      (…)
  </entry>

Le format AtomPub est composé d’un élément racine feed, qui contient des éléments entry correspondant chacun à une ligne de données. Dans ces éléments entry, on trouve des valeurs standards comme l’id, le title, le summary, etc., mais aussi un élément m:properties qui contient des colonnes complémentaires.

L’élément link correspond à des relations possibles avec d’autres parties du flux OData. En l’occurrence, on a laissé dans l’exemple raccourci ci-dessus celui correspondant à la récupération du genre de la première entrée de donnée.

Si on utilise l’URL donnée comme identifiant de l’entrée exemple, on obtient ceci :

image

En pratique, il n’y a pas vraiment d’erreur, c’est juste qu’IE ne sait pas afficher une entrée AtomPub seule. C’est à peu près pareil dans Firefox, mais si on regarde ce qui est effectivement envoyé, on a bien le contenu de l’entrée unique qui nous intéresse :

image

Que peut-on faire de plus avec l’URL ?

Si on s’arrêtait là, ça serait déjà pas mal : on peut récupérer de la donnée à un format à peu près connu et standard sur internet. Mais pour mériter d’être comparé à SQL, il faut bien sûr plus. Commençons justement par la relation dont on parlait juste avant : retrouver les genres associés à un titre, typiquement celui qu’on avait affiché juste au dessus. Pour cela, nous suivons le lien proposé, à savoir http://odata.netflix.com/v2/Catalog/Titles(’13aly’)/Genres

Mauvaise pioche, ils ne sont pas renseignés, et on a donc une liste vide :

image

Par contre, si on regarde la liste des langues associées, il y a de la donnée :

image

Un petit détour par REST

Tant qu’on est là, autant parler de REST, pour expliquer rapidement pourquoi il y a un lien fort entre OData et REST, justement. Le principe de REST est de revenir aux fondamentaux du web, en utilisant les verbes HTTP pour accomplir des opérations de lecture ou de modification sur des ressources représentées par leur URL.

Dans notre cas, on a bien une représentation des ressources par l’URL, puisque les entrées ont un identifiant sous forme d’URL justement. De plus, la composition progressive des URL permet de naviguer dans la source de données, ce qui est typique d’un service REST : il doit être à découverte progressive, et utiliser les conventions les plus simples possibles pour naviguer. Dans notre cas, cela consistait à utiliser l’identifiant entre parenthèses, puis à rajouter le nom de la relation derrière pour arriver à la liste des langages pour un film donné.

Filtres, tri, etc.

Qu’est-ce qui nous manque de plus pour être l’équivalent de SQL en HTTP ? Quelques opérations comme le tri, la projection, les filtres… Pour ce qui est du tri, il y a l’opérateur $orderby. Il s’utilise comme ceci :

http://odata.netflix.com/v2/Catalog/Titles?$orderby=ReleaseYear

image

Il peut bien sûr prendre plusieurs colonnes, dont on ira chercher le nom dans les propriétés des entrées. De la même manière, il y a toute une grammaire pour réaliser des filtres, dont voici un exemple :

http://odata.netflix.com/v2/Catalog/Titles?$filter=startswith(Name,’A Tribute’)

image

Bien évidemment, il y a plein d’autres fonctions utilisables pour les filtres, qu’on peut trouver dans la documentation OData : substring, length, tolower, toupper, round, floor, ceiling, ainsi bien sûr que de nombreux opérateurs de comparaison et d’autres méthodes.

Et le contrat là-dedans ?

Pour trouver les colonnes sur lesquelles on peut travailler, on peut également utiliser le mot clé $metadata, qui va nous renvoyer une description du flux :

image

Evidemment, ceci contrevient aux conventions de REST, où on a normalement une approche exploratoire du service, en fournissant une structure au fur et à mesure qu’on l’utilise. Les métadonnées permettent d’explorer un service avant de l’appeler, ce qui n’est pas très REST, mais parfois bien pratique. Attention par contre à ne pas développer trop de code généré par rapport à ce schéma, car il y aurait alors couplage. Le mieux est de garder une certaine dynamicité.

OData pour qui ? pour quoi ?

En conclusion de cette très rapide introduction à OData, parlons un peu des usages…

OData pour les développeurs

Pour les développeurs, OData peut être vu comme un langage d’interrogation de sources de données distantes. De la même manière que SQL permet de requêter des données dans un SGBD-R, OData permet de requêter des données sur un point d’entrée HTTP, dans une approche REST, et avec un format de retour AtomPub dans la plupart des cas, mais qui peut également être JSON. OData peut être vu comme un protocole du même plan que SOAP.

OData pour les urbanistes

Pour un urbaniste, OData peut être un bon moyen de mettre en oeuvre du Master Data Management, et de mettre ainsi à disposition de tout son SI, ainsi que de l’extérieur, des sources de données uniques, qui serviront de référentiels pour tous les services.

OData pour les administrateurs système

Pour les administrateurs système, un service OData reste simple à mettre en place, car il s’agit dans la majorité des cas d’une simple application web, avec un point d’entrée HTTP sur le port 80, éventuellement du SSL sur le port 443, et dans quelques cas une authentification, même si OData est souvent utilisée pour de la donnée publique.

OData pour les analystes de données

Pour les analystes de données, OData est un nouveau type de source, au même titre que CSV, Access, SQL Server, Oracle, etc. Pour être plus précis, OData se situerait plutôt au niveau de ODBC, car il s’agit d’un protocole qui peut être le même quel que soit le backend. Du point de vue de la consommation, OData peut être lu dans Excel par un plugin dédié, dans PowerPivot, et de plus en plus dans des clients hors-Microsoft.

OData pour les citoyens

Enfin, et nous finissons par le plus important, le citoyen… OData est particulièrement indiqué pour résoudre le problème d’interopérabilité qui va de plus en plus se poser sur les portails Open Data. Ces sites de mise à disposition de la donnée publique commence à se multiplier, ce qui est une très bonne chose, mais ils restent pour l’instant beaucoup basés sur des données dans des formats peu standardisés, voire carrément propriétaires (beaucoup d’Excel sur http://data.gouv.fr, par exemple), et qui ne rendent pas simples l’exploitation des données.

OData peut répondre à ce besoin en normalisant le protocole d’interrogation et de partage des données, y compris pour la réagrégation entre les différents niveaux d’exposition. Les entités qui exposent ces données publiques en sont souvent les principales consommatrices, et tirent directement avantage de la normalisation. Leur communication avec les strates plus hautes ou plus basses, qui n’utilisent pas nécessairement les mêmes vocabulaires et connaissances, en tireront encore plus de bénéfice.

Posted in Uncategorized | Tagged | 13 Comments

Utiliser des AppDomain pour pouvoir décharger des assemblages

Si vous avez déjà utilisé le chargement dynamique d’assemblages .NET, vous savez certainement qu’une fois une librairie chargée dans le contexte mémoire de la CLR, il n’y a pas de méthode pour la décharger. Si vous jetez un œil à System.Reflection.Assembly, vous constaterez la présence des méthodes Load, LoadFile et LoadFrom, mais aucun Unload ou quoi que ce soit d’approchant.

C’est prévu comme ça, et vous aurez certainement lu que le seul moyen de contourner cette situation est de créer un AppDomain dédié dans lequel vous chargerez la librairie concerné. Le fait de décharger l’AppDomain supprime complètement son contexte, et vous aurez ainsi par ricochet déchargé complètement la librairie de la mémoire.

Le souci est que ceci ne se fait pas en appelant la méthode Load sur l’instance d’AppDomain, contrairement à ce qui parait intuitif.

Pour illustrer ceci, considérez le test unitaire ci-dessous. Comme le second attribut l’indique, il sort en exception UnauthorizedAccessException.

[TestMethod]
[ExpectedException(typeof(UnauthorizedAccessException))]
public void WrongWay()
{
    // On copie un fichier dans le répertoire d'exécution,
    // et on crée un domaine d'application
    File.Copy(
        @"..\..\..\SampleClassLibrary\bin\Debug\SampleClassLibrary.dll", 
        "SampleClassLibrary.dll",
        true);
    AppDomain domain = AppDomain.CreateDomain(
        "Domaine", 
        null, 
        AppDomain.CurrentDomain.SetupInformation);

    // On utilise la méthode Load de l'AppDomain pour charger un assemblage .NET,
    // en en profitant au passage pour valider que ça s'est bien passé
    Assembly assy = domain.Load("SampleClassLibrary");
    Assert.AreEqual("SampleClass", assy.GetTypes()[0].Name);

    // Même en déchargeant l'AppDomain, on ne peut pas supprimer la librairie,
    // et on reçoit une UnauthorizedAccessException !
    AppDomain.Unload(domain);
    File.Delete("SampleClassLibrary.dll");
}

Ce qui se passe est que la librairie est en fait chargée dans le contexte courant de l’application, et non dans l’AppDomain que nous avons créé. Le fait qu’on puisse manipuler les types directement depuis notre contexte principal aurait dû nous mettre la puce à l’oreille, mais il faut avouer que la présence d’une méthode Load sur l’instance d’AppDomain porte à confusion sur la tâche réalisée…

Evidemment, une fois la librairie chargée sur l’AppDomain principal, impossible de la décharger, et donc de libérer le lock sur le fichier, qu’on ne peut donc pas supprimer.

Le moyen de charger la librairie séparément dans le nouvel AppDomain est illustré dans le test unitaire suivant, qui passe correctement (si vous le lancez, n’oubliez pas de ne pas le faire dans le même tir de tests que le premier, sinon, en fonction de l’ordre d’exécution, vous aurez une erreur dûe au fait que le premier n’a pas libéré la librairie) :

[TestMethod]
public void RightWay()
{
    // Pour commencer, on fait exactement pareil que dans l'autre test
    File.Copy(
        @"..\..\..\SampleClassLibrary\bin\Debug\SampleClassLibrary.dll",
        "SampleClassLibrary.dll",
        true);
    AppDomain domain = AppDomain.CreateDomain(
        "Domaine", 
        null, 
        AppDomain.CurrentDomain.SetupInformation);

    // Mais cette fois-ci, on va utiliser le DoCallBack, et c'est dans le délégué
    // appelé que nous allons réaliser nos opérations de chargement et de test
    domain.DoCallBack(new CrossAppDomainDelegate(delegate() {
        Assembly assy = Assembly.Load("SampleClassLibrary");
        Assert.AreEqual("SampleClass", assy.GetTypes()[0].Name);
    }));

    // Cette fois-ci, lorsqu'on décharge l'AppDomain, on peut supprimer la librairie
    AppDomain.Unload(domain);
    File.Delete("SampleClassLibrary.dll");
}

Comme vous pouvez le constater, le code est similaire, aux seules différences près que :

  • on n’utilise plus AppDomain.Load, mais Assemby.Load,
  • cet appel est réalisé depuis un délégué et non plus dans le corps de la fonction,
  • le délégué est associé à la méthode DoCallBack de l’AppDomain.

Dans ce cas, le déchargement de l’AppDomain suffit bien à pouvoir supprimer la librairie qui avait été chargée dynamiquement, ce qui prouve qu’elle avait bien été chargée dans le contexte de cet AppDomain et seulement dans ce contexte.

Bien que d’une indigence rare sur tous les sujets ayant trait à la réflexion, la documentation MSDN nous donne le fin mot de l’histoire :

L’assembly est chargé dans les deux domaines car Assembly ne dérive pas de MarshalByRefObject et, par conséquent, la valeur de retour de la méthode Load ne peut pas être marshalée.

En fait, la seule bonne ressource sur ces questions est le blog de Suzanne Cook.

Posted in .NET, C# | Tagged | Leave a comment

Tech Days 2013 : le résumé

Cette semaine, c’était les septième Tech Days Microsoft, à Paris. Encore une fois, plein de belles choses, de bonnes idées à prendre, de sessions expertes. Bref, un plaisir de développeur ! Comme depuis quelques années maintenant, voici les compte-rendu des sessions auxquelles j’ai assisté :

Les plénières

Session plénière du mardi 12 février

Session plénière du mercredi 13 février

Session plénière du jeudi 14 février

La session que j’ai présentée avec Eric Mittelette et Olivier Philippot

Eco conception logicielle : comment réduire par deux la consommation d’énergie d’une application ou d’un site web

Les sessions techniques

Les dernières avancées HTML 5 & CSS 3 en action !

L’état de la menace avancée (dite APT)

Kinect en entreprise

Identity as a Service (IDaaS), un service prêt à l’usage avec Windows Azure AD

Windows 8 : comment développer des applications efficaces et performantes pour rendre l’expérience utilisateur unique ?

10 tips pour améliorer les performances de vos applications Windows 8

Les sessions décideurs

Windows 8 et la sécurité

10 projets Azure en 1 h

Lutter contre les attaques ciblées avec quelques mesures simples et efficaces

Open Data, la qualité de la donnée avant la quantité

Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8

Et pour finir

Je vous recommande également d’aller jeter un œil sur le site de Fabrice Romelard, qui a fait également plein de compte-rendu.

Un coup de cœur pour mon éditeur favori, l’ENI, et une découverte terrifiante ! Sourire

Posted in Retours | Tagged | Leave a comment

Tech Days 2013 – Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8

Allez, dernière session de ces trois jours de Tech Days 2013, et surtout dernier compte-rendu à taper pour mes doigts qui commencent à en avoir marre…

LOB pour Line Of Business.

Audrey Petit et Patrice Lamarche présentent (http://blogs.msdn.com/b/audrey et http://www.patricelamarche.net)

Pour ce qui est du déploiement, on peut rassurer les IT : on peut bien sur utiliser le store ou déployer de manière indépendante :

  • sur le store : déploiement automatique, forte exposition, support mécanisme d’achat download ou in-app, et support des versions d’essai mais partage de revenus avec MS et appli visible par tous, donc inconvénient si obfuscation insuffisante. Il est à noter qu’à partir de 25 000 dollars, Microsoft ne prend plus que 20 pourcents au lieu de 30. La version d’essai est importante pour déclencher l’utilisation.
  • On peut aussi déployer en side loading. Il faut signer le package et passer allowalltrustedapps dans la base de registre à 1 (défaut dans un AD). Ensuite, déploiement DISM ou bien Powershell add-appxpackage monapp.appx. Windows Intune pour déployer.

WinRT comme API de base, avec HTML+JS ou XAML+.NET, mais toujours possible de faire des bonnes vieilles applications Desktop Apps sur Win32. Penser à utiliser les portable class libraries pour partager le code métier entre Win8 et WP8.

Approches possibles pour passer Modern UI : applications complètes ou compagnon. Mieux vaut cibler le scope fonctionnel, comme par exemple l’état des lieux et la saisie des AG dans l’immobilier. Cibler les fonctions les plus utilisées et les plus pertinents en usage nomade ou touch. Le client ne doit faire que des appels de service, donc http, sockets, atompub, data services et rien d’autre.

Les intervenants conseillent une premiere étape sur le maquettage graphique, ensuite un prototype dans Visual Studio et finalement production. Personnellement, je trouve ça discutable, surtout par rapport à l’approche OOC jetable prônée par Eric Brechner. La première étape peut être réalisée avec les storyboard shapes de PowerPoint. C’est ensuite seulement qu’on le passe au designer, qui peut comme ça partir d’une base. Pas sûr toutefois que ce soit une bonne idée de ne pas le mettre dans la boucle dès le début. Là encore, Brechner a une approche différente des intervenants, et j’ai tendance à lui faire confiance.

Pin to start pour faire un raccourci sur une entité d’une appli dans le menu démarrer.

On voit ensuite des démos d’applications “métier”, même si elles sont tout de même très proches des applications grand public. D’une certaine manière, c’est dans la logique de rapprochement entre les deux, qu’on voit à l’oeuvre dans le BYOD, la gamification, etc. Les démos insistent d’ailleurs sur le fait qu’il vaut mieux faire plusieurs petites applications qui s’appellent plutôt que d’une seule énorme, grâce aux contrats.

Application couplée Windows / Windows Phone : en démo, pas réellement de lien entre les deux, à part qu’elles utilisent les mêmes services.

La session finit avec de la publicité pour le Business Innovation Center de Microsoft. Pareil pour Accelerator, qui peut fournir gratuitement des services de design ou de prévalidation d’une application avant soumission au store. Ce genre de service peut être très intéressant, et surtout c’est gratuit, alors ça serait bête de se priver.

Posted in Retours | Tagged | Leave a comment

Tech Days 2013 – Open Data, la qualité de la donnée avant la quantité

Bernard Ourghanlian est présent aux côtés de plusieurs personnes venues des collectivités locales pour témoigner : un signe fort sur la sécurité et l’interop. Il parlera d’ailleurs à plusieurs reprises de l’importance pour les applications serveurs Open Data de mettre en place des points d’accès suivant le protocole OData, pour atteindre l’interop et la réutilisabilité effective.

Témoignages de la Ville de Bordeaux, du Conseil Général de la Seine Maritime et du Conseil Général de Saône et Loire. Je n’ai pas noté les noms qui étaient nombreux, mais nous les aurons lors de la sortie des webcasts.

Transparence et économie comme premiers facteurs de décision, mais désormais un nouvel enjeu sur la modernisation de l’État par la qualité des données. La mise en place d’un projet Open Data reste avant tout un projet politique. Bordeaux précise qu’ils voyaient dès le début du projet son utilité en termes d’usage interne, ce qui est une constante reconnue sur les projets Open Data : les collectivités y vont pour des raisons politiques, et elles continuent parce qu’elles y voient une opportunité de réutilisation simple et intéressante par elles-mêmes.

Le sujet de la mutualisation entre les CG, CR, et grandes villes est abordée, en ajoutant que cela n’est possible que pour des données à qualité validée (précision de la Seine Maritime). Par contre, personne ne parle de mutualisation au niveau de l’Etat ou de l’Europe.

B. Ourghanlian parle du protocole OData, puis jette un (petit) pavé dans la mare en évoquant le risque de “retombé de soufflé”, avec une utilisation occasionnelle et allant diminuant. Aux USA, par exemple, le mouvement initié par l’arrivée d’Obama au pouvoir marque actuellement le pas. La réponse porte sur la qualité et la pertinence de la donnée, pour apporter de la valeur aux utilisateurs finaux. Il faut donc des applis pour la consommer, et donc normaliser la façon de publier l’information. Un accès temps réel est également nécessaire pour avoir une vraie valeur (ex : transports à l’heure ou pas).

Pour améliorer les usages, Bordeaux part sur de la publication d’information sur la structure de la donnée, en considérant qu’il faut être plus ouvert sur le global, plutôt que d’exposer juste des sources isolées, de façon que les utilisateurs aient une meilleure appréhension globale de ce qu’ils peuvent faire avec la donnée.

Tous les intervenants soulignent qu’ils sont encore au début du mouvement, et qu’ils apprennent au fur et à mesure de la mise en ligne des données.

La faible implication des citoyens finaux est expliquée par plusieurs raisons :

  • La mise à disposition de l’outil de visualisation dans le portail étant censée la favoriser, mais il faut d’abord attirer le citoyen sur le portail.
  • Ce genre d’outil serait presque plus intéressant pour les élus. Malheureusement, ceux-ci sont très peu souvent vus dans le mouvement Open Data : il faut leur donner les outils, et leur faire voir l’intérêt qu’ils peuvent en tirer en terme de communication à leurs administrés.
  • Il est très rare que l’enrichissement des données par le citoyen soit envisagé. Il est en objectif par CG71.

Par contre, l’Open Data reste un succès du point de vue de ceux qui l’ont mis en oeuvre :

  • Une nouvelle voie de valorisation de l’action publique.
  • Valorisation des métiers et services également.
  • Open Data perçu comme une mini BI, même mieux utilisée en interne, car plus moderne et légère.

L’Open Data a également permis le mouvement de mutualisation et agrégation des bibliothèques, qui auparavant n’y arrivaient pas (CG71), par manque d’outillage ou de vision synthétique. A propos d’agrégation, Bernard Ourghanlian rappelle les trois niveaux :

  • publication PDF, sans réutilisation
  • API d’accès, mais risque de couplage type tour de Babel
  • approche protocolaire (comme permet de le faire OData, et c’est la deuxième fois qu’il insiste sur ce point, qui il est vrai est fondamental)

Coût du projet Open Data, quelques chiffres :

  • 8 mois à Bordeaux.
  • A peu près équivalent pour les autres.
  • 2.5 ETP pour le CG71, en comptant la communication, qui est importante.
  • 100 K€ au début, 50 K€ par an depuis.

Les difficultés :

  • Accepter la non maitrise de la réutilisation.
  • Nécessité de changer son fusil d’épaule car on apprend à faire en même temps. Par exemple, arbres en ortho photo, puis GPS pour améliorer la précision.
  • Problème avec les données utilisées commercialement : nécessité de débat citoyen

Il faut parler d’égal à égal avec l’État, et Etalab a visiblement la volonté de mieux collaborer. C’est en tout cas l’orientation perçue par les collectivités du nouveau SGMAP.

Remarques personnelles

Ayant une petite connaissance du sujet, je me permets de compléter le compte-rendu de la session par quelques remarques qui me sont passées par la tête durant cette heure.

  1. Finalement, on n’a pas tellement parlé “qualité plus que quantité” dans cette session. A un moment, un intervenant a cité en exemple les sites français par rapport à leurs homologues anglo-saxons, mais mon impression est inverse, en tout cas pour ce qui concerne le niveau Etat. Il est vrai que les sites Open Data des départements et régions sont de bien meilleure qualité qu’Etalab (ce qui n’est pas très dur), mais il ne faut pas oublier que data.gov.uk bénéficie d’une sémantisation quasi-complète. Le CG71 va faire de la sémantique sur les bibliothèques, mais c’est le seul exemple dont j’ai pris connaissance, justement lors de cette session. A part ça, si on veut du RDF, c’est chez l’INSEE que ça se trouve…
  2. Une réaction a laissé entrevoir une sorte de dépit de ne pas avoir une appropriation aussi forte chez les citoyens que chez les développeurs. Je voulais juste souligner que les développeurs qui participent à des concours d’applications sur les flux Open Data ont en général la citoyenneté chevillée au corps. Vu l’écart entre le travail nécessaire et les prix octroyés ou les gains financiers d’une application, on ne le fait clairement pas pour l’argent.
  3. On a parlé un peu de coût et de mutualisation, mais ce qu’on voit reste de nombreux projets que chacun réalise dans son coin, sans aucune centralisation des développements. Pour un citoyen, il est dur de comprendre pourquoi Etalab ne centralise pas les moyens techniques, et pour un développeur pourquoi une forge n’a pas été mise en place pour diffuser les outils. Il est vrai toutefois que c’est le cas pour le framework OGDI de Microsoft.
  4. Il a très peu été question des risques, sur cette session. Seul Bernard Ourghanlian a rapidement parlé des effets liés à la vie privée. Ils sont pourtant potentiellement énormes. Quand on voit par exemple que l’ouverture des données Infogreffes de création d’entreprise a donné naissance à une grande vague d’arnaques, il est nécessaire de se poser la question de manière technique, mais aussi politique : où doit-on positionner le curseur de la transparence ? Une donnée doit-elle être libérée s’il n’y a pas de demande exprimée pour ?

Bref, une session très intéressante. J’espère que nous aurons encore d’autres témoignages l’an prochain aux Tech Days, et surtout qu’il y aura du temps réservé pour les questions cette fois-ci !

Posted in Retours | Tagged , | Leave a comment

Tech Days 2013 – Lutter contre les attaques ciblées avec quelques mesures simples et efficaces

Très bonne session générale sur la sécurité : plus de la méthodologie que de la technique, mais des solutions pleines de bon sens, comme le titre le laissait penser.

L’ISO 27034 est une évolution depuis le SDL, méthodologie Microsoft de gestion de la sécurité.

Recommandation de forte isolation entre les différents modules du SI, pour éviter le mode oeuf, avec une sécurité périmetrique forte mais rien une fois cette barrière passée. Donc, créer des réseaux virtuels étanches, etc.

Autre recommandation, cette fois-ci sur les personnes en charge de la sécurité : séparation des rôles administrateurs et auditeurs, et rotation des rôles sur plusieurs personnes, de façon qu’un administrateur menacé ne puisse pas couvrir ses actes pendant des années.

Attention à ne pas avoir un administrateur local avec le même mot de passe sur toutes les machines, souvent créées d’après une image. Ca peut valoir le coup de désactiver carrément cet utilisateur. Attention aussi aux utilisateurs des services Windows avec trop de droits : il est possible de faire un dump du mot de passe de démarrage des services.

Il y a aussi l’attaque Pass The Hash, dont on a déjà parlé dans cette session, dans laquelle on utilise un dump du condensat obtenu si l’administrateur se logue sur une machine compromise. Windows Credential Editor permet de mettre en oeuvre ce genre d’attaque de manière très simple. Voir http://aka.ms/PtH pour plus de détails.

Se méfier de la propagation du malware dans les cas où l’anti malware ne voit pas ceux compilés sur mesure pour le PC compromis.

Approches court terme : protection – détection – confinement – réaction – récupération

Trois urgences, en cas d’infection :

  • MAJ de tous les logiciels, de manière rapide (30 j)
  • Moindre privilège, et moins d’administrateurs (dans l’idéal, deux seulement), formés à ne faire que de la vraie admin avec ce user, et à ne surtout pas l’utiliser pour les activités courantes. Pour réduire les problèmes liés aux admins (dans l’ordre de paranoïa Sourire) :
    • Utiliser des comptes de service gérés, sans mot de passe.
    • Scrambler ou désactiver l’admin local.
    • Administrateur du domaine jamais connecté à une machine autre que l’AD (peut être forcé par policy).
    • Forêt AD à part pour les admins, qui bossent ensuite en IPSec.
    • Bloquer les accès distants par l’admin local.
    • Bloquer les accès de machines utilisateur à machines utilisateurs par défaut (pour limiter la propagation).
  • Liste blanches d’applications, avec AppLocker

Et les actions supplémentaires :

  • Surveiller l’antivirus, en détectant les machines sur lesquelles il a été désactivé.
  • Bloquer les accès d’une machine au niveau réseau.
  • Sauvegarde distante, et hors ligne pour que personne, même un administrateur, ne puisse les détruire.
  • Security Compliance Manager.
  • Contrôler les disques amovibles.
  • Déployer des leurres pour détection.
  • Et certainement un des conseils les plus censés : avant de se ruer sur les dernières appliances de sécurité, utiliser déjà tous les outils à disposition, et ils sont extrêmement nombreux sous Windows, la grande majorité des entreprises n’utilisant que 10% des méthodes de sécurisation que Windows permet.

Méthodologie ADSAR publiée par Microsoft pour la gestion des attaques.

La session étant très riche, je vous encourage fortement à la regarder en entier lorsque les webcasts seront sortis, car il y a plein de choses que je n’ai pas eu le temps de noter.

Posted in Retours | Tagged | Leave a comment

Tech Days 2013 – Session plénière du jeudi 14 février

Comme pour chaque session présentée par Bernard Ourghanlian, on passe plus de temps à écouter l’expression claire d’une pensée structurée plutôt qu’à prendre des notes pendant les hésitations de langage. Bref, pas beaucoup de notes sur cette session, mais en contrepartie, un lien vers un site professionnel, qui fait bien mieux que moi !

Quelques petits trucs qui m’ont fait tilter toutefois :

La “naissance numérique” (c’est à dire la première apparition d’une personne sur internet) est en moyenne à trois mois avant la naissance physique pour un bébé occidental.

Très intéressant de voir le graphique expliquant l’augmentation de valeur en avançant dans l’ordre “Signal – donnée – information – connaissance”.

CaptainDash : tableaux de bord à destination du marketing, avec pour but de simplifier le Big Data. Toute la session était très orientée Big Data. Personnellement, je pense qu’on aura à la fin le même échec que sur la BI, mais bon… visiblement, dans certains cas bien précis, ça amène de bons résultats. Un peu comme la BI quand on prend soin de réfléchir au lieu de faire confiance aux outils.

C’est la toute la schyzophrénie de Big Data : “les outils puissants vont vous permettre de trouver une aiguille dans une botte de foin en moins de deux”, mais en même temps, “attention à mettre en place une bonne équipe de data-scientists pour avoir des résultats”. Bref, autant embaucher des statisticiens avec les outils qu’ils maîtrisent et qui n’auront pas besoin de 50 machines dans le Cloud pour établir que la corrélation entre les commentaires sur Twitter et les ventes d’un produit sont absolument nulles.

Exemple de machine learning sur recommandation films par les commentaires : bien, mais encore une fois, c’est l’UI qui était très bien faite, et le moteur de classification derrière peut très bien être réalisé par un développement ad hoc avec un bon ingénieur orienté data plutôt que de mettre en branle une armée de bécanes.

Criteo montrait son système de création de messages publicitaires à la volée en fonction de données accumulées sur les sites de commerce, réseaux sociaux, etc. Techniquement, c’est fort. Mais le problème est le même que sur des indicateurs. Quand un indicateur est contestable, que font la majorité des entreprises ? Elles rajoutent des indicateurs, ou les rendent encore plus composites, persuadées par des années de discours sur la BI que le manque de qualité vient du fait que le cube de 100 To n’est encore pas assez gros… Alors que le souci vient du fait qu’il est déjà trop composite, et donc pas assez aligné avec une réalité métier. Il faut au contraire avoir des indicateurs les plus simples possibles pour qu’ils soient incontestables, et permettent donc une vraie analyse.

La réaction de la personne de Criteo montre bien qu’ils sont partis dans une même approche “aveuglement par la technique” que la BI : il proposait à la fin de son discours de rajouter des critères supplémentaires pour cibler encore plus la publicité, “en fonction de la météo, par exemple”. Et pourquoi pas de l’orientation des manchots, l’an prochain ? Quand on voit les erreurs fondamentales qu’ils arrivent à réaliser avec leur mode actuel, ils feraient mieux de régler ce qui est déjà utilisé dans leur calcul. Exemple : depuis que les publicités ciblées ont trouvé qu’il y avait une forte corrélation entre moi et la performance en .NET, je passe mon temps à voir de la pub sur mon propre livre ! Je comprends bien que ce cas très particulier ne peut pas être pris en compte, mais pour rester dans du général, j’ai également regardé un jour les objectifs Nikon sur un site de commerce (sans aucune intention d’acheter, par pure curiosité), et depuis, je ne peux pas regarder une page sur internet sans qu’on me matraque une promo sur un objectif Nikon. C’est sur ce genre de choses que Criteo devrait réfléchir avant d’inclure la météo dans ses modèles…

Projet A-brain avec INRIA et KerData : déjà vu dans la session sur les 10 projets Azure, donc je ne détaille pas plus ici.

On apprend que Kinect est basée sur le machine learning : c’est un moteur d’apprentissage de la reconnaissance de 50 points constitutifs du squelette sur une image qui est embarqué dans le device, et qui permet de garder une bonne performance.

On finit avec une balade dans l’univers par gestes, ce qui est très révélateur de la puissance que Kinect peut avoir pour des manipulations immersives.

Posted in Retours | Tagged | Leave a comment

Tech Days 2013 – 10 projets Azure en 1 h

Pierre Couzy, responsable relations développeurs, présente cette session qui est composée de dix retours d’expérience de sociétés, majoritairement de type start-ups, et qui ont utilisé Azure pour se lancer.

Backend de Bulldozair par Azure Mobiles Services (authentification + persistance + notifications en mode push entre mobiles), et Azure Blob pour stockage des images. Devant des gros clients, la startup a été étonnée par le fait que le stockage en mode Cloud, loin de faire peur, rassurait au contraire, car Azure et Microsoft (ou une autre grosse boîte) sont vues par le privé comme gage de pérennité pour le stockage des data. Si le stockage avait été fait directement par la société éditrice, ça aurait justement eu l’effet d’augmenter les craintes.

Moskitos fait des services en SaaS. Concept de “Simplexité” pour des services complexes, mais exposés de manière simple, qui fait résonnance à une approche en mode service : il faut faire des choses complexes en interne pour qu’elles soient vues comme faciles à l’utilisation. Service Crosscut : middleware sur Azure.

Follow the sun fait du B2C.

BrainSonic parle de l’intégration Git dans Azure. Spark est sur cette plateforme. Ils font aussi la Tech Days TV avec Azure Media Services. Par contre, le présentateur n’était vraiment pas bon, le message était complètement brouillé. Perso, je n’ai rien compris de ce qu’il voulait nous dire.

Aspectize se positionne entre le PaaS et le SaaS, mais faute de plus de temps pour décrire leur produit, reste seulement l’impression que ce n’est pas grand chose de plus que des blocs applicatifs pour obtenir une forte rapidité de développement. En gros, de la génération dynamique de formulaire et de pages en mode Cloud… Ca vaudra le coup d’aller faire un tour sur leur site pour essayer d’en savoir plus.

FocusMatic fait de l’analyse Big Data en temps réel des réseaux sociaux, avec des mesures orientées business (audience au lieu de likes). Permet de descendre jusqu’à l’influenceur par drilldown. Encore une fois, faute de temps, ils n’ont pas persuadé que leurs mesures soit autre chose que des simples agrégats d’indicateurs.

A-brain : collaboration avec INRIA. Imagerie neuronale et génétique sur Azure. Recherche des couplages entre les deux domaines. Adaptation de l’algo map reduce. Très intéressant, surtout que l’orateur est extrêmement clair. Normal, c’est un universitaire, il est habitué à s’exprimer de manière construite… Sachant que c’est le seul qui ne s’exprimait pas dans sa langue maternelle, les autres devraient se faire du souci.

Hupstream, SCOP sur l’Open source. Font marcher Debian dans Azure, et ont fourni une des images qui se trouve sur VMDepot. Intéressant à suivre, car visiblement la communauté Debian était loin d’être réfractaire à l’idée de se retrouver sur Azure.

Au final, la session aurait pu être beaucoup plus intéressante en supprimant les quelques-uns qui sont venus uniquement pour se faire de la publicité et n’ont pas expliqué en quoi ils avaient tiré avantage d’Azure, et comment ils l’utilisaient. Les autres auraient eu les 5 minutes de plus qui leur manquaient pour être complets, et au final, ç’aurait été beaucoup mieux. Ce n’est qu’un avis perso, mais essayer de faire passer 10 sociétés sur un peu moins d’une heure, c’est trop…

Posted in Retours | Tagged | 1 Comment

Tech Days 2013 – Détente

Bon, après une dizaine de compte-rendu, un petit billet de détente. Enfin, peut-être pas tant que ça, car le sujet risque de faire peur à beaucoup, surtout mes collègues… J’ai un  jumeau !

Allez, faites péter les statistiques et dites-moi la probabilité de trouver une autre personne qui :

  • a fait l’Université de Technologie de Compiègne
  • a effectué une année d’échange à University of Pennsylvania
  • a passé son master à Cranfield University
  • a travaillé à Dassault Systèmes
  • s’intéresse aux limites de la POO, et apprécie SOLID
  • a un fort intérêt pour F#
  • va aux Tech Days
  • est Picard

Allez, à la louche, 200 étudiants UTC par an depuis 40 ans, soit 8000 ingénieurs sur 65 millions de Français. Seulement un par an gros maximum à faire Penn ET Cranfield. Une chance sur 20 de bosser pour DS. Même parmi ceux-là, il faut être sérieusement geek pour faire du F# et s’intéresser à SOLID : allez, un sur trois. On va dire qu’avec tout ça, on est une bonne cible des Tech Days, je ne compte donc rien sur ce critère. Et pour finir, être Picard : une chance sur 80 (et je ne tiens pas compte de la faible probabilité de l’avouer librement)…

Bref, il y avait une chance sur 13 milliards pour que j’ai un jumeau !

Pas de bol, chers collègues : votre pire cauchemar est en train de se réaliser Sourire. D’ici qu’il vienne bosser avec nous…

Posted in Uncategorized | 3 Comments