Widevine เป็นเทคโนโลยี DRM ที่พัฒนาโดย Google เพื่อปกป้องเนื้อหาวิดีโอจากการคัดลอกโดยไม่ได้รับอนุญาตบนอุปกรณ์มือถือ Smart TV และแพลตฟอร์มเว็บ การเข้ารหัสเนื้อหาจะดำเนินการผ่าน โมดูล CDM ซึ่งรองรับบนอุปกรณ์ 4 พันล้านเครื่องทั่วโลก เทคโนโลยี Widevine ช่วยให้มั่นใจในความเข้ากันได้กับ Android, iOS, Chrome และ Smart TV ทำให้บริการสตรีมมิ่งสามารถปกป้องเนื้อหาพรีเมียมบนทุกแพลตฟอร์ม
ประเด็นสำคัญ
Widevine เป็นเทคโนโลยี DRM ที่เป็นกรรมสิทธิ์ซึ่ง Google ซื้อกิจการในปี 2010 และได้กลายเป็นมาตรฐานโดยพฤตินัยสำหรับการปกป้องเนื้อหาวิดีโอในระบบนิเวศ Android บริการสตรีมมิ่งรายใหญ่ รวมถึง Netflix, Amazon Prime Video, Disney+ และ Hulu ใช้เพื่อป้องกันการคัดลอกและแจกจ่ายเนื้อหาโดยไม่ได้รับอนุญาต
Widevine รองรับการเข้ารหัส AES-128 CBC โดยใช้ คีย์เนื้อหา ที่ส่งไปยังอุปกรณ์ที่ได้รับอนุญาตผ่านช่องทางการอนุญาตใช้สิทธิ์ที่ปลอดภัยเท่านั้น ระบบให้การปกครองแบบครบวงจรตั้งแต่การเข้ารหัสบนเซิร์ฟเวอร์ไปจนถึงการถอดรหัสบนอุปกรณ์ของผู้ใช้
Widevine Technologies ก่อตั้งขึ้นในปี 1999 และเริ่มต้นพัฒนาโซลูชันสำหรับการปกป้องเนื้อหาบนแพลตฟอร์มโทรทัศน์เคเบิล หลังจากถูกซื้อกิจการโดย Google ในปี 2010 เทคโนโลยีได้รับการปรับให้เหมาะสมสำหรับ แพลตฟอร์มมือถือ และรวมเข้ากับระบบปฏิบัติการ Android ตั้งแต่เวอร์ชัน 4.4 KitKat ตั้งแต่ปี 2015 Widevine ได้กลายเป็นองค์ประกอบบังคับของการรับรอง Google Mobile Services
ในปี 2018 Google ได้เปิดตัว Widevine Modular DRM ซึ่งช่วยให้ผู้ผลิตอุปกรณ์สามารถใช้งานระดับการปกป้องที่แตกต่างกันด้วยฮาร์ดแวร์โดยไม่ต้องแก้ไขโค้ดระบบปฏิบัติการ ปัจจุบัน Widevine Modular รองรับบนอุปกรณ์มากกว่า 4 พันล้านเครื่องและเป็นกลไก DRM หลักบน Android
สถาปัตยกรรมของ Widevine ประกอบด้วยสามองค์ประกอบหลัก: Content Decryption Module (CDM), เซิร์ฟเวอร์ใบอนุญาต และเครื่องมือเข้ารหัสเนื้อหา CDM ดำเนินการถอดรหัสฝั่งไคลเอ็นต์และโต้ตอบกับ Trusted Execution Environment (TEE) ของฮาร์ดแวร์เพื่อจัดเก็บคีย์อย่างปลอดภัย
เซิร์ฟเวอร์ใบอนุญาตของ Google จัดการการออกคีย์ตามนโยบายของผู้ให้บริการเนื้อหา ซึ่งกำหนดข้อจำกัดด้านเวลา จำนวนอุปกรณ์ และคุณภาพการเล่น เครื่องมือเข้ารหัส เตรียมเนื้อหาฝั่งผู้ให้บริการ โดยบรรจุในรูปแบบ MPEG-DASH หรือ HLS ด้วยการเข้ารหัส CENC
กระบวนการปกป้อง เริ่มต้นในขั้นตอนการบรรจุเนื้อหา เมื่อไฟล์สื่อถูกเข้ารหัสโดยใช้คีย์เนื้อหาบนเซิร์ฟเวอร์ของผู้ให้บริการ สตรีมที่เข้ารหัสจะถูกส่งไปยังอุปกรณ์ของผู้ใช้ผ่าน CDM ซึ่ง CDM ขอใบอนุญาตจากเซิร์ฟเวอร์ใบอนุญาต
เซิร์ฟเวอร์ใบอนุญาตตรวจสอบความถูกต้องของอุปกรณ์และสิทธิ์ในการเข้าถึงเนื้อหา หากการตรวจสอบสำเร็จ เซิร์ฟเวอร์จะออก ใบอนุญาตพร้อมคีย์ ที่ CDM ใช้สำหรับการถอดรหัส ใบอนุญาตอาจมีข้อจำกัดเกี่ยวกับเวลาในการรับชมและความละเอียด
การแลกเปลี่ยนใบอนุญาตใน Widevine ถูกใช้งานผ่านโปรโตคอล EME (Encrypted Media Extensions) ในเบราว์เซอร์หรือผ่าน SDK บนแพลตฟอร์มมือถือ คำขอใบอนุญาต ถูกสร้างโดย CDM และส่งไปยังเซิร์ฟเวอร์ใบอนุญาตผ่าน HTTPS ซึ่งให้การปกป้องจากการสกัดกั้นคีย์ระหว่างการส่ง
เซิร์ฟเวอร์ประมวลผลคำขอและส่งคืนใบอนุญาตที่เข้ารหัสซึ่งสามารถถอดรหัสได้โดย CDM ของอุปกรณ์เท่านั้น การผูกฮาร์ดแวร์ ของคีย์กับอุปกรณ์เฉพาะป้องกันการถ่ายโอนไปยังแพลตฟอร์มอื่น
Widevine ใช้มาตรฐาน Common Encryption (CENC) ที่กำหนดใน ISO/IEC 23001-7 เพื่อให้มั่นใจในความเข้ากันได้กับรูปแบบ MPEG-DASH และ HLS การเข้ารหัส AES-128 ในโหมด CTR หรือ CBC ใช้สำหรับปกป้องสตรีมสื่อ
สำหรับการสร้างคีย์ ใช้ HKDF (HMAC-based Key Derivation Function) ซึ่งช่วยให้สร้างคีย์ที่ไม่ซ้ำกันสำหรับแต่ละเซกเมนต์ของเนื้อหา การรองรับ HLS ใน Widevine ถูกเพิ่มในเวอร์ชัน Modular 2.0 ซึ่งขยายความเข้ากันได้กับแพลตฟอร์ม Apple
@Throws
fun requestLicense(): ByteArray {
val drmSessionManager = mediaDrm.createSession(
sessionId,
List("keyRequestType", "init")
)
val request = mediaDrm.getKeyRequest(
sessionId,
schemeData.get("mimeType"),
KeyType.STREAMING,
mutableMapOf()
)
return licenseService.acquire(request.data)
}
Widevine กำหนด สามระดับความปลอดภัยที่แตกต่างกันในวิธีการดำเนินการเข้ารหัสและการประมวลผลเนื้อหา ระดับ L1 ให้การปกป้องสูงสุด L3 ให้การปกป้องต่ำสุด และ L2 อยู่ในตำแหน่งกึ่งกลาง
| ระดับ | ประเภทการปกป้อง | ข้อกำหนดของอุปกรณ์ | ความละเอียดสูงสุด |
|---|---|---|---|
| L1 | ฮาร์ดแวร์ | TEE ในระดับ SoC | 4K Ultra HD |
| L2 | ไฮบริด | TEE สำหรับคีย์, ซอฟต์แวร์สำหรับวิดีโอ | 1080p |
| L3 | ซอฟต์แวร์ | CDM ซอฟต์แวร์เท่านั้น | 720p |
ระดับ L1 ต้องการ Trusted Execution Environment (TEE) ในระดับฮาร์ดแวร์ ซึ่งดำเนินการเข้ารหัสทั้งหมด คีย์เนื้อหาไม่ออกจาก TEE เลย ป้องกันการสกัดแม้ว่าระบบปฏิบัติการหลักจะถูกบุกรุก
อุปกรณ์ที่ได้รับการรับรอง L1 สามารถเล่นเนื้อหาใน คุณภาพ 4K และ HDR เนื่องจากสตรีมวิดีโอที่ถอดรหัสแล้วถูกส่งไปยังเอาต์พุตวิดีโอที่ได้รับการปกป้องโดยตรงโดยไม่มีการเข้าถึงจากกระบวนการของผู้ใช้
ระดับ L3 ดำเนินการเข้ารหัสทั้งหมดด้วยซอฟต์แวร์ภายในพื้นที่ผู้ใช้ปกติ นี่เป็นโหมดที่ปลอดภัยน้อยที่สุด ซึ่งคีย์สามารถถูกสกัดจาก RAM ของอุปกรณ์ได้
Widevine L3 จำกัดคุณภาพการเล่นที่ 720p ทำให้เหมาะสำหรับการรับชมบนอุปกรณ์ระดับล่างหรือเบราว์เซอร์เดสก์ท็อปที่ไม่มีการปกป้องฮาร์ดแวร์
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
การรวม Widevine ในแอปพลิเคชันมือถือดำเนินการผ่าน API มาตรฐาน MediaDrm (Android) และ AVContentKeySession (iOS) ในกรณีส่วนใหญ่ นักพัฒนาไม่จำเป็นต้องทำงานกับ DRM โดยตรง — ไลบรารีของผู้เล่นเช่น ExoPlayer และ AVPlayer จัดการการอนุญาตใช้สิทธิ์โดยอัตโนมัติ
บน Android Widevine ถูกรวมผ่าน คลาส MediaDrm ซึ่งให้การเข้าถึง CDM โดยตรง สำหรับแอปพลิเคชันสตรีมมิ่ง แนะนำให้ใช้ ExoPlayer กับโมดูล DrmSessionManager ซึ่งจัดการคำขอใบอนุญาตโดยอัตโนมัติ
เมื่อเริ่มต้นผู้เล่น คุณต้องระบุ UUID สคีมา Widevine (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) และ URL เซิร์ฟเวอร์ใบอนุญาต ที่ผู้ให้บริการเนื้อหาให้ไว้ ExoPlayer จัดการวงจรการขอและต่ออายุใบอนุญาตโดยอัตโนมัติ
val drmLicenseUrl = "https://license.service.com/wv"
val mediaItem = MediaItem.Builder()
.setUri(Uri.parse(streamUrl))
.setDrmKeyRequestUrl(drmLicenseUrl)
.setDrmKeyRequestHeaders(
mapOf("Authorization" to token)
)
.build()
val exoPlayer = ExoPlayer.Builder(context)
.build()
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
บนแพลตฟอร์มเว็บ Widevine ทำงานผ่าน Media Source Extensions (MSE) และ Encrypted Media Extensions (EME) เบราว์เซอร์ที่ใช้ Chromium มี Widevine CDM ในตัว และนักพัฒนาเพียงแค่เริ่มต้นเซสชัน EME ด้วยการกำหนดค่าที่ถูกต้อง
ในการใช้ Widevine ในเบราว์เซอร์ คุณต้องระบุตัวเริ่มต้นใบอนุญาตด้วย ประเภท keySystem `com.widevine.alpha` หลังจากสร้างอินสแตนซ์ MediaKeys เบราว์เซอร์จะจัดการคำขอใบอนุญาตโดยอัตโนมัติ
เมื่อรวม Widevine สิ่งสำคัญคือต้องจัดการข้อผิดพลาดใบอนุญาตที่เกิดขึ้นเนื่องจากการขาดสิทธิ์เข้าถึง การหมดอายุการสมัครสมาชิก หรือความไม่เข้ากันของอุปกรณ์อย่างถูกต้อง ข้อผิดพลาด TYPE_EXPIRED_LICENSE ต้องการการอัปเดตใบอนุญาตผ่านการขอใหม่ไปยังเซิร์ฟเวอร์ ในขณะที่ TYPE_OUTPUT_NOT_ALLOWED บ่งชี้ถึงความไม่เข้ากันของเอาต์พุตวิดีโอกับนโยบาย DRM
แนะนำให้ใช้กลไกการลองใหม่ด้วย backoff แบบเอกซ์โพเนนเชียลสำหรับข้อผิดพลาดเครือข่ายชั่วคราวและแสดงข้อความที่ชัดเจนแก่ผู้ใช้เมื่อใบอนุญาตล้มเหลวถาวร การบันทึกข้อผิดพลาดเซสชัน DRM ช่วยให้ผู้ให้บริการเนื้อหาระบุปัญหาของอุปกรณ์และปรับนโยบายให้เหมาะสม
Widevine แข่งขัน กับ FairPlay ของ Apple และ PlayReady ของ Microsoft โดยเป็นสามโซลูชัน DRM หลักในตลาดแพลตฟอร์มมือถือ แต่ละเทคโนโลยีมีข้อดีและข้อจำกัดของตนเองที่เกี่ยวข้องกับระบบนิเวศของแพลตฟอร์ม
| คุณลักษณะ | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| ผู้พัฒนา | Apple | Microsoft | |
| แพลตฟอร์มหลัก | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| ระดับสูงสุด | L1 (4K) | เทียบเท่า L1 (4K) | SL3000 (4K) |
| การปกป้องฮาร์ดแวร์ | TEE | Secure Enclave | TPM + TEE |
การเลือก DRM ขึ้นอยู่กับแพลตฟอร์มเป้าหมายของแอปพลิเคชัน สำหรับโปรเจกต์ที่เน้น Android เป็นหลัก Widevine เป็นตัวเลือกตามธรรมชาติเนื่องจากถูกติดตั้งไว้ล่วงหน้าบนอุปกรณ์ที่ได้รับการรับรองทั้งหมดที่มี Google Mobile Services และไม่ต้องเสียค่าธรรมเนียมใบอนุญาตเพิ่มเติม
สำหรับโปรเจกต์ข้ามแพลตฟอร์ม มักใช้ แนวทางหลาย DRM กับตัวรวบรวมใบอนุญาตเช่น Axinom, EZDRM และ Vualto ซึ่งให้ API ที่เป็นหนึ่งเดียวสำหรับทำงานกับทั้งสามระบบ DRM ซึ่งช่วยลดความซับซ้อนในการรวมและรวมศูนย์การจัดการใบอนุญาต
คำถามที่พบบ่อย
Widevine เป็นเทคโนโลยี DRM ของ Google ที่ออกแบบมาเพื่อปกป้องเนื้อหาวิดีโอดิจิทัลจากการคัดลอกโดยไม่ได้รับอนุญาต บริการสตรีมมิ่งใช้เพื่อเข้ารหัสวิดีโอและจัดการการเข้าถึงผ่านระบบใบอนุญาต
Widevine รองรับ สามระดับความปลอดภัย: L1 ด้วยการเข้ารหัสฮาร์ดแวร์ใน TEE, L2 ด้วยแนวทางไฮบริด และ L3 ด้วยการใช้งานซอฟต์แวร์ทั้งหมด L1 อนุญาตให้เล่นเนื้อหา 4K, L3 จำกัดที่คุณภาพ 720p
คุณสามารถตรวจสอบระดับ Widevine บน Android ผ่าน คลาส MediaDrm โดยขอคุณสมบัติ securityLevel โดยสร้างอินสแตนซ์ MediaDrm ด้วย UUID ของ Widevine และเรียก getPropertyString หรือใช้แอปของบุคคลที่สามเช่น DRM Info
Widevine พัฒนาโดย Google สำหรับ Android และ Chrome ในขณะที่ FairPlay สำหรับ iOS, tvOS และ Safari ทั้งคู่รองรับการเข้ารหัสฮาร์ดแวร์และ 4K แต่ Widevine แพร่หลายมากกว่าบนอุปกรณ์ Android ในขณะที่ FairPlay เป็นมาตรฐานโดยพฤตินัยในระบบนิเวศ Apple
ในการใช้ Widevine ในแอปพลิเคชันมือถือ ไม่จำเป็นต้องมีใบอนุญาตแยกต่างหาก — เทคโนโลยีนี้มีอยู่ในอุปกรณ์ Android ที่ได้รับการรับรองและ Chrome ค่าธรรมเนียมจะเรียกเก็บจากผู้ให้บริการเนื้อหาสำหรับการใช้เซิร์ฟเวอร์ใบอนุญาตเท่านั้น
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม