اذهب إلى المحتوى

السؤال

نشر

من فضلكم ارجو الساعدة لمن لديه خبرة في تشفير
الحماية تكون عن طريق العناوين الموقعة او منتهية صلاحية يعني token expre او المشفرة عبر مفتاح AES-128
مثال على شرحات التي اريد ان يتم شرح طريقة تطبيقها
http://hlsbook.net/how-to-encrypt-hls-video-with-ffmpeg/
https://gist.github.com/mrbar42/09c149059f72da2f09e652d4c5079919
https://www.keycdn.com/support/secure-token

Recommended Posts

  • 0
نشر

مرحباً!

تشفير الفيديو وحمايته عبر العناوين الموقعة أو التشفير بالمفتاح يمكن أن يكون موضوعًا معقدًا بعض الشيء، لكن سأبسط الأمور لك بشكل يناسب فهمك. سأستعرض كيفية تطبيق الحماية باستخدام كل من تشفير الفيديو بـ AES-128 و العناوين الموقعة.

1. تشفير الفيديو باستخدام AES-128

لتشفير فيديوهات HLS (HTTP Live Streaming) باستخدام خوارزمية AES-128، يمكنك اتباع الخطوات التالية:

الخطوة 1: توليد مفتاح التشفير

أولاً، تحتاج إلى توليد مفتاح تشفير عشوائي. يمكنك استخدام OpenSSL لتوليد مفتاح:

openssl rand -hex 16

سيقوم هذا الأمر بإنشاء مفتاح عشوائي بطول 128 بت، وهو ما تحتاجه لتشفير الفيديو.

الخطوة 2: إنشاء ملف مفتاح التشفير

احفظ المفتاح في ملف نصي. على سبيل المثال، encryption.key.

الخطوة 3: استخدام FFmpeg لتشفير الفيديو

افترض أن لديك ملف فيديو باسم input.mp4 وترغب في تحويله إلى HLS مع تشفير AES-128. يمكنك استخدام FFmpeg لتنفيذ ذلك:

ffmpeg -i input.mp4 -c:a aac -c:v h264 -hls_key_info_file key_info.txt -hls_segment_filename 'segment_%03d.ts' -hls_playlist_type vod output.m3u8

في هذا المثال، key_info.txt هو ملف يحتوي على معلومات حول مفتاح التشفير. يمكنك إنشاء هذا الملف بالشكل التالي: 

key.bin
https://example.com/keys/key.bin

حيث:

key.bin هو اسم الملف الذي يحتوي على مفتاح التشفير.

الرابط هو المكان الذي ستقوم بتحميل المفتاح منه (عادة ما يكون خادمًا آمنًا).

الخطوة 4: توفير المفتاح عبر HTTP

يجب أن يكون ملف المفتاح (key.bin) متاحًا عبر HTTP على الخادم الخاص بك. تأكد من توفير هذا الملف في موقع آمن وسرّي.

2. حماية عبر العناوين الموقعة (Token-based Protection)

لحماية الفيديو باستخدام عناوين موقعة، تحتاج إلى اتباع الخطوات التالية:

الخطوة 1: توليد توقيع URL

ستحتاج إلى توليد توقيع URL يكون صالحًا لفترة زمنية محددة. يُستخدم هذا التوقيع لتحديد من يمكنه الوصول إلى الفيديو. إليك مثالًا باستخدام Node.js:

const crypto = require('crypto');
const base64url = require('base64url');

// Generate a secure token
function generateSignedUrl(url, secretKey, expiresInSeconds) {
  const expires = Math.floor(Date.now() / 1000) + expiresInSeconds;
  const signature = crypto.createHmac('sha256', secretKey)
                           .update(`${url}?expires=${expires}`)
                           .digest('hex');
  
  const signedUrl = `${url}?expires=${expires}&signature=${signature}`;
  return signedUrl;
}

// Usage example
const url = 'https://example.com/stream/video.m3u8';
const secretKey = 'your_secret_key';
const expiresInSeconds = 3600; // 1 hour

const signedUrl = generateSignedUrl(url, secretKey, expiresInSeconds);
console.log(signedUrl);

الخطوة 2: التحقق من التوقيع عند الطلب

عند طلب الفيديو، تحقق من التوقيع والتأكد من صلاحية التوقيع قبل تقديم المحتوى. يمكنك استخدام نفس الطريقة للتحقق من التوقيع.

function verifySignedUrl(url, signature, secretKey) {
  const parsedUrl = new URL(url);
  const expires = parsedUrl.searchParams.get('expires');
  const validSignature = crypto.createHmac('sha256', secretKey)
                               .update(`${url}?expires=${expires}`)
                               .digest('hex');
  
  return validSignature === signature && Date.now() / 1000 < expires;
}

// Usage example
const requestUrl = 'https://example.com/stream/video.m3u8?expires=1627074600&signature=valid_signature';
const signature = new URL(requestUrl).searchParams.get('signature');

if (verifySignedUrl(requestUrl, signature, secretKey)) {
  console.log('URL is valid');
} else {
  console.log('URL is invalid');
}

النصائح:

تأمين مفتاح التشفير: تأكد من حماية مفتاح التشفير جيدًا ولا تضعه في مكان يمكن الوصول إليه بسهولة.

استخدام عناوين موقعة بشكل آمن: تأكد من استخدام خوارزميات التشفير القوية وتحديث السر بشكل دوري.

التحقق من صلاحية التوقيع: تحقق من التوقيع والتأكد من أنه لم يتجاوز وقت الصلاحية.

تحديث المفاتيح بانتظام: استخدم مفاتيح جديدة بانتظام لضمان الأمان.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...