[Atom] [Mail] [Twitter]
Liens : C · git · hacks · divers · cabale · à propos +

Sécurité et interface utilisateur

Réactions
<. Cohérence des effets de bord
>. Génération de tests, compilateurs, et preuve formelle

J’écris un petit billet pour vous parler d’un article que j’ai lu récemment et qui m’a bien plu. Il s’agit de l’article User Interaction Design for Secure Systems, Ka-Ping Yee, 2002 (PDF, 16 pages).

The security of any computer system that is configured and operated by human beings critically depends on the information conveyed by the user interface, the decisions of the computer users, and the interpretation of their actions. We establish some starting points for reasoning about security from a user-centred point of view, by modelling a system in terms of actors and actions and introducing the concept of the subjective actor-ability state. We identify ten key principles for user interaction design in secure systems and give case studies to illustrate and justify each principle, describing real-world problems and possible solutions. We anticipate that this work will help guide the design and evaluation of secure systems.

[…]

Usability issues are often considered to “trade off” against security. Among many designers, there is the pervasive assumption that improving security necessarily degrades usability, and vice versa; the decision of whether to favour one or the other is typically seen as a regrettable compromise. In the end, these judgement calls are made somewhat arbitrarily because there seems to be no good answer. We believe that usability and security goals rarely need to be at odds with each other. In fact, often it is rather the opposite: a system that’s more secure is more predictable, more reliable, and hence more usable.

Ce n’est pas un article très technique, car il concerne uniquement les questions d’interface utilisateur. Il est donc facile à lire, même s’il est parfois formulé en termes assez abstraits : les exemples aident à bien comprendre l’application des concepts présentés.

Si vous avez besoin d’un peu plus d’information avant d’ouvrir le PDF, voici la liste des dix principes présentés dans l’article. Évidemment, c’est mieux avec les explications et les exemples.

Path of Least Resistance

To the greatest extent possible, the natural way to do any task should also be the secure way.

Appropriate Boundaries

The interface should expose, and the system should enforce, distinctions between objects and between actions along boundaries that matter to the user.

Explicit Authority

A user’s authorities must only be provided to other actors as a result of an explicit action that is understood by the user to imply granting.

Visibility

The interface should allow the user to easily review any active authority relationships that would affect security-relevant decisions.

Revocability

The interface should allow the user to easily revoke authorities that the user has granted wherever revocation is possible.

Expected Ability

The interface must not generate the impression that it is possible to do something that cannot actually be done.

Trusted Path

The interface must provide an unspoofable and faithful communication channel between the user and any entity trusted to manipulate authorities on the user’s behalf.

Identifiability

The interface should enforce that distinct objects and distinct actions have unspoofably identifiable and distinguishable representations.

Expressiveness

The interface should provide enough expressive power (a) to describe a safe security policy without undue difficulty; and (b) to allow users to express security policies in terms that fit their goals.

Clarity

The effect of any security-relevant action must be clearly apparent to the user before the action is taken.

L’intérêt inattendu de la sécurité

Cet article établit une synergie entre la sécurité et une bonne conception de l’interface utilisateur. Je ne suis pas surpris par cette approche, car j’ai déjà constaté des coïncidences entre sécurité et bonne conception dans de nombreux domaines :

La sécurité est un domaine qui, au départ, ne m’intéressait pas des masses. La plupart des erreurs de sécurité exploitables sur les logiciels grand public sont liés à des défauts technologiques maintenant évidents (buffer overflow, SQL injection…) qui ravivent ma crispation devant l’inertie de certaines couches logicielles arriérées.

Mais cette synergie entre la sécurité et des aspects de conception qui m’intéressent beaucoup me pousse à m’y pencher de plus près. En particulier, les risques liés à la sécurité sont beaucoup plus évidents et perceptibles que les bénéfices de la bonne conception, et ils constituent donc un bon moyen de pression pour pousser les gens à améliorer leurs technologies.

Cette année, j’ai eu l’occasion de m’intéresser à nouveau aux capabilities, ainsi qu’au minimum vital de cryptographie. J’espère que j’aurai l’occasion d’écrire quelques billets à ce sujet.

[ tag:blog.huoc.org,2009:posts/securite-interface-utilisateur ]
Gabriel Scherer (gasche).
Le 19.03 2011 à 21:47.
(Modifié le 19.03 2011 à 21:54.)

[>] Commentaires[Atom]

# Cygal
19.03.11, 23:52.

J'ai vu quelques exemples, et en dehors du fait qu'ils sortent d'une autre époque étant donné la date du papier, l'idée que « a system that’s more secure is more predictable, more reliable, and hence more usable » est un peu trop vendeuse à mon goût. Les interfaces qu'ils conseillent sont toujours plus compliquées que les interfaces existantes malgré tout, donc un utilisateur qui se voit présenter la nouvelle interface la trouvera nécessairement plus compliquée, et cherchera encore une fois comment ne pas penser à tout ça.

Certes, c'est une avancée, mais il n'y a pas de solution magique. :)

En plus de ça les interfaces présentées sont effectivement mauvaises. Qu'est-ce qu'ils pensent de Windows qui demande maintenant la confirmation de chaque action ? C'est un chemin résistant mais nécessaire ?
[ tag:blog.huoc.org,2011-03-19:comments/1300575172.9504 ]

# gasche
20.03.11, 11:42.

Cette idée là est vendeuse mais sa réciproque (un système difficile à utiliser correctement peut créer des problèmes de sécurité) est par contre une évidence qui est trop souvent négligée. C'est vrai qu'il n'y a pas de solution magique, mais moi je crois assez fort à l'existence d'interfaces simples et sécurisées. L'idée est de faire en sorte que le contexte d'une action indique sans ambiguité les droits que l'utilisateur s'attend à transmettre à cette action. Par exemple cliquer sur "Ouvrir" indique que l'utilisateur est prêt à donner à l'application le droit de lecture sur le fichier; on peut donc faire évoluer d'une part l'interface de façon à être plus riche contextuellement (ou "sémantiquement" si on veut), et d'autre part les outils de sécurité de manière à mieux correspondre aux concepts visibles à l'utilisateur (pour pouvoir exploiter ces contextes). Bref, c'est ce qui est raconté dans l'article.

Au sujet des confirmations demandées par Windows, je ne sais pas ce que l'auteur de l'article en pense mais voici quelques idées qui me passent par la tête en réfléchissant à ta question :

- le problème vient du fait que l'action "exécuter ce programme" est trop générale et ambiguë pour donner du contexte permettant de déduire, sans demander à l'utilisateur, quelle est l'autorité minimale à conférer au programme; il faut ajouter des informations. Peut-être que certains programmes devraient être manipulés différemment (par exemple l'interface "Ouvrir avec .." indique clairement que le programme devra être lancé avec des droits sur un fichier en particulier) et que l'interface devrait favoriser ces modes d'usage plus contextuels. Comment concevoir une interface qui suggère que le programme aura accès au réseau ? Peut-être séparer l'interface en une partie "locale" et une partie "online" ?

- La nécessité de demander confirmation à chaque lancement de programme vient du fait que le principe de POLA n'est pas respectée dans les systèmes actuels. Un programme lancé par l'utilisateur peut utiliser tous les droits de l'utilisateur, donc faire des dégâts considérables s'il est malicieux ou compromis. Dans un système POLA où le programme annonce les droits dont il a besoin, on pourrait choisir quels droits sont "sans dangers" (écrire dans un fichier temporaire local, etc.) et quels droits sont sensibles et n'avertir que dans ces cas là. La majorité des programmes, par exemple, peuvent être conçus pour ne pas avoir besoin d'accès au système de fichier dans son ensemble.
[ tag:blog.huoc.org,2011-03-20:comments/1300617738.4179 ]

# SpiceGuid
27.06.11, 17:48.

Quid du surcoût ? On peut souvent faire mieux mais généralement ça a un surcoût. L'efficacité a un surcoût. La fiabilité a un surcoût. Le parallélisme a un surcoût. L'extensiblité a un surcoût. La sécurité elle aussi a un surcoût. On a beau édicter des règles, des principes, ou même des paradigmes, ça ne change rien au fait que toute exigence a un surcoût. Alors certes le bien-faire (en général) peut aussi avoir un bénéfice sur la sécurité (en particulier). Cependant, selon moi, il n'y a pas de "bon moyen de pression pour pousser les gens à améliorer leurs technologies". Parce que les gens vivent dans un monde pragmatique où la première des exigences est de minimiser les surcoûts. Tout ce qui ressemble à une certification (ou pire encore: à une preuve) est considéré comme un surcoût improductif (c'est-à-dire sans valeur ajoutée). Ça explique aussi "l’inertie de certaines couches logicielles arriérées". Les organisations ne voit pas l'intérêt de revisiter le logiciel historique parce ce que c'est une activité sans valeur ajoutée ou qui détruit de la valeur ajoutée (en rendant obsolète tout le logiciel bâti sur l'existant).
[ tag:blog.huoc.org,2011-06-27:comments/1309189694.23190 ]

# gasche
28.06.11, 09:33.

J’entends bien. Ici le surcoût est un effort de conception supplémentaire. Tout comme la simplicité de conception est très difficile ( coûteuse) à atteindre, bonne interface et bonne sécurité sont déjà délicats, les deux ensembles c’est difficile.

Par contre, ce surcoût est accompagné par un gain en sécurité. Le gain en sécurité peut diminuer les coûts; coûts de développement, car une bonne conception permet d’éliminer de larges vecteurs d’attaque qu’il faudrait prendre en compte un par un sinon, mais surtout à l’utilisation, car une faille de sécurité dans un système peut coûter cher, qu’il soit exploité ou non (coût de maintenance, de mise à jour, interruption de service…).

Est-ce que le rapport "gain / coût" de telle ou telle technologie est intéressant ? Ça dépend des contextes, et ça peut changer. Aujourd’hui la preuve formelle à laquelle tu fais référence est effectivement trop coûteuse (trop difficile) pour être mise en pratique en dehors des industries critiques à les gains (en assurance de la fiabilité du système) sont très importants. Je pense que la sécurité est plus facile à faire accepter; il est vrai qu’aujourd’hui certains acteurs conçoivent les failles de sécurité plus comme un problème d’image que comme un problème technique (les failles, on en aura toujours, l’important est de tout faire pour que ça ne nuise pas à notre réputation). Mais elle reste importante dans un large nombre de cas, sans doute plus que la certification/preuve aujourd’hui.

Enfin, là où il y a un coût, il y a un défi pour les chercheurs et les ingénieurs : le diminuer. La certification est trop coûteuse aujourd’hui, à nous de développer des méthodes et des outils pour la rendre plus aisée. Respecter des principes d’usabilité et sécurité est trop exotique et difficile, à nous de construire des systèmes dans lequel ces principes sont plus faciles à mettre en pratique, de les présenter de façon simple (c’est ce que cherche à faire l’article cité), et de les diffuser dans la culture générale des concepteurs de logiciel pour que leur mise en application devienne plus naturelle.

[ tag:blog.huoc.org,2011-06-28:comments/1309246381.8181 ]

# SpiceGuid
28.06.11, 16:59.

Les coûts que tu cites (coût de maintenance, coût de la mise à jour, coût de la remise en service) ne sont des coûts que pour le client. Pour le prestataire ce sont des gains, c'est ce qu'il facture au client. Pour emporter les appels d'offre le prestataire a tout intérêt à comprimer la facture et le délai de livraison. Au détriment de la qualité. D'où un travail doublement ingrat pour le programmeur :

1. il doit bâcler la conception pour assurer la livraison dans les délais
2. il doit bricoler des patchs horribles pour assurer une maintenance qui n'en finit jamais puisqu'il n'a jamais le loisir de repenser la conception initiale

Tant que les prestataires conservent ce modèle économique qui consiste à différer l'essentiel des coûts sur la maintenance il n'y aura jamais de qualité logiciel. Le problème du surcoût de conception n'est pas qu'il est un surcoût (car tout surcoût est une aubaine pour le prestataire) mais qu'il est un surcoût initial (visible par le client).

Alors oui c'est passionnant pour le chercheur. Malheureusement ça n'impacte pas la qualité de vie de la plupart des programmeurs qui ne demandent qu'à mieux faire mais qui ne le peuvent pas parce qu'ils sont contraints par le coût initial, celui présenté au client. Le frein au progrès est avant tout politique/économique. D'eux-mêmes les programmeurs sont capables de faire mieux, beaucoup mieux. Ce qui les en empêche c'est le management économique qui les enferme dans la précarité technologique. Désolé de faire un peu de sociologie. C'est pour mieux te faire comprendre que la séparation programmeur/utilisateur n'est pas pertinente sur le marché où c'est la séparation client/prestataire qui prévaut.
[ tag:blog.huoc.org,2011-06-28:comments/1309273189.19479 ]

# Cygal
29.06.11, 09:42.

Ce n'est pas parce que la plupart des prestataires sur le marché choisissent de maximiser leur profit au détriment du client et de la qualité du produit qu'il faut, d'une part, accepter cette réalité comme permanente et d'autre part, considérer que c'est le cas de tout le monde.

L'exemple surclassique est l'automatisation des lignes 1 et 14 par la RATP. Il semblerait que certaines fonctionnalités aient été prouvées avec la méthode B, ce qui aurait augmenté le coût initial de 50%, mais "ça a marché du premier coup". Ils vont faire pareil avec la ligne 1.

Pourquoi est-ce que les prestataires maîtrisant ce genre de compétences ne seraient-il pas capables de les vendre aux clients qui ont envie de maîtriser leur coûts ultérieurs ? Ça doit exister, mais il faut être capable d'expliquer ce surcoût aux clients. Un jour ce sera peut-être un buzzword parmi tant d'autres. :)
[ tag:blog.huoc.org,2011-06-29:comments/1309333344.8996 ]

Nouveau commentaire