تاکنون مکانیزم‌‏‏های زیادی به منظور مبادله کلید بین موجودیت‌‏ها پیشنهاد شده‌اند. این مکانیزم‌‏‏ها به مرور و با توجه به حملات مطرح شده به آن‏ها ارتقا یافته‌اند. در ادامه تنها چند روش مبادله کلید از بین روش‏‌های مختلف موجود انتخاب شده و بیان می‏‌شوند:

1) مبادله کلید با استفاده از رمز متقارن

در این پروتکل فرض می‏‌شود یک مرکز توزیع کلید KDC وجود دارد که همه کاربران دارای یک کلید مشترک با آن هستند. حال اگر دو طرف A و B بخواهند یک کلید مشترک با یکدیگر داشته باشند تا با استفاده از آن بتوانند با هم ارتباط امن برقرار کنند، مراحل زیر باید انجام پذیرد:

  1. A با برقراری ارتباط با مرکز KDC تقاضای ارتباط با B می‌‏کند.
  2. مرکز KDC یک کلید جلسه تصادفی تولید می‌‏کند. سپس این کلید را با کلید مشترک بین مرکز و A و همچنین کلید مشترک بین مرکز با B رمز کرده و هر دو را برای A ارسال می‏‌کند.
  3. A کلید جلسه رمز شده با کلید مشترک بین مرکز و A را رمزگشایی می‌‏کند و به کلید جلسه دست می یابد.
  4. A کلید جلسه رمز شده با کلید مشترک بین مرکز و B را برای B ارسال می‏‌کند.
  5. B کلید جلسه رمز شده دریافتی را با کلید مشترک بین مرکز و B رمزگشایی کرده و به کلید جلسه دست می‌یابد.
  6. A و B با استفاده از کلید جلسه مشترک ارتباط امن برقرار می‏‌کنند.

پروتکل مذکور بر پایه امنیت مرکز KDC استوار است و اگر امنیت آن به خطر بیفتد، کل امنیت سامانه در معرض خطر خواهد بود. به علاوه مرکز قادر است کلیه ارتباطات بین کاربران سامانه را شنود کند.

2) مبادله کلید با استفاده از رمز کلید عمومی

در این پروتکل فرض بر آنست که کلید عمومی کاربران در پایگاه داده مرکزی ذخیره شده و بدین وسیله کاربران می‏‌توانند به کلید عمومی یکدیگر دسترسی داشته باشند. در این صورت A و B به صورت زیر یک کلید مشترک با هم تولید می‏‌کنند.

  1. A کلید عمومی B را از پایگاه داده مرکزی به دست می‏‌آورد.
  2. A کلید جلسه تصادفی را تولید کرده و آن را توسط کلید عمومی B رمز نموده و حاصل را برای B ارسال می‏‌کند.
  3. B کلید رمز شده دریافتی را توسط کلید خصوصی خود رمزگشایی کرده و به این ترتیب به کلید جسه دست می‌یابد.
  4. از این به بعد کلیه ارتباطات بین A و B با کلید جلسه مشترک رمز می‏‌گردد.

روشی که به وسیله آن می‌‏توان به کلید عمومی دیگران دسترسی پیدا نمود و از طرف دیگر از پیوند بین کلید عمومی و هویت موجودیت مطمئن شد، این است که در سامانه از گواهی کلید عمومی استفاده شود. به این ترتیب مرکز KDC مبادرت به امضای گواهی کلید عمومی موجودیت‌‏ها می‌‏کند. در این راهکار به خطر افتادن امنیت مرکز مشکلات کمتری نسبت به راهکار مذکور در بخش 1 ایجاد می‌‏کند زیرا با رخداد مشکل امنیتی در مرکز آنچه حمله کننده به آن دست می‌‏یابد کلید خصوصی مرکز است که توسط آن می‌‏تواند گواهی‏‌های جعلی ایجاد کند، ولی قادر نخواهد بود تا به کلیدهایی که به کمک گواهی‌‏های صادر شده قبلی مبادله شده‌اند، دست یابد.

3) مبادله پیام و کلید

در پروتکلی که در ادامه ذکر خواهد شد نیازی نیست تا موجودیت‏‌های A و B ابتدا کلید جلسه را مبادله کنند تا سپس بتوانند به مبادله امن پیام اقدام کنند. بلکه A می‌‏تواند قبل از این که کلید مبادله کند برای B پیام ارسال کند. پروتکل به صورت زیر است:

  1. A کلید جلسه تصادفی K را تولید کرده و پیام M را توسط آن رمز می‌‏کند تا (EK(M به دست آید.
  2. A کلید عمومی B را از پایگاه داده به دست می‌‏آورد.
  3. A کلید K را توسط کلید عمومی B رمز می‏‌کند تا (EB(K به دست آید.
  4. A پیام رمز شده (EK(M و کلید رمز شده (EB(K را برای B ارسال می‌‏کند. برای اطمینان از این که واقعا موجودیت A ارسال‏‌کننده است، می‌‏توان امضای A روی کل داده ارسال‏‌شده را اضافه نمود.
  5. B با استفاده از کلید خصوصی خود، کلید جلسه رمز شده را رمزگشایی می‏‌کند.
  6. B پیام رمز شده را با استفاده از کلید جلسه به دست آمده رمزگشایی می‏‌کند.

4) پخش پیام و کلید

در پروتکل زیر A می‏‌تواند پیام M را برای موجودیت‏‌های B، C و D ارسال کند.

  1. A کلید جلسه تصادفی K را تولید کرده و پیام M را توسط آن رمز می‏‌کند تا (EK(M به دست آید.
  2. A کلید عمومی B، C و D را از پایگاه داده به دست می‌‏آورد.
  3. A کلید K را توسط کلید عمومی B رمز می‏‌کند تا (EB(K به دست آید.  A کلید K را توسط کلید عمومی C رمز می‏‌کند تا (EC(K به دست آید. A کلید K را توسط کلید عمومی D رمز می‏کند تا (ED(K به دست آید.
  4. A پیام رمز شده (EK(M و کلیدهای رمز شده را برای همه ارسال می‌‏کند.
  5. تنها B، C و D می‏‌توانند با استفاده از کلید خصوصی خود، کلید جلسه رمز شده را رمزگشایی کنند.
  6. تنها B، C و D می‏‌توانند پیام رمز شده را با استفاده از کلید جلسه به دست آمده رمزگشایی کنند.

این پروتکل را می‏‌توان در شبکه‌ای به کار برد که یک سرور مرکزی کل پیام‏‌های دریافتی را از A دریافت کرده و پیام هر موجودیت را برای همان موجودیت ارسال می‌‏کند. سرور مرکزی از آنجا که کلید خصوصی موجودیت‏‌ها را نمی‌‏داند قادر به رمزگشایی پیام نخواهد بود.

5) مبادله کلید دیفی-هلمن

پروتکل مبادله کلید دیفی-هلمن پایه روش مبادله کلید در بسیاری از پروتکل‏‌های مطرح از جمله IKE می‌‏باشد. در این پروتکل نیازی نیست تا دو طرف هیچ کلید مشترکی از قبل توافق کرده باشند. حتی در پروتکل مبادله کلید دیفی-هلمن نیاز نیست تا دو طرف کلید عمومی یکدیگر را بدانند. امنیت این روش بر سختی محاسبه لگاریتم گسسته در میدان محدود استوار می‏‌باشد. ابتدا دو طرف بر سر یک عدد اول بزرگ n و مولد g در پیمانه g ) n در پیمانه n مولد است اگر توان‏‌های آن همه اعداد غیر صفر در پیمانه n را تولید کنند) توافق می‏‌کنند. این دو پارامتر نیازی به محرمانگی ندارند و می‏‌توانند در یک کانال به صورت فاش ردوبدل شوند. همچنین n و g می‌‏توانند بین گروهی از کاربران مشترک باشند. این پروتکل به صورت زیر می‏‌باشد:

  1. A یک عدد تصادفی بزرگ x را انتخاب کرده و X=gx mod n را محاسبه کرده و برای B ارسال می‌‏کند.
  2. B یک عدد تصادفی بزرگ y را انتخاب کرده و Y=gy mod n را محاسبه کرده و برای A ارسال می‏‌کند.
  3. A کلید K=Yx mod n را محاسبه می‏‌کند.
  4. B کلید K’=Xy mod n را محاسبه می‏‌کند.

K و K’ با هم برابر می‏‌باشند و به این ترتیب A و B بر سر یک کلید محرمانه توافق کرده‌اند. محاسبه کلید با دانستن X و Y عملی نیست. انتخاب g و n تاثیر زیادی در امنیت پروتکل دارد. n باید به گونه‌ای انتخاب شود که n-1)/2) نیز اول باشد. n باید بزرگ باشد زیرا امنیت پروتکل، معادل با سختی فاکتورگیری اعدادی به بزرگی n می‏‌باشد.

6) پروتکل ایستگاه به ایستگاه

اشکال پروتکل مبادله کلید دیفی-هلمن این است که A و B راهی برای شناسایی هویت واقعی طرف مقابل ندارند. از این روی این پروتکل اغلب با یک روش احراز اصالت همراه می‏‌شود. پروتکلی که در ادامه ذکر خواهد شد با استفاده از امضای دیجیتال و گواهی کلید عمومی احراز اصالت را انجام می‏‌دهد:

  1. A عدد تصادفی بزرگ x را انتخاب کرده و X=gx mod n را محاسبه کرده و برای B ارسال می‌‏کند.
  2. B یک عدد تصادفی بزرگ y را انتخاب کرده و Y=gy mod n را محاسبه کرده و با استفاده از X و y کلید K را به صورت K=Xy mod n محاسبه می‌‏کند. سپس X و Y را با استفاده از کلید خصوصی خود امضا کرده و حاصل را توسط کلید K رمز نموده و به همراه Y برای A ارسال می‏‌کند. یعنی پیام ارسالی به صورت ((Y,EK(SB(X,Y می‏‌باشد.
  3. A کلید K را به صورت K=Yx mod n محاسبه کرده و پیام رمز شده دریافتی را رمزگشایی کرده و سپس امضا را مورد وارسی قرار می‌‏دهد. سپس امضای X و Y را با استفاده از کلید خصوصی خود محاسبه کرده، حاصل را با کلید K رمز کرده و برای A ارسال می‌‏کند. یعنی پیام ارسالی به صورت ((EK(SA(X,Y می‏‌باشد.
  4. B پیام دریافتی را رمزگشایی کرده و صحت امضا را مورد وارسی قرار می‏‌دهد.