
مكتبة لـ SRTP (Secure Realtime Transport Protocol)
توفر هذه الحزمة تنفيذًا لبروتوكول النقل الآني الآمن في الوقت الحقيقي (SRTP)، وللتحويل الأمني العام (UST)، ونواة تشفير داعمة. يتم توثيق واجهة برمجة تطبيقات SRTP في include/srtp.h، والمكتبة موجودة في libsrtp2.a (بعد الترجمة).
يصف هذا المستند libSRTP، مكتبة RTP الآمنة مفتوحة المصدر من Cisco Systems, Inc. RTP هو بروتوكول النقل في الوقت الحقيقي، وهو معيار IETF لنقل البيانات في الوقت الحقيقي مثل الهاتف، والصوت، والفيديو، المُعرَّف في RFC 3550. RTP الآمن (SRTP) هو ملف تعريف RTP لتوفير السرية لبيانات RTP والمصادقة لرأس RTP وحمولته. SRTP هو معيار IETF، مُعرَّف في RFC 3711، وتم تطويره في فريق عمل نقل الصوت/الفيديو (AVT) التابع لـ IETF. تدعم هذه المكتبة جميع الميزات الإلزامية لـ SRTP، ولكن ليس جميع الميزات الاختيارية. راجع قسم الميزات المدعومة للحصول على معلومات أكثر تفصيلاً.
يُستخدم هذا المستند أيضًا لإنشاء ملفات التوثيق في مجلد /doc/ حيث يمكن إنشاء مرجع أكثر تفصيلاً لواجهة برمجة تطبيقات libSRTP والوظائف ذات الصلة (يتطلب تثبيت doxygen.). يتم إنشاء المادة المرجعية تلقائيًا من التعليقات المضمنة في بعض ملفات رؤوس C. يتم تنظيم التوثيق في وحدات من أجل تحسين وضوحه. هذه الوحدات لا تتوافق مباشرة مع الملفات. توفر نواة تشفير أساسية الكثير من الوظائف الأساسية لـ libSRTP ولكنها غير موثقة في الغالب لأنها تقوم بعملها خلف الكواليس.
[email protected] القائمة البريدية العامة للأخبار / الإعلانات / المناقشات. هذه قائمة مفتوحة، راجع https://lists.packetizer.com/mailman/listinfo/libsrtp للتسجيل.
[email protected] للكشف عن المشكلات الأمنية لفريق صيانة libsrtp. هذه قائمة مغلقة ولكن يمكن لأي شخص الإرسال إليها.
يتم توزيع libSRTP بموجب الترخيص التالي، وهو مدرج في توزيع الكود المصدري. وهو مُعاد إنتاجه في الدليل في حال حصلت على المكتبة من مصدر آخر.
حقوق الطبع والنشر (c) 2001-2017 Cisco Systems, Inc. جميع الحقوق محفوظة.
يُسمح بإعادة التوزيع والاستخدام في أشكال المصدر والثنائية، مع أو بدون تعديل، بشرط استيفاء الشروط التالية:
- يجب أن تحتفظ إعادة توزيع الكود المصدري بإشعار حقوق الطبع والنشر أعلاه، وقائمة الشروط هذه وإخلاء المسؤولية التالي.
- يجب أن تعيد إعادة التوزيع في الشكل الثنائي إنتاج إشعار حقوق الطبع والنشر أعلاه، وقائمة الشروط هذه وإخلاء المسؤولية التالي في التوثيق و/أو المواد الأخرى المقدمة مع التوزيع.
- لا يجوز استخدام اسم Cisco Systems, Inc. أو أسماء المساهمين فيها لتأييد أو الترويج لمنتجات مشتقة من هذا البرنامج دون إذن كتابي مسبق محدد.
يتم توفير هذا البرنامج من قبل أصحاب حقوق الطبع والنشر والمساهمين "كما هو" ويتم إخلاء المسؤولية عن أي ضمانات صريحة أو ضمنية، بما في ذلك، على سبيل المثال لا الحصر، الضمانات الضمنية الخاصة بالتسويق والملاءمة لغرض معين. في أي حال من الأحوال، لن يكون أصحاب حقوق الطبع والنشر أو المساهمين مسؤولين عن أي أضرار مباشرة، أو غير مباشرة، أو عرضية، أو خاصة، أو نموذجية، أو تبعية (بما في ذلك، على سبيل المثال لا الحصر، توريد سلع أو خدمات بديلة؛ فقدان الاستخدام، أو البيانات، أو الأرباح؛ أو انقطاع الأعمال) مهما كان سببها، وعلى أي نظرية من نظريات المسؤولية، سواء في العقد، أو المسؤولية الصارمة، أو الضرر (بما في ذلك الإهمال أو غيره) الناشئة بأي شكل من الأشكال عن استخدام هذا البرنامج، حتى لو تم إخطار بإمكانية حدوث مثل هذا الضرر.
يوفر libSRTP وظائف لحماية RTP وRTCP. يمكن تشفير حزم RTP
والمصادقة عليها (باستخدام دالة srtp_protect())،
لتحويلها إلى حزم SRTP. وبالمثل، يمكن فك تشفير حزم SRTP
والتحقق من مصادقتها (باستخدام دالة srtp_unprotect())،
لتحويلها إلى حزم RTP. تطبق وظائف مماثلة الأمان على حزم RTCP.
يشير typedef srtp_stream_t إلى بنية تحتوي على جميع
الحالة المرتبطة بتيار SRTP، بما في ذلك المفاتيح و
معلمات وظائف التشفير ومصادقة الرسائل و
بيانات منع إعادة التشغيل. يحتفظ srtp_stream_t معين بالمعلومات
اللازمة لحماية تيار RTP وRTCP معين. هذا النوع من البيانات
غير شفاف عن قصد من أجل فصل واجهة برمجة تطبيقات libSRTP بشكل أفضل عن تنفيذها.
داخل جلسة SRTP، يمكن أن يكون هناك تيارات متعددة، كل
ينشأ من مرسل معين. يستخدم كل مصدر سياق تيار مميزًا
لحماية تيار RTP وRTCP الذي ينشئه. يشير typedef srtp_t إلى بنية تحتوي على جميع
الحالة المرتبطة بجلسة SRTP. يمكن أن يكون هناك سياقات تيار متعددة
مرتبطة بـ srtp_t واحد. لا يمكن أن يوجد سياق تيار
بشكل مستقل عن srtp_t، على الرغم من أنه بالطبع يمكن إنشاء srtp_t
يحتوي على سياق تيار واحد فقط. يجب أن يكون لدى الجهاز
المشارك في جلسة SRTP سياق تيار لكل
مصدر في تلك الجلسة، حتى يتمكن من معالجة البيانات التي
يستقبلها من كل مرسل.
في libSRTP، يتم إنشاء جلسة باستخدام الدالة srtp_create().
يتم تمرير السياسة التي سيتم تنفيذها في الجلسة إلى هذه
الدالة كمقبض srtp_policy_t غير شفاف. يصف مقبض سياسة واحد
سياسة تيار واحد. لتكوين تيارات متعددة، قم بإنشاء
جلسة وأضف سياسات إضافية باستخدام srtp_stream_add().
يتم تكوين مقبض سياسة باستخدام دوال srtp_policy_set_*. كحد
أدنى، يتضمن ذلك اختيار SSRC، واختيار الملف الشخصي، ومواد المفتاح/الملح.
يقوم الملف الشخصي بتكوين إعدادات سياسة تشفير RTP/RTCP، بينما
يحدد محدد SSRC كيف وأين يتم تطبيق تلك السياسة.
في هذا القسم نراجع SRTP ونقدم بعض المصطلحات المستخدمة في libSRTP. يتم تعريف جلسة RTP بزوج من عناوين النقل الوجهة، أي عنوان شبكة بالإضافة إلى زوج من منافذ UDP لـ RTP وRTCP. RTCP، بروتوكول التحكم في RTP، يُستخدم للتنسيق بين المشاركين في جلسة RTP، على سبيل المثال لتقديم تغذية راجعة من المستقبلين إلى المرسلين. يتم تعريف جلسة SRTP بالمثل؛ إنها مجرد جلسة RTP يتم فيها استخدام ملف تعريف SRTP. تتكون جلسة SRTP من حركة المرور المرسلة إلى عناوين النقل الوجهة SRTP أو SRTCP. كل مشارك في جلسة يتم تحديده بواسطة معرّف مصدر المزامنة (SSRC). قد لا يرسل بعض المشاركين أي حركة مرور SRTP؛ يُطلق عليهم مستقبلين، على الرغم من أنهم يرسلون حركة مرور SRTCP، مثل تقارير المستقبل.