سنتناول في هذا القسم استراتيجيتين مختلفتين لتشفير البيانات. والوسائط، وبعض الأمثلة العملية حول كيفية استخدامها مع برنامج FFmpeg شاكا طردر. استراتيجيتا التشفير التي سنناقشهما هما محو المفتاح: باستخدام خدمة مثل Google Widevine. كلتا الاستراتيجيتين عبارة عن شكل من أشكال إدارة الحقوق (DRM) للتحكم في الإجراءات التي يمكن للمستخدمين تنفيذها باستخدام الوسائط التابعة لك. ومع ذلك، أحدهما أقل أمانًا من الآخر بسبب طريقة تمرير المفاتيح هذا هو السبب في أن خدمة إدارة الحقوق الرقمية قد تكون أكثر منطقية.
خدمات إدارة الحقوق الرقمية الأساسية للويب هي Google Widevine وMicrosoft PlayPayment. وApple FairPlay، ولكننا لن نتناولها كلّها في هذه المقالة. ومع ذلك، إذا كنت تستهدف جميع المتصفحات الحديثة التي استخدام خدمات إدارة الحقوق الرقمية الثلاث
يتم التحويل والتشفير باستخدام التطبيقات التالية:
محو تشفير المفتاح
أولاً، يجب أن تكون لديك فهم جيد لماهية المفتاح الخفيف وما هو غير ذلك قبل استخدامه. عندما لا تريد استخدام إحدى خدمات إدارة الحقوق الرقمية الحالية أن يكون التشفير الأساسي للوسائط خيارًا مناسبًا، فيمكنك استخدام ميزة "محو المفتاح". لَكِنْ، فتذكر أن هذا النوع من التشفير لا يوفر المستوى ذاته من الأمان كاستخدام إحدى خدمات إدارة الحقوق الرقمية. وذلك لأنّ زوج قيمة المفتاح غير مشفرة تحت مفتاح آخر، على عكس المفاتيح المُشفرة التي يتم إنشاؤها بواسطة مفتاح فك التشفير المُخزن على خادم الترخيص. بالإضافة إلى ذلك، يرسل "Clear Key" زوج قيمة المفتاح كنص عادي، لذا أثناء تشفير الوسائط، فك التشفير ليس سرًا.
إنشاء مفتاح
يمكنك استخدام الطريقة نفسها لإنشاء مفتاح لكل من DASH وHLS. يمكنك إجراء ذلك باستخدام OpenSSL. سيؤدي ما يلي إلى إنشاء مفتاح تشفير مكون من 16 قيمة سداسية عشرية.
openssl rand -hex 16 > media.key
إنشاء حدث IV
بعد ذلك، يمكننا إنشاء متجه تهيئة (IV).
openssl rand -hex 16
6143b5373a51cb46209cfed0d747da66
التشفير باستخدام مفتاح واضح
يستخدم المثال التالي Shaka Packager مع مفاتيح غير منسقة، حيث keys
و
يتم إرسال key_ids
إلى Shaka Packager مباشرةً. اقرأ مستندات
لمعرفة المزيد من الأمثلة.
بالنسبة إلى علامة key
، استخدِم المفتاح الذي تم إنشاؤه سابقًا، والذي يتم تخزينه في media.key
.
الملف. ولكن عند إدخاله في سطر الأوامر، تأكد من إزالة
مسافة بيضاء. بالنسبة إلى علامة key_id
، كرِّر القيمة media.id
أو استخدِم القيمة IV.
التي تم إنشاؤها أعلاه.
packager \
input=glocken.mp4,stream=audio,output=glockena.m4a \
input=glocken.mp4,stream=video,output=glockenv.mp4 \
--enable_fixed_key_encryption \
--keys label=audio:key=INSERT_AUDIO_KEY_HERE:key_id=INSERT_AUDIO_KEY_ID_HERE,label=video:key=INSERT_VIDEO_KEY_HERE:key_id=INSERT_VIDEO_KEY_ID_HERE
إنشاء ملف معلومات أساسية
لتشفير بروتوكول HLS، ستحتاج إلى ملف معلومات المفتاح بالإضافة إلى ملف المفتاح. حاسمة
ملف المعلومات الأساسية هو ملف نصي بالتنسيق أدناه. يجب أن يحتوي على
الإضافة .keyinfo
. مثلاً: encrypt.keyinfo
key URI
key file path
private key
معرّف الموارد المنتظم (URI) الرئيسي هو مكان media.key
(الذي تم إنشاؤه أعلاه)
الموجودة على خادمك. مسار ملف المفتاح هو موقعه بالنسبة إلى المفتاح
معلومات الاتصال. أخيرًا، المفتاح الخاص هو محتوى media.key
أو الملف نفسه الذي أنشأته من قبل. على سبيل المثال:
https://example.com/keys/media.key
/path/to/media.key
6143b5373a51cb46209cfed0d747da66
تشفير بروتوكول HLS
packager \
'input=input.mp4,stream=video,segment_template=output$Number$.ts,playlist_name=video_playlist.m3u8' \
'input=input.mp4,stream=audio,segment_template=output_audio$Number$.ts,playlist_name=audio_playlist.m3u8,hls_group_id=audio,hls_name=ENGLISH' \
--hls_master_playlist_output="master_playlist.m3u8" \
--hls_base_url="http://localhost:5000/"
سيقبل هذا الأمر مفتاحًا مكونًا من 16 أو 32 حرفًا.
ffmpeg -i myvideo.mov -c:v libx264 -c:a aac -hls_key_info_file encrypt.keyinfo myvideo.m3u8
تشفير Widevine
أنت الآن تعرف المقصود بتشفير "Clear Key" ومتى يتم استخدامه. متى يجب استخدام خدمة إدارة الحقوق الرقمية (DRM) للحصول على مزيد من الأمان؟ هذا هو المكان الذي تقوم فيه Widevine أو أي خدمة أخرى سيتم استخدامه لتشفير الوسائط وفك تشفيرها بأمان. يدعم Widevine استخدام MPEG-DASH بروتوكول HLS وهو برنامج إدارة الحقوق الرقمية من Google يتم استخدام Widevine من قِبل متصفّح Google Chrome وFirefox على الويب. وAndroid MediaDRM وAndroid TV والأجهزة الإلكترونية الاستهلاكية الأخرى التي تستخدم إضافات الوسائط المشفرة وإضافات مصدر الوسائط، حيث تقوم Widevine بفك تشفير المحتوى.
التشفير باستخدام Widevine
استخدمت معظم الأمثلة في هذه المقالة تشفير "المفتاح الواضح". ومع ذلك، بالنسبة لـ Widevine يريد استبدال الخيارات التالية.
--enable_fixed_key_encryption \
--enable_fixed_key_decryption \
--keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE
كل شيء في أمر إزالة تعدد الإرسال (demux) باستثناء اسم الملفات
يجب نسخ العلامة --content-id
من المثال بالضبط. إنّ عمر --content-id
هو 16 عامًا
أو 32 رقمًا سداسيًا عشريًا عشوائيًا. استخدِم المفاتيح المتوفّرة هنا بدلاً من المفاتيح الخاصة بك. قراءة Shaka
مستندات Packager عن استخدام خادم مفاتيح Widevine للاطّلاع على المزيد من الأمثلة.
قم بتصفية (فصل) الصوت والفيديو، وتشفير الملفات الجديدة، وإخراج ملف وصف عرض الوسائط (MPD).
packager \ input=tmp_glocken.mp4,stream=video,output=glocken_video.mp4 \ input=tmp_glocken.mp4,stream=audio,output=glocken_audio.m4a \ --enable_widevine_encryption \ --key_server_url "https://license.uat.widevine.com/cenc/getcontentkey/widevine_test" \ --content_id "fd385d9f9a14bb09" \ --signer "widevine_test" \ --aes_signing_key "1ae8ccd0e7985cc0b6203a55855a1034afc252980e970ca90e5202689f947ab9" \ --aes_signing_iv "d58ce954203b7c9a9a9d467f59839249"
إعادة دمج (الدمج) بين عمليات بث الصوت والفيديو في حال استخدام فيديو قد لا تحتاج إلى القيام بذلك.
ffmpeg -i glocken_video.mp4 -i glocken_audio.m4a -c copy glocke.mp4
تسلسل الإحالات الناجحة للوسائط
يعرض هذا القسم الأوامر المطلوبة للانتقال من ملف .mov
غير منسق إلى
الأصول المشفرة المضمنة في حزمة DASH أو HLS. من أجل وجود هدف
إنّنا نحوّل ملف مصدر إلى معدل نقل بيانات يبلغ 8 ميغابايت بدقة
بدقة 1080p (1920 × 1080). عدِّل هذه القيم وفقًا لاحتياجاتك.
DASH/WebM
تحويل نوع الملف وبرنامج الترميز.
عند تنفيذ هذا الطلب، يمكنك استخدام
liborbis
أوlibopus
لبرنامج ترميز الصوت.ffmpeg -i glocken.mov -c:v libvpx-vp9 -c:a libvorbis -b:v 8M -vf setsar=1:1 -f webm tmp_glocken.webm
أنشئ مفتاح تشفير واضحًا بالمفتاح.
openssl rand -hex 16 > media.key
قم بتصفية (فصل) الصوت والفيديو، وتشفير الملفات الجديدة، وإخراج ملف وصف عرض الوسائط (MPD).
packager \ input=tmp_glocken.webm,stream=video,output=glocken_video.webm \ input=tmp_glocken.webm,stream=audio,output=glocken_audio.webm \ --enable_fixed_key_encryption \ --enable_fixed_key_decryption \ --keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE \ --mpd_output glocken_webm_vod.mpd
إعادة دمج (الدمج) بين عمليات بث الصوت والفيديو في حال استخدام فيديو قد لا تحتاج إلى القيام بذلك.
ffmpeg -i glocken_video.webm -i glocken_audio.webm -c copy glocken.webm
DASH/MP4
تحويل نوع الملف وبرنامج ترميز الفيديو ومعدل نقل البيانات
ffmpeg -i glocken.mov -c:v libx264 -c:a aac -b:v 8M -strict -2 tmp_glocken.mp4
أنشئ مفتاح تشفير واضحًا بالمفتاح.
openssl rand -hex 16 > media.key
قم بتصفية (فصل) الصوت والفيديو، وتشفير الملفات الجديدة، وإخراج ملف وصف عرض الوسائط (MPD).
packager \ input=tmp_glocken.mp4,stream=video,output=glocken_video.mp4 \ input=tmp_glocken.mp4,stream=audio,output=glocken_audio.m4a \ --enable_fixed_key_encryption \ --enable_fixed_key_decryption \ --keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE \ --mpd_output glocken_mp4_vod.mpd
إعادة دمج (الدمج) بين عمليات بث الصوت والفيديو في حال استخدام فيديو قد لا تحتاج إلى القيام بذلك.
ffmpeg -i glocken_video.mp4 -i glocken_audio.m4a -c copy glocken.mp4
بروتوكول HLS/MP4
يتوافق HLS مع MP4 فقط، لذا يجب أولاً التحويل إلى حاوية MP4 برامج الترميز المتوافقة.
حوِّل نوع الملف وبرنامج ترميز الفيديو ومعدل نقل البيانات.
ffmpeg -i glocken.mov -c:v libx264 -c:a aac -b:v 8M -strict -2 glocken.mp4
أنشئ مفتاح تشفير واضحًا بالمفتاح.
openssl rand -hex 16 > media.key
إنشاء ملف معلومات أساسية
packager \ 'input=glocken.mp4,stream=video,segment_template=output$Number$.ts,playlist_name=video_playlist.m3u8' \ 'input=glocken.mp4,stream=audio,segment_template=output_audio$Number$.ts,playlist_name=audio_playlist.m3u8,hls_group_id=audio,hls_name=ENGLISH' \ --hls_master_playlist_output="master_playlist.m3u8" \ --hls_base_url="http://localhost:5000/" \ --enable_fixed_key_encryption \ --enable_fixed_key_decryption \ --keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE
كان ذلك كثيرًا لاستيعابه، ولكن نأمل أن تتمكن الآن من تشفير الوسائط بثقة. سنشرح لك بعد ذلك كيفية إضافة وسائط إلى موقعك الإلكتروني.