Gordon King (ingénieur logiciel) et Hans Wang (chercheur) travaillent tous les deux chez Intel Labs et se sont accordés à dire qu’il est possible de rendre les services Web plus sûrs. Leur idée est d’effectuer des calculs dans des environnements d’exécution de confiance distants ou TEE.
Ils décrivent dans leur rapport un protocole HTTP appelé HTTPS Attestable (HTTPA) permettant d’améliorer la sécurité en ligne avec une attestation à distance. Il s’agit d’un moyen pour les applications d’avoir la garantie que les données seront traitées par un logiciel de confiance dans des environnements d’exécution sécurisés.
Un processus de négociation client-serveur
King et Wang prévoient dans leur démarche d’ajouter trois méthodes HTTP qui sont ponctuées d’étapes de négociation client-serveur. Pour déterminer si le serveur prend en charge HTTPA, le client envoie d’abord une requête preflight. Si c’est le cas, il adresse une requête attest qui correspond à 3 ou 4 en-têtes dont la date et heure de création de la requête (facultatif), identifiant de session (pour reprendre une session sans renégociation), bits aléatoires dont sera dérivée une clé de chiffrement et liste d’algorithmes de chiffrement acceptés.
Le serveur se charge de transmettre les bits aléatoires au TEE et de répondre au client avec, entre autres, une clé publique et une autre série de bits aléatoires. Le client se sert de cette clé pour encapsuler un secret qu’il communique au serveur et que seul le TEE peut déchiffrer. Client et serveur peuvent donc déduire des clés de session.
Une implémentation prometteuse
La démarche que King et Wang décrivent se rapporte à l’attestation des serveurs. Toutefois, HTTPA peut également permettre à un client de prouver son intégrité. En d’autres termes, on s’attend à ce que les applications puissent vérifier par le biais de cryptographie et de certificats que le code exécuté dans un TEE côté serveur soit précisément le code qui doit être exécuté.
Ce code doit rester le même sans qu’un administrateur malveillant, un système d’exploitation ou un hyperviseur piraté, un intrus sur le réseau ou un logiciel malveillant ne puisse le modifier. En principe, le TEE devrait empêcher ou détecter les malfaiteurs d’espionner ou de modifier le code et les données. D’après les experts, si tout se met en place « HTTPA fournit l’assurance de confirmer que les charges de travail du client exécuteront dans l’enclave attendue avec le logiciel vérifié attendu. »
