# Widevine

Widevine est un système propriétaire de gestion des droits numériques (DRM) développé par Google. Il assure la protection du contenu des médias. Widevine est divisé en trois niveaux de sécurité, avec des niveaux de protection différents en fonction du matériel présent sur l'appareil. Widevine est inclus dans la plupart des principaux navigateurs web et dans les système Android et iOS.
Widevine a été développé à l'origine par Internet Direct Media, qui s'est ensuite rebaptisé Widevine Technologies. Après plusieurs cycles de financement, la société a été rachetée par Google en 2010 pour un montant non divulgué.

## Histoire
### Origines (1998-2006)

Widevine a été créé par Internet Direct Media, basé à Seattle, en 1999 sous le nom de Widevine Cypher. La société, fondée par le directeur Brian Baker et le chercheur en cryptographie Jeremy Horwitz, a changé son nom pour Widevine Technologies$^,$.
En février 2001, Widevine Technologies a lancé Widevine Cypher Enterprise ; à l'époque, des techniques telles que l'enregistrement d'écran et la surveillance des requêtes réseau étaient courantes. Widevine Cypher a utilisé le cryptage DES-X pour empêcher ces techniques. Widevine Technologies s'est associée à la société de streaming Midstream Technologies, basée à Bellevue, en avril. Baker est revenu dans l'entreprise en 2001, la menant à travers un processus de restructuration ; le processus impliquait la recapitalisation de l'entreprise et le licenciement d'un grand nombre de ses employés.
En juin 2003, Widevine Technologies a obtenu un financement de 7,8 millions de dollars américains auprès des sociétés de capital-risque Constellation Ventures et Pacesetter Capital. La même année, Widevine Technologies s'est associée à la société de télécommunications taïwanaise Chunghwa Telecom dans le but de sécuriser leur service de vidéo à la demande. Widevine Technologies recevrait un financement supplémentaire en 2004 de Constellation Ventures et Pacesetter Capital, ainsi que de Phoenix Capital Partners, dans le cadre d'un cycle de financement dirigé par VantagePoint Venture Partners, rapportant à l'entreprise 13 millions de dollars.
Widevine Technologies s'est lancée dans le filigrane numérique en 2005, en s'associant avec la société de traitement de contenu TVN Entertainment (aujourd'hui Vubiquity) pour son système Mensor Widevine Mensor insère une charge utile de 64 bits dans le signal, une opération peu coûteuse en termes de calcul.

### Croissance (2006-2010)

En avril 2006, Constellation Ventures, Pacesetter Capital, Phoenix Capital Partners et VantagePoint Venture Partners ont rejoint l'entreprise de communications numériques Cisco Systems et la société canadienne de télécommunications Telus pour investir 16 millions de dollars dans Widevine Technologies. L'implication de Cisco dans cet investissement fait suite à l'acquisition du fabricant de décodeurs Scientific Atlanta pour 7 milliards de dollars. Dans le cadre d'un accord de six ans, Widevine a obtenu un contrat avec Telus pour utiliser sa technologie dans les plateformes de Telus.
Le 3 août 2007, Widevine Technologies a intenté une action en contrefaçon de brevet contre la société de sécurité du contenu Verimatrix. Les deux sociétés sont parvenues à un règlement en mars 2010.
Les fournisseurs utilisant Widevine ont augmenté régulièrement jusqu'en 2010. En août 2008, CinemaNow a utilisé Widevine pour étendre sa portée à plusieurs appareils, notamment la Nintendo Wii, les lecteurs de disques LG et Samsung, ainsi que l'iPhone et l'iPod. Pour implémenter DRM dans Microsoft Silverlight pour les navigateurs n'utilisant pas Microsoft Windows, Microsoft a travaillé avec Widevine Technologies. Widevine a également été implémenté dans plusieurs services de streaming utilisant Adobe Flash, notamment du contenu de Sony et Warner Bros. distribué sur le réseau social virtuel Gaia Online.
En décembre 2009, Widevine a reçu un financement supplémentaire de 15 millions de dollars de la société de télécommunications Liberty Global et de Samsung Ventures, la filiale de capital-risque de Samsung. Samsung étendrait son utilisation de Widevine en juin 2010. LoveFilm a signé un accord avec Widevine en juillet 2010.

### Acquisition par Google (2010-présent)

Le 3 décembre 2010, Google a annoncé l'acquisition de Widevine pour un montant non divulgué. L'acquisition a eu lieu le jour même où Viacom a fait appel dans l'affaire Viacom v. YouTube, qui porte sur le rôle de Google dans le téléchargement sur YouTube de contenus appartenant à Viacom. En février 2011, un rapport de CNN a révélé que Google avait payé 150 millions de dollars pour Widevine, alors que l'évaluation interne de l'entreprise se situait entre 30 et 40 millions de dollars, ce qui en faisait la neuvième plus grande acquisition de l'entreprise jusqu'à ce moment-là.
Widevine est divisé en trois niveaux de sécurité. Le niveau de sécurité utilisé dépend de l'utilisation d'un environnement d'exécution de confiance (TEE) dans l'appareil client. Par exemple, les processeurs ARM Cortex-A mettent en œuvre la technologie TrustZone, ce qui permet à la cryptographie et au traitement vidéo de se dérouler entièrement au sein de l'ETC. Dans Widevine L1, le décryptage et le traitement des médias s'effectuent entièrement dans une TEE, et le contenu est disponible dans sa résolution d'origine. Dans Widevine L2, le décryptage et le traitement des médias s'effectuent dans un logiciel ou un matériel vidéo dédié, malgré la présence d'une ETI, et le contenu est disponible dans une résolution fixe. Dans Widevine L3, le décryptage et le traitement des médias s'effectuent de manière logicielle, sans TEE, et le contenu est disponible dans une résolution fixe.
Sous Android, Widevine L1 peut être implémenté dans Stagefright, le moteur de lecture multimédia d'Android. Ceci est implémenté dans les puces Qualcomm, où un composant OpenMAX (OMX) communique avec le pilote vidéo au niveau du noyau. La mémoire multimédia est créée via le pilote de l'unité de gestion de la mémoire pour ION, un gestionnaire de mémoire introduit dans Android 4.0 pour répondre aux différentes interfaces de gestion de la mémoire sur Android. Le tampon d'entrée/sortie est ensuite alloué et le contenu est déchiffré et stocké dans un tampon d'entrée sécurisé dans TrustZone.

### Aperçu des entrées → sorties

Widevine utilise plusieurs normes et spécifications, notamment MPEG Common Encryption (CENC), Encrypted Media Extensions (EME), Media Source Extensions (MSE) et Dynamic Adaptive Streaming over HTTP (DASH). De plus, Widevine prend en charge le protocole HTTP Live Streaming (HLS), développé par Apple Inc. en 2009.
Dans une implémentation de Widevine, un navigateur reçoit un contenu crypté d'un réseau de diffusion de contenu (CDN). Le contenu est ensuite envoyé au module de décryptage de contenu (CDM), qui crée une demande de licence à envoyer au serveur de licence. Le lecteur reçoit alors une licence du serveur de licences et la transmet au CDM. Pour décrypter le flux, le CDM envoie le média et la licence au module OEMCrypto, nécessaire pour décrypter le contenu. OEMCrypto est une interface vers le TEE ; la plupart des implémentations garantissent que les clés de session, les clés de contenu déchiffré et le flux de contenu déchiffré ne sont pas accessibles aux autres applications en cours d'exécution. Ceci est généralement réalisé via un processeur secondaire doté d' une mémoire séparée. Le contenu est ensuite envoyé à la pile vidéo et affiché à l'utilisateur final en morceaux. Les messages de demande de licence et de réponse de licence sont envoyés et reçus à l'aide de tampons de protocole.
Les fournisseurs peuvent implémenter leur propre serveur proxy au sein du serveur de licences, dans les cas où l'autorisation des utilisateurs est gérée par le serveur proxy préexistant du fournisseur. Cette configuration nécessite l'utilisation du serveur proxy comme intermédiaire. Widevine nécessite l'utilisation de certificats de service à partir de Chrome 59, ainsi que d'iOS et de certaines configurations de ChromeOS. Un serveur proxy peut choisir de refuser de délivrer des licences pour les navigateurs qui n'implémentent pas un cadre « vérifiable », autrement connu sous le nom de Verified Media Path (VMP). Notamment, les navigateurs fonctionnant sous Linux ne sont pas inclus dans VMP. De même, la version HDCP ( High-bandwidth Digital Content Protection ) utilisée sur le périphérique client peut être appliquée par le serveur proxy.
Dans les appareils Widevine L1, le provisionnement des certificats est généralement effectué une seule fois. Pendant le provisionnement, le CDM crée un nonce et dérive les clés pour le décryptage du certificat et les contrôles d'intégrité, ainsi que les tampons générés dynamiquement. La clé de l'appareil est considérée comme la racine de confiance (RoT). La clé du client dérivée de la racine de confiance protège la demande à l'aide de HMAC. Le RoT est établi via un composant fourni en usine appelé « keybox ». La boîte à clés fait 128 octets avec deux champs spéciaux. L'intégrité de la keybox est vérifiée en vérifiant que les huit derniers octets correspondent à un nombre magique ("kbox") suivi d'un contrôle de redondance cyclique (CRC-32). Les 120 autres octets comprennent un ID de périphérique interne (32 octets), une clé Advanced Encryption Standard (16 octets) et un jeton de provisionnement (72 octets).
Résumé des champs de la boîte à clés Widevine :
| Champ | Description | Taille (octets) |
| Reference de l'appareil | Obtenu dans le module OEMCrypto en utilisant OEMCrypto_GetDeviceID | 32 |
| Clé de l'appareil | Clé AES 128 bits. Dérivé en plusieurs clés dans le module OEMCrypto à l'aide de OEMCrypto_GenerateDerivedKeys | 16 |
| Jeton de provisionnement | Également appelées « données clés ». Utilisé pour provisionner les demandes. Obtenu dans le module OEMCrypto en utilisant OEMCrypto_GetKeyData | 72 |
| nombre magique | Appelé « kbox » | 4 |
| CRC-32 | Valide l'intégrité de la keybox | 4 |
Chaque clé de contenu est associée à un bloc de contrôle de clé de 128 bits, spécifiant les contraintes de sécurité. Le bloc de contrôle de clé garantit les exigences de sécurité du chemin de données sur des clients tels qu'Android, où la vidéo et l'audio sont chiffrés séparément, et fournit une valeur de temporisation à l'ETÉ. Le bloc est chiffré en AES-128-CBC avec un vecteur d'initialisation aléatoire (IV), et les champs sont définis dans l'ordre des octets big-endian. Les valeurs du bloc comprennent un champ de vérification, un champ de durée (exprimé en secondes), un nonce et des bits de contrôle, tous de 32 bits chacun. Les bits de contrôle sont une série de champs de bits contrôlant la version HDCP qui peut être utilisée, le type de chemin de données, l'utilisation ou non d'un nom occasionnel et le système de gestion générale de copie (CGMS) utilisé. Malgré cela, les fournisseurs peuvent toujours choisir de chiffrer l’audio et la vidéo avec la même clé ou même ne pas chiffrer l’audio du tout.
Widevine est inclus dans la plupart des principaux navigateurs web, y compris Google Chrome. Les dérivés de Chromium, dont Microsoft Edge, Vivaldi, et Opera, implémentent également Widevine. Depuis juin 2016, Firefox prend directement en charge Widevine dans le but de supprimer la prise en charge de NPAPI. De plus, Widevine est pris en charge sur Android et iOS. Les services de streaming utilisant Widevine incluent Netflix, Disney+, Amazon Prime Video, Max, Hulu, Paramount+ et Discovery+. Depuis Android 5, la version de Google Chrome utilisée dans Android prend en charge Widevine. En février 2021, Firefox pour Android a ajouté Widevine.
Dans Android, Widevine est mis en œuvre par le biais d'un module d'extension de la couche d'abstraction matérielle (HAL). La bibliothèque Widevine sur Android traduit les appels de l'API DRM Android en appels CDM Widevine, et son rôle varie en fonction du niveau de sécurité mis en œuvre ; dans Widevine L1, la bibliothèque Widevine agit comme un proxy pour le TEE, tandis que dans L3, la bibliothèque contient le CDM obfusqué. En outre, la bibliothèque liboemcrypto.so transmet les requêtes au trustlet Widevine pour Widevine L1 par l'intermédiaire d'un pilote TEE spécialisé, tel que QSEEComAPI.so pour Qualcomm Secure Execution Environment (QSEE).
iOS ne prend pas en charge DASH ou CENC de manière native. Pour contourner cette limitation, Widevine transmute DASH en HLS ; le Universal DASH Transmuxer (UDT) analyse le manifeste DASH à l'aide d'un analyseur XML, tel que libxml2. L'UDT crée ensuite une liste de lecture HLS.

## Sécurité

Widevine a été exploité à plusieurs reprises. Des chercheurs de l'université Ben-Gurion du Néguev ont découvert une vulnérabilité dans Widevine en juin 2016 ; cette vulnérabilité permettait aux utilisateurs d'obtenir une version décryptée du contenu protégé dans le cache.
En janvier 2019, le chercheur en sécurité David Buchanan a affirmé avoir cassé Widevine L3 grâce à une attaque d'analyse différentielle des failles dans l'implémentation boîte blanche de Widevine de l'AES-128, ce qui a permis à Buchanan de récupérer la clé d'origine utilisée pour chiffrer un flux. Le flux MPEG-CENC a ensuite pu être décrypté à l'aide de ffmpeg$^,$. Une vulnérabilité similaire a été exploitée en octobre 2020.
En 2021, la version Android de Widevine L3 a fait l'objet d'une ingénierie inverse et a été cassée par des chercheurs en sécurité.La même année, Qi Zhao a présenté la première attaque brisant Widevine L1 dans Android en récupérant la boîte à clés L1.

## Voir également

* Fair-play
* Marlin
* Prêt à jouer

## Remarques

* ↑ In ChromeOS, service certificates are required when remote_attestation_verified is enabled. remote_attestation_verified requires the use of a Trusted Platform Module (TPM) and is enabled at boot for devices with a TPM.