Widevine হল Google দ্বারা তৈরি একটি DRM প্রযুক্তি যা মোবাইল ডিভাইস, স্মার্ট TV এবং ওয়েব প্ল্যাটফর্মে ভিডিও কন্টেন্টকে অননুমোদিত কপি থেকে রক্ষা করে। কন্টেন্ট এনক্রিপশন CDM মডিউল এর মাধ্যমে সম্পাদিত হয়, যা বিশ্বব্যাপী 4 বিলিয়ন ডিভাইসে সমর্থিত। Widevine প্রযুক্তি Android, iOS, Chrome এবং স্মার্ট TV এর সাথে সামঞ্জস্য নিশ্চিত করে, যা স্ট্রিমিং পরিষেবাগুলিকে যেকোনো প্ল্যাটফর্মে প্রিমিয়াম কন্টেন্ট রক্ষা করতে দেয়।
মূল পয়েন্ট
Widevine একটি মালিকানাধীন DRM প্রযুক্তি যা Google 2010 সালে অর্জিত করেছিল এবং Android ইকোসিস্টেমে ভিডিও কন্টেন্ট রক্ষার জন্য ডি-ফ্যাক্টো মান হয়ে উঠেছে। এটি Netflix, Amazon Prime Video, Disney+ এবং Hulu সহ প্রধান স্ট্রিমিং পরিষেবাগুলি দ্বারা কন্টেন্টের অননুমোদিত কপি এবং বিতরণ রোধ করতে ব্যবহৃত হয়।
Widevine কন্টেন্ট কী ব্যবহার করে AES-128 CBC এনক্রিপশন সমর্থন করে যা শুধুমাত্র অনুমোদিত ডিভাইসে একটি নিরাপদ লাইসেন্সিং চ্যানেলের মাধ্যমে প্রেরণ করা হয়। সিস্টেমটি সার্ভারে এনক্রিপশন থেকে ব্যবহারকারীর ডিভাইসে ডিকোডিং পর্যন্ত এন্ড-টু-এন্ড সুরক্ষা প্রদান করে।
Widevine Technologies 1999 সালে প্রতিষ্ঠিত হয়েছিল এবং মূলত কেবল টেলিভিশন প্ল্যাটফর্মে কন্টেন্ট সুরক্ষার জন্য সমাধান তৈরি করেছিল। 2010 সালে Google দ্বারা অধিগ্রহণের পর, প্রযুক্তিটি মোবাইল প্ল্যাটফর্মের জন্য অভিযোজিত হয়েছিল এবং সংস্করণ 4.4 KitKat থেকে Android OS এ সংহত করা হয়েছিল। 2015 সাল থেকে, Widevine Google Mobile Services সার্টিফিকেশনের একটি বাধ্যতামূলক উপাদান হয়ে উঠেছে।
2018 সালে, Google Widevine Modular DRM চালু করেছিল, যা ডিভাইস নির্মাতাদের OS কোড পরিবর্তন না করে হার্ডওয়্যারে বিভিন্ন সুরক্ষা স্তর বাস্তবায়নের অনুমতি দেয়। আজ, Widevine Modular 4 বিলিয়নেরও বেশি ডিভাইসে সমর্থিত এবং Android এ প্রাথমিক DRM প্রক্রিয়া।
Widevine আর্কিটেকচারে তিনটি মূল উপাদান রয়েছে: Content Decryption Module (CDM), লাইসেন্স সার্ভার এবং কন্টেন্ট এনক্রিপশন টুল। CDM ক্লায়েন্ট পক্ষে ডিক্রিপশন সম্পাদন করে এবং নিরাপদ কী সংরক্ষণের জন্য হার্ডওয়্যার Trusted Execution Environment (TEE) এর সাথে ইন্টারঅ্যাক্ট করে।
Google লাইসেন্স সার্ভার কন্টেন্ট প্রদানকারীর নীতির উপর ভিত্তি করে কী প্রদান পরিচালনা করে, যা সময়, ডিভাইসের সংখ্যা এবং প্লেব্যাক মানের উপর বিধিনিষেধ নির্ধারণ করে। এনক্রিপশন টুল প্রদানকারী পক্ষে কন্টেন্ট প্রস্তুত করে, এটি CENC এনক্রিপশন সহ MPEG-DASH বা HLS ফরম্যাটে প্যাকেজ করে।
সুরক্ষা প্রক্রিয়া কন্টেন্ট প্যাকেজিং পর্যায়ে শুরু হয়, যখন মিডিয়া ফাইলটি প্রদানকারীর সার্ভারে একটি কন্টেন্ট কী ব্যবহার করে এনক্রিপ্ট করা হয়। এনক্রিপ্টেড স্ট্রিম CDN এর মাধ্যমে ব্যবহারকারীর ডিভাইসে প্রেরণ করা হয়, যেখানে CDM লাইসেন্স সার্ভার থেকে একটি লাইসেন্স অনুরোধ করে।
লাইসেন্স সার্ভার ডিভাইসের প্রামাণিকতা এবং কন্টেন্ট অ্যাক্সেসের অধিকার যাচাই করে। যদি পরীক্ষা সফল হয়, সার্ভার একটি কী সহ লাইসেন্স জারি করে যা CDM ডিক্রিপশনের জন্য ব্যবহার করে। লাইসেন্সে দেখার সময় এবং রেজোলিউশনের উপর বিধিনিষেধ থাকতে পারে।
Widevine এ লাইসেন্স বিনিময় ব্রাউজারে EME (Encrypted Media Extensions) প্রোটোকল বা মোবাইল প্ল্যাটফর্মে SDK এর মাধ্যমে বাস্তবায়িত হয়। লাইসেন্স অনুরোধ CDM দ্বারা তৈরি হয় এবং HTTPS এর মাধ্যমে লাইসেন্স সার্ভারে পাঠানো হয়, যা ট্রানজিটে কী আটকানো থেকে সুরক্ষা নিশ্চিত করে।
সার্ভার অনুরোধ প্রক্রিয়া করে এবং একটি লাইসেন্স ফেরত দেয় যা এনক্রিপ্টেড এবং শুধুমাত্র ডিভাইসের CDM দ্বারা ডিক্রিপ্ট করা যায়। একটি নির্দিষ্ট ডিভাইসের সাথে কী এর হার্ডওয়্যার বন্ধন এটিকে অন্যান্য প্ল্যাটফর্মে স্থানান্তরিত হতে বাধা দেয়।
Widevine ISO/IEC 23001-7 এ সংজ্ঞায়িত Common Encryption (CENC) মান ব্যবহার করে, যা MPEG-DASH এবং HLS ফরম্যাটের সাথে সামঞ্জস্য নিশ্চিত করে। মিডিয়া স্ট্রিম রক্ষার জন্য CTR বা CBC মোডে AES-128 এনক্রিপশন ব্যবহার করা হয়।
কী ডেরিভেশনের জন্য HKDF (HMAC-based Key Derivation Function) ব্যবহার করা হয়, যা কন্টেন্টের প্রতিটি সেগমেন্টের জন্য অনন্য কী তৈরি করতে দেয়। HLS সমর্থন Modular সংস্করণ 2.0 এর সাথে Widevine এ যুক্ত করা হয়েছিল, যা 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 | হার্ডওয়্যার | SoC স্তরে TEE | 4K Ultra HD |
| L2 | হাইব্রিড | কী এর জন্য TEE, ভিডিওর জন্য সফ্টওয়্যার | 1080p |
| L3 | সফ্টওয়্যার | শুধুমাত্র সফ্টওয়্যার CDM | 720p |
স্তর L1 এর জন্য হার্ডওয়্যার স্তরে Trusted Execution Environment (TEE) প্রয়োজন, যেখানে সমস্ত ক্রিপ্টোগ্রাফিক অপারেশন সম্পাদিত হয়। কন্টেন্ট কী কখনও TEE ছেড়ে যায় না, যা মূল OS আপোস করা হলেও সেগুলি নিষ্কাশন প্রতিরোধ করে।
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 সংহতকরণ স্ট্যান্ডার্ড MediaDrm (Android) এবং AVContentKeySession (iOS) API এর মাধ্যমে সম্পাদিত হয়। বেশিরভাগ ক্ষেত্রে, ডেভেলপারকে সরাসরি DRM নিয়ে কাজ করার প্রয়োজন হয় না — ExoPlayer এবং AVPlayer এর মতো প্লেয়ার লাইব্রেরিগুলি স্বয়ংক্রিয়ভাবে লাইসেন্সিং পরিচালনা করে।
Android এ, Widevine MediaDrm ক্লাসের মাধ্যমে সংহত হয়, যা CDM এ সরাসরি অ্যাক্সেস প্রদান করে। স্ট্রিমিং অ্যাপ্লিকেশনের জন্য, DrmSessionManager মডিউল সহ ExoPlayer ব্যবহার করার সুপারিশ করা হয়, যা স্বয়ংক্রিয়ভাবে লাইসেন্স অনুরোধ পরিচালনা করে।
প্লেয়ার আরম্ভ করার সময়, Widevine স্কিম UUID (`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 নীতির সাথে ভিডিও আউটপুটের অসামঞ্জস্য নির্দেশ করে।
অস্থায়ী নেটওয়ার্ক ত্রুটিগুলির জন্য এক্সপোনেনশিয়াল ব্যাকঅফ সহ পুনরায় চেষ্টা প্রক্রিয়া বাস্তবায়ন এবং স্থায়ী লাইসেন্সিং ব্যর্থতায় ব্যবহারকারীকে একটি স্পষ্ট বার্তা দেখানোর সুপারিশ করা হয়। DRM সেশন ত্রুটি লগিং কন্টেন্ট প্রদানকারীদের ডিভাইস সমস্যা সনাক্ত করতে এবং নীতিগুলি অপ্টিমাইজ করতে সহায়তা করে।
Widevine প্রতিযোগিতা করে Apple এর FairPlay এবং Microsoft এর PlayReady এর সাথে, মোবাইল প্ল্যাটফর্ম বাজারে তিনটি প্রধান 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 এর মতো লাইসেন্স এগ্রিগেটর সহ, যা তিনটি DRM সিস্টেমের সাথে কাজ করার জন্য একটি ইউনিফাইড API প্রদান করে। এটি সংহতকরণ জটিলতা হ্রাস করে এবং লাইসেন্স ব্যবস্থাপনাকে কেন্দ্রীভূত করে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Widevine হল Google এর একটি DRM প্রযুক্তি যা ডিজিটাল ভিডিও কন্টেন্টকে অননুমোদিত কপি থেকে রক্ষা করার জন্য ডিজাইন করা হয়েছে। এটি স্ট্রিমিং পরিষেবাগুলি দ্বারা ভিডিও এনক্রিপ্ট করতে এবং লাইসেন্সিং সিস্টেমের মাধ্যমে অ্যাক্সেস পরিচালনা করতে ব্যবহৃত হয়।
Widevine তিনটি নিরাপত্তা স্তর সমর্থন করে: TEE তে হার্ডওয়্যার এনক্রিপশন সহ L1, হাইব্রিড পদ্ধতি সহ L2 এবং সম্পূর্ণ সফ্টওয়্যার বাস্তবায়ন সহ L3। L1 4K কন্টেন্ট প্লেব্যাকের অনুমতি দেয়, L3 720p গুণমানে সীমাবদ্ধ।
আপনি MediaDrm ক্লাসের মাধ্যমে securityLevel প্রপার্টি অনুরোধ করে Android এ Widevine স্তর পরীক্ষা করতে পারেন। এর জন্য, Widevine UUID সহ একটি MediaDrm ইন্সট্যান্স তৈরি করুন এবং getPropertyString কল করুন, অথবা DRM Info এর মতো তৃতীয় পক্ষের অ্যাপ ব্যবহার করুন।
Widevine Google দ্বারা Android এবং Chrome এর জন্য তৈরি, যখন FairPlay iOS, tvOS এবং Safari এর জন্য। উভয়ই হার্ডওয়্যার এনক্রিপশন এবং 4K সমর্থন করে, কিন্তু Widevine Android ডিভাইসে বেশি বিস্তৃত, যখন FairPlay Apple ইকোসিস্টেমে ডি-ফ্যাক্টো মান।
মোবাইল অ্যাপ্লিকেশনে Widevine ব্যবহারের জন্য আলাদা কোনো লাইসেন্সের প্রয়োজন নেই — প্রযুক্তিটি প্রত্যয়িত Android ডিভাইস এবং Chrome এ নির্মিত। ফি শুধুমাত্র কন্টেন্ট প্রদানকারীদের কাছ থেকে লাইসেন্স সার্ভার ব্যবহারের জন্য নেওয়া হয়।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন