Original author(s) | |
---|---|
Initial release | 1999 |
Stable release | 1.4.9.1088 |
Written in | C++ |
Operating system | Cross-platform |
Type | Digital rights management |
Website | widevine |
Widevine is a proprietary digital rights management (DRM) system developed by Google. It provides content protection for media. Widevine is divided into three security levels with differing levels of protection depending on the hardware present on the device. Widevine is included in most major web browsers and in Android and iOS.
Widevine was originally developed by Internet Direct Media, who later rebranded as Widevine Technologies. Following several rounds of funding, the company was acquired by Google in 2010 for an undisclosed amount.
Widevine was created by Seattle-based Internet Direct Media in 1999 as Widevine Cypher. [1] The company, founded by executive Brian Baker and cryptography researcher Jeremy Horwitz, changed its name to Widevine Technologies. [2] [3]
In February 2001, Widevine Technologies released Widevine Cypher Enterprise; at the time, techniques such as screen recording and network request monitoring were common. Widevine Cypher used DES-X encryption to prevent these techniques. [4] Widevine Technologies partnered with Bellevue-based streaming company Midstream Technologies in April. [5] Baker returned to the company in 2001, leading it through a restructuring process; the process involved recapitalizing the company and firing many of its employees. [6]
In June 2003, Widevine Technologies secured US$7.8 million in funding from venture capital firms Constellation Ventures and Pacesetter Capital. [7] That same year, Widevine Technologies partnered with Taiwanese telecommunications company Chunghwa Telecom in an effort to secure their video-on-demand service. [8] Widevine Technologies would receive further funding in 2004 from Constellation Ventures and Pacesetter Capital, along with Phoenix Capital Partners, in a funding round led by VantagePoint Venture Partners, netting the company $13 million. [9]
Widevine Technologies branched out into digital watermarking in 2005, partnering with content processing company TVN Entertainment (now Vubiquity) for its Mensor system. [10] Widevine Mensor inserts a 64-bit payload into the signal, a computationally inexpensive operation. [11]
In April 2006, Constellation Ventures, Pacesetter Capital, Phoenix Capital Partners, and VantagePoint Venture Partners joined digital communications company Cisco Systems and Canadian telecommunications company Telus to invest $16 million into Widevine Technologies. Cisco's involvement in the investment followed its acquisition of set-top box manufacturer Scientific Atlanta for $7 billion. [12] In a six-year agreement, Widevine was awarded a contract with Telus to use its technology in Telus's platforms. [13]
On August 3, 2007, Widevine Technologies filed a patent infringement lawsuit against content security company Verimatrix. [14] The two companies reached a settlement in March 2010. [15]
Vendors utilizing Widevine steadily increased up until 2010. In August 2008, CinemaNow used Widevine to expand its reach to multiple devices, including the Nintendo Wii, disc players from LG and Samsung, and the iPhone and iPod. [16] To implement DRM into Microsoft Silverlight for browsers not using Microsoft Windows, Microsoft worked with Widevine Technologies. [17] Widevine was also implemented into several streaming services using Adobe Flash, including content from Sony and Warner Bros. distributed in the virtual social network Gaia Online. [18]
In December 2009, Widevine received an additional $15 million in funding from telecommunications company Liberty Global and Samsung Ventures, the venture capital subsidiary of Samsung. [19] Samsung would expand its use of Widevine in June 2010. [20] LoveFilm signed a deal with Widevine in July 2010. [21]
On December 3, 2010, Google announced that it had acquired Widevine for an undisclosed amount. [22] The acquisition occurred on the same day Viacom filed an appeal in Viacom v. YouTube , a case regarding Google's role in users uploading content owned by Viacom onto YouTube. [23] A CNN report in February 2011 revealed that Google had paid $150 million for Widevine, despite an internal valuation of the company being between $30 million and $40 million, making it the company's ninth largest acquisition until that point. [24]
Widevine is divided into three security levels. The security level used is dependent on the usage of a trusted execution environment (TEE) in the client device. For example, ARM Cortex-A processors implement TrustZone technology, allowing cryptography and video processing to occur entirely within the TEE. [25] In Widevine L1, media decryption and processing occurs entirely in a TEE, and content is available in its original resolution. In Widevine L2, media decryption and processing occurs in software or dedicated video hardware, despite the presence of a TEE, and content is available in a fixed resolution. In Widevine L3, media decryption and processing occurs in software and no TEE is present, and content is available in a fixed resolution. [26]
In Android, Widevine L1 can be implemented into Stagefright, Android's media playback engine. [27] This is implemented in Qualcomm chips, where an OpenMAX (OMX) component communicates with the video driver at the kernel level. Multimedia memory is carved out through the memory management unit driver for ION, a memory manager introduced in Android 4.0 to address the various memory management interfaces across Android. [28] The input/output buffer is then allocated, and the content is decrypted and stored to a secured input buffer in TrustZone. [29]
Widevine uses multiple standards and specifications, including MPEG Common Encryption (CENC), Encrypted Media Extensions (EME), Media Source Extensions (MSE), and Dynamic Adaptive Streaming over HTTP (DASH). [30] In addition, Widevine supports the HTTP Live Streaming (HLS) protocol, developed by Apple Inc. in 2009. [31]
In one implementation of Widevine, a browser receives encrypted content from a content delivery network (CDN). The content is then sent to the Content Decryption Module (CDM), which creates a license request to send to the license server. The player then receives a license from the license server and passes it to the CDM. To decrypt the stream, the CDM sends the media and the license to the OEMCrypto module, required to decrypt the content. [32] OEMCrypto is an interface to the TEE; most implementations ensure that session keys, decrypted content keys, and the decrypted content stream are not accessible to other running applications. This is usually accomplished through a secondary processor with separate memory. [33] The content is then sent to the video stack and displayed to the end user in chunks. [34] License request and license response messages are sent and received using Protocol Buffers. [35]
Vendors may implement their own proxy server within the license server, in cases where user authorization is managed by the vendor's preexisting proxy server. [36] This setup requires the use of the proxy server as a middleman. [37] Widevine requires the use of service certificates beginning in Chrome 59, along with iOS and some configurations of ChromeOS. [38] [note 1] A proxy server may choose to refuse to issue licenses for browsers that do not implement a "verifiable" framework, otherwise known as Verified Media Path (VMP). Notably, browsers running on Linux are not included in VMP. [40] Similarly, the High-bandwidth Digital Content Protection (HDCP) version used on the client device may be enforced by the proxy server. [41]
In Widevine L1 devices, certificate provisioning is usually performed once. During provisioning, the CDM creates a nonce and derives keys for certificate decryption and integrity checks, as well as dynamically generated buffers. The device key is treated as the Root of Trust (RoT). The RoT-derived client key protects the request using HMAC. [42] The RoT is established through a factory-provisioned component called the "keybox". The keybox is 128 bytes long with two special fields. The integrity of the keybox is checked by verifying the last eight bytes match a magic number ("kbox") followed by a cyclic redundancy check (CRC-32). [43] The other 120 bytes comprise an internal device ID (32 bytes), an Advanced Encryption Standard key (16 bytes), and a provisioning token (72 bytes). [44]
Field | Description | Size (bytes) |
---|---|---|
Device ID | Obtained in the OEMCrypto module using OEMCrypto_GetDeviceID | 32 |
Device key | 128-bit AES key. Derived into multiple keys in the OEMCrypto module using OEMCrypto_GenerateDerivedKeys | 16 |
Provisioning token | Also known as "key data". Used to provision requests. Obtained in the OEMCrypto module using OEMCrypto_GetKeyData | 72 |
Magic number | Referred to as "kbox" | 4 |
CRC-32 | Validates the integrity of the keybox | 4 |
Each content key is associated with a 128-bit key control block, specifying security constraints. The key control block ensures data path security requirements on clients such as Android, where video and audio are encrypted separately, and to provide a timeout value to the TEE. The block is AES-128-CBC encrypted with a random initialization vector (IV), and the fields are defined in big-endian byte order. The values of the block comprise a verification field, a duration field (expressed in seconds), a nonce, and control bits, all 32 bits each. [45] The control bits are a series of bit fields controlling the HDCP version that can be used, the data path type, whether or not a nonce should be used, and the Copy General Management System (CGMS) used. [46] Despite this, vendors may still choose to encrypt audio and video with the same key or may not even encrypt the audio at all. [47]
Widevine is included in most major web browsers, including Google Chrome. Derivatives of Chromium, including Microsoft Edge, Vivaldi, [48] and Opera, also implement Widevine. [49] Since June 2016, Firefox has supported Widevine directly in an effort to remove NPAPI support. [50] In addition, Widevine is supported on Android and iOS. [30] Streaming services utilizing Widevine include Netflix, Disney+, [51] Amazon Prime Video, Max, Hulu, Paramount+, and Discovery+. [52] Since Android 5, the version of Google Chrome used in Android supports Widevine. [53] In February 2021, Firefox for Android added Widevine. [54]
In Android, Widevine is implemented through a hardware abstraction layer (HAL) module plugin. The Widevine library on Android translates Android DRM API calls to Widevine CDM ones, and its role varies depending on the security level implemented; in Widevine L1, the Widevine library acts as a proxy for the TEE, while in L3, the library contains the obfuscated CDM. Additionally, the library liboemcrypto.so
marshals and unmarshals requests to the Widevine trustlet for Widevine L1 through a specialized TEE driver, such as QSEEComAPI.so
for Qualcomm Secure Execution Environment (QSEE). [55]
iOS does not natively support DASH or CENC. To work around this limitation, Widevine transmuxes DASH to HLS; the Universal DASH Transmuxer (UDT) parses the DASH manifest using an XML parser, such as libxml2. The UDT then creates an HLS playlist. [56]
On May 31, 2021, support for 32-bit Linux was stopped, and DRM-protected content cannot be played on this platform. [57] [58]
Widevine has been exploited multiple times. Researchers at Ben-Gurion University of the Negev discovered a vulnerability in Widevine in June 2016; the vulnerability allowed users to obtain a decrypted version of protected content in cache. [59]
In January 2019, security researcher David Buchanan claimed to have broken Widevine L3 through a differential fault analysis attack in Widevine's white-box implementation of AES-128, allowing Buchanan to retrieve the original key used to encrypt a stream. The MPEG-CENC stream could then be decrypted using ffmpeg. [60] [61] A similar vulnerability was exploited in October 2020. [62]
In 2021, the Android version of Widevine L3 was reverse engineered and broken by security researchers. [63] The same year, Qi Zhao presented the first attack breaking Widevine L1 in Android by recovering the L1 keybox. [64]
In 2019, a developer tried to bundle Widevine in an Electron/Chromium-based application for video playing and did not get any response from Google after asking for a license agreement, effectively blocking DRM usage in the project. [65] [66] He later got the reply:
I'm sorry but we're not supporting an open source solution like this
— Google Widevine Support, https://blog.samuelmaddock.com/widevine/gmail-thread.html
The same happened to other Electron projects. [67]
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. [39] The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data connections between the client and the server. FTP users may authenticate themselves with a plain-text sign-in protocol, normally in the form of a username and password, but can connect anonymously if the server is configured to allow it. For secure transmission that protects the username and password, and encrypts the content, FTP is often secured with SSL/TLS (FTPS) or replaced with SSH File Transfer Protocol (SFTP).
Mozilla Firefox, or simply Firefox, is a free and open source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements current and anticipated web standards. Firefox is available for Windows 10 and later versions of Windows, macOS, and Linux. Its unofficial ports are available for various Unix and Unix-like operating systems, including FreeBSD, OpenBSD, NetBSD, and other platforms. It is also available for Android and iOS. However, as with all other iOS web browsers, the iOS version uses the WebKit layout engine instead of Gecko due to platform requirements. An optimized version is also available on the Amazon Fire TV as one of the two main browsers available with Amazon's Silk Browser.
Google Chrome is a web browser developed by Google. It was first released in 2008 for Microsoft Windows, built with free software components from Apple WebKit and Mozilla Firefox. Versions were later released for Linux, macOS, iOS, iPadOS, and also for Android, where it is the default browser. The browser is also the main component of ChromeOS, where it serves as the platform for web applications.
Chromium is a free and open-source web browser project, primarily developed and maintained by Google. It is a widely-used codebase, providing the vast majority of code for Google Chrome and many other browsers, including Microsoft Edge, Samsung Internet, and Opera. The code is also used by several app frameworks.
The W3C Geolocation API is an effort by the World Wide Web Consortium (W3C) to standardize an interface to retrieve the geographical location information for a client-side device. It defines a set of objects, ECMAScript standard compliant, that executing in the client application give the client's device location through the consulting of Location Information Servers, which are transparent for the application programming interface (API). The most common sources of location information are IP address, Wi-Fi and Bluetooth MAC address, radio-frequency identification (RFID), Wi-Fi connection location, or device Global Positioning System (GPS) and GSM/CDMA cell IDs. The location is returned with a given accuracy depending on the best location information source available.
WebGL is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background.
HTML video is a subject of the HTML specification as the standard way of playing video via the web. Introduced in HTML5, it is designed to partially replace the object element and the previous de facto standard of using the proprietary Adobe Flash plugin, though early adoption was hampered by lack of agreement as to which video coding formats and audio coding formats should be supported in web browsers. As of 2020, HTML video is the only widely supported video playback technology in modern browsers, with the Flash plugin being phased out.
Modern HTML5 has feature-parity with the now-obsolete Adobe Flash. Both include features for playing audio and video within web pages. Flash was specifically built to integrate vector graphics and light games in a web page, features that HTML5 also supports.
Firefox OS is a discontinued open-source operating system – made for smartphones, tablet computers, smart TVs, and dongles designed by Mozilla and external contributors. It is based on the rendering engine of the Firefox web browser, Gecko, and on the Linux kernel. It was first commercially released in 2014.
Firefox was created by Dave Hyatt and Blake Ross as an experimental branch of the Mozilla browser, first released as Firefox 1.0 on November 9, 2004. Starting with version 5.0, a rapid release cycle was put into effect, resulting in a new major version release every six weeks. This was gradually accelerated further in late 2019, so that new major releases occur on four-week cycles starting in 2020.
VP9 is an open and royalty-free video coding format developed by Google.
A trusted execution environment (TEE) is a secure area of a main processor. It helps the code and data loaded inside it be protected with respect to confidentiality and integrity. Data confidentiality prevents unauthorized entities from outside the TEE from reading data, while code integrity prevents code in the TEE from being replaced or modified by unauthorized entities, which may also be the computer owner itself as in certain DRM schemes described in Intel SGX.
HTTPS Everywhere is a discontinued free and open-source browser extension for Google Chrome, Microsoft Edge, Mozilla Firefox, Opera, Brave, Vivaldi and Firefox for Android, which was developed collaboratively by The Tor Project and the Electronic Frontier Foundation (EFF). It automatically makes websites use a more secure HTTPS connection instead of HTTP, if they support it. The option "Encrypt All Sites Eligible" makes it possible to block and unblock all non-HTTPS browser connections with one click. Due to the widespread adoption of HTTPS on the World Wide Web, and the integration of HTTPS-only mode on major browsers, the extension was retired in January 2023.
Encrypted Media Extensions (EME) is a W3C specification for providing a communication channel between web browsers and the Content Decryption Module (CDM) software which implements digital rights management (DRM). This allows the use of HTML video to play back DRM-wrapped content such as streaming video services without the use of heavy third-party media plugins like Adobe Flash or Microsoft Silverlight. The use of a third-party key management system may be required, depending on whether the publisher chooses to scramble the keys.
OpenFlint is an open technology used for displaying ("casting") content from one computerized device on the display of another. Usually this would be from a smaller personal device to a device with a larger screen suitable for viewing by multiple spectators.
A progressive web application (PWA), or progressive web app, is a type of web app that can be installed on a device as a standalone application. PWAs are installed using the offline cache of the device's web browser.
DNS over HTTPS (DoH) is a protocol for performing remote Domain Name System (DNS) resolution via the HTTPS protocol. A goal of the method is to increase user privacy and security by preventing eavesdropping and manipulation of DNS data by man-in-the-middle attacks by using the HTTPS protocol to encrypt the data between the DoH client and the DoH-based DNS resolver. By March 2018, Google and the Mozilla Foundation had started testing versions of DNS over HTTPS. In February 2020, Firefox switched to DNS over HTTPS by default for users in the United States. In May 2020, Chrome switched to DNS over HTTPS by default.
The Xiaomi Pocophone F1 is a smartphone developed by Xiaomi Inc, a Chinese electronics company based in Beijing. It was announced on 22 August 2018 in New Delhi, India. Though part of Xiaomi's line of mid-range devices, it is equipped with high-end specifications. The device is available globally in limited numbers, except for India where it enjoys wide availability. The Pocophone was often considered to be a flagship model of the Redmi line of 2019, although officially marketed as a separate and distinct model.
AdGuard is an ad blocking service for Microsoft Windows, Linux, MacOS, Android and iOS. AdGuard is also available as a browser extension.
Nearby Share was a functionality developed by Google that allows data to be transferred between devices via Bluetooth, Wi-FI Direct or Internet. In 2024, it was merged into Samsung's Quick Share. It was available for Android, ChromeOS and Microsoft's Windows. It was first released on August 4, 2020.