آشنایی با الگوریتم‌های رمزنگاری متقارن و نامتقارن به زبان ساده

زمان مطالعه: حدود 11 دقیقه / 8 گفتگو
فهرست عناوین

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

رمزگذاری (رمزنگاری) چیست؟

رمزگذاری (رمزنگاری) روشی برای ویرایش اطلاعات به گونه‌ای است که فقط اشخاص مجاز می‌توانند اطلاعات را درک کنند. از نظر فنی، این فرآیند تبدیل متن ساده به متن رمز شده است. به عبارت ساده‌تر رمزگذاری داده‌های قابل خواندن را می‌گیرد و آن را تغییر می‌دهد تا غیر قابل فهم و تصادفی به نظر برسد. رمزگذاری برای انجام این عمل به استفاده از کلید رمزنگاری نیاز دارد. این کلید مجموعه‌ای از مقادیر ریاضی است که هم فرستنده و هم گیرنده پیام رمزگذاری شده آن را می‌شناسند.

به نقل از ویکی‌پدیا، رمزنگاری، دانشی است که به بررسی و شناختِ اصول و روش‌های انتقال یا ذخیرهٔ اطلاعات به صورت امن (حتی اگر مسیر انتقال اطلاعات و کانال‌های ارتباطی یا محل ذخیره اطلاعات ناامن باشند) می‌پردازد.

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

تاریخچه رمزنگاری

رمزنگاری و استفاده از کدها و رمزها برای محافظت از اسرار در واقع هزاران سال پیش آغاز شد. این نوع از رمزنگاری را می‌توان رمزنگاری کلاسیک نامید، یعنی روش‌های رمزنگاری که در آن‌ها از قلم و کاغذ و یا شاید کمک‌های مکانیکی ساده استفاده می‌کنند. در اوایل قرن بیستم، اختراع ماشین‌های پیچیده مکانیکی و الکترومکانیکی، مانند دستگاه روتور Enigma، ابزارهای پیچیده‌تر و کارآمدتری را برای رمزگذاری فراهم آورد که طرح‌های مختلف و پیچیده‌ای داشتند و هنوز هم برخی از آن‌ها بسیار پیچیده می‌باشند اما بزرگ‌ترین مشکل این نوع از رمزگذاری‌ها استفاده از کاغذ و قلم بود.

الگوریتم‌های رمزنگاری

این نوع از رمزنگاری‌ها در جنگ جهانی اول مورد استفاده قرار می‌گرفت اما با تمام پیچیدگی‌ها معایبی را نیز به همراه داشت که سبب شکسته شدن آن می‌شد. تا اینکه الگوریتم‌های رمزنگاری جدید و امنی در این جنگ‌ها مورد استفاده قرار گرفت. تا دهه 1960 روش‌های این رمزنگاری امن در اختیار دولت‌ها بود و دولت‌ها قادر به رمزگشایی هر اطلاعاتی بودند. اما طولی نکشید تا با ارائه دو استاندارد رمزگذاری عمومی (DES) و اختراع رمزنگاری کلیدی عمومی الگوریتم‌های رمزنگاری عمومی شوند.

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

الگوریتم‌های رمزنگاری متقارن

رمزگذاری متقارن یک روش رمزگذاری است که از یک کلید واحد برای encryption (رمزگذاری) و decryption (رمزگشایی) داده‌ها استفاده می‌کند. این قدیمی‌ترین و شناخته شده‌ترین تکنیک رمزگذاری است. کلید مخفی می‌تواند یک کلمه، یک شماره یا یک رشته از کارکترها یا اعداد باشد که توسط یک تولید کننده عدد تصادفی ایمن (Random Number Generator یا RNG) تولید شده است. پیام طبق قوانین الگوریتم رمزگذاری در کلید تغییر می‌کند. اشخاصی که از طریق رمزگذاری متقارن در حال برقراری ارتباط هستند باید کلید را مبادله کنند تا بتوانند اطلاعات را رمزگذاری و رمزگشایی کنند.

رمزنگاری متقارن

با استفاده از الگوریتم‌های رمزگذاری متقارن، داده‌ها به شکلی تبدیل می‌شوند که توسط کسی که کلید مخفی برای رمزگشایی را ندارد قابل درک نیست. هنگامی که گیرنده در نظر گرفته شده کلید مخفی پیام را داشته باشد، عکس عمل رمزگذاری جهت رمزگشایی انجام می‌دهد تا پیام به شکل اصلی و قابل فهم برگردد. برای رمزگذاری در سطح بانکی، کلیدهای متقارن باید با استفاده از RNG ایجاد شوند که مطابق با استانداردهای صنعت، مانند FIPS 140-2 تأیید شود. پنج مؤلفه اصلی در سیستم رمزنگاری متقارن وجود دارد که شامل موارد زیر می‌شوند:

متن ساده (PlainText)

واژه plaintext به پیام اصلی قابل فهم که نیاز به رمزگذاری دارد گفته می‌شود. متن ساده معمولا حاوی داده‌های حساس است که نباید توسط اشخاص غیرمجاز دیده شوند.

کلید (key)

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

متن رمزنگاری شده (CipherText)

متن رمزنگاری متنی است که رمزگذاری شده و آماده ارسال است. این متن ممکن است مانند یک حاوی مقادیر تصادفی از داده‌ها باشد و غیرقابل خواندن است.

الگوریتم‌های رمزنگاری

یک الگوریتم رمزگذاری در حقیقت فرمول‌های ریاضی هستند که برای تبدیل داده (متن ساده) به متن رمزگذاری شده استفاده می‌شود. در برخی از رمزگذاری‌ها یک الگوریتم برای تغییر داده به روشی قابل پیش بینی از کلید استفاده می‌کند، به طوری که حتی اگر داده‌های رمزگذاری شده تصادفی به نظر برسند، اما می‌توان آن را با استفاده دوباره از کلید دوباره به متن ساده تبدیل کرد.

یک مثال ساده از الگوریتم رمزگذاری می‌توان در یک متن ساده همه حروف N را به عدد 3 و یا تمام حروف Z را به 1 تغییر دهد. این روال ممکن است چندین تغییر (یا جایگشت) را با متن ساده انجام دهد.

الگوریتم رمزگشایی

در الگوریتم رمزگشایی، کلید مخفی (روش رمزگشایی) بر متن رمزنگاری اعمال شده و آن را به متن ساده تبدیل می‌کند. رمزگشایی معمولا رمزگذاری را به صورت معکوس انجام می‌دهد.

انواع الگوریتم‌های رمزنگاری متقارن

در الگوریتم رمزگذاری متقارن دو نوع رمزگذاری وجود دارد که با حفظ ماهیت کلی رمزنگاری متقارن اقدام به رمزگذاری داده می‌کنند.

الگوریتم‌های رمزنگاری متقارن قالبی یا قطعه‌ای (Cipher Block)

در این روش اطلاعات به بلاک‌های کوچکتر متنی تبدیل شده و با استفاده از یک کلید مخفی خاص رمزگذاری می‌شوند. اندازه متعارف مورد استفاده برای قطعات در این روش رمزگذاری 64، 128یا 256 بیت است. AES، DES، IDEA، Blowfish، RC5 و RC6 از این نوع از رمزنگاری هستند.

الگوریتم‌های رمزنگاری متقارن جریانی (Stream Cipher)

در این روش به جای بلاک بندی اطلاعات هر کاراکتر به تنهایی رمزگذاری می‌شود. یکی از محبوب‌ترین الگوریتم از این نوع RC4 است که در رمزنگاری WEP در استاندارد 802.11 در شبکه های بیسیم (WIFI) استفاده می‌شود.

برخی از نمونه‌های الگوریتم‌های رمزنگاری متقارن

رمزنگاری متقارن کاربردهای زیادی در تکنولوژی امروزه دارد. برخی از کارشناسان امنیت تنها الگوریتم‌های نامتقارن را پیشنهاد می‌کنند در صورتی که در بسیاری از موارد کاربردهای این الگوریتم با الگوریتم‌های نامتقارن متفاوت است. برخی از پرکاربردترین و محبوب‌ترین الگوریتم‌های رمزنگاری متقارن عبارتند از:

  • AES
  • DES
  • IDEA
  • Blowfish
  • RC4
  • RC5
  • RC6

مزایا و کاربرد الگوریتم‌های رمزنگاری متقارن

با این وجود که رمزگذاری متقارن روشی قدیمی برای رمزگذاری است، اما بسیار سریعتر و کارآمدتر از رمزگذاری نامتقارن است. رمزنگاری نامتقارن به دلیل مشکلات عملکردی و اندازه داده‌ها و استفاده از پردازنده‌های سنگین، شبکه‌ها را متضرر می‌کند. با توجه به عملکرد بهتر و سرعت سریعتر رمزگذاری متقارن (در مقایسه با نامتقارن)، رمزنگاری متقارن معمولاً در رمزگذاری فله (رمزگذاری مقادیر زیادی از داده‌ها) استفاده می‌شود.

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

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

  • برنامه‌های پرداخت، مانند معاملات کارت که در آن باید از اطلاعات شخصی و مالی محافظت شود تا از سرقت هویت یا اتهامات کلاهبرداری جلوگیری شود.
  • استفاده برای تأیید اعتبار برای اینکه ثابت شود فرستنده پیام چه کسی است.
  • RNG یا تولید کننده شماره به صورت رندم یا هشینگ

معایب الگوریتم‌های رمزنگاری متقارن

متأسفانه رمزگذاری متقارن با مشکلات خاص خود همراه است. یکی از مهم‌ترین نقطه ضعف‌های آن جنبه‌های مدیریت کلید در آن است که مشکلات زیر را در پی دارد:

فرسودگی کلید

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

تخصیص داده

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

مدیریت کلید در مقیاس بزرگ

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

الگوریتم رمزنگاری نامتقارن

رمزنگاری نامتقارن (Asymmetric cryptography) یک نسخه پیشرفته‌تر در رمزنگاری، نسبت به رمزنگاری نامتقارن است. این روش به رمزنگاری کلید عمومی نیز شهرت دارد زیرا یکی از کاربردهای آن، استفاده در زمانی است که یک کلید عمومی برای قفل مورد نظر تعریف می‌شود. این روش همچنین یکی از روش‌های محبوب در فناوری بلاکچین است و امنیت سیستم را افزایش می‌دهد.

تاریخچه رمزنگاری نامتقارن

دو محقق دانشگاه استنفورد به نام‌های مارتین هلمن (Martin Hellman) و ویتفیلد دیفی (Whitfield Diffie) بنیان‌گذاران روش رمزنگاری نامتقارن بودند. این دو محقق این روش را در مقاله‌ای با عنوان “سویه‌های جدید در رمزنگاری” در سال 1977 میلادی معرفی کردند. البته برای ریشه‌یابی دقیق‌تر باز هم می‌توانیم در تاریخ به زمانی دورتر برویم؛ جایی که جیمز الیس (James Ellis) ایده رمزنگاری نامتقارن را در دفتر مقر ارتباطی (GCHQ) در سازمان اطلاعات و امنیت انگلیس پیشنهاد داده بود. دیفی و هلمن نیز از سال 1974 بر روی ایده رمزنگاری نامتقارن کار می‌کردند.

تاریخچه رمزنگاری نامتقارن

یکی از معروف‌ترین الگوریتم‌های رمزنگاری نامتقارن، الگوریم RSA است. الگوریتمی که از آن در امضاهای دیجیتال و بخش‌های PGP و SSL استفاده می‌شود. این الگوریتم حاصل ایده‌های ویتفیلد دیفی بود اما به‌دلیل تلاش‌های عملی سه محقق دیگر، همچون اختراعی با حروف اول نام آن‌ها نام‌گذاری شد. این سه محقق عبارتند از:

  • رونالد ریوست (Ronald Rivest)
  • آدی شمیر (Adi Shamir)
  • لئونارد آدلمان (Leonard Adleman)

تعریف دقیق رمزنگاری نامتقارن

رمزنگاری نامتقارن نسبت به رمزنگاری متقارن دارای یک نکته ویژه است و آن این‌که در این روش برای رمزگشایی و رمزنگاری، یک جفت کلید وجود دارد. این کلیدها عبارتند از کلیدهای خصوصی (Private) و عمومی (Public) و بین این دو کلید، یک رابطه ریاضی وجود دارد که آن‌ها را به‌عنوان یک جفت مرتبط تعریف می‌کند.

مثالی برای درک بهتر کلیدها در رمزنگاری نامتقارن

تصور کنید صندوقچه‌ای دارای یک قفل ویژه است. ویژگی این قفل در این است که برای قفل شدن و باز شدن، به دو کلید نیاز دارد. اما مکانیزم این کلیدها از این جالب‌تر است و آن این‌که اگر از کلید شماره یک برای قفل کردن صندوقچه استفاده کنید، فقط با کلید شماره دو باز می‌شود و اگر از کلید شماره دو برای قفل کردن صندوقچه استفاده کنید، فقط با کلید شماره یک باز می‌شود.

ویژگی‌ها و کاربردهای رمزنگاری نامتقارن

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

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

ویژگی‌ها و کاربردهای رمزنگاری نامتقارن

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

مزایا و معایب الگوریتم نامتقارن

الگوریتم نامتقارن مشکلات مرتبط با توزیع را از میان می‌برد، زیرا در این الگوریتم نیازی به تبادل کلید نیست؛ یک کلید خصوصی می‌ماند و یک کلید عمومی نیز در اختیار دستگاه یا کاربران قرار می‌گیرد. الگوریتم نامتقارن همچنین امنیت شبکه یا پروسه را تامین می‌کند؛ زیرا در این روش، هیچ نیازی به انتشار کلید خصوصی وجود ندارد. همچنین این الگوریتم امکان رد یا انکار پیام را نیز از بین می‌برد. در ادامه با برخی از معایب این الگوریتم نیز آشنا می‌شویم:

  • سرعت پروسه در الگوریتم نامتقارن کندتر از پروسه الگوریتم متقارن است؛ زیرا به پردازش بیشتر نیاز دارد
  • اگر فرد یا سیستم، کلید خصوصی را گم کند یا به هر طریقی از دست بدهد، دیگر امکان رمزگشایی برای پیام وجود ندارد
  • یک ویژگی الگوریتم نامتقارن، بی‌نیازی از تایید هویت دارندگان کلیدهای عمومی است. این مساله از یک سو در بلاکچین یک ویژگی مورد نیاز است و از سوی دیگر، در برخی موارد در گروه معایب این الگوریتم قابل دسته‌بندی است

دو نمونه مهم از الگوریتم‌های نامتقارن را بشناسید

همانطور که گفتیم الگوریتم RSA یکی از پرکاربردترین و شناخته‌شده‌ترین انواع الگوریتم نامتقارن است. از این الگوریتم، بیشتر در فرآیند تایید هویت یا Authentication مورد استفاده قرار می‌گیرد. این الگوریتم همچنین با عنوان رمزنگاری استاندارد کلید عمومی شناخته می‌شود. هرچه طول کلید در آن بیشتر باشد، ایمنی این الگوریتم، بیشتر خواهد بود اما عموما در بازه 512 تا 4096 قرار دارد.

الگوریتم رمزنگاری نامتقارن دیفی هلمن (Diffie-Hellman)

یک الگوریتم نامتقارن مشهور دیگر با نام یکی از دو بنیان‌گذار رمزنگاری نامتقارن Diffie-Hellman نام‌گذاری شده است که به‌اختصار به‌صورت DH شناخته می‌شود. DH الگوریتمی است که باعث می‌شود، دو دستگاه بتوانند کلیدها را روی یک شبکه نامطمئن ارسال کنند. DH همچنین الگوریتمی است که خودش نامتقارن است اما امکان ارسال کلیدهای الگوریتم متقارن را ایجاد می‌کند.

رمزنگاری نامتقارن و شبکه بلاکچین

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

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

شما یک گام جلوتر از دیگران باشید! اگر به آی‌تی و تکنولوژی علاقه‌مندید و دوست دارید سریع‌تر در این زمینه پیشرفت کنید، همین حالا به جمع 7495 عضو همیار آی‌تی بپیوندید، دسترسی به تمام آموزش‌های پریمیوم، دریافت جدیدترین آموزش‌های کاربردی مرتبط با آی‌تی و استفاده از مشاوره‌ی رایگان، برخی از مزایای عضویت در سایت هستند، شما نیز به کاربران همیار پیوسته و همین حالا وارد دنیای حرفه‌ای‌ها شوید... من هم می‌خواهم عضو ویژه‌ی همیار شوم

8 گفتگو

در بحث‌‌ پیرامون این مقاله شرکت کنید، سوالات شما توسط کارشناسان همیار آی‌تی پاسخ داده می‌شود...

  1. mirzaei گفت:

    سلام خسته نباشید … بابت مقاله کامل و رساتون خیلی ممنونم . میشه منبع مقالع رو ذکر بفرمایید

  2. Sadra Soltani گفت:

    سلام،خسته نباشید
    چرا الگوریتم‌های رمزنگاری نامتقارن رو نمیذارید؟

    1. فرشاد گوهری گفت:

      سلام صدرا جان، این بخش در صف نگارش هست و به زودی به این آموزش اضافه خواهد شد.

  3. پیام توانبخش گفت:

    مقاله خوبی خوب ومفیدی بود تشکر از سایت خوب و با ارزشتون

  4. آرام گفت:

    رمز گذاری نامتقارن را فراموش کردید توضیح بدید.

    1. فرشاد گوهری گفت:

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

  5. سید روح الله حسینی گفت:

    مطالب فوقالعاده است

    1. فرشاد گوهری گفت:

      سلام، واقعا خوشحالیم که آموزش‌ها برای شما مفید بوده و ازتون ممنون میشیم که پیشنهادات و انتقاداتتون رو برای بهتر شدن سایت با ما در میون بگذارید :‌)