FairPlay — یک فناوری اختصاصی DRM است که توسط اپل برای محافظت از محتوای ویدیویی در اکوسیستم iOS، tvOS و macOS توسعه یافته است. این سیستم از Secure Enclave و رمزنگاری سختافزاری برای ذخیره ایمن کلیدها استفاده میکند که به سرویسهای استریم اجازه میدهد محتوا را با کیفیت 4K HDR ارائه دهند. طبق مستندات Apple Developer (2025)، FairPlay Streaming در تمام دستگاههای اپل با تراشه A8 و جدیدتر پشتیبانی میشود.
نکات اصلی
FairPlay — یک فناوری DRM است که توسط اپل ایجاد شده و در سیستمعاملهای iOS، tvOS، iPadOS و macOS برای محافظت از محتوای صوتی و تصویری در برابر استفاده غیرمجاز پیادهسازی شده است. این فناوری که در ابتدا برای iTunes و iPod توسعه یافته بود، به یک سیستم کامل حفاظت از محتوای استریم از طریق پروتکل FairPlay Streaming تبدیل شد.
برخلاف سایر راهحلهای DRM، FairPlay کاملاً در معماری سختافزاری دستگاههای اپل یکپارچه شده است. کلیدهای رمزگشایی در Secure Enclave — یک پردازنده کمکی محافظتشده که از سیستمعامل اصلی جدا شده است — ذخیره میشوند که استخراج کلیدها را حتی با جیلبریک تقریباً غیرممکن میکند.
تاریخچه FairPlay در سال ۲۰۰۳ با فروشگاه iTunes Store آغاز شد، جایی که رمزنگاری فایلهای AAC با استفاده از فرمت اختصاصی M4P اعمال میشد. در سال ۲۰۰۹، اپل FairPlay Streaming — پروتکل حفاظت از ویدیوی استریم بر اساس HLS را معرفی کرد که بعداً برای Apple TV و برنامههای iOS الزامی شد.
از iOS 10 و tvOS 10 به بعد، اپل FairPlay Streaming را برای توسعهدهندگان شخص ثالث از طریق چارچوب AVFoundation باز کرد. امروزه Netflix، Amazon Prime Video و Disney+ از FairPlay برای محافظت از محتوا در دستگاههای اپل تا رزولوشن 4K HDR با Dolby Vision استفاده میکنند.
کار FairPlay بر اساس یک فرآیند سه مرحلهای است: بستهبندی محتوا، توزیع از طریق CDN و رمزگشایی در دستگاه. در مرحله بستهبندی، ویدیو با استفاده از AES-128 یا AES-256 رمزنگاری میشود و کلیدهای رمزنگاری از طریق مکانیزم Key Envelope به یک دستگاه خاص متصل میشوند.
هنگام درخواست محتوا، پخشکننده یک جلسه FairPlay را از طریق AVContentKeySession آغاز میکند که درخواستی را به سرور مجوز ارائهدهنده محتوا ارسال میکند. سرور حقوق دسترسی را بررسی کرده و کلید رمزگشایی را که با کلید عمومی گواهی دستگاه رمزنگاری شده است، برمیگرداند.
کلient یک نمونه AVContentKeySession ایجاد کرده و ترک محتوا را به آن اضافه میکند. سیستم درخواست SPC (Server Playback Context) را تشکیل میدهد که شامل شناسه دستگاه و گواهی برنامه تأیید شده توسط اپل است. این درخواست از طریق HTTPS به سرور مجوز ارسال میشود.
سرور مجوز SPC را اعتبارسنجی میکند، کلید محتوا را از پایگاه داده خود استخراج کرده و آن را با کلید عمومی دستگاه رمزنگاری میکند و CKC (Content Key Context) را تشکیل میدهد. CKC به کلient بازگردانده میشود، جایی که AVContentKeySession آن را با استفاده از کلید خصوصی Secure Enclave رمزگشایی میکند.
let contentKeySession = AVContentKeySession(keySystem: .fairPlayStreaming)
contentKeySession.setDelegate(self, queue: .main)
let asset = AVURLAsset(url: streamURL)
asset.resourceLoader.setDelegate(self, queue: .main)
contentKeySession.addContentKeyRecipient(asset)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: playerItem)
معماری FairPlay شامل چندین جزء به هم مرتبط است: گواهی برنامه، Key Envelope، Secure Enclave و ماژول رمزگشایی محتوا. هر جزء نقش خود را در زنجیره حفاظت از سرور تا صفحه نمایش کاربر ایفا میکند.
| جزء | عملکرد | محل اجرا |
|---|---|---|
| گواهی برنامه | شناسایی برنامه در برابر سرور مجوز | ذخیره شده در باندل برنامه |
| SPC | Server Playback Context — درخواست مجوز | توسط AVContentKeySession تشکیل میشود |
| CKC | Content Key Context — پاسخ با کلید | توسط Secure Enclave پردازش میشود |
| Secure Enclave | ذخیرهسازی سختافزاری و رمزگشایی کلیدها | پردازنده کمکی سختافزاری SoC |
| Key Envelope | محفظه کلید با فراداده مجوز | توسط سرور مجوز تشکیل میشود |
برای کار با FairPlay، توسعهدهنده باید از طریق برنامه Apple Developer گواهی FPS را از اپل دریافت کند. گواهی شامل کلید عمومی یک جفت نامتقارن است که بخش خصوصی آن توسط Secure Enclave برای رمزگشایی CKC استفاده میشود.
گواهی برنامه به باندل پروژه اضافه میشود و هنگام کامپایل از طریق Xcode به طور خودکار امضا میشود. در اولین پخش محتوای محافظتشده، سیستم اعتبار گواهی را بررسی کرده و مجوز درخواست میکند.
Secure Enclave — یک پردازنده کمکی اختصاصی در تراشههای سری A و M اپل است که بر روی سیستمعامل ایزوله L4 کار میکند. این پردازنده مسئول تولید و ذخیره کلیدهای خصوصی، رمزگشایی CKC و انتقال کلید محتوا به ماژول رمزگشایی ویدیو است.
تمام عملیات رمزنگاری منحصراً در داخل Secure Enclave انجام میشود و کلیدها هرگز منطقه محافظتشده را ترک نمیکنند. حملات کانال جانبی به گذرگاه داده بین Secure Enclave و پردازنده اصلی توسط مانیتورینگ یکپارچگی سختافزاری مسدود میشوند.
یکپارچهسازی FairPlay در برنامههای iOS و tvOS از طریق AVFoundation انجام میشود و نیاز به پیادهسازی پروتکلهای AVContentKeySessionDelegate و AVAssetResourceLoaderDelegate دارد. توسعهدهنده باید چهار رویداد کلیدی را مدیریت کند: دریافت SPC، ارسال به سرور، دریافت CKC و تحویل به پخشکننده.
func contentKeySession(
_ session: AVContentKeySession,
didProvide keyRequest: AVContentKeyRequest
) {
guard let identifier = keyRequest.identifier
else { return }
let spc: Data = keyRequest.makeStreamingContentKeyRequestData(
appCertificate: certificate,
contentIdentifier: identifier,
options: nil
)
licenseService.requestCKC(spc) { ckc in
keyRequest.processContentKeyResponse(
AVContentKeyResponse(fairPlayStreamingKeyResponseData: ckc)
)
}
}
قبل از شروع پخش، باید گواهی برنامه را از باندل بارگذاری کرده و شناسه محتوا (معمولاً URL جریان یا شناسه فیلم) را آماده کنید. گواهی باید حداقل برای مدت اجاره محتوا معتبر باشد، در غیر این صورت مجوزدهی با خطا مواجه خواهد شد.
شناسه محتوا در مرحله تشکیل SPC به سیستم مجوزدهی منتقل میشود. سرور مجوز از این شناسه برای یافتن کلید مربوطه و سیاستهای پخش، از جمله محدودیتهای زمانی و دستگاهی استفاده میکند.
در فرآیند مجوزدهی ممکن است خطاهایی رخ دهد: انقضای گواهی، شناسه محتوای نامعتبر، عدم وجود حقوق دسترسی کاربر. خطاهای FairPlay از طریق نماینده contentKeySession:didFailWithError بازگردانده میشوند و باید با نمایش رابط کاربری مناسب به کاربر مدیریت شوند.
کدهای خطای رایج شامل FP_NO_ENTITLEMENT در صورت عدم اشتراک و FP_REQUEST_TIMEOUT در صورت مشکلات شبکه است. توصیه میشود منطق تلاش مجدد با تأخیر تصاعدی برای خرابیهای موقت شبکه پیادهسازی شود.
FairPlay Streaming — یک پروتکل حفاظت از ویدیوی استریم بر اساس HLS است که از رمزنگاری بخشها و مکانیزم کلیدهای با مدت اعتبار محدود استفاده میکند. ارائهدهنده محتوا سرور مجوز خود را راهاندازی میکند که با سیستم احراز هویت کاربران یکپارچه میشود.
سرور مجوز درخواست SPC را از کلient دریافت میکند، شناسه دستگاه و محتوا را از آن استخراج کرده، حقوق کاربر را در بکاند بررسی کرده و پاسخ CKC را تشکیل میدهد. کلید محتوا با کلید عمومی دستگاه از گواهی FPS رمزنگاری میشود.
مجوز FairPlay میتواند شامل محدودیتهای زمانی (اجاره ۴۸ ساعته)، تعداد دستگاه (حداکثر ۵ دستگاه مجاز) و کیفیت پخش (محدودیت تا ۱۰۸۰p برای طرح پایه) باشد. سیاستها در سمت سرور تعیین شده و در Key Envelope بستهبندی میشوند.
توجه به این نکته مهم است که سیاستهای FairPlay در سطح Secure Enclave اعمال میشوند و نمیتوان با روشهای نرمافزاری در سطح سیستمعامل آنها را دور زد. حتی با جیلبریک، حفاظت سختافزاری از استخراج کلید یا تغییر پارامترهای مجوز جلوگیری میکند.
| پارامتر | FairPlay | Widevine | PlayReady |
|---|---|---|---|
| اکوسیستم | Apple (iOS, tvOS, macOS) | Google (Android, Chrome) | Microsoft (Windows, Xbox) |
| حداکثر کیفیت | 4K HDR Dolby Vision | 4K UHD | 4K UHD |
| حفاظت سختافزاری | Secure Enclave | TEE | TPM + TEE |
| الزامات توسعهدهنده | گواهی FPS اپل | نیاز ندارد | مجوز Microsoft |
پشتیبانی از FairPlay Streaming به نسخه سیستمعامل و نوع دستگاه بستگی دارد. از iOS 10 و tvOS 10 به بعد، API AVContentKeySession برای همه برنامهها در دسترس است، اما شتاب سختافزاری از طریق Secure Enclave فقط برای محتوای با کیفیت 4K HDR مورد نیاز است. در دستگاههای با تراشه A8–A10 فقط حداکثر رزولوشن ۱۰۸۰p در دسترس است.
در iOS 14، اپل پشتیبانی از چندین جلسه FairPlay را اضافه کرد که به برنامه اجازه میدهد چند جریان محافظتشده را همزمان پخش کند — به عنوان مثال، تصویر در تصویر با مجوزهای مختلف. iOS 15 پروتکل را با پشتیبانی از بهروزرسانی پسزمینه کلیدها برای تماشای طولانی گسترش داد.
برای سرویسهای استریم بینپلتفرمی، FairPlay به عنوان بخشی از معماری multi-DRM همراه با Widevine و PlayReady استفاده میشود. تجمیعکنندگان مجوز مانند Axinom و EZDRM یک API یکپارچه ارائه میدهند که درخواستها را به فرمت SPC برای FairPlay و فرمت MediaDrm برای Widevine ترجمه کرده و یکپارچهسازی را در همه پلتفرمها ساده میکند.
سؤالات متداول
FairPlay — یک فناوری DRM از اپل است که در iOS، tvOS و macOS برای محافظت از محتوای ویدیویی تعبیه شده است. این فناوری از رمزنگاری سختافزاری از طریق Secure Enclave و پروتکل FairPlay Streaming برای انتقال ایمن کلیدهای رمزگشایی در دستگاههای اپل استفاده میکند.
برای دریافت گواهی FPS، باید در برنامه Apple Developer ثبتنام کنید، گواهی را در بخش Certificates, Identifiers & Profiles ایجاد کرده و آن را در قالب DER دانلود کنید. گواهی به باندل پروژه Xcode اضافه شده و هنگام کامپایل امضا میشود.
خیر، FairPlay در Android در دسترس نیست، زیرا این یک فناوری اختصاصی اپل است که به معماری سختافزاری Secure Enclave در تراشههای سری A و M وابسته است. برای دستگاههای Android از Widevine DRM گوگل استفاده میشود.
FairPlay نام کلی فناوری DRM اپل است، در حالی که FairPlay Streaming (FPS) یک پروتکل خاص برای محافظت از جریانهای HLS است. FPS از مکانیزمهای FairPlay برای رمزنگاری بخشهای ویدیو و مدیریت مجوزها از طریق AVContentKeySession استفاده میکند.
مجوز FairPlay میتواند محدودیتهایی برای زمان تماشا، حداکثر کیفیت ویدیو (۷۲۰p، ۱۰۸۰p، ۴K)، تعداد دستگاهها و مدت اعتبار کلید تعیین کند. تمام سیاستها به صورت سختافزاری در Secure Enclave اجرا میشوند و قابل دور زدن نیستند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.