Réactions
  1. bluestorm, Emily, et les chameaux
  2. L'innocence est un mythe : les programmes fonctionnels nécessairement impurs
  3. Histoire de minorité et d'informatique
  4. Détection automatique de bugs
  5. Cohérence des effets de bord
  6. Sécurité et interface utilisateur
  7. Génération de tests, compilateurs, et preuve formelle

Sécurité et interface utilisateur

(Gabriel Scherer (gasche) @ 2011-03-19 21:54:09)

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.