Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

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

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
libsrtp — مكتبة لـ SRTP (Secure Realtime Transport Protocol) | Kitploit
أدوات/GitHubGitHub/cisco/libsrtp
أدوات التشفير/فك التشفيرأمن الشبكاتالتشفيرالمصادقة
GitHubcisco/libsrtp

libsrtp

مكتبة لـ SRTP (Secure Realtime Transport Protocol)

عرض المستودع
1.4k5175منذ 3س 32دتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CMake Build CMake Release Autotools Build Autotools Build Coverity Scan Build Status OSS-Fuzz Status

مقدمة إلى libSRTP

توفر هذه الحزمة تنفيذًا لبروتوكول النقل الآني الآمن في الوقت الحقيقي (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
  • اتصل بنا
    • المحتويات
  • الترخيص وإخلاء المسؤولية
  • نظرة عامة على libSRTP
    • خلفية RTP الآمن
    • الميزات المدعومة
    • ملاحظات التنفيذ
  • تثبيت وبناء libSRTP
    • تغيير تكوين البناء
    • استخدام Visual Studio
  • التطبيقات
    • رمز مثال
  • الاعتمادات
  • المراجع

الترخيص وإخلاء المسؤولية

يتم توزيع libSRTP بموجب الترخيص التالي، وهو مدرج في توزيع الكود المصدري. وهو مُعاد إنتاجه في الدليل في حال حصلت على المكتبة من مصدر آخر.

حقوق الطبع والنشر (c) 2001-2017 Cisco Systems, Inc. جميع الحقوق محفوظة.

يُسمح بإعادة التوزيع والاستخدام في أشكال المصدر والثنائية، مع أو بدون تعديل، بشرط استيفاء الشروط التالية:

  • يجب أن تحتفظ إعادة توزيع الكود المصدري بإشعار حقوق الطبع والنشر أعلاه، وقائمة الشروط هذه وإخلاء المسؤولية التالي.
  • يجب أن تعيد إعادة التوزيع في الشكل الثنائي إنتاج إشعار حقوق الطبع والنشر أعلاه، وقائمة الشروط هذه وإخلاء المسؤولية التالي في التوثيق و/أو المواد الأخرى المقدمة مع التوزيع.
  • لا يجوز استخدام اسم Cisco Systems, Inc. أو أسماء المساهمين فيها لتأييد أو الترويج لمنتجات مشتقة من هذا البرنامج دون إذن كتابي مسبق محدد.

يتم توفير هذا البرنامج من قبل أصحاب حقوق الطبع والنشر والمساهمين "كما هو" ويتم إخلاء المسؤولية عن أي ضمانات صريحة أو ضمنية، بما في ذلك، على سبيل المثال لا الحصر، الضمانات الضمنية الخاصة بالتسويق والملاءمة لغرض معين. في أي حال من الأحوال، لن يكون أصحاب حقوق الطبع والنشر أو المساهمين مسؤولين عن أي أضرار مباشرة، أو غير مباشرة، أو عرضية، أو خاصة، أو نموذجية، أو تبعية (بما في ذلك، على سبيل المثال لا الحصر، توريد سلع أو خدمات بديلة؛ فقدان الاستخدام، أو البيانات، أو الأرباح؛ أو انقطاع الأعمال) مهما كان سببها، وعلى أي نظرية من نظريات المسؤولية، سواء في العقد، أو المسؤولية الصارمة، أو الضرر (بما في ذلك الإهمال أو غيره) الناشئة بأي شكل من الأشكال عن استخدام هذا البرنامج، حتى لو تم إخطار بإمكانية حدوث مثل هذا الضرر.


نظرة عامة على libSRTP

يوفر 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 كيف وأين يتم تطبيق تلك السياسة.


خلفية RTP الآمن

في هذا القسم نراجع SRTP ونقدم بعض المصطلحات المستخدمة في libSRTP. يتم تعريف جلسة RTP بزوج من عناوين النقل الوجهة، أي عنوان شبكة بالإضافة إلى زوج من منافذ UDP لـ RTP وRTCP. RTCP، بروتوكول التحكم في RTP، يُستخدم للتنسيق بين المشاركين في جلسة RTP، على سبيل المثال لتقديم تغذية راجعة من المستقبلين إلى المرسلين. يتم تعريف جلسة SRTP بالمثل؛ إنها مجرد جلسة RTP يتم فيها استخدام ملف تعريف SRTP. تتكون جلسة SRTP من حركة المرور المرسلة إلى عناوين النقل الوجهة SRTP أو SRTCP. كل مشارك في جلسة يتم تحديده بواسطة معرّف مصدر المزامنة (SSRC). قد لا يرسل بعض المشاركين أي حركة مرور SRTP؛ يُطلق عليهم مستقبلين، على الرغم من أنهم يرسلون حركة مرور SRTCP، مثل تقارير المستقبل.

يسمح RTP لمصادر متعددة بإرسال حركة مرور RTP وRTCP خلال نفس الجلسة. يُستخدم معرّف مصدر المزامنة (SSRC) لـ تمييز هذه المصادر. في libSRTP، نسمي حركة مرور SRTP وSRTCP من مصدر معين تيارًا. لكل تيار خاص به SSRC، ورقم تسلسلي، وعداد ترحيل، وبيانات أخرى. اختيار معين من الخيارات، والآليات المشفرة، والمفاتيح يُسمى سياسة. يمكن تطبيق سياسة مميزة على كل تيار داخل جلسة.

يمكن استخدام سياسة واحدة لجميع التيارات في جلسة معينة، على الرغم من أن حالة مشاركة مفتاح واحد عبر تيارات متعددة تتطلب عناية. عند استخدام مشاركة المفاتيح، يجب أن تكون قيم SSRC التي تحدد التيارات مميزة. يمكن فرض هذا المطلب باستخدام اتفاقية أن كل مفتاح SRTP وSRTCP يُستخدم للتشفير بواسطة مرسل واحد فقط. بعبارة أخرى، تتم مشاركة المفتاح فقط عبر التيارات التي تنشأ من جهاز معين (بالطبع، سيحتاج مشاركو SRTP الآخرون إلى استخدام المفتاح لفك التشفير). يدعم libSRTP هذا الفرض من خلال اكتشاف الحالة التي يتم فيها استخدام مفتاح لكل من البيانات الواردة والصادرة.


الميزات المدعومة

تدعم هذه المكتبة جميع الميزات الإلزامية التنفيذ لـ SRTP (كما هو محدد في RFC 3711). يمكن تحديد بعض هذه الميزات (أو إلغاء تحديدها) في وقت التشغيل عن طريق تعيين سياسة مناسبة باستخدام مقبض srtp_policy_t. يمكن تكييف بعض السلوكيات الأخرى للبروتوكول عن طريق تعريف معالج أحداث مناسب للأحداث الاستثنائية؛ راجع قسم SRTPevents في التوثيق المُنشأ.

بعض الخيارات الموصوفة في مواصفات SRTP غير مدعومة. يتضمن ذلك

  • معدلات اشتقاق المفاتيح غير الصفرية،
  • تشفير F8،
  • استخدام فهرس الحزمة للاختيار بين المفاتيح الرئيسية.

يجب أن يدرك المستخدم أنه من الممكن إساءة استخدام هذه المكتبة، وأن النتيجة قد تكون أن مستوى الأمان الذي توفره غير كافٍ. إذا كنت تنفذ ميزة باستخدام هذه المكتبة، فسوف ترغب في قراءة قسم اعتبارات الأمان في RFC 3711. بالإضافة إلى ذلك، من المهم أن تقرأ وتفهم الشروط الموضحة في قسم الترخيص وإخلاء المسؤولية.

تدعم هذه المكتبة أيضًا طرق التشفير المصادق عليه AES-GCM الموصوفة في RFC 7714


ملاحظات التنفيذ

  • من الممكن تكوين الطرف الثالث (مثل openssl/nss/etc) الخلفي للتشفير الذي سيتم بناء libSRTP معه. إذا لم يتم تعيين أي طرف ثالث خلفي، فإن libSRTP يوفر تنفيذًا داخليًا لـ AES وSha1. يدعم التنفيذ الداخلي فقط AES-128 وAES-256، لذا لاستخدام AES-192 أو مجموعة تشفير AES-GCM يجب تكوين طرف ثالث خلفي للتشفير. لهذا ولأسباب تتعلق بالأداء، يوصى بشدة باستخدام طرف ثالث خلفي للتشفير.

  • تفترض دالة srtp_protect() أن المخزن المؤقت الذي يحمل حزمة rtp لديه مساحة تخزين كافية مخصصة بحيث يمكن كتابة علامة المصادقة في نهاية تلك الحزمة. إذا لم يكن هذا الافتراض صالحًا، فسيحدث تلف في الذاكرة.

  • يتم توفير اختبارات آلية لوظائف التشفير من خلال دالتي cipher_type_self_test() و auth_type_self_test(). يجب استخدام هاتين الدالتين لاختبار كل منفذ من منافذ هذا الكود على نظام أساسي جديد.

  • حماية إعادة التشغيل مضمنة في محرك التشفير، ويتم توفير اختبارات لها.

  • يوفر هذا التنفيذ استدعاءات لتهيئة وحماية و إلغاء حماية حزم RTP، ويضع أقل عدد ممكن من الافتراضات حول كيفية استدعاء هذه الوظائف. على سبيل المثال، لا يُتوقع من المستدعي تقديم حزم بالترتيب (على الرغم من أنه إذا تم استدعاؤها خارج التسلسل بأكثر من 65 ألفًا، فسيتم فقدان المزامنة).

  • يتم استخدام الرقم التسلسلي في حزمة rtp كأقل 16 بت من فهرس الحزمة المحلي للمرسل. لاحظ أن RTP سيبدأ رقمه التسلسلي في مكان عشوائي، وتقفز طبقة SRTP فقط إلى الأمام إلى هذا الرقم عند استدعائها الأول. إصدار سابق من هذه المكتبة استخدم أرقامًا تسلسلية أولية أقل من 32,768؛ لم تعد هذه الحيلة مطلوبة لأن دالة rdbx_estimate_index(...) أصبحت أكثر ذكاءً اعتبارًا من الإصدار 1.0.1.

  • نافذة إعادة التشغيل لـ (S)RTCP مثبتة بشكل صارم على طول 128 بت.


تثبيت وبناء libSRTP

لتثبيت libSRTP، قم بتنزيل أحدث إصدار من التوزيعة من https://github.com/cisco/libsrtp/releases. ربما تريد الحصول على أحدث إصدار. قم بفك ضغط التوزيعة و استخراج ملفات المصدر؛ الدليل الذي ستُوضع فيه ملفات المصدر يُسمى libsrtp-A-B-C حيث A هو رقم الإصدار، B هو رقم الإصدار الرئيسي و C هو رقم الإصدار الثانوي.

يستخدم libSRTP أداتي GNU autoconf و make (لن يعمل BSD make؛ إذا كان كلا الإصدارين من make موجودين على نظامك، يمكنك استدعاء GNU make كـ gmake.). في دليل libsrtp، قم بتشغيل سكربت التكوين ثم make:~~~.txt ./configure [ options ] make

root@kitploit:~
يقبل سكربت configure الخيارات التالية:

الخيار                         | الوصف
-------------------------------|--------------------
\-\-help                   \-h | عرض المساعدة
\-\-enable-debug-logging       | تمكين تسجيل التصحيح في جميع الوحدات
\-\-enable-openssl             | تمكين محرك التشفير OpenSSL
\-\-enable-nss                 | تمكين محرك التشفير NSS
\-\-enable-openssl-kdf         | تمكين خوارزمية KDF في OpenSSL
\-\-enable-log-stdout          | تمكين التسجيل إلى stdout
\-\-with-openssl-dir           | موقع تثبيت OpenSSL
\-\-with-nss-dir               | موقع تثبيت NSS
\-\-with-log-file              | استخدم ملفًا للتسجيل

بشكل افتراضي، لا يوجد أي مخرجات تسجيل. يمكن تمكين التسجيل ليتم الإخراج إلى stdout أو إلى ملف معيّن باستخدام خيارات configure.

تم اختبار هذه الحزمة على المنصات التالية: Mac OS X (powerpc-apple-darwin1.4)، وCygwin (i686-pc-cygwin)، وSolaris (sparc-sun-solaris2.6)، وRedHat Linux 7.1 و9 (i686-pc-linux)، وOpenBSD (sparc-unknown-openbsd2.7).

--------------------------------------------------------------------------------

<a name="changing-build-configuration"></a>
## تغيير تكوين البناء

لبناء سكربت `./configure` المذكور أعلاه، يعتمد libSRTP على مجموعة أدوات [automake](https://www.gnu.org/software/automake/).  وبما أن `./configure` يُبنى من `configure.in` بواسطة automake، إذا أجريت تغييرات على طريقة عمل `./configure` (مثل إضافة تبعية مكتبة جديدة)، فستحتاج إلى إعادة بناء `./configure` وتقديم النسخة المحدّثة.  بالإضافة إلى automake نفسه، ستحتاج أيضًا إلى تثبيت أدوات `pkgconfig`.

على سبيل المثال، على macOS:```
brew install automake pkgconfig
# Edit configure.in
autoremake -ivf
```
<a name="using-visual-studio"></a>
## استخدام Visual Studio

على نظام ويندوز يمكن استخدام Visual Studio عبر CMake. يمكن تنزيل CMake من هنا:
https://cmake.org/ . لإنشاء ملفات بناء Visual Studio، على سبيل المثال قم بتشغيل
الأوامر التالية:```
# Create build subdirectory
mkdir build
cd build

# Make project files
cmake .. -G "Visual Studio 15 2017"

# Or for 64 bit project files
cmake .. -G "Visual Studio 15 2017 Win64"
```
<a name="using-meson"></a>
## استخدام Meson

على جميع المنصات بما في ذلك Windows، يمكن البناء باستخدام [Meson](https://mesonbuild.com).
خطوات تنزيل Meson موجودة هنا: https://mesonbuild.com/Getting-meson.html

للبناء باستخدام Meson، يمكنك القيام بشيء مثل:```
# Setup the build subdirectory
meson setup --prefix=/path/to/prefix builddir

# Build the project
meson compile -C builddir

# Run tests
meson test -C builddir

# Optionally, install
meson install -C builddir
```
للبناء باستخدام Visual Studio، نفّذ الأوامر أعلاه من داخل موجه أوامر Visual Studio
أو شغّل `vcvarsall.bat` بالوسائط المناسبة داخل
موجه أوامر.

لاحظ أنه يمكنك أيضًا استبدال الأوامر أعلاه بأهداف `ninja`
المناسبة: `ninja -C build`, `ninja -C build test`, `ninja -C build install`.

--------------------------------------------------------------------------------

<a name="applications"></a>
# التطبيقات

يتم تضمين العديد من برامج تشغيل الاختبار وتطبيق srtp بسيط ومحمول في الدليل الفرعي `test/`.

مشغّل الاختبار     | الوظيفة المختبرة
---------       | -------
kernel_driver   | نواة التشفير (خوارزميات التشفير، دوال المصادقة، مولّد الأرقام العشوائية)
srtp_driver	    | اختبارات srtp داخل الذاكرة (لا تستخدم الشبكة)
rdbx_driver	    | rdbx (قاعدة بيانات إعادة الإرسال الموسّعة)
roc_driver	    | دوال أرقام التسلسل الموسّعة
replay_driver	  | قاعدة بيانات إعادة الإرسال
cipher_driver	  | خوارزميات التشفير
auth_driver	    | دوال التجزئة

التطبيق `rtpw` هو تطبيق rtp بسيط يقرأ الكلمات من
`/usr/dict/words` ويرسلها واحدة تلو الأخرى باستخدام [s]rtp.
يستخدم التأسيس اليدوي لمفتاح srtp الخيار -k؛ وستتم إضافة الإدارة الآلية للمفاتيح
باستخدام gdoi لاحقًا.

الاستخدام:~~~.txt
rtpw [[-d <debug>]* [-k|b <key> [-a][-e <key size>][-g]] [-s | -r] dest_ip dest_port] | [-l]

يجب اختيار الخيار -s (المرسل) أو -r (المستقبل).
القيمتان dest_ip و dest_port هما عنوان IP ومنفذ UDP اللذان سيُرسَل إليهما القاموس، على التوالي.

الخيارات هي:

للحصول على قيم عشوائية من 30 بايت لاستخدامها كأزواج مفتاح/ملح، يمكنك استخدام دالة bash التالية لتنسيق مخرجات /dev/random (حيث يتوفر هذا الجهاز).~~~.txt function randhex() { cat /dev/random | od --read-bytes=32 --width=32 -x | awk '{ print $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 }' }

root@kitploit:~
فيما يلي مثال على جلسة SRTP باستخدام برنامجَي rtpw:~~~.txt
set k=c1eec3717da76195bb878578790af71c4ee9f859e197a414a78d5abc7451

[sh1]$ test/rtpw -s -k $k -e 128 -a 0.0.0.0 9999
Security services: confidentiality message authentication
set master key/salt to C1EEC3717DA76195BB878578790AF71C/4EE9F859E197A414A78D5ABC7451
setting SSRC to 2078917053
sending word: A
sending word: a
sending word: aa
sending word: aal
...

[sh2]$ test/rtpw -r -k $k -e 128 -a 0.0.0.0 9999
security services: confidentiality message authentication
set master key/salt to C1EEC3717DA76195BB878578790AF71C/4EE9F859E197A414A78D5ABC7451
19 octets received from SSRC 2078917053 word: A
19 octets received from SSRC 2078917053 word: a
20 octets received from SSRC 2078917053 word: aa
21 octets received from SSRC 2078917053 word: aal
...

مثال على الكود

يقدّم هذا القسم مثالًا بسيطًا لكيفية استخدام libSRTP. نفترض هنا أن الدالتين get_rtp_packet() و send_srtp_packet() متاحتان لدينا. تضع الأولى حزمة RTP في المخزن المؤقت وتُرجع عدد الثُمانيات (octets) المكتوبة في ذلك المخزن. أما الثانية فتُرسل حزمة RTP الموجودة في المخزن، مع تمرير الطول كوسيط ثانٍ لها.~~~.c srtp_t session; srtp_policy_t policy;

// Set key/salt to predetermined values. uint8_t master_key[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; uint8_t master_salt[14] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D};

// Initialize libSRTP. srtp_init();

// Create and configure an opaque policy handle. srtp_policy_create(&policy); srtp_policy_set_ssrc(policy, (srtp_ssrc_t){ssrc_any_outbound, 0}); srtp_policy_set_profile(policy, srtp_profile_aes128_cm_sha1_80); srtp_policy_add_key(policy, master_key, sizeof(master_key), master_salt, sizeof(master_salt), NULL, 0);

// Allocate and initialize the SRTP session. srtp_create(&session, policy);

srtp_policy_destroy(policy);

// Main loop: get RTP packets, send SRTP packets. while (1) { char rtp_buffer[2048]; size_t rtp_len; char srtp_buffer[2048]; size_t srtp_len = sizeof(srtp_buffer);

rtp_len = get_rtp_packet(rtp_buffer); srtp_protect(session, rtp_buffer, rtp_len, srtp_buffer, &srtp_len); send_srtp_packet(srtp_buffer, srtp_len); }

srtp_dealloc(session); srtp_shutdown();

root@kitploit:~
<a name="credits"></a>
# الاعتمادات

التنفيذ والتوثيق الأصليان لمكتبة libSRTP كتبهما David McGrew من Cisco Systems, Inc. بهدف تعزيز استخدام وفهم وقابلية التشغيل البيني لـ Secure RTP. ساهم Michael Jerris بدعم البناء باستخدام MSVC. وقدّم Andris Pavenis العديد من الإصلاحات المهمة. وساهم Brian West بتغييرات لتمكين الربط الديناميكي. وبلغ Yves Shumann عن أخطاء في التوثيق. وساهم Randell Jesup بتطبيق SRTCP عامل وإصلاحات أخرى. وساهم Steve Underwood بتغييرات قابلية النقل إلى x86_64. ونشكر أيضًا Fredrik Thulin وBrian Weis وMark Baugher وJeff Chan وBill Simon وDouglas Smith وBill May وRichard Preistley وJoe Tardo وآخرين على مساهماتهم وتعليقاتهم وتصحيحاتهم.

هذه المادة المرجعية، عند الاقتضاء، في هذا التوثيق وُلّدت باستخدام أداة doxygen للتوثيق التلقائي لشفرة المصدر.

حقوق النشر 2001-2005 مملوكة لـ David A. McGrew و Cisco Systems, Inc.

--------------------------------------------------------------------------------

<a name="references"></a>
# المراجع

مراجع SRTP و ICM
سبتمبر 2005

يُعرَّف Secure RTP في [RFC 3711](https://tools.ietf.org/html/rfc3711).
تعريف وضع العداد موجود في [القسم 4.1.1](https://tools.ietf.org/html/rfc3711#section-4.1.1).

SHA-1 مُعرَّف في [FIPS PUB 180-4](http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).

HMAC مُعرَّف في [RFC 2104](https://tools.ietf.org/html/rfc2104)
ومتجهات اختبار HMAC-SHA1 متاحة
في [RFC 2202](https://tools.ietf.org/html/rfc2202#section-3).

استخدام AES-GCM في SRTP مُعرَّف في [RFC 7714](https://tools.ietf.org/html/rfc7714).
تنزيل الأداة
الخيارالوصف
-sمرسل (S)RTP - يجعل التطبيق يرسل الكلمات
-rاستقبال (S)RTP - يجعل التطبيق يستقبل الكلمات
-k استخدم المفتاح الرئيسي لـ SRTP ، حيث يكون المفتاح سداسيًا عشريًا (بدون البادئة "0x")
-b نفس -k لكن بمفتاح مشفر بـ base64
-e تشفير/فك تشفير (لسرية البيانات) (يتطلب استخدام خيار -k أيضًا) (استخدم 128 أو 192 أو 256 لحجم المفتاح)
-gاستخدم وضع AES-GCM (يجب استخدامه مع -e)
-aمصادقة الرسائل (يتطلب استخدام خيار -k أيضًا)
-lعرض وحدات التصحيح المتاحة
-d تشغيل التصحيح للوحدة