دستدهی ۴ مرحلهای چیست؟
بعد از اینکه کارشناسان نشان دادند که امنیت WEP اساساً شکسته شده است، IEEE راه حل قدرتمندتری را در اصلاحیه استاندارد 802.11 معرفی کرد. در این اصلاحیه عملیات 4-Way Handshake و دو پروتکل محرمانگی و یکپارچگی داده با نامهای WPA-TKIP و AES-CCMP معرفی شد. در حالی که اصلاحیه 802.11i هنوز در حال توسعه و نوشته شدن بود، سازمان Wi-Fi Alliance براساس نسخه پیش نویس اصلاحیه، شروع به صدور گواهینامههای امنیتی برای دستگاههای بیسیم کرد. این برنامهی صدور گواهی امنیتی، WPA یا Wi-Fi Protected Access نام داشت. وقتی نسخه نهایی اصلاحیه به تصویب رسید WPA2 نیز بر اساس نسخه نهایی اصلاحیه، ساخته شد. چون WPA و WPA2 هردو براساس 802.11i هستند، تقریباً از لحاظ فنی به هم شباهت دارند. تفاوت اصلی میان این دو این است که WPA2 از الگوریتم قدرتمند AES برای رمزنگاری استفاده کرده و WPA از الگوریتم قدیمیتر و ضعیف تری به نام TKIP استفاده میکند؛ امّا چیزی که بین هردو مشترک بوده و امروزه تمامی شبکههای Wi-Fi از آن استفاده میکنند، عملیات 4-Way Handshake (در این مقاله با نام دستدهی 4 مرحلهای ذکر خواهد شد) است.
دست دهی ۴ مرحلهای چیست؟
دست دهی 4 مرحلهای فرآیند تبادل 4 پیام بین یک Access Point (در ادامه با نام مخفف AP از آن یاد میشود) و دستگاه کلاینت برای تولید چند کلید رمزنگاری است که برای رمزنگاری دادههای اصلی ارسالی از طریق بیسیم استفاده خواهد شد.
برای اینکه زیاد در مورد اصطلاحات مورد استفاده برای شرح دستدهی ۴ مرحلهای گیج نشوید، در ادامه نگاهی اجمالی به هرکدام از این اصطلاحات میاندازیم.
چند مفهومی که در مورد آنها صحبت خواهیم کرد به شرح ذیل است:
- MSK (Master Session Key)
- PMK (Pairwise Master Key)
- GMK (Group Master Key)
- PTK (Pairwise Transient Key)
- GTK (Group Temporal Key)
- Anonce
- Snonce
- MIC
ابتدا کلیدهایی را شرح خواهم داد که زمان عملیات دستدهی ۴ مرحلهای تولید میشوند و بعد در مورد کلیدها و سایر متغیرهایی که برای تولید آنها نیاز است توضیح خواهم داد.
PTK (Pairwise Transient Key):
PTK برای رمزنگاری کل دادههایی که به صورت Unicast بین کلاینت و AP رد و بدل میشود، مورد استفاده قرار میگیرد. برای تولید PTK کلاینت و AP به مقادیر ذیل نیاز دارند:
PTK = PRF (PMK + Anonce + SNonce + Mac (AA)+ Mac (SA))
ANonce یک عدد تصادفی است که توسط AP تولید و SNonce عدد تصادفی است که توسط دستگاه کلاینت ایجاد میشود و دو مقدار بعدی شامل مک آدرس یا آدرس فیزیکی AP و کلاینت هستند. PRF نیز یک تابع شبه تصادفی است که روی تمام این مقادیر اعمال شده و در نهایت PTK را تولید میکند. PTK خود به کلید دیگری به نام PMK وابسته است که در ادامه مورد بحث قرار میگیرد.
GTK (Group Temporal Key):
GTK برای رمزنگاری دادههایی که به صورت Multicast و Broadcast بین کلاینت و AP رد و بدل میشوند، مورد استفاده قرار میگیرد. GTK کلیدی است که بین تمام دستگاههای کلاینت که به یک AP متصل هستند، مشترک است. هر AP یک GTK متفاوت دارد که آن را بین دستگاههایی که به آن متصل هستند، به اشتراک میگذارد.
GTK خود به کلید دیگری به نام GMK وابسته است که در ادامه مورد بحث قرار میگیرد.
PMK (Pairwise Master Key):
PMK چیست و چرا به آن نیاز داریم؟ حالا میدانیم PTK و GTK چه هستند. PTK با استفاده از PMK تولید میشود. همانطور که قبلاً اشاره شد، برای تولید PTK نیاز به مقادیر زیر داریم:
PTK = PRF (PMK + Anonce + SNonce + Mac (AA)+ Mac (SA))
در WPA/WPA2 Personal در واقع PMK با استفاده از چیزی که ما آن را به نام پسورد وایفای میشناسیم، ایجاد میشود.
GMK (Group Master Key):
GMK در دستدهی 4 مرحلهای برای ایجاد GTK استفاده میشود. GTK در هر AP ایجاد شده و بین دستگاههایی که به AP متصل شدهاند به اشتراک گذاشته خواهد شد.
MSK (Master Session Key):
MSK کلیدی است که در احراز هویت در استاندارد 802.1X یا در واقع WPA/WPA2 Enterprise ایجاد میشود و بعد در فرآیندی دیگر به PMK تبدیل خواهد شد.
دیدیم که هر کلید چطور به دیگری وابستگی دارد. سلسله مراتب ایجاد کلیدها به صورت زیر است که برای فهم بهتر وابستگی من آنها را از پایین به بالا توضیح دادم.
دستدهی ۴ مرحلهای در عمل:
حالا که کلیدهای مهم در این عملیات و نحوه تولید آنها را متوجه شدیم، بهتره نگاهی به 4 Way Handshake در دنیای واقعی بیندازیم. زمانی که یک کلاینت قصد دارد به یک شبکه Wi-Fi متصل شود، این امر با Authentication و Association متقابل اتفاق میافتد. در شکل زیر عملیات Association قبل از عملیات Handshake قابل مشاهده است.
وقتی به یک شبکه Wi-Fi متصل میشوید، هیچ احراز هویت واقعی انجام نمیشود، در عوض Open System Authentication اتفاق میافتد که به هر کلاینتی که از استاندارد 802.11 پیروی میکند، اجازه اتصال اولیه را میدهد و احراز هویت واقعی و اصلی در زمان 4-Way Handshake اتفاق میافتد. بعد از Open Authentication کلاینت با ارسال پیام درخواست Association به AP با شبکه وایفای Associate میکند. در واقع در این پیام کلاینت به AP اعلام میکند که قصد استفاده از چه نوع رمزگذاری را دارد. بعد از آن AP در پاسخ، موفقیت یا عدم موفقیت درخواست Association را به کاربر ارسال میکند.
دستدهی ۴ مرحلهای در وایرشارک:
پیام اول:
AP یک پیام حاوی ANonce جهت ایجاد PTK به دستگاه کلاینت ارسال میکند. فراموش نکنید که دستگاه کلاینت چون قبلاً به AP متصل شده، آدرس مک آن را در اختیار دارد. بنابراین کلاینت از قبل PMK، SNonce و آدرس مک خود را در اختیار داشته و وقتی ANonce را نیز از AP دریافت میکند، همه موارد لازم برای ایجاد PTK را در اختیار دارد.
آدرس مک 9C:5D:12:5E:6C:66 آدرس فیزیکی مبدأ یا در واقع AP است که پیامی به مقصد D0:C5:F3:A9:16:C5 یا همان کلاینت ارسال میکند. در این پیام AP در حال ارسال ANonce به دستگاه کلاینت است.
پیام دوم:
وقتی کلاینت PTK خود را تولید کرد، SNonce را که AP به آن برای تولید PTK خود نیاز دارد، ارسال میکند. کلاینت پیام دوم را به همراه MIC یا Message Integrity Code ارسال میکند تا از یکپارچگی و عدم دستکاری پیام اطمینان حاصل شود. وقتی SNonce توسط AP دریافت میشود، میتواند PTK خود را برای رمزنگاری پیامهای Unicast تولید کند. در اینجا لازم به ذکر است که PTK خود به 3 کلید جداگانه KCK (Key Confirmation Key)، KEK (Key Encryption Key) و TK (Temporal Key) تقسیم میشود. KEK برای رمزنگاری GTK استفاده میشود و KCK برای اصالت سنجی پیامهای ارسالی بعدی استفاده خواهد شد. TK کلیدی خواهد بود که تمام دادههای معمولی Unicast بعد از عملیات دستدهی را رمزنگاری خواهد کرد.
پیام سوم:
پیام سوم در دستدهی از AP به کلاینت ارسال میشود و حاوی GTK است. AP بدون دخالت کلاینت GTK را با استفاده از GMK تولید میکند.
پیام چهارم:
پیام چهارم و آخر از کلاینت به AP ارسال میشود تا AP را از نصب کلیدها آگاه کند.
پس از اینکه فرآیند دستدهی تکمیل شد، تمام ترافیکی که بین کلاینت و AP رد و بدل میشود، رمزنگاری خواهد شد. دادههای Unicast در واقع با استفاده از Temporal Key رمزنگاری و دادههای Multicast و Broadcast با استفاده از Group Temporal Key رمزنگاری خواهد شد.
جمع بندی
در سال 2018، اعلام شد که یک آسیب پذیری در دستدهی 4 مرحلهای وجود دارد. حملهای با نام KRACK که از نقطه ضعفی در فرآیند نصب مجدد کلید وجود داشت، استفاده میکرد. کمی بعد از آن، تکنیک دیگری نیز با نام Kr00k شناسایی شد که بی شباهت به حمله قبلی نیست. توضیح در مورد این آسیب پذیریها خارج از بحث این مقاله است و در زمان دیگری به آنها پرداخته خواهد شد.
WPA و WPA2 کاملاً نسبت به این حملات آسیب پذیر هستند، برای همین است از سال گذشته دستگاههای وایفای به سمت استفاده از WPA3 رفتند.