Uolo

ایمن کرده داده ها بین سرور و کاربر

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

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

فرض کنید که می خواهید شناسه ایمیل یک کاربر را به سرور ارسال کنید. شما اگر میخواهید بصورت ایمن این کار را انجام دهید باید آن را با استفاده از کلید(رمز) رمزگذاری کنید، کاربر با استفاده از این کلید اطلاعات خود را بصورت رمزنگاری شده به سرور ارسال می کند و سرور از رمز عبور مشابه برای رمزگشایی داده های دریافت شده از طرف کاربر استفاده می کند.
در این میان اگر از هر طریقی هکر به داده های انتقال داده شده دسترسی پیدا کند نمیتواند آنها را رمزگشایی کند زیرا کلید را در اختیار ندارد و در آن لحظه خیط خواهد شد؛ به این نوع رمزنگاری که امکان ارسال اطلاعات حجیم را با سرعت انجام میدهد، رمزنگاری متقارن می گویند و محبوب ترین الگوریتم های متقارن عبارتند از DES، Triple-DES، AES، Blowfish، RC2، RC4 (ARCFOURRC5، RC6.

حال یک مسئله مهم پیش خواهد آمد! شما نمیتوانید کلید را توسط خود برنامه به سرور ارسال کنید، زیرا هکر میتواند با داشتن همین کلید به تمام اطلاعات مهم شما و کاربرانتان دسترسی پیدا کند. یک تکنیک ساده اما با عملکرد کند و آهسته(در هر زمان ۱٢٨ بایت از اطلاعات) رمزنگاری وجود دارد که در آن الگوریتم یک جفت کلیدی را برای شما ایجاد می کند که از ٢ کلید عمومی و خصوصی تشکیل شده است.
کلید عمومی بصورت واضح قابل دیدن است و هر شخصی میتواند از این کلید برای رمزنگاری اطلاعات استفاده کند، وظیفه کلید خصوصی رمزگشایی اطلاعات ارسال شده توسط سرور برنامه است که تنها شما به آن دسترسی دارید؛ به این نوع روش رمزنگاری، رمزنگاری نامتقارن گفته می شود و محبوب ترین الگوریتم های نامتقارن از نوع عمومی RSA، Diffie-Hellman، ElGamal، DSS هستند.

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

حتماً در حال حاضر برای این همه کش دادن اصل مطلب قیافه شما پوکر شده است، ولی ما در ادامه راه حلی را با ترکیب این دو الگوریتم پیشنهاد میدهیم:

با استفاد از رمزنگاری نامتقارن یک جفت کلید(عمومی و خصوصی) ایجاد کنید و در یک جای امن در سرور برنامه ذخیره کنید. [نمونه کد]

 

حال هنگامی که میخواهیم اطلاعات را به سرور ارسال کنیم ا یک کلید عبور با استفاده از الگوریتم متقارن تولید می کنیم، با استفاده از این کلید ما میتوانیم اطلاعات حجیم را به سرعت ارسال کنیم(اگر میخواهید این اطلاعات را بصورت ترکیبی و آسان ارسال کنید میتوانید از JSON استفاده کنید). [نمونه کد]

 

در این هنگام سرور وظیفه دارد اطلاعات ترکیب شده را تک تک استخراج و با استفاده از کلید عبور آنها را رمزنگاری کند و در ادامه داده ها را با استفاده از کلید خصوصی رمزگشایی را کند. [نمونه کد]

به این تکنیک رمزنگاری ترکیبی میگویند.

 

در پایان این مطلب باید ذکر کنم که این تکنیک های کوچک و پیش پا افتاده میتواند بصورت بسیار چشمگیری امنیت برای شما را افزایش دهد؛ شاید با خود فکر کنید که امنیت در برنامه خود یک ویژگی محسوب می شود، ولی اینطور نیست بلکه این یکی از متعهداتی است که برنامه نویس نسبت به برنامه ای که ارائه داده است باید داشته باشد.

ترجمه شده از سایت medium

اضافه کردن نظر

تکنولوژی