PDA

View Full Version : گفتگو: نظرتون راجع به این encryption/decryption چیه ؟



MSN_Issue
سه شنبه 05 مهر 1390, 09:04 صبح
سلام دوستان
من دوتا تابع ساختم برای encrypt و decrypt رشته ها...
میخواستم ببینم امنیتش چطوریاست ؟!؟!

توی این لینک میتونید تستش کنید ... (http://masoud1ssue.site90.com/crypt/)

خوشحال میشم نظرتون رو بدونم در موردشون ...

binyaft
سه شنبه 05 مهر 1390, 15:31 عصر
خوبه ، اما اگر میخوای واقعا تست کنی بده به یکی از شرکت های امنیتی ....
در ضمن برای فارسی کار نمیکنه ...

MSN_Issue
سه شنبه 05 مهر 1390, 17:23 عصر
این ورژنش (!) فقط مال کاراکتر های اسکیه !
انشاالله بعدا بسته به نیاز توسعه پیدا میکنه ...:چشمک:
به نظرتون رشته ی انکریپت شده به راحتی قابل شکستنه (راحت برمیگرده !؟) ؟

A B C D
سه شنبه 05 مهر 1390, 20:38 عصر
به نظرتون رشته ی انکریپت شده به راحتی قابل شکستنه (راحت برمیگرده !؟) ؟ نمیشه به این سوال جواب داد مگر با تحلیل تخصصی کامل، که کار راحتی نیست و نیاز به تحلیل و تست و زمان زیادی داره.
حالا کی هم تخصص کافی داره و هم میره روی تست مورد شما وقت بذاره؟! در اینجا اصلا چنین فردی نداریم. جای دیگه هم دنبالش نگرد چون چنین کسی نمیره روی الگوریتمی که یک برنامه نویس عادی نوشته وقتش رو تلف بکنه. اگر الگوریتمت رو بذاری و بقدر کافی حرفه ای و کامل بنظر بیاد شاید در نهایت بره زیر دست چنین افرادی. یعنی بنظرم باید حداقل یه چیزایی راجع بهش بگی و دوتا اصل و سیستم در رمزنگاری رو نام ببری تا دو نفر که مطلع هستن بفهمن یه چیزی حالیت بوده و ممکنه واقعا کاری کرده باشی!

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

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

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

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

امیدوارم از این حرف بنده ناراحت نشید، اما از نظر تخصصی همین که شما بدون اینکه الگوریتم رو بذاری گفتی «میخواستم ببینم امنیتش چطوریاست ؟!؟!» معلومه اطلاعاتی در این زمینه نداری؛ یا اینکه فکر کردید اگر دو نفر اینجا نگاه و تست کنن و بگن خوبه یا بده چیزی مشخص میشه خودش یه تفکر کاملا ناشیانه ای در این زمینه هست، و بنابراین طبیعی هست که نتیجه بگیریم شما در این زمینه هیچ تخصصی ندارید و بنابراین الگوریتم شما هم نمیتونه یه الگوریتم رمزنگاری حرفه ای باشه. اصولا هم در دنیا عدهء زیادی نیستن که قادر باشن الگوریتم های رمزنگاری در سطح لیگ دسته یک طراحی کنن!! ضمنا خیلی هاشون ریاضیدان های قابلی هستن.

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

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

A B C D
سه شنبه 05 مهر 1390, 20:54 عصر
برای اینکه بیشتر درمورد الگوریتم خودتون توضیح بدید میتونید چند مورد ابهام رو مشخص کنید.

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

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

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

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

MSN_Issue
سه شنبه 05 مهر 1390, 21:23 عصر
A B C D (http://barnamenevis.org/member.php?218827-A-B-C-D) عزیز ممنون از اطلاعات مفید و بجاتون ...
به مقدار قابل توجهی از اطلاعاتت استفاده کردم و به مزایا/معایب کارم پی بردم .
حرفت در مورد مبتدی بودن من تو این زمینه (رمزنگاری) کاملا درسته و اصولا هدفم
هم از ایجاد این تاپیک این بود که بتونم چیزی یاد بگیرم و از تجربیات افرادی مثل شما استفاده کنم .
از دوستان دیگه هم خواهش میکنم اگه اطلاعات مفید و کاربردی-ای تو این حیطه دارن در اختیار من و بقیه قرار بدن تا هم چیز یاد بگیریم و هم ممنونشون بشیم...

اما در مورد سوالاتی که توی پست دومت مطرح کردی :
- آره، منظور من یه الگوریتم رمزنگاری دوطرفه بوده و برای همین هم توی اون لینکِ پست اول هم encrypt و هم decrypt رو قرار دادم .
- اما در مورد پسورد، چون قبل از این اطلاعی از این موضوع نداشتم، پسوردی هم براش لحاظ نکردم .

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

A B C D
سه شنبه 05 مهر 1390, 23:34 عصر
اما در مورد پسورد، چون قبل از این اطلاعی از این موضوع نداشتم، پسوردی هم براش لحاظ نکردم .اصل پسورده. همه چیز باید بر اساس پسورد باشه. الگوریتم نباید این وسط هیچ نقشی جز پخش کردن و اعمال پسورد روی دیتا و البته ایجاد و اعمال یکسری پارامترهای تصادفی دیگه برای محو کردن الگوها و ارتباطها و یکسانیها داشته باشه، وگرنه با یک الگوریتم صرف مسلما یه ارتباط ریاضی و منطقی بین ورودی و خروجی وجود خواهد داشت، چون هیچ عامل تصادفی ای درکار نیست و برنامه داره خروجی رو از ورودی بر اساس روابط ثابتی ایجاد میکنه؛ ولی وقتی از پسورد استفاده میشه یه عامل تصادفی داریم که هیچ روابط ریاضی و آماری ای رو موجب نمیشه که کسی بتونه کشف کنه.
این مهم نیست که کشف روابط در روش شما چقدر سخته.
چرا؟
1) چون الگوریتم دیگری که بر اساس پسورده همیشه از الگوریتم شما امن تر خواهد بود.
2) امنیت الگوریتم شما به پنهان موندن اون بستگی داره و اگر لو بره احتمالا فاجعه ببار میاد، و بصورت عمومی هم نمیشه ازش استفاده کرد (فقط خودت بصورت مخفیانه میتونی بکار ببری)، درحالیکه الگوریتم های بر اساس پسورد این ضعف و محدودیت ها رو ندارن.

اون پارامترهای تصادفی ای که گفتم علاوه بر پسورد هستن و خود الگوریتم تولید میکنه باعث میشن روابط بین دیتاها و پسوردهای مختلف از خروجی قابل تشخیص نباشن. مثلا IV (http://en.wikipedia.org/wiki/Initialization_vector) که در الگوریتم های رمزنگاری معروف بکار میره برای همینه که حتی اگر یک دیتای یکسان داشته باشی و با یک پسورد یکسان اون رو چند بار رمز کنی، خروجی رمز شده هربار با دفهء قبل کاملا متفاوت خواهد بود و نمیشه هیچ ارتباطی رو بین خروجیهای مختلف کشف کرد، چون IV یه دیتای کاملا تصادفی هست که در سراسر خروجی تاثیر میذاره.

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

بعد تازه یه چیزایی داریم بنام S-Box (http://en.wikipedia.org/wiki/Sbox) که الان خودمم جزییاتش یادم نیست. فقط میخوام بگم خیلی حساب و کتاب داره و به این سادگیا نیست. مثلا این sbox ها از کجا میان و اعداد اونا بر چه مبنایی انتخاب شدن، خودش حساب و کتاب داره.

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

دوتا از اصول خیلی کلی و اولیه ای که بهشون اشاره کردیم در این مقالهء کوتاه اشاره شدن: http://en.wikipedia.org/wiki/Confusion_and_diffusion

رمزنگاری خیلی گسترده هست. یه تخصص جداست از برنامه نویسی و الگوریتم های معمولی.
برای ورود به حیطهء رمزنگاری باید از نظر قدرت تحلیل الگوریتم خیلی قوی باشی، و ریاضیات هم خیلی جاها درش دخیل هست (بخصوص در رمزنگاریهای غیرمتقارن مثل RSA که اساسا بر مبنای مسائل دشوار ریاضی هستن)، بعد تازه باید مقاله و کتابهاش رو بخونی؛ اگر اینقدر توانمند باشی که خوب درک کنی، تازه اونوقت یه چیزایی حالیت میشه.


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

چرا اینطور میگم؟

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

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

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

ضمنا الگوریتمی که شما طراحی کنی احتمالا حتی یک نفر هم در کل این فروم پیدا نمیشه که توان و صلاحیت تحلیل و ارزیابی اون رو داشته باشه. اصلا دست از این دید بردار که اینطور مسائل اینقدر ساده و سطح پایین هست که دو نفر که خیلی از مشکلات برنامه های عادی رو هم نمیتونن درست و حسابی حل کنن بیان تحلیل کنن و نظر بدن و از این بابت چیزی و اطمینانی هم بشه بدست آورد!
بنده نمیخوام به کسی توهین کنم، اما باید واقعیت رو گفت و حق مطلب رو ادا کرد.
شما میتونی یه الگوریتمی درست کنی که برای کاربران این فروم سخت باشه و تاییدش کنن، اما بنظرت این چه نتیجهء مطمئنی میده؟!
اصلا این بحث جاش هم در اینجا نیست. اینجا تالار PHP هست و بحث برنامه نویسی وب، درحالیکه بحثی که شما میخوای مطرح کنی مربوط به الگوریتم میشه و رمزنگاری. باید در جای خودش و با افراد متخصص مطرح بشه. دیگران در اینجا میخوان چطور الگوریتم شما رو تحلیل کنن و چه چیزی بیشتر از شما میدونن و چه تخصصی در این زمینه دارن که شما میخوای باهاشون مشورت کنی؟
منم اگر میگی بنده درسته مقداری مطالعه داشتم اما جزییات یادم نیست چون این مقوله واقعا گسترده و پیچیده هست و از طرف دیگه دلیل و انگیزهء معقولی برای برگشتن به اون مباحث و دوباره کلی وقت و انرژی گذاشتن نمیبینم، چه برسه به اینکه بخوام برنامه ای رو که هر کسی همینطوری درست کرده تست و تحلیل کنم.

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

A B C D
چهارشنبه 06 مهر 1390, 17:27 عصر
موضوع Confusion and diffusion خیلی مهم بود و چون متنش کوتاه بود ترجمش کردم.
ترجمه:

آشفتگی و پخش

در رمزنگاری، آشفتگی و پخش (http://en.wikipedia.org/wiki/Confusion_and_diffusion) دو خصیصه از عملیات یک رمز امن هستند که بوسیلهء Claude Shannon (http://en.wikipedia.org/wiki/Claude_Elwood_Shannon) در رسالهء «تئوری ارتباط سیستمهای محرمانه» که در سال 1949 منتشر شد معرفی شدند.

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

پخش بدان معناست که بیتهای خروجی باید به یک شکل بسیار پیچیده به بیتهای ورودی وابسته باشند. در یک رمز با پخش خوب، اگر یک بیت از متن رمز نشده تغییر داده شود، متن رمزی باید بصورت کامل و به یک شکل غیرقابل پیشبینی یا شبه تصادفی (http://en.wikipedia.org/wiki/Pseudorandom) تغییر کند. بخصوص، برای یک ورودی تصادفی، اگر بیت i ام تغییر داده شود، سپس احتمال اینکه بیت خروجی j ام تغییر کند باید برابر 50% باشد -- به این خصیصه به اصطلاح «معیار بهمنی اکید (http://en.wikipedia.org/wiki/Avalanche_effect)» گفته میشود. بصورت کلی تر، ممکن است نیاز باشد که تغییر یک مجموعهء ثابت از بیت ها باعث تغییر هر بیت خروجی با احتمال 50% شود.

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

ساده ترین راه برای دست یافتن به هردوی آشفتگی و پخش استفاده از یک «شبکهء جایگزینی و جایگردی (http://en.wikipedia.org/wiki/Substitution-permutation_network)» است. در این سیستمها، متن رمز نشده و کلید اغلب یک نقش خیلی مشابه در تولید خروجی دارند، بنابراین یک مکانیزم یکسان است که نسبت به هردوی آشفتگی و پخش اطمینان میدهد.

رضا قربانی
چهارشنبه 06 مهر 1390, 18:26 عصر
سلام دوستان
من دوتا تابع ساختم برای encrypt و decrypt رشته ها...
میخواستم ببینم امنیتش چطوریاست ؟!؟!

توی این لینک میتونید تستش کنید ... (http://masoud1ssue.site90.com/crypt/)

خوشحال میشم نظرتون رو بدونم در موردشون ...

کد هاتون رو بذارید تا مشاهده کنیم و نظر بدیم !

به زودی یک تاپیک واسه این کار می زنم تا بچه ها همه کدهای مربوطه رو داخلش بذارن و بررسی بشه .

A B C D
چهارشنبه 06 مهر 1390, 20:41 عصر
کسانی که میخوان کد بذارن و کسانی که میخوان کدها رو بررسی کنن آیا هیچ تخصصی در زمینهء رمزنگاری دارن؟ خود شما تخصصی در این زمینه دارید؟ اطلاعات مقدماتی هم دارید؟ میدونید اصولش چیه؟ میدونید الگوریتم های رمزنگاری استاندارد چطور و بر اساس چه اصولی کار میکنن؟

اینکه ما بیایم همینطور از خودمون الگوریتم درست کنیم و دو نفر مثل خودمون هم بررسیش کنن که نشد کار.
این مسئله به PHP مربوط نمیشه. به برنامه نویسان عادی هم مربوط نمیشه. بلکه افراد باید دارای دانش کافی تخصصی در زمینهء رمزنگاری باشن.
دوما مطرح کردن چنین مطالب ناشیانه ای و اظهار نظرهای غیرتخصصی درمورد اونا میتونه باعث گمراه شدن عدهء بیشتری بشه. چون مسلما خیلی از مبتدی ها فکر میکنن اون روشها خوب هستن یا همینطوری خودشون میتونن یه الگوریتم رمزنگاری درست کنن. این تفکری هست که خیلی ها همین الانش هم دارن.
و این درحالی است که الگوریتم های درجه یک رمزنگاری در PHP براحتی در دسترس هستن.

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

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