پیاده سازی ویدیو انکریپت شده چگونه است؟

در یک اپ موبایل که کلی ویدیو آموزشی توشه و به صورت آنلاین از سرور خودشون پخش میشه، میخواهیم فیچر دانلود ویدیو و نمایش به صورت آفلاین رو هم بهش اضافه کنیم. مثل فیلیمو و نماوا. کسی ایده ای داره چطوره پیاده سازیش؟
نکته مهم اینکه ویدیو دانلود شده با برنامه ما فقط قابل دیدن باشه.

2 Likes

خیلی راحته. یه دکمه‌ی دانلود میخواد.

خب این خیلی سختش میکنه. نیاز به پیاده‌سازی چیزای خیلی پیچیده دارید که فقط شرکتهای بزرگ به وسیله‌ی DRM تونستن پیادش کنن و اونم باید بگم که برای همشون کرک وجود داره.
به طور خلاصه چیزی که اومد توی کامپیوتر/گوشی من، مال منه. شما نمیتونید ۱۰۰٪ کنترلش کنید. فقط میتونید کار منو سخت کنید.

چیزایی که دیگران استفاده میکنن به طور خلاصه و جامع (چون جزئیاتشو نمیدونم) به این شرحه:

  • فایل رو روی سرور انکد میکنن و روی دستگاه توسط نرم‌افزار خودشون دیکد میشه.
  • موقع انکد کردن، برای هر دستگاهی به طور جداگانه اینکارو انجام میدن و از الگوریتمی استفاده میکنن که بجز خود فایل، ورودیهای دیگه‌ای مثل UUID دستگاه (حالا میتونه MAC Address‌یا هرچیزی باشه) استفاده میکنن که این فایل فقط داخل همین یه دونه دستگاه بتونه باز بشه.
  • دستگاه (نرم‌افزار شما داخل دستگاه) اون فایل رو میگیره و با الگوریتمی که خودش میدونه و کلیدی که خودش داره به اضافه‌ی UUID دستگاه، اقدام به decrypt فایل میکنه.

نگاهی به آینده:
یه نفر سورسهای نرم‌افزار شما رو میخونه (هر زبانی که باشه، توی هر پلتفرمی، یه disassembler یا همچین چیزی براش هست) میفهمه الگوریتم چیه و ورودیهاش چی هستن، یه نیمچه-برنامه مینویسه که همون کار رو انجام بده و فایل انکریپت شده رو باز کنه و به صورت یه ویدیوی خوشگل mp4 ذخیره کنه روی دستگاه.
اون فایل رو یه جای دیگه آپلود میکنه که همه استفاده کنن.

این اتفاقیه که برای تمام سرویسهایی که من میشناسم افتاده.
ویدیوهای یوتیوب رو میشه با یه پلاگین فایرفاکس دانلود کرد (یا کامند لاین لینوکس: youtubedl)
موزیکهای spotify و کتابهای amazon و خلاصه همه‌چی.

خلاصه بگم که به بدبختیش نمی‌ارزه. نمیتونید business plan خودتون رو یه کم تغییر بدید که درآمدتون صرفا از استفاده‌ی ویدیوها نباشه؟ مثلا فایل آموزشی ارائه بدید در کنارش یا یه forum سوال و جواب یا همچین چیزی که برای اون از کاربر پول بگیرید.

3 Likes

من هم باهات موافقم پویا جان و اینو من خودم به تمام کسایی که میخوان این سبکی کار کنن گفتم و میگم با دونستن این قضیه کارفرما میخواد یکم سختش کنه انتشار فایلهاشو.

به نظرم اینهمه جلو هم نمیخواد بریم
کافیه از صفحه اسکرین رکورد کنه یا حتی اگه اونم تونسته باشی دسترسیشو بگیری با یک دوربین از صفحه ریکورد کنه.

در کل با اگاهی به این مسائل میخوام جزئیات فنیشو بدونم و این که با چه الگوریتمی این کار و میکنن و این موارد.

2 Likes

یک نمونه سایت ایرانی هست که آموزش اندروید می سازه اومده کلا یک پلیر ساخته کد کرده باید به اینترنت وصل باشی و … باز من دیدم آموزش هاشو قرار دادن ملت این ور اون ور بهتره مشتری راضی کنید فایده ای نداره. الان ویدیو در اون سطح پخش نمی شه و بیشتر کارفرما هایی که این مشکلات براشون مهمه که بیزنس پلنشون مشکل داره نمی تونند بر اساس موارد دیگه مثل پشتیبانی و … ویدیو هارو بفروشند

1 Likes

شرکتهای بزرگ میان الگوریتمهای اختصاصی خودشونو تولید میکنن.
شما هم اگه یه مقدار تجربه توی cryptography دارید (فقط درحد استفاده از الگوریتمها و یه کم عمیق‌شدن توی مباحثش) میتونید چندتا الگوریتم رو کنار هم قرار بدید یه چیزی سرهم کنید برای این پروژه.
قطعا خوب در نمیاد و هزارتا راه کرک براش هست، برای همین حرفه‌ای‌های دنیای کریپتوگرافی همیشه هنجره‌ی خودشونو پاره میکنن میگن «الگوریتم از خودتون در نیارید بیاید از اینایی که ما دادیم استفاده کنید.»

یه راه ساده‌تر هم هست. از یه الگوریتم از نوع public-key cryptography استفاده کنید. مثلا الگوریتم RSA که محدودیت حجم داره (حجم پیام نباید بزرگتر از سایز کلید باشه، پس باید پیام رو تیکه تیکه کنید و بفرستید) یا PGP.

نرم‌افزار شما توی گوشی کاربر یه کلید میسازه و private-key رو نگه‌میداره و public-key رو میفرسته به سرور شما.
هروقت که کاربر یه ویدیو میخواد، سرور شما با اون public-key فایل رو انکریپت میکنه و میده به کاربر، کاربر با private-key خودش اونو باز میکنه.

نیاز به یه دیتابیس دارید برای نگه‌داری کلیدها، به اضافه‌ی CPU که بتونه encryption رو برای تمام کاربرها انجام بده.


RSA و PGP زیادی قوی هستن برای این‌کار. باید الگوریتم‌های ساده‌تری وجود داشته باشه که با فشار کمتر به cpu کار رو انجام بده. ولی فعلا چیزی به ذهنم نمیرسه.
الگوریتمهایی وجود دارن که میتونن روی میکروکنترلرهای ۸بیتی ران بشن!

1 Likes

یک بار ویدیو باز بشه یا هر سری این عملیات انجام بشه !! اگر باز شد خوب حالا وقتشه که ویدیو رو کامل شد بگیریم

اگر می خوایم استریم کنیم و چانک بندی کد گذاری کنیم حجمش چقدر می ره معمولا ویدیو ها تعدادشون بالاست و کمترین حجمش 20 مگ

کلا کارش فقط در حدی هست که یکمی کار کاربر معمولی رو سخت تر بکنه وگرنه بازم کرک می شه

روی گوشی؟ هربار که پلی میشه، به صورت temp باز بشه و پخش بشه بعد temp حذف بشه.
فکر میکنم بشه خروجی decrypt رو به صورت stream داد به پلیر که دیگه لازم نباشه حتما کل فایل باز بشه روی storage

والا این روشیه که میبینم spotify داره استفاده میکنه. فایلهای صوتی رو طوری تیکه‌تیکه کرده که هر تیکه حدود ۱۰ ثانیست. یه بار سعی کردم کرکش کنم و موفق شدم یکی از اون packetها رو باز کنم، ۱۰ ثانیه توش بود.

آره متاسفانه. همه‌ی روشهای DRM همینطورین.
مثل تصمیمات جدید بانکهای ایران. استفاده از کارت رو برای کاربر معمولی سخت کردن، ولی از الگوریتم دست‌ساز برای ساخت OTP استفاده میکنن. احتمالش هست تا همین الآن یه نفر سیستمو کرک کرده باشه!

2 Likes