نمایش نتایج 1 تا 5 از 5

نام تاپیک: طراحی ساختار یک بسته از اطلاعات و ارسال یک بسته رمزنگاری شده بر بستر شبکه

  1. #1
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    Question طراحی ساختار یک بسته از اطلاعات و ارسال یک بسته رمزنگاری شده بر بستر شبکه

    سلام دوستان وقت بخیر
    میخوام یه پیامی رو تو بستر شبکه ارسال کنم، که قصد استفاده از رمزنگاری کلید عمومی و خصوصی رو دارم. تا اینجای کار تونستم این روش رو پیاده کنم و اطلاعات رو کد و دیکد کنم .
    خب ما از کلید عمومی برای رمزنگاری داده هامون استفاده میکنیم.که هر طرفی که پیام رو ارسال میکنه این کلید رو در اختیار داره و داده هاش رو کد میکنه و میفرسته. کاربر مقابل باید کلید خصوصی رو داشته باشه که بتونه این پیام رو دیکد کنه. خب کلید خصوصی هم طرف اون کاربری که پیام رو ارسال میکنه ساخته میشه.حالا باید این کلید خصوصی هم به کاربری که پیام رو دریافت میکنه برستم تا بتونه پیام رو باز کنه . برا اینکار میخوام پیشنهاد بدید چجوری این کار رو بکنم. یعنی یه ساختار مشخصی که باهاش این کلید خصوصی رو ارسال کنم (البته این کلید خصوصی خودش باید کد بشه ) پیشنهادتون برای اینکار چیه؟


    نمونه ای که خودم مد نظر دارم
    Untitled.png

    در کل تو این تایپیک دوتا کمک میخوام
    1-کلید خصوصی رو چطوری ارسال کنم که خود کلید امن باشه.
    2-این ساختاری که گذاشتم خوبه یا میتونه بهتر از اینم باشه؟
    آخرین ویرایش به وسیله رامین مرادی : یک شنبه 27 خرداد 1397 در 15:01 عصر دلیل: افزودن تصویر

  2. #2

    نقل قول: کمک برای طراحی ساختار یک بسته از اطلاعات (ارسال یک پیام رمزنگاری شده بر بستر شبکه)

    کلیدخصوصی به هیچ وجه نباید از طریق شبکه منتقل شود.
    از روشی مشابه ssl استفاده کنید به اینصورت که از تلفیقی از رمزنگاری متقارن و نامتقارن استفاده خواهد شد. (به ازای هر کلاینت بایست عملیات زیر انجام بشه و به ازای هر کلاینت کلیدهای متفاوتی ایجاد خواهد شد)
    1- در سرور یک زوچ کلید عمومی/خصوصی ایجاد کنید. کلید عمومی را به کلاینت ارسال کنید.
    2- کلاینت یک کلید رمزنگاری جدید ایجاد میکند. این کلید برای ارسال و دریافت داده بین کلاینت و سرور استفاده خواهد شد پس این کلید را در حافظه نگه میدارد.
    3- سپس کلاینت این کلید جدید را توسط کلیدعمومی دریافتی از سرور و توسط الگوریتم نامتقارن رمزنگاری میکند.
    4- کلاینت این کلید رمزشده را به سرور ارسال میکند.
    5- سرور کلید رمزشده را دریافت کرده و توسط کلید خصوصی از مرحله1 رمزگشایی میکند.
    6- حالا هم سرور و هم کلاینت روی یک کلید مشترک توافق کرده اند پس عملیات handshaking تمام شده و کلاینت و سرور نیازی به کلیدهای مرحله1 ندارند چون رمزنگاری نامتقارن فقط برای ارسال امن کلید مربوط به رمزنگاری متقارن استفاده میشود.
    7- از این به بعد کلاینت و سرور توسط یک الگوریتم رمزنگاری متقارن و کلید توافقی به رد و بدل کردن داده مشغول میشن.


    برای امنیت بیشتر
    در مرحله اول کلاینت و سرور میتوانند روی الگوریتم نامتقارن توافق کنند.
    همچنین در مرحله 4 کلاینت و سرور میتوانند روی الگوریتم متقارن توافق کنند.


    در بسته اطلاعاتی نباید از جداکننده به اینصورت استفاده کرد چون ممکن است خود این جداکننده جزئی از اطلاعات مورد نیاز باشه درحالی که جداکننده مرز داده را تعیین میکنه و استفاده دیگه ای نداره. معمولا برای یک داده اول اون رو به آرایه ای از بایت تبدیل میکنند. حالا میشه تعداد بایت رو بدست آورد(یک عدد int). پس اول تعداد بایت و بعد خود آرایه.

    مشخصه ابتدا و انتها هم به اینصورت نیاز نیست چون مثل جداکننده ممکن هست تداخل با خود داده ها داشته باشند.

    پس بسته به این شکل میشه(طول دیتا یک عدد integer هست- 4 بایت)
    طول دیتا-دیتا-طول دیتا-دیتا-.......

    برای اطمینان از ارسال میتونید از بسته اطلاعات یک هش تهیه کنید و به بسته اضافه کنید
    طول دیتا-دیتا-طول دیتا-دیتا-.......-طول دیتای هش-دیتای هش

    طرف مقابل بعد از دریافت بسته قسمت (طول دیتای هش-دیتای هش) را از بسته جدا میکند، از بسته هش می گیرد و با هش ارسالی مقایسه میکنه. اگر یکسان نبود به فرستنده اعلام میکنه.



    نمونه کد:
    https://www.codeproject.com/Articles...-Secure-Stream

  3. #3
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: کمک برای طراحی ساختار یک بسته از اطلاعات (ارسال یک پیام رمزنگاری شده بر بستر شبکه)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    کلیدخصوصی به هیچ وجه نباید از طریق شبکه منتقل شود.
    از روشی مشابه ssl استفاده کنید به اینصورت که از تلفیقی از رمزنگاری متقارن و نامتقارن استفاده خواهد شد. (به ازای هر کلاینت بایست عملیات زیر انجام بشه و به ازای هر کلاینت کلیدهای متفاوتی ایجاد خواهد شد)
    1- در سرور یک زوچ کلید عمومی/خصوصی ایجاد کنید. کلید عمومی را به کلاینت ارسال کنید.
    2- کلاینت یک کلید رمزنگاری جدید ایجاد میکند. این کلید برای ارسال و دریافت داده بین کلاینت و سرور استفاده خواهد شد پس این کلید را در حافظه نگه میدارد.
    3- سپس کلاینت این کلید جدید را توسط کلیدعمومی دریافتی از سرور و توسط الگوریتم نامتقارن رمزنگاری میکند.
    4- کلاینت این کلید رمزشده را به سرور ارسال میکند.
    5- سرور کلید رمزشده را دریافت کرده و توسط کلید خصوصی از مرحله1 رمزگشایی میکند.
    6- حالا هم سرور و هم کلاینت روی یک کلید مشترک توافق کرده اند پس عملیات handshaking تمام شده و کلاینت و سرور نیازی به کلیدهای مرحله1 ندارند چون رمزنگاری نامتقارن فقط برای ارسال امن کلید مربوط به رمزنگاری متقارن استفاده میشود.
    7- از این به بعد کلاینت و سرور توسط یک الگوریتم رمزنگاری متقارن و کلید توافقی به رد و بدل کردن داده مشغول میشن.


    برای امنیت بیشتر
    در مرحله اول کلاینت و سرور میتوانند روی الگوریتم نامتقارن توافق کنند.
    همچنین در مرحله 4 کلاینت و سرور میتوانند روی الگوریتم متقارن توافق کنند.


    در بسته اطلاعاتی نباید از جداکننده به اینصورت استفاده کرد چون ممکن است خود این جداکننده جزئی از اطلاعات مورد نیاز باشه درحالی که جداکننده مرز داده را تعیین میکنه و استفاده دیگه ای نداره. معمولا برای یک داده اول اون رو به آرایه ای از بایت تبدیل میکنند. حالا میشه تعداد بایت رو بدست آورد(یک عدد int). پس اول تعداد بایت و بعد خود آرایه.

    مشخصه ابتدا و انتها هم به اینصورت نیاز نیست چون مثل جداکننده ممکن هست تداخل با خود داده ها داشته باشند.

    پس بسته به این شکل میشه(طول دیتا یک عدد integer هست- 4 بایت)
    طول دیتا-دیتا-طول دیتا-دیتا-.......

    برای اطمینان از ارسال میتونید از بسته اطلاعات یک هش تهیه کنید و به بسته اضافه کنید
    طول دیتا-دیتا-طول دیتا-دیتا-.......-طول دیتای هش-دیتای هش

    طرف مقابل بعد از دریافت بسته قسمت (طول دیتای هش-دیتای هش) را از بسته جدا میکند، از بسته هش می گیرد و با هش ارسالی مقایسه میکنه. اگر یکسان نبود به فرستنده اعلام میکنه.



    نمونه کد:
    https://www.codeproject.com/Articles...-Secure-Stream

    ممنون فقط من یه چیزی رو درست متوجه نشدم.تو این رمزنگاری که از کلید عمومی و خصوصی استفاده میشه هر دو کلید توسط یه طرف درست میشه. همون کلید عمومی که داده رو کد کرده باید با کلید خصوصی همون طرف اون داده بازگشایی بشه. حالا وقتی داده ای کد شده و کلید خصوصی رو هم نباید تو شبکه فرستاد طرف دوم چجوری باید این پیام رو کدگشایی کنه؟
    بهتر نیست برای هر پیام یک کلید منحصربفرد ایجاد کرد ؟ ممنون میشم یه کم بیشتر توضیح بدید چون کلا گیج شدم.
    در مورد ساختار بسته هم خیلی پیشنهاد خوبی بود. کار معقول هم همینه. مخصوصا اون هش که میشه از دستکاری در داده های ارسالی و دریافتی هم جلوگیری کرد.



    برداشتی که من از گفته هاتون کردم رو به صورت شکل کشیدم به نظرتون این برداشت درسته؟

    Untitled2.png
    البته خود این پابلیک کی ها باید با الگوریتم های متقارن یا سایر روش ها کد بشن.
    آخرین ویرایش به وسیله رامین مرادی : دوشنبه 28 خرداد 1397 در 15:44 عصر دلیل: افزودن تصویر برداشت از راهنمایی

  4. #4

    نقل قول: کمک برای طراحی ساختار یک بسته از اطلاعات (ارسال یک پیام رمزنگاری شده بر بستر شبکه)

    نقل قول نوشته شده توسط رامین مرادی مشاهده تاپیک
    ممنون فقط من یه چیزی رو درست متوجه نشدم.تو این رمزنگاری که از کلید عمومی و خصوصی استفاده میشه هر دو کلید توسط یه طرف درست میشه. همون کلید عمومی که داده رو کد کرده باید با کلید خصوصی همون طرف اون داده بازگشایی بشه. حالا وقتی داده ای کد شده و کلید خصوصی رو هم نباید تو شبکه فرستاد طرف دوم چجوری باید این پیام رو کدگشایی کنه؟
    بهتر نیست برای هر پیام یک کلید منحصربفرد ایجاد کرد ؟ ممنون میشم یه کم بیشتر توضیح بدید چون کلا گیج شدم.
    در مورد ساختار بسته هم خیلی پیشنهاد خوبی بود. کار معقول هم همینه. مخصوصا اون هش که میشه از دستکاری در داده های ارسالی و دریافتی هم جلوگیری کرد.



    برداشتی که من از گفته هاتون کردم رو به صورت شکل کشیدم به نظرتون این برداشت درسته؟

    Untitled2.png
    به زبان ساده تر؛
    فرض کنید من و شما بخواهیم تبادل اطلاعات امن داشته باشیم. پس باید به طریقی کلید خصوصی ای تولید و منتقل بشه که امن باشه. طبق روش زیر:
    شما یک زوج کلید عمومی/خصوصی تولید میکنی(کلید شماره 1) و کلید عمومی1 را برای من ارسال میکنی.
    من یک کلید خصوصی تولید میکنم (کلید شماره 2). این کلید شماره2 را با کلیدعمومی1 که شما به من دادی رمز میکنم. حالا کلیدرمزشده2 را برای شما ارسال میکنم.
    شما کلیدرمزشده2 را دریافت میکنی و با کلید خصوصی1 که داری رمزگشایی میکنی و کلید2 را بدست میاری. پس من تونستم کلید2 را به شما برسونم.
    همه مراحل بالا برای این بود که کلید شماره 2 به صورت امن منتقل بشه. حالا دیگه نیازی به زوج کلید1 نیست(پس میتونیم کلید1 را از بین ببریم)

    از این به بعد از یک الگوریتم متقارن و یک کلید خصوصی(شماره2) برای تبادل اطلاعات استفاده میشه.

    کلید2 مخصوص همان کلاینت است. پس سرور به ازای هر کلاینت باید یک بار روند بالا را اجرا و کلید2 مخصوص هر کلاینت را در session همان کلاینت مادامی که ارتباط برقرار است نگهداری کند.



    البته خود این پابلیک کی ها باید با الگوریتم های متقارن یا سایر روش ها کد بشن.
    نه نیازی به رمزکردن کلیدعمومی نیست. اسمش گویا هست.
    آخرین ویرایش به وسیله Mahmoud.Afrad : دوشنبه 28 خرداد 1397 در 17:57 عصر

  5. #5
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: کمک برای طراحی ساختار یک بسته از اطلاعات (ارسال یک پیام رمزنگاری شده بر بستر شبکه)

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    به زبان ساده تر؛
    فرض کنید من و شما بخواهیم تبادل اطلاعات امن داشته باشیم. پس باید به طریقی کلید خصوصی ای تولید و منتقل بشه که امن باشه. طبق روش زیر:
    شما یک زوج کلید عمومی/خصوصی تولید میکنی(کلید شماره 1) و کلید عمومی1 را برای من ارسال میکنی.
    من یک کلید خصوصی تولید میکنم (کلید شماره 2). این کلید شماره2 را با کلیدعمومی1 که شما به من دادی رمز میکنم. حالا کلیدرمزشده2 را برای شما ارسال میکنم.
    شما کلیدرمزشده2 را دریافت میکنی و با کلید خصوصی1 که داری رمزگشایی میکنی و کلید2 را بدست میاری. پس من تونستم کلید2 را به شما برسونم.
    همه مراحل بالا برای این بود که کلید شماره 2 به صورت امن منتقل بشه. حالا دیگه نیازی به زوج کلید1 نیست(پس میتونیم کلید1 را از بین ببریم)

    حالا از این به بعد از یک الگوریتم متقارن و یک کلید خصوصی(شماره2) برای تبادل اطلاعات استفاده میشه.





    نه نیازی به رمزکردن کلیدعمومی نیست. اسمش گویا هست.

    آها حله ممنون استاد. .خیلی کمکم کرد .ممنون
    من مشکلم همین انتقال امن کلید خصوصی بود. که متوجه شدم. سعی میکنم یه نمونه کد کوچیک هم بزارم از اون چیزایی که یاد گرفتم و تا برا بقیه هم مفید واقع بشه.

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: دوشنبه 10 شهریور 1393, 17:16 عصر
  2. سوال: طراحی کارت با استفاده از اطلاعات ذخیره شده در excel
    نوشته شده توسط korosh_irani در بخش گزارش سازی با Crystal Report
    پاسخ: 3
    آخرین پست: دوشنبه 09 اردیبهشت 1392, 01:17 صبح
  3. مقاله: طراحی کارت با استفاده از اطلاعات ذخیره شده در سند Excel
    نوشته شده توسط korosh_irani در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: سه شنبه 27 فروردین 1392, 22:53 عصر
  4. پاسخ: 1
    آخرین پست: چهارشنبه 18 آبان 1390, 08:41 صبح
  5. مشکل در طراحی ساختار دیتابیس و نمایش اطلاعات در ASP
    نوشته شده توسط reghbali06 در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: جمعه 24 تیر 1390, 18:54 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •