امنیت لایه انتقال دیتاگرام
دیتاگرام امنیت لایه انتقال (DTLS) یک پروتکل ارتباطی است که امنیت را برای جلوگیری از استراق سمع، دستکاری، یا جعل پیام در دیتاگرام برنامههای کاربردی با اجازه دادن به آنها برای برقراری ارتباط در راه طراحی شده فراهم میکند. پروتکل DTLS بر اساس پروتکل TLS ایجاد شدهاست و از لحاظ ارائه تضمینهای امنیتی مشابه آن است. دیتاگرام پروتکل DTLS معنای حمل و نقل زیرین را حفظ میکند — برنامه از تاخیرهای مرتبط با پروتکلهای جریان رنج نمیبرد، اما به دلیل استفاده از UDP، برنامه باید با ترتیب بندی مجدد بستهها، دیتاگرام از دست رفته را مجدداً ارسال کند.. از آنجا که DTLS به جای TCP از UDP استفاده میکند، هنگام ایجاد تونل VPN از "مشکل TCP meltdown" , جلوگیری میکند.
تعریف
اسناد زیر DTLS را تعریف میکند:
- RFC 6347 برای استفاده با پروتکل Datagram User (UDP)،
- RFC 5238 برای استفاده با پروتکل کنترل تراکم Datagram (DCCP)،
- RFC 5415 برای استفاده با کنترل و تهیه نقاط دسترسی بیسیم (CAPWAP)،
- RFC 6083 برای استفاده با پروتکل انتقال پروتکل کنترل جریان (SCTP) محوطه سازی،
- RFC 5764 برای استفاده با پروتکل حمل و نقل ایمن در زمان واقعی (SRTP) متعاقباً DTLS-SRTP را در پیش نویس با پروتکل کنترل حمل و نقل امن در زمان واقعی (SRTCP) نامید.
DTLS 1.0 مبتنی بر TLS 1.1 است و DTLS 1.2 مبتنی بر TLS 1.2 است. نخسهٔ DTLS 1.1 وجود ندارد؛ این شماره نسخه به منظور هماهنگکردن شماره نسخه با TLS رد شد.
پیادهسازیها
کتابخانهها
پیادهسازی | DTLS 1.0 | DTLS 1.2 |
---|---|---|
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
LibreSSL | style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
libsystools | آری | نه |
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
OpenSSL | style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
PyDTLS | آری | آری |
Python3-dtls | آری | آری |
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری|style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه | ||
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#F99;vertical-align:middle;text-align:center;" class="table-no"|نه| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری| style="background:#9F9;vertical-align:middle;text-align:center;" class="table-yes"|آری | ||
pion / dtls (برو) | نه | آری |
کالیفرنیا / اسکاندیم (جاوا) | نه | آری |
پیادهسازی | DTLS 1.0 | DTLS 1.2 |
برنامههای کاربردی
- Cisco AnyConnect VPN Client از TLS و DTLS استفاده میکند، همچنین مانند سرویس گیرنده OpenConnect OpenConnect و سرور ocserv سازگار با AnyConnect
- پارچه Cisco InterCloud از DTLS برای ایجاد تونل بین محیطهای محاسباتی خصوصی و عمومی / ارائه دهنده استفاده میکند
- F5 Networks Edge VPN Client از TLS و DTLS استفاده میکند
- Citrix Systems NetScaler از DTLS برای تأمین امنیت UDP استفاده میکند
- مرورگرهای وب: Google Chrome، Opera و Firefox از DTLS-SRTP برای WebRTC پشتیبانی میکنند
آسیبپذیری
در فوریه سال ۲۰۱۳ دو محقق از رویال هالووی دانشگاه لندن یک حمله را کشف که به آنها اجازه بازیابی متن آشکار از یک اتصال DTLS با استفاده از اجرای OpenSSL را از DTLS که رمز بلوک زنجیرهای رمزگذاری حالت استفاده شد.
جستارهای وابسته
- ZRTP
- پروتکل اطلاعات کاربر قابل اطمینان
- QUIC
منابع
- ↑ Titz, Olaf (2001-04-23). "Why TCP Over TCP Is A Bad Idea". Retrieved 2015-10-17.
- ↑ Honda, Osamu; Ohsaki, Hiroyuki; Imase, Makoto; Ishizuka, Mika; Murayama, Junichi (October 2005). Atiquzzaman, Mohammed; Balandin, Sergey I (eds.). "Performance, Quality of Service, and Control of Next-Generation Communication and Sensor Networks III". 6011: 60110H. Bibcode:2005SPIE.6011..138H. CiteSeerX 10.1.1.78.5815. doi:10.1117/12.630496. ;
- ↑ Peck, M.; Igoe, K. (2012-09-25). "Suite B Profile for Datagram Transport Layer Security / Secure Real-time Transport Protocol (DTLS-SRTP)". IETF.
- ↑ Rescorla, Eric; Modadugu, Nagendra (January 2012). Datagram Transport Layer Security Version 1.2. RFC 6347. https://tools.ietf.org/html/rfc6347.
- ↑ Julien Kauffmann. "libsystools: A TLS/DTLS open source library for Windows/Linux using OpenSSL". Sourceforge.
- ↑ "mbed TLS 2.0.0 released". ARM. 2015-07-13. Retrieved 2015-08-25.
- ↑ "NSS 3.14 release notes". Mozilla Developer Network. Mozilla. Archived from the original on 17 January 2013. Retrieved 2012-10-27.
- ↑ "NSS 3.16.2 release notes". Mozilla Developer Network. Mozilla. 2014-06-30. Retrieved 2014-06-30.
- ↑ "As of version 1.0.2". The OpenSSL Project. The OpenSSL Project. 2015-01-22. Archived from the original on 4 September 2014. Retrieved 2015-01-26.
- ↑ Ray Brown. "pydtls - Datagram Transport Layer Security for Python". GitHub.
- ↑ Ray Brown. "DTLS for Python". Python Software Foundation.
- ↑ Ray Brown/Mobius Software LTD. "pydtls - Datagram Transport Layer Security for Python". GitHub.
- ↑ Ray Brown/Mobius Software LTD. "DTLS for Python3 Based on PyDTLS". Python Software Foundation.
- ↑ "An update is available that adds support for DTLS in Windows 7 SP1 and Windows Server 2008 R2 SP1". Microsoft. Retrieved 13 November 2012.
- ↑ Justinha. "TLS (Schannel SSP) changes in Windows 10 and Windows Server 2016". docs.microsoft.com (به انگلیسی). Retrieved 2017-09-01.
- ↑ "Technical Note TN2287: iOS 5 and TLS 1.2 Interoperability Issues". iOS Developer Library. Apple Inc. Retrieved 2012-05-03.
- ↑ Olaf Bergmann. "tinydtls". Eclipse Foundation.
- ↑ Peter Waher. "Waher.Security.DTLS". Waher Data AB.
- ↑ Dmitriy Tsvettsikh. "Secure UDP communications using DTLS in pure js". GitHub.
- ↑ Dmitriy Tsvettsikh. "DTLS in pure js". npm.
- ↑ Mobius Software LTD. "Non blocking Java DTLS Implementation based on BouncyCastle and Netty". Mobius Software LTD.
- ↑ Sean DuBois. "pion/dtls: DTLS 1.2 Server/Client implementation for Go". GitHub.
- ↑ "californium/scandium: DTLS 1.2 Server/Client implementation for java and coap. Includes connection id extension". Eclipse Foundation.
- ↑ "AnyConnect FAQ: tunnels, reconnect behavior, and the inactivity timer". Cisco. Retrieved 26 February 2017.
- ↑ "Cisco InterCloud Architectural Overview" (PDF). Cisco Systems.
- ↑ "f5 Datagram Transport Layer Security (DTLS)". f5 Networks.
- ↑ "Configuring a DTLS Virtual Server". Citrix Systems.
- ↑ "WebRTC Interop Notes". Archived from the original on 2013-05-11.
- ↑ Plaintext-Recovery Attacks Against Datagram TLS