DataNetSec-Dousti-10-SSL_TLS-v1.pdf

‫دانشگاه صنعتی شریف‬
‫دانشکده مهندسی کامپیوتر‬
‫آزمایشگاه امنیت داده و شبکه‬
‫‪http://dnsl.ce.sharif.edu‬‬
‫درس ‪ SSL :10‬و ‪TLS‬‬
‫محمد صادق دوستی‬
‫‪1 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫‪ ‬معرفی و تاریخچه‬
‫‪ SSL/TLS ‬در سطح باال‬
‫‪ TLS ‬در عمل‬
‫‪ ‬جزئیات ‪TLS‬‬
‫‪Heartbleed ‬‬
‫‪2 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫معرفی کلی‬
‫‪Secure Sockets Layer‬‬
‫‪ SSL:‬‬
‫‪Transport Layer Security‬‬
‫‪ TLS:‬‬
‫‪ SSL ‬در شررکت ‪ Netscape Communications‬توسرعه‬
‫یافت و به سرعت محبوب شد (طاهر الجمل؛ پدر ‪.)SSL‬‬
‫‪‬هدف اصلی ‪ ،SSL‬امنیت وب (‪ )HTTP‬بود‪.‬‬
‫‪‬ترکیب ‪ HTTP‬روی ‪ SSL‬را ‪ HTTPS‬گوییم‪.‬‬
‫‪‬امروزه ‪ SSL‬کاربردهای دیگری نیز دارد‪.‬‬
‫‪ TLS ‬نسخه استاندارد شده ‪ SSL‬است‪.‬‬
‫‪3 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫جایگاه در شبکه‬
‫‪ SSL/TLS ‬الیررهای برراالی الیرره انتدرراش در پشررته پروتکررل‬
‫‪ TCP/IP‬است‪.‬‬
‫‪‬برخی آن را در زمره الیه کاربرد محسوب میکنند‪.‬‬
‫‪ SSL/TLS ‬بر مبنای پروتکل ‪ TCP‬است‪.‬‬
‫‪‬نسررخهای بررر مبنررای ‪ UDP‬هررم پیرراده شررده اسررت کرره برره آن‬
‫‪( Datagram Transport Layer Security‬یرا ‪)DTLS‬‬
‫میگویند‪.‬‬
‫‪ ‬پروتکلهرررررایی نظیرررررر ‪ NNTP ،SMTP ،FTP ،HTTP‬و‬
‫‪ XMPP‬قادرند از ‪ SSL/TLS‬استفاده کنند‪.‬‬
‫‪4 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پورتهای پیشفرض معروف‬
‫پروتکل پورت عادی پورت روی ‪SSL/TLS‬‬
‫‪443‬‬
‫‪80‬‬
‫‪HTTP‬‬
‫‪443‬‬
‫‪80‬‬
‫‪XMPP‬‬
‫‪465‬‬
‫‪ 25 SMTP‬و ‪587‬‬
‫‪563‬‬
‫‪119‬‬
‫‪NNTP‬‬
‫‪ 989‬و ‪990‬‬
‫‪ 20‬و ‪21‬‬
‫‪FTP‬‬
‫‪IMAP‬‬
‫‪POP3‬‬
‫‪LDAP‬‬
‫‪Telnet‬‬
‫‪143‬‬
‫‪110‬‬
‫‪389‬‬
‫‪23‬‬
‫‪993‬‬
‫‪995‬‬
‫‪636‬‬
‫‪992‬‬
‫توجه‪ :‬پروتکل ‪ Telnet‬روی ‪ SSL/TLS‬کامالً با پروتکل ‪ SSH‬تفاوت دارد‪.‬‬
‫‪5 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
STARTTLS ‫فرمان‬
‫ که برا‬،‫ افزونهای بر پروتکلهای متن آشکار است‬STARTTLS ‫ فرمان‬
:‫ مثراش‬.‫ ارتدرا دهنرد‬TLS ‫اجرای آن میتوانند امنیت خود را به کمر‬
:SMTP
S: <waits for connection on TCP port 25>
C: <opens connection>
S: 220 mail.example.org ESMTP service ready
C: EHLO client.example.org
S: 250-mail.example.org offers welcome
S: 250 STARTTLS
C: STARTTLS
S: 220 Go ahead
C: <starts TLS negotiation>
C & S: <negotiate a TLS session>
C & S: <check result of negotiation>
C: EHLO client.example.org
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
6 / 79
‫تاریخچه‬
‫پروتکل‬
‫سال‬
‫‪SSL 1.0‬‬
‫؟؟‬
‫‪SSL 2.0‬‬
‫‪1995‬‬
‫تعدادی ناامنی – از ‪ 2011‬به بعد منسوخ محسوب میشود (‪)RFC 6176‬‬
‫‪SSL 3.0‬‬
‫‪1996‬‬
‫حمله ‪ POODLE‬به آن وارد است ‪ -‬از ‪ 2015‬به بعد منسوخ محسوب‬
‫میشود (‪)RFC 7568‬‬
‫‪TLS 1.0‬‬
‫‪1999‬‬
‫بر مبنای ‪ – SSL 3.0‬قابلیت تنزش اتصاش به ‪ SSL 3.0‬و در نتیجه ناامنی‬
‫‪TLS 1.1‬‬
‫‪2006‬‬
‫رفع تعدادی از ناامنیهای ‪TLS 1.0‬‬
‫‪TLS 1.2‬‬
‫‪2008‬‬
‫افزودن برخی الگوریتمهای رمز به ‪ – TLS 1.1‬عدم سازگاری با ‪SSL 2.0‬‬
‫‪TLS 1.3‬‬
‫‪7 / 79‬‬
‫توضیح‬
‫داخلی ‪ – Netscape‬منتشر نشد – به شدت ناامن‬
‫به زودی حذف برخی الگوریتمهای رمز ضعیف – افزودن الگوریتمهای رمز جدید‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫‪ ‬معرفی و تاریخچه‬
‫‪ SSL/TLS ‬در سطح باال‬
‫‪ TLS ‬در عمل‬
‫‪ ‬جزئیات ‪TLS‬‬
‫‪Heartbleed ‬‬
‫‪8 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫دو مفهوم اساسی ‪SSL/TLS‬‬
‫‪ ‬نشست (‪ :)Session‬تناظری بین کارخواه و کارگزار‪.‬‬
‫‪‬ایده‪ :‬پارامترهای رمزنگاری (از جمله کلید نشست) ی‬
‫برار تبرادش‬
‫شوند و پس از آن بتوان با خیاش راحت انواع ارتباط را داشت‪.‬‬
‫‪‬علت‪ :‬تبادش پارامترهای رمزنگاری هزینه زیادی دارد‪.‬‬
‫‪ ‬اتصاش‪ :‬ارتباطی برای انتداش بستهها بین کارخواه و کارگزار‪.‬‬
‫‪‬روی ی‬
‫نشست میتوان چندین اتصاش داشت‪.‬‬
‫‪‬اتصالها نیاز به تبادش پارامترهای رمزنگاری ندارنرد و از پارامترهرای‬
‫نشست بهره میگیرند‪.‬‬
‫‪9 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫زیر پروتکلهای ‪SSL/TLS‬‬
‫‪ ‬پروتکل ‪ SSL/TLS‬شامل چند زیر پروتکل است‪:‬‬
‫)رکورد( ‪Protocol‬‬
‫)دستداد( ‪Protocol‬‬
‫‪ Record‬‬
‫‪ Handshake‬‬
‫)تغییر رمز( ‪Cipher Spec Protocol‬‬
‫‪ Change‬‬
‫)هشدار( ‪Protocol‬‬
‫‪10 / 79‬‬
‫امنیت داده و شبکه‬
‫‪ Alert‬‬
‫محمد صادق دوستی‬
‫زیر پروتکلهای دستداد و رکورد‬
‫‪ ‬کررارخواه و کررارگزار بررا اسررتفاده از زیررر پروتکررل دسررتداد پارامترهررای‬
‫رمزنگاری را تبادش میکنند‪.‬‬
‫‪ ‬زیر پروتکل رکورد‪ ،‬از پارامترهای رمزنگاری استفاده کرده و بررای سرایر‬
‫زیر پروتکلهای ‪ SSL/TLS‬و پروتکرل الیره کراربرد روی آن خردمات‬
‫محرمانگی و صحت را فراهم میآورد‪.‬‬
‫‪ ‬زیر پروتکلهای دستداد‪ ،‬تغییر رمز‪ ،‬هشدار و الیره براالیی روی پروتکرل‬
‫رکورد اجرا میشوند؛ همان طور که ‪ HTTP‬روی ‪ TCP‬اجرا میشود‪.‬‬
‫‪‬پروتکل رکورد سررآیندهای الزم را بره آنهرا افرزوده و در صرورت لرزوم‬
‫رمزنگاری انجام میدهد‪.‬‬
‫‪11 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫اجرای پروتکلها روی زیر پروتکل رکورد‬
‫‪12 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫عملیات زیر پروتکل رکورد‬
‫به دلیل حمله ‪ ،CRIME‬معموالً‬
‫فشردهسازی در ‪ TLS‬انجام‬
‫نمیشود‬
‫مرحله ‪ Encrypt‬شامل ی‬
‫‪ Padding‬نیز هست‪.‬‬
‫‪13 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫قالب بستههای زیر پروتکل رکورد‬
‫‪14 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫زیر پروتکل تغییر رمز‬
‫‪ ‬در خالش پروتکل دستداد‪ ،‬هری‬
‫از کارخواه و کارگزار پارامترهرای‬
‫امنیتی مورد نظر خود را میفرستند‪.‬‬
‫‪ ‬پس از پایان کار‪ ،‬با ارساش ی‬
‫زیر پروتکل «تغییر رمرز»‪ ،‬پارامترهرا‬
‫نهایی میشوند‪.‬‬
‫‪‬با دریافت پیغام تغییر رمز‪ ،‬حالت معلر (‪ )pending‬هرر طررف‬
‫به حالت جاری (‪ )current‬تبدیل میشود‪.‬‬
‫‪ ‬زیر پروتکل «تغییر رمز» کوچکترین پروتکل امنیت شبکه است‪.‬‬
‫‪‬شامل فدط ‪ 1‬بایت با مددار ‪!1‬‬
‫‪15 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫چهار فاز تبادل پارامترهای امنیتی – ‪1‬‬
‫پیامهای خاکستری اختیاری یا‬
‫وابسته به موقعیت هستند‪.‬‬
‫‪16 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫چهار فاز تبادل پارامترهای امنیتی – ‪2‬‬
‫پیامهای خاکستری اختیاری یا‬
‫وابسته به موقعیت هستند‪.‬‬
‫‪17 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫علت وجود پیامهای اختیاری یا وابسته به موقعیت – ‪1‬‬
‫‪ ‬انواع مدلهای اعتماد‪:‬‬
‫‪‬طرفین هیچ کلید مشترکی از هم ندارند (‪)Anonymous DH‬‬
‫‪‬طرفین از هم کلید متدارن (‪ Pre-Shared Key‬یا ‪ )PSK‬دارند؛‬
‫مشهور به ‪.TLS-PSK‬‬
‫‪‬کارگزار‪ ،‬کارخواه‪ ،‬یا هر دو از هم گواهی دیجیتاش دارند‪.‬‬
‫• مبتنی بر ‪( RSA‬دو نوع‪ RSA :‬فدط برای امضا؛ ‪ RSA‬برای امضا و رمز)‬
‫• مبتنی بر ‪( DSA‬دو نوع‪ :‬شامل پارامترهای ‪DH‬؛ بدون پارامترهای ‪)DH‬‬
‫‪Fixed DH‬‬
‫‪18 / 79‬‬
‫امنیت داده و شبکه‬
‫‪Ephemeral DH‬‬
‫محمد صادق دوستی‬
‫علت وجود پیامهای اختیاری یا وابسته به موقعیت – ‪2‬‬
‫‪ ‬نوع پروتکل مورد استفاده جهت تبادش کلید‪:‬‬
‫‪‬انتداش کلید (‪ :)Transport‬معموالً مبتنی بر ‪RSA‬‬
‫‪‬تبادش کلید‪ :‬معموالً مبتنی بر ‪DH‬‬
‫‪ ‬استفاده از ‪ DH‬به دلیل فراهم آوردن امنیت پیشرو ترجیح دارد‪.‬‬
‫‪ DH ‬با امنیت مساوی ‪ RSA‬شدیداً کندتر است‪.‬‬
‫‪‬اسررتفاده از ‪ DH‬روی خمهررای بیضرروی (‪)Elliptic Curves‬‬
‫معررروف برره ‪ E( ECDHE‬انتهررایی کوتررهنوشررت ‪Exchange‬‬
‫است)‪.‬‬
‫‪19 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
Pre-Master Secret
Pre- ‫ مدرداری بره نرام‬،‫ کلیدی که در پروتکل دستداد تبادش میشرود‬
.‫ است‬Master Secret
‫مدردار مخفری محاسربه‬
‫ شر‬،Pre-Master Secret ‫ با استفاده از‬
:‫میشود‬
Client write MAC secret
 Server write MAC secret
 Client write encryption key
 Server write encryption key
 Client write encryption IV
 Server write encryption IV

‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
20 / 79
‫زیر پروتکل هشدار‬
‫‪ ‬در صورتی که در حین اجررای پروتکرل ‪ SSL/TLS‬خطرایی رخ‬
‫دهد‪ ،‬یا طرفین بخواهند پیامهای کنترلری بفرسرتند‪ ،‬زیرر پروتکرل‬
‫هشدار اجرا میشود‪.‬‬
‫‪‬شامل دو بایت‪ :‬سطح هشدار‪ ،‬و کد هشدار‬
‫‪ ‬سطح هشدار میتواند ‪( warning‬مددار ‪ )1‬یا ‪( fatal‬مدردار ‪)2‬‬
‫باشد‪.‬‬
‫‪ ‬سطح هشدار ‪ fatal‬بالفاصله باعث بسته شدن اتصاش میشود‪.‬‬
‫‪‬سایر اتصالها روی نشست جراری ممکرن اسرت ادامره یابنرد‪ ،‬ولری‬
‫اتصاش جدیدی اجازه تشکیل نخواهد داشت‪.‬‬
‫‪21 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫نمونههایی از زیر پروتکل هشدار‬
 unexpected_message
 bad_record_mac
 handshake_failure
 certificate_revoked
 certificate_expired
 close_notify
‫محمد صادق دوستی‬
 ‫نمونهای از پیام کنترلی‬
‫امنیت داده و شبکه‬
22 / 79
‫انواع ‪ Payload‬زیر پروتکل رکورد در یک نگاه‬
‫‪23 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫‪ ‬معرفی و تاریخچه‬
‫‪ SSL/TLS ‬در سطح باال‬
‫‪ TLS ‬در عمل‬
‫‪ ‬جزئیات ‪TLS‬‬
‫‪Heartbleed ‬‬
‫‪24 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مثال‪ :‬اطالعات فایرفاکس از رمزنگاری ‪Gmail‬‬
‫‪25 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫واکاوی بیشتر‬
 TLS_ECDHE_RSA_WITH_AES_128_GCM_
SHA256, 128 bit keys, TLS 1.2
ECDHE: Elliptic Curve DH Exchange
RSA: Gmail Public Key Type
AES 128: Symmetric Key Cipher
GCM: Mode of Encryption
SHA256: Hash Algorithm (for MAC)
TLS 1.2: TLS Version
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
26 / 79
‫نقشه راه‬
‫‪ ‬در ادامه‪ ،‬سعی میکنیم تا ‪ TLS‬را در عمل بررسی کنیم‪.‬‬
‫‪ ‬با توجه به گستردگی پروتکل‪ ،‬امکان بررسری تمرام حالتهرا وجرود‬
‫ندارد‪.‬‬
‫‪ ‬دو حالت خاص‪:‬‬
‫‪‬حالت ‪ :1‬کلید عمومی ‪RSA‬؛ انتداش کلید با ‪RSA‬‬
‫‪‬حالت ‪ :2‬کلید عمومی ‪RSA‬؛ تبادش کلید ‪DH‬‬
‫‪ Apache + OpenSSL ‬روی ‪ Ubuntu‬به عنوان کارگزار‬
‫‪ Firefox ‬به عنوان کارخواه‬
‫‪27 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫جزئیات پیکربندی ‪ TLS‬با ‪ about:config‬در فایرفاکس‬
‫‪28 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
Apache + OpenSSL ‫تنظیمات‬
:OpenSSL ‫ تولید گواهی دیجیتاش کارگزار توسط‬
sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 1095 -newkey
rsa:2048 -out /etc/apache2/ssl/server.crt -keyout
/etc/apache2/ssl/server.key
:/etc/apache2/ports.conf ‫ تنظیم پورت در‬
Listen 443
)mod_ssl( ‫ آپاچی‬SSL ‫ فعاشسازی و پیکربندی ماژوش‬
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
29 / 79
mod_ssl ‫پیکربندی ماژول‬
:‫ فعاشسازی‬
sudo a2enmod ssl
:‫ پیکربندی‬
/etc/apache2/sites-available/default-ssl.conf
SSLCertificateFile
/etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
:‫ راهاندازی مجدد آپاچی‬
sudo /etc/init.d/apache2 restart
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
30 / 79
‫تنظیمات امنیتی در ماژول ‪mod_ssl‬‬
‫‪ ‬آنچرره تررا کنررون گفترره شررد‪ ،‬حررداقل تنظیمررات برررای راهانرردازی‬
‫‪ HTTPS‬در آپاچی بود‪.‬‬
‫‪ ‬برای امنیت بیشتر‪ ،‬باید تنظیمات دیگری در فایل ‪ssl.conf‬‬
‫آپرراچی انجررام داد (پررس از انجررام تنظیمررات آپرراچی بایررد مجرردداً‬
‫راهاندازی شود)‪.‬‬
‫‪ ‬در اسالیدهای بعدی دو تنظیم مهم را بررسی میکنیم‪:‬‬
‫‪‬نسخه ‪SSL/TLS‬‬
‫‪‬الگوریتمهای رمز و پروتکلهای مورد استفاده‬
‫‪31 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫نسخه ‪SSL/TLS‬‬
‫‪# The protocols to enable.‬‬
‫‪# Available values:‬‬
‫‪all, SSLv3, TLSv1, TLSv1.1, TLSv1.2‬‬
‫‪is no longer supported‬‬
‫‪#‬‬
‫‪# SSL v2‬‬
‫‪SSLProtocol all‬‬
‫‪ ‬در حاش حاضر امنترین تنظیم‪ TLSv1.2 ،‬است‪.‬‬
‫‪‬البته الزم است پشتیبانی کارخواهها از این نسخه از پروتکل در‬
‫نظر گرفته شود‪.‬‬
‫‪32 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫الگوریتمهای رمز و پروتکلهای مورد استفاده‬
#
#
#
#
#
#
SSL Cipher Suite:
List the ciphers that the client is
permitted to negotiate. See the
ciphers(1) man page from the openssl
package for list of all available options.
Enable only secure ciphers:
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
.‫ عالمت تعجب (!) به معنی عدم استفاده است‬
‫ (فع رالً معررادش‬authentication ‫ یعنرری پروتکررل برردون‬aNull
.)Anonymous DH
.‫ در مثاش فوق فدط رمزهای با امنیت متوسط و باال مورد قبولند‬
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
33 / 79
‫مجبور کردن کارگزار به عدم استفاده از ‪DH‬‬
‫‪ ‬به طور پی فرض‪ ،‬کارگزار از پروتکل ‪ ECDH‬برای تبادش کلیرد‬
‫استفاده میکند‪.‬‬
‫‪‬در جهت حفظ محرمانگی پیشرو‬
‫‪ ‬در حالت اوش میخواهیم انتداش کلید از طری ‪ RSA‬انجرام شرود؛‬
‫به همین دلیل ‪ ECDH‬را سمت کارگزار غیر فعاش میکنیم‪.‬‬
‫‪/etc/apache2/mods-enabled/ssl.conf‬‬
‫‪SSLCipherSuite !ECDH:!DH:HIGH:MEDIUM:!aNULL:!MD5‬‬
‫‪34 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫مجبور کردن مرورگر به عدم استفاده از ‪DH‬‬
‫‪ ‬همچنین میتوانستیم از فایرفاکس بخواهیم که از ‪ DH‬استفاده نکند‪.‬‬
‫‪35 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حالت ‪ – 1‬تعامل ‪ RSA‬بین کارخواه و کارگزار‬
‫‪ ‬با استفاده از ‪ Wireshark‬تعامل را شنود میکنیم‪.‬‬
‫‪36 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫در صورت اعتماد به کلید عمومی کارگزار و ادامه پروتکل‬

C
Client Hello
Server Hello
Certificate
Server Hello
Done
‫محمد صادق دوستی‬
S
C

S
C

S
Client Key
New Session
Exchange
Ticket
Change Cipher
Change Cipher
Spec
Spec
Enc. Handshake
Enc. Handshake
Message
Message
‫امنیت داده و شبکه‬
37 / 79
‫‪ Client Hello‬روی پروتکل رکورد‬
‫پروتکل رکورد از نسخه ‪1.0‬‬
‫از ‪ TLS‬استفاده کرده است‪.‬‬
‫‪38 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫داخل پیام ‪Client Hello‬‬
‫پروتکل دستداد از نسخه ‪1.2‬‬
‫از ‪ TLS‬استفاده کرده است‪.‬‬
‫با محدود کردن رمزهرا‬
‫در فایرفررراکس‪ ،‬هررریچ‬
‫روشرری غیررر از ‪RSA‬‬
‫بررررای تبرررادش کلیرررد‬
‫پیشنهاد نمیشود‪.‬‬
‫‪39 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پاسخ کارگزار‬
‫داخل‬
‫پیامهای‬
‫رکورد‬
‫دقت‪ :‬کارگزار نسخه ‪ 1.2‬از‬
‫‪ TLS‬را پیشنهاد میدهد‪.‬‬
‫‪40 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫داخل پیام ‪Server Hello‬‬
‫کررارگزار یکرری از رمزهررای پیشررنهاد شررده‬
‫توسط مرورگر را میپذیرد‪.‬‬
‫‪41 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫داخل پیام ‪Certificate‬‬
‫‪42 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫داخل پیام ‪Server Hello Done‬‬
‫‪43 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پاسخ کارخواه‬
‫داخل‬
‫پیامهای‬
‫رکورد‬
‫کوتررراهترین پروتکرررل‬
‫امنیتی شبکه!‬
‫‪44 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫داخل پیام ‪Client Key Exchange‬‬
‫‪ ‬کارخواه‪ Pre-Master Secret ،‬را تولید نموده‪ ،‬آن را برا کلیرد‬
‫عمومی کارگزار رمز و ارساش میکند‪.‬‬
‫‪ 6‬کلید نشست از روی ‪ Pre-Master Secret‬استخراج شده و‬
‫از این پس تدریباً همه چیز رمز شده خواهد بود‪.‬‬
‫‪ ‬سررلاش‪ :‬آیررا مرریترروان از ‪ Wireshark‬خواسررت کرره پیامهررا را‬
‫رمزگشایی کند؟‬
‫‪45 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫رمزگشایی پیامها توسط ‪ Wireshark‬با کلید خصوصی کارگزار‬
‫‪46 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫رمزگشایی پیامها توسط ‪ Wireshark‬با کلید خصوصی کارگزار‬
‫‪47 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫کل پروتکل ‪ -‬قبل و بعد از رمزگشایی‬
‫‪48 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پاسخ کارخواه ‪ -‬قبل و بعد از رمزگشایی‬
‫‪49 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پاسخ کارخواه ‪ -‬قبل و بعد از رمزگشایی‬
‫برررا الصررراق ‪ MAC‬و‬
‫سررپس رمررز کررردن آن‪،‬‬
‫کارخواه به کارگزار اثبات‬
‫میکند که کلید را دارد‪.‬‬
‫‪50 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پاسخ کارگزار ‪ -‬قبل و بعد از رمزگشایی‬
‫‪51 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پاسخ کارگزار ‪ -‬قبل و بعد از رمزگشایی‬
‫‪52 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫‪ Session Ticket‬چیست؟‬
‫‪ Session Ticket ‬یکی از توسعههای ‪ TLS‬است‪.‬‬
‫‪ ‬در ‪ RFC 5077‬تعریف شده است‪.‬‬
‫‪ ‬هدف این است که نیرازی نباشرد کرارگزار بره ازای هرر کرارخواه‪،‬‬
‫اطالعات وضعیت (‪ )State‬نگه دارد‪.‬‬
‫‪ ‬اطالعات وضعیت کارگزار از طری ‪ Session Ticket‬در اختیرار‬
‫کارخواه قرار میگیرد‪.‬‬
‫‪‬کارخواه در تماسهای بعدی از آن استفاده میکند‪.‬‬
‫‪ ‬از نظر مفهومی شبیه بلیت در کربروس است‪.‬‬
‫‪53 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫حالت ‪ – 2‬تعامل ‪ DH‬بین کارخواه و کارگزار‬
‫‪ ‬در سررمت کررارگزار‪ ،‬تنظرریم ‪ !ECDH:!DH‬را حررذف و آپرراچی را‬
‫مجدداً راهاندازی میکنیم‪.‬‬
‫‪ ‬در سمت کارخواه‪ ،‬یکی از پروتکلهای مربوط به ‪ DH‬را فعاش مینماییم‬
‫(در بخ‬
‫‪ about:config‬فایرفاکس)‪.‬‬
‫‪‬برای سادگی‪ ECDH ،‬را فعاش نمیکنیم‪.‬‬
‫‪ ‬مجدداً تعامل را با ‪ Wireshark‬بررسی میکنیم‪.‬‬
‫‪ ‬چرا حتی با داشتن کلید خصوصی کارگزار‪ Wireshark ،‬نمریتوانرد‬
‫پیامهای رمز شده را رمزگشایی نماید؟‬
‫‪‬امنیت پیشرو!‬
‫‪54 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫عدم امکان رمزگشایی پیامها حتی با داشتن کلید خصوصی‬
‫‪ ‬راهکار‪ :‬اگر بتوان به مرورگر گفت که از ‪Pre-Master Secret‬‬
‫کپی بگیرد‪ ،‬قادریم پیامها را حتی بردون داشرتن کلیرد خصوصری‬
‫کارگزار رمزگشایی کنیم‪.‬‬
‫‪‬چطور؟‬
‫‪55 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫کتابخانه ‪ NSS‬و متغیر محیطی‬
‫‪ ‬مرورگرهررایی مثررل ‪ Firefox‬و ‪ Chrome‬برررای رمزنگرراری از‬
‫کتابخانرهای برره نررام ‪ NSS‬کرره توسررط ‪ Mozilla‬توسررعه یافترره‬
‫استفاده میکنند‪.‬‬
‫‪‬کوتهنوشت ‪Network Security Services‬‬
‫‪ ‬اطالعات بیشتر‪:‬‬
‫‪https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS‬‬
‫‪ ‬میتوان با تنظیم متغیر محیطری ‪ ،SSLKEYLOGFILE‬بره ‪NSS‬‬
‫گفت که ‪ Pre-Master Secret‬را در ی‬
‫‪56 / 79‬‬
‫امنیت داده و شبکه‬
‫فایل ذخیره کند‪.‬‬
‫محمد صادق دوستی‬
‫تنظیم متغیر محیطی ‪ NSS‬در ویندوز‬
‫‪57 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تنظیم متغیر محیطی ‪ NSS‬در ویندوز‬
‫‪58 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تنظیم متغیر محیطی ‪ NSS‬در ویندوز‬
‫‪59 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫نکات مهم‬
‫‪ ‬پس از تنظیم متغیر محیطی‪ ،‬الزم است مرورگر را بسرته و مجردداً‬
‫باز نمایید‪.‬‬
‫‪‬هر برنامه تنها هنگام باز شدن متغیرهای محیطی را میخواند‪.‬‬
‫‪ ‬الزم است مرورگر به فایل تعیین شرده (‪ )ssl.log‬دسترسری‬
‫‪ write‬داشته باشد‪.‬‬
‫‪‬تنظیم کنترش دسترسی به فایل‬
‫‪ ‬حاش مجدداً به صفحه ‪ HTTPS‬مد نظرر برویرد و تعرامالت را برا‬
‫‪ Wireshark‬ذخیره نمایید‪.‬‬
‫‪60 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫محتوای فایل ‪ssl.log‬‬
‫‪# SSL/TLS secrets log file, generated by NSS‬‬
‫…‪CLIENT_RANDOM 1723a3ca6b5a… e99d65eeaa5e‬‬
‫‪ ‬قالب فایل در نشانی زیر مستند شده است‪:‬‬
‫‪https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format‬‬
‫‪ ‬هر خط از فایرل‪ ،‬یرا برا ‪ RSA‬شرروع مریشرود (انتدراش کلیرد) یرا برا‬
‫‪( CLIENT_RANDOM‬تبادش کلید ‪.)DH‬‬
‫‪ ‬در حالت دوم‪ ،‬دو عدد بعد از ‪ CLIENT_RANDOM‬میآید‪:‬‬
‫‪‬عدد نخست (‪ 64‬بایتی)‪ :‬نانس کارخواه‬
‫‪‬عدد دوم (‪ 96‬بایت)‪ :‬مددار ‪Pre-Master Secret‬‬
‫‪61 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تنظیم نشانی فایل ‪ ssl.log‬در ‪Wireshark‬‬
‫‪62 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫قبل و بعد از رمزگشایی‬
‫‪63 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫یافتن کلید مرتبط به هر نشست‬
‫‪ Wireshark ‬برا کمر‬
‫مدردار ‪ Random‬در پیرام ‪Client‬‬
‫‪ Hello‬متوجه میشود که از کدام سطر ‪ ssl.log‬باید بررای‬
‫رمزگشایی استفاده نماید‪.‬‬
‫‪64 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫یافتن کلید مرتبط به هر نشست‬
‫‪ Wireshark ‬برا کمر‬
‫مدردار ‪ Random‬در پیرام ‪Client‬‬
‫‪ Hello‬متوجه میشود که از کدام سطر ‪ ssl.log‬باید بررای‬
‫رمزگشایی استفاده نماید‪.‬‬
‫‪65 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫تبادل الگوریتمهای رمز پس از فعالسازی ‪DH‬‬
‫‪Client Hello‬‬
‫‪Server Hello‬‬
‫‪66 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫‪Server Key Exchange‬‬
‫‪67 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫‪Client Key Exchange‬‬
‫‪ ‬مددار ‪ Pre-Master Secret‬برابر کلید تبرادش شرده در ‪DH‬‬
‫است‪.‬‬
‫‪68 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫فهرست مطالب‬
‫‪ ‬معرفی و تاریخچه‬
‫‪ SSL/TLS ‬در سطح باال‬
‫‪ TLS ‬در عمل‬
‫‪ ‬جزئیات ‪TLS‬‬
‫‪Heartbleed ‬‬
‫‪69 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
)RFC 5246 ‫ (تعریف در‬master secret ‫تولید‬
master_secret = PRF(
pre_master_secret,
"master secret",
ClientHello.random ||
ServerHello.random)
.‫ بایتی است‬48 ‫ مدداری‬master secret 
)Pseudo-Random Function( ‫ یا تابع شبه تصادفی‬PRF 
.)seed( ‫ و بذر‬،)label( ‫ برچسب‬،‫ مدداری مخفی‬:‫ورودی‬
.‫ مدداری تصادفی به طوش دلخواه‬:‫خروجی‬
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
70 / 79
‫‪PRF‬‬
‫‪ ‬در ‪ TLS‬از ‪ HMAC‬برای ساخت ‪ PRF‬استفاده میشود‪.‬‬
‫‪ ،TLS 1.2‬استفاده از ‪ SHA-256‬یرا بهترر را بررای ‪HMAC‬‬
‫توصیه میکند‪.‬‬
‫= )‪PRF(secret, label, seed‬‬
‫)‪P_hash(secret, label || seed‬‬
‫‪71 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫ کلید نشست‬6 ‫استخراج‬
key_block = PRF(
master_secret,
"key expansion",
ServerHello.random ||
ClientHello.random)
‫ اسرتخراج‬key_block ‫ کلید نشست به ترتیب زیر از روی‬6 
:‫میشوند‬






Client write MAC secret
Server write MAC secret
Client write encryption key
Server write encryption key
Client write encryption IV
Server write encryption IV
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
72 / 79
MAC_write_key ‫مثال از کاربرد‬
MAC = MAC_Algorithm(MAC_write_key,
seq_num ||
TLSCompressed.type ||
TLSCompressed.version ||
TLSCompressed.length ||
TLSCompressed.fragment)
‫محمد صادق دوستی‬
‫امنیت داده و شبکه‬
73 / 79
‫فهرست مطالب‬
‫‪ ‬معرفی و تاریخچه‬
‫‪ SSL/TLS ‬در سطح باال‬
‫‪ TLS ‬در عمل‬
‫‪ ‬جزئیات ‪TLS‬‬
‫‪Heartbleed ‬‬
‫‪74 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫آسیبپذیری خونریزی قلبی (‪)Heartbleed‬‬
‫‪ ‬ی آسیبپذیری بسیار معرروف کره در سراش ‪ 2014‬در نررمافرزار‬
‫‪ OpenSSL‬کشف شد‪.‬‬
‫‪ ‬تأثیر روی میلیونها کارگزار ‪ HTTPS‬در دنیا!‬
‫‪ ‬آسیب پذیری در پیادهسازی پروتکرل ‪Heartbeat‬؛ توسرعهای از‬
‫‪ TLS‬تعریف شده در ‪.RFC 6520‬‬
‫‪‬این پروتکل برای بررسی و زنده نگهداشتن اتصاش است‪.‬‬
‫‪ ‬آسیبپذیری از نوع سرریز بافر است‪.‬‬
‫‪ ‬از ‪ 2011‬در کد ‪ OpenSSL‬وجود داشته است‪.‬‬
‫‪75 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫چگونگی سوء استفاده از آسیبپذیری ‪Heartbleed‬‬
‫‪76 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫چگونگی سوء استفاده از آسیبپذیری ‪Heartbleed‬‬
‫‪77 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫چگونگی سوء استفاده از آسیبپذیری ‪Heartbleed‬‬
‫‪78 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬
‫پایان‬
‫صفحه درس‪:‬‬
‫‪http://ce.sharif.edu/courses/94-95/1/ce442-1/‬‬
‫مراجعه حضوری جهت رفع اشکاش‪ :‬شنبهها ‪ 15‬الی ‪16‬‬
‫(طبده پنجم دانشکده‪ ،‬درب شیشهای جنب آسانسور)‬
‫یا در زمانهای دیگر با قرار قبلی‬
‫یا به وسیله رایانامه‪dousti@ce :‬‬
‫‪79 / 79‬‬
‫امنیت داده و شبکه‬
‫محمد صادق دوستی‬