PDA

View Full Version : سوال: روش کدگذاری کاراکترها



JaVa
یک شنبه 07 اسفند 1390, 23:46 عصر
با سلام و احترام...

دوستان اینکه ما به فکر درست کردن یک روش کد گذاری جدید برای کاراکترها و ارقام باشیم درسته یا نه؟
همچنین برای اینکه یک سیستم کدگذاری جدید درست کنیم باید از چه قوانینی پیروی کنیم؟ لطفا یک مثال برای کد گذاری کاراکترها و ارقام برای آموزش معرفی کنید .

با تشکر...

Raham
دوشنبه 08 اسفند 1390, 20:14 عصر
سلام دوست عزیز

به طور کلی اینکارو نکنید ضرر نکردین...چرا؟
1.طراحی الگوریتم رمزنگاری نیاز به اطلاعات خاص و تحقیق و مطالعه فراوان داره که از نظر زمانی به صرفه نیست
2.طراحی الگوریتم به روش "ماست مالی" می تونه باعث خطا در رمزگشایی بشه. ولی ازون مهمتر اینکه اینگونه الگوریتم براحتی قابل شکست هستند (چون مسلما به اندازه فلان الگوریتمی که یه تیم مدت ها روش کار کردن. کار نشده)

در کل به نظر من اسفاده درست از الگوریتم های تجاری و عمومی موجود می تونه بسیار بهتر نتیجه بده. مهم اینه که چطور ازش استفاده کنید.


پینوشت: من Keygenner نیستم. صرفا نظر عمومی خودم رو گفتم

موفق باشیم
یا علی

JaVa
دوشنبه 08 اسفند 1390, 20:35 عصر
با سلام...

تشکر بخاطر پاسخ دادن به درخواست من.:لبخندساده:

اما آیا می توان از روشهای کدگذاری مثل md-5 برای کد گذاری برخی اطلاعات که در برنامه های که با زبان برنامه نویسی vb.net نوشته می شوند استفاده کرد ؟ یا اینکه فقط مختص محیط وب هستند ؟

Raham
دوشنبه 08 اسفند 1390, 20:59 عصر
سلامی دوباره

MD5 رمزنگاری نیست. یک نوع Hash هستش...... رمزنگاری که عموما ذکر میشه Crypto ها هستن. مثل AES,RC4,RSA
بطور کلی مشکلی نداره . شما می تونی هر الگوریتمی رو تو هر پلتفرمی استفاده کنی.

JaVa
دوشنبه 08 اسفند 1390, 21:07 عصر
سلام

کاشکی یه لینک معرفی می کردید که یه مثال از این Crypto ها زده باشه .

با تشکر فراوان ...

hepL3r
چهارشنبه 10 اسفند 1390, 16:17 عصر
برای اینکه الگوریتم رو خودتون تهیه کنید اول باید مشخص کنید که میخوایید از الگوریتم متقارن استفاده کنید یا الگوریتم نامتقارن . الگوریتم متقارن از یک کلید هم برای اینکریپت و هم برای دیکریپت استفاده میکنه . الگوریتم نامتقارن برای این کارها از بیش از یک کلید اسقاده میکنه . در مورد قوانینشم باید الگوریتمتون برای هر رشته باید جواب واحدی ارائه کنه درست مثل هش با این تفاوت که این جواب قابل برگردوندن به حالت اولی باشه .

اگه میخوایید خودتون یه الگوریتم رمزنگاری بنویسید باید بگم که این کار خیلی سخته . معمولا" الگوریتم های معروف مثل RSA توسط ریاضیدان ها طراحی و توسط برنامه نویسا کد میشن . از جمله معروفترین الگوریتمها میشه به : RSA - ECC - AES - ELGAMAL - BlowFish اشاره کرد . AES و BlowFish از سیستم رمزنگاری متقارن استفاده میکنن و RSA , ECC , ELgamal نامتقارن هستن . این هایی که گفتم الگوریتم هایی هستن که خیلی معروفن و در میان اونها ECC از همه قویتره . البته ECC انواع مختلفی مثل ECNR , ECDSA داره . برای استفاده از این الگوریتم ها در دلفی میتونید از FGInt و در C++ از Miracle استفاده کنید . البته اینهایی که گفتم قوی هستن ولی قویترین نیستن . HFE , NTRU , Msieve از اینا قویترن ولی پیاده سازی اونا در برنامه مشکل تره .

JaVa
چهارشنبه 10 اسفند 1390, 16:41 عصر
لطفا توضیحات بیشتری در خصوص این موضوع بدید

با تشکر

Hossein Bazyan
چهارشنبه 10 اسفند 1390, 21:34 عصر
سلام

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

P3I/cD9BP3g/ZT8/
P0g/PT9PPzc/Uz9W
PzQ/WD9gP28/cj9z

JaVa
چهارشنبه 10 اسفند 1390, 22:48 عصر
با سلام به آقای بازیان و تشکر از اینکه در این تاپیک شرکت کردید.


هر رشته ای که میخوام رمز کنم با هر بار کد کردن یه رشته رمز شده متفاوتی تولید میکند یعنی یک رشته با هر بار کد شدن مقدار مختلفی میگیرد .تا اونجایی که ما خبر داریم این ویژگی در کد یا هش md-5 وجود داره. که همانند یک اثر انگشته که به هیچ وجه دو کد برابر تولید نمی کنه و همچنین برای اینکه Decode کنه یه کد متفاوت دیگه تولید می کنه:متعجب:

Hossein Bazyan
پنج شنبه 11 اسفند 1390, 00:47 صبح
سلام
دوست عزیز با MD5 چند تا فرق داره که اولیش اینه که به اون اندازه قوی نیست دوما Md5 رو نمیتوان برگردوند اما با این تابع میشه رمز رو دو.باره دیکد کرد

متاسفانه برای آچلود فعلا تصمیم نگرفته ام اما اگر شد چشم

JaVa
پنج شنبه 11 اسفند 1390, 17:31 عصر
دوباره سلام ...

آقای بازیان میشه لطف کنید در مورد دو تابع ای که برای کدگذاری رشته ها مورد استفاده قرار می گیره بیشتر توضیح بدید؟

و بر چه اساسی دو کد مختلف رو برای یک رشته تولید می کنه؟ و قسمتی که من درکش نمی کنم اینه که چطور کد رمز شده رو Decode یا رمز گشایی می کنه؟

با تشکر...

Hossein Bazyan
پنج شنبه 11 اسفند 1390, 18:11 عصر
سلام
دوست عزیز این روشی که من کار میکنم روش استانداردی نیست که بخوام توضیح بدم من یکسری عملیات روی رشته انجام میدم ( با هر بار کد کردن رشته تازه ای تولید میشود) سپس برای دیکد کردن عکس آن عملیات رو انجام میدم. همین . هر کسی میتواند روشی را برای خودش ایجاد کند.
در ضمن تابع دیگری هم نوشتم که شماره سریال تولید میکند ( این تابع سه نوع رشته درست میکند رشته با دقت معمولی و متوط و زیاد ) مانند شماره سریالهای ویندوز
یه سری OIP نوشتم برای یه شرکتی در هلند ( http://www.nidaros.nl/downloads-nidaros/opalis/ (http://www.nidaros.nl/downloads-nidaros/opalis/) ) که این OIPها سی روزه هستند و بعدا باید خریده شوند. خال برای همین شرکت برنامه ای نوشتم که سه نوع شماره سریال تولید میکند ( قیمت پایه و متوسط و اصلی ) که این شماره سریال از طریق اینترنت کنترل میشود.

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

JaVa
پنج شنبه 11 اسفند 1390, 18:28 عصر
سلامی دوباره به شما...

با تشکر از اینکه به درخواست های من پاسخ می دید. :بوس:
آقای بازیان شما توضیحات خیلی کاملی رو میدید اما کاشکی یه مثال ساده که من بهتر بتونم این عملیات Code و Decode کردن رو بهتر بفهمم رو میذاشتید.

باز هم تشکر از شما......

Hossein Bazyan
پنج شنبه 11 اسفند 1390, 18:36 عصر
سلام

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

JaVa
پنج شنبه 11 اسفند 1390, 18:54 عصر
:قلب:
:بوس:
ممنون از همکاریتون/

mansour01
چهارشنبه 02 فروردین 1391, 23:03 عصر
سلام

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

P3I/cD9BP3g/ZT8/
P0g/PT9PPzc/Uz9W
PzQ/WD9gP28/cj9z
در این نوع روش شما مشخصا کلید رو در خودش هش قرار دادید ، الگوریتم کشف بشه ، کد bر می گرده !
به عنوان مثال :
ABCD
رو شما یکبار با کلی تصادفی
1234
رمز میکنید و این کلید رو مثلا در 4 قسمت مختلف بصورت رمزهای دوتایی قرار میدید .
بازگشت اینکار اینه که ابتدا مشخص بشه کلید کجاست :
کلید فراخونی میشه
شاید اگر کلید دومی هم کار گذاری شده باشه اون هم فراخونی میشه
نهایتا رشته هش شده اصلی با دو کلید رمزنگاشی میشه ،
یا شاید هم کلمه ورودی با کلید بدست آمده هش میشه و مقدارش با اون بخش از هش که رمز اصلی مقایسه میشه
من یه نگاه اجمالی کردن کلمه P در ابتدای هر سه هش قرار داره ، و هر قسمت اول 3 کاراکتر داره ! عدد 9 در تمام هش ها وجود داره !
و ...
مطمئنا این شباهت یا از راندوم بر مبنای ساعت ایجاد شده ، یا ضعف در الگوریتم هست که میشه کشفش کرد .

موفق باشید

Hossein Bazyan
چهارشنبه 02 فروردین 1391, 23:20 عصر
در این نوع روش شما مشخصا کلید رو در خودش هش قرار دادید ، الگوریتم کشف بشه ، کد bر می گرده !
به عنوان مثال :
ABCD
رو شما یکبار با کلی تصادفی
1234
رمز میکنید و این کلید رو مثلا در 4 قسمت مختلف بصورت رمزهای دوتایی قرار میدید .
بازگشت اینکار اینه که ابتدا مشخص بشه کلید کجاست :
کلید فراخونی میشه
شاید اگر کلید دومی هم کار گذاری شده باشه اون هم فراخونی میشه
نهایتا رشته هش شده اصلی با دو کلید رمزنگاشی میشه ،
یا شاید هم کلمه ورودی با کلید بدست آمده هش میشه و مقدارش با اون بخش از هش که رمز اصلی مقایسه میشه
من یه نگاه اجمالی کردن کلمه P در ابتدای هر سه هش قرار داره ، و هر قسمت اول 3 کاراکتر داره ! عدد 9 در تمام هش ها وجود داره !
و ...
مطمئنا این شباهت یا از راندوم بر مبنای ساعت ایجاد شده ، یا ضعف در الگوریتم هست که میشه کشفش کرد .

موفق باشید

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

mansour01
چهارشنبه 02 فروردین 1391, 23:51 عصر
سلام
از توابع راندم استفاده نکرده ام . روش به این سادگی که شما نوشتید نیست. برای رندم کردن از روش خیلی خاص و استثنایی استفاده کرده ام و از حدود سه سال پیش از این تابع استفاده میکنم و هنوز مشکلی در این مورد ندیده ام .
عرض کردم که این نمونه هست ، ن هاینکه واقعا بشه به راحتی برگردوند .
شما سه جمله زیر رو در صورت تمایل از هر کدوم 3 هش بذار ، فقط تاریخ و زمان ایجادش رو هم بگو :
ABCDEA
ABC987
123456
من یک نگاه می کنم ببینم کاری میشه کرد که از الگوریتم ضعف پیدا کنم .
سپاس

اصلاحیه : متعاقبا در صورت پیدا کردن ضعف ابتدا به شما پ.خ میشه تا بعد از تائید شما عمومی بشه.

Hossein Bazyan
پنج شنبه 03 فروردین 1391, 00:33 صبح
عرض کردم که این نمونه هست ، ن هاینکه واقعا بشه به راحتی برگردوند .
شما سه جمله زیر رو در صورت تمایل از هر کدوم 3 هش بذار ، فقط تاریخ و زمان ایجادش رو هم بگو :
ABCDEA
ABC987
123456
من یک نگاه می کنم ببینم کاری میشه کرد که از الگوریتم ضعف پیدا کنم .
سپاس

اصلاحیه : متعاقبا در صورت پیدا کردن ضعف ابتدا به شما پ.خ میشه تا بعد از تائید شما عمومی بشه.

سلام
منهم دوست دارم نقطه ضعف برنامه مشخص بشه .
این سه نمونه از ABCDEA
QWFFaURfQ0tCaEFw
QVKFPLRCMzdOP0Fm
QVNOVUYrQ0KCU0Of

این هم سه نمونه از ABC987
Nzw4NjlTQzxCO0Fo
N2k4cDlgW0hPPkFM
N0A4QOk9QzZccELZ

و این هم سه نمونه از 123456
NnQ1XDRaMzoyVzFd
NjIUeTOUL0AYRDMe
Nk91djFhM1sZTzYn

eshpilen
پنج شنبه 03 فروردین 1391, 09:58 صبح
حسنش هم اینه که برای هر رشته ای که میخوام رمز کنم با هر بار کد کردن یه رشته رمز شده متفاوتی تولید میکند یعنی یک رشته با هر بار کد شدن مقدار مختلفی میگیرد .

تمام الگوریتم های رمزنگاری استاندارد مدرن این ویژگی رو دارن، چون باید داشته باشن.


دوست عزیز این روشی که من کار میکنم روش استانداردی نیست که بخوام توضیح بدم من یکسری عملیات روی رشته انجام میدم ( با هر بار کد کردن رشته تازه ای تولید میشود) سپس برای دیکد کردن عکس آن عملیات رو انجام میدم. همین .

کد کردن و دیکد کردن یعنی اینکه رشته ای رو بصورتی دربیاریم که ناخوانا شود حال به هر روشی .
مثلا" ساده ترین حالت اینه که بیایم به کدهای اسکی تک تک کاراکترها مقدار ثابتی رو اضافه کنیم و برای دیکد کردن همین مقدار را از تک تک آنها کم کنیم . حال اگر بخوایم مقداری سخت ترش کنیم بجای مقدار ثابت مقدار راندومی را به هر کاراکتر اضافه کنیم . بخوایم بازم سخت تر بشه بعد از این کارها رشته رو عکس کنیم .
این ساده ترین روشی است که میشه کد و دیکد کرد . تا اونجا که از گفتار شما برمیاد الگوریتم شما یا از کلید استفاده نمیکنه یا علاوه بر کلید بر محرمانگی خود الگوریتم هم اتکا داره (یعنی اگر دیگران از کدمنبع و الگوریتم مورد استفادهء شما اطلاع کامل و دقیق پیدا کنن امنیتش خدشه دار میشه).
اگر اینطور باشه این میشه «امنیت از طریق تیرگی»: http://barnamenevis.org/showthread.php?325555


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

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

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

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

Hossein Bazyan
پنج شنبه 03 فروردین 1391, 11:38 صبح
تمام الگوریتم های رمزنگاری استاندارد مدرن این ویژگی رو دارن، چون باید داشته باشن.

تا اونجا که از گفتار شما برمیاد الگوریتم شما یا از کلید استفاده نمیکنه یا علاوه بر کلید بر محرمانگی خود الگوریتم هم اتکا داره (یعنی اگر دیگران از کدمنبع و الگوریتم مورد استفادهء شما اطلاع کامل و دقیق پیدا کنن امنیتش خدشه دار میشه).
اگر اینطور باشه این میشه «امنیت از طریق تیرگی»: http://barnamenevis.org/showthread.php?325555

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

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

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

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

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

موفق باشید. :چشمک:

mansour01
پنج شنبه 03 فروردین 1391, 12:06 عصر
سلام
دوست عزیز شما به مسائل خیلی عمقی نگاه میکنید. هر کسی با توجه به اهمیت و نوع نرم افزارش روش کدینگ رو در نظر میگیره. شاید یه نرم افزار دهترچه تلفن هیچ کدینگی نخواد یا اگه بخواد خیلی ساده. مهم اینه که چه اطلاعاتی رو با این روش میخوان ذخیره کنین. مسلما این روشی که من استفاده میکنم برای بانکها نه تنها خوب نیست بلکه خیلی هم ساده شاید به نظر برسه. من ادعای تخصص در هیچ زمینه ای رو ندارم و برنامه های با امنیت بالا هم هنوز کار نکرده ام من در شرکتم برنامه های یه خورده از معمولی بالاتر مینویسم و این نوع برنامه ها امنیت خیلی بالایی نمیخوان ( هر چند امنیت کدینگ من هم بالاست )
شما میفرمائید اگر کسی به سورس و منابع برنامه دسترسی داشته باشه میتوان روش رمزنگاری رو به دست بیاره. خوب مسلمه مگر اگر کسانی به کدها و منابع ویندوز دسترسی داشته باشند نمیتوانند تغییراتی ایجاد کنند؟ اما به چه شکل میتوان به این منابع و کدها دسترسی پیدا کرد.
در ضمن این روش من مختص خودم میباشد و هدف از توضیح آن هم جهت جواب دادن به سوال تاپیکهای قبلی بود یعنی اینکه روش کدگذاری و الگوریتماش چیزهای عجیبی نیستند یه سری کدهای برنامه نویسی هستند که خود ما هم میتوانیم یکی از آنها رو برای خودمان تهیه کنیم . در ضمن من ادعا نکرده ام که کدهای من با کدها و الگوریتمهای موجود در بازار برابری میکند.

موفق باشید. :چشمک:
درود
گرچه مخاطب من نبودم ولی با نقطه نظر و دیدگاه شما موافق هستم . لزومی به استفاده از روش های مرسوم نیست !
اصولا روش های رمزنگاری معروف گرچه تضمین کننده عملکرد هستند ، ولی این دلیل بر عدم بروز خلاقیت نمیشه . هر کس میتونه الگوریتم رمزنگاری خودش رو بنویسه ، کشف نقطه ضعف راه رو برای بهبود اون الگوریتم بالا میبره .
چه عیبی در این وجود داره ؟ جز این هست که خلاقیت رو بالا میبره و این شاخه رو در دید خواننده و تولید کننده تقویت میکنه .
=============
من دیشب در همان حالت خواب آلودگی برنامه کوچکی برای آنالیز 3 کد نوشتم ، بنظر ضعف مشاهده میشه ، البته این فقط یک نظره ! { ضعف ، نه شکستن یا یافتن نوع الگوریتم } .
از شما میخوام این رشته ها رو هم برای من کد بفرمایید ، از هرکدام 3 مورد :
A
{این رو پخ بزنید}
BCDEFA
A2BC987
12345678
در نهایت هم اینکه همونطور که گفتید و گفته شد بدون داشتن برنامه اصلی یافتن الگوریتم اصلی تقریبا غیر ممکن هست یا آنالیز کننده ای بسیار قوی با نابع بسیار بالا میخواد . مهم اینجا پیدا کردن ضعف هایی هست که شما اونهارو بپوشونید تا رمزگشا دیرتر به مقصود خودش برسه .
سپاس

eshpilen
پنج شنبه 03 فروردین 1391, 12:11 عصر
برای اینکه الگوریتم رو خودتون تهیه کنید اول باید مشخص کنید که میخوایید از الگوریتم متقارن استفاده کنید یا الگوریتم نامتقارن . الگوریتم متقارن از یک کلید هم برای اینکریپت و هم برای دیکریپت استفاده میکنه . الگوریتم نامتقارن برای این کارها از بیش از یک کلید اسقاده میکنه . در مورد قوانینشم باید الگوریتمتون برای هر رشته باید جواب واحدی ارائه کنه درست مثل هش با این تفاوت که این جواب قابل برگردوندن به حالت اولی باشه.

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


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



از جمله معروفترین الگوریتمها میشه به : RSA - ECC - AES - ELGAMAL - BlowFish اشاره کرد . AES و BlowFish از سیستم رمزنگاری متقارن استفاده میکنن و RSA , ECC , ELgamal نامتقارن هستن . این هایی که گفتم الگوریتم هایی هستن که خیلی معروفن و در میان اونها ECC از همه قویتره.مقایسهء ECC بیشتر با الگوریتم های نامتقارن دیگه مثل RSA صحیح است. ضمنا این الگوریتم فقط میتونه با طول کلید خیلی کمتری نسبت به RSA همون امنیت رو داشته باشه. یعنی فرضا حداقل طول کلید RSA اگر 3072 بیت باشه (برابر 128 بیت امنیت استاندارد)، ECC با کلید 256 بیتی همون امنیت رو داره.
اینکه بگیم ECC از RSA قویتره تاحالا جایی چیزی راجع بهش ندیدم مگر اینکه منظور شما همون خصوصیات کلید بوده باشه که طول کلید کمتر یک مزیته از نظر حجم ذخیره سازی و پردازش و اینها احتمالا.

اما مقایسهء الگوریتم های نامتقارن با متقارن در این زمینه بنظرم بعکس نشون میده که الگوریتم های متقارن از امنیت بیشتری برخوردار هستن.
بطور مثال ECC و RSA هردو در برابر رایانه های کوانتمی امنیت ندارن، چون الگوریتم های کوانتمی اختراع شده پایهء ریاضی اونها رو به باد فنا میدن. درحالیکه چنین ضعفی رو برای الگوریتم های متقارن مثل AES سراغ ندارم.
ضمنا امنیت AES با طول کلید 128 بیت برابر امنیت ECC با 256 بیت و امنیت RSA با 3072 بیت است.
بنابراین با مسائل ذکر شده تا اینجا، میتونیم بگیم الگوریتم های متقارن قویتر از الگوریتم های نامتقارن هستند.
الگوریتم های نامتقارن بخاطر خاصیت استثنایی خودشون برای کاربردهای خاصی لازم یا خیلی مفید هستن. وگرنه عمدتا مزیت دیگری ندارن.


البته ECC انواع مختلفی مثل ECNR , ECDSA داره .ECDSA نوع متمایزی از ECC نیست. بلکه الگوریتم امضای دیجیتال بر اساس ECC است. یعنی RSA رو که در DSA (یک الگوریتم استاندارد امضای دیجیتال) استفاده میشه با ECC عوض کردن.

ECNR هم باز همینطور یک الگوریتم امضای دیجیتال است.
این یکی رو چون در ویکیپدیا پیدا نکردم این منبع رو براش میذارم: http://www.cryptopp.com/wiki/Elliptic_Curve_Nyberg_Rueppel

برای بقیهء مواردی که تا اینجا گفتم در ویکیپدیا براحتی منابع پیدا میشه. گذشته از اینکه اگر جستجو کنید منابع دیگری هم حتما پیدا میشه. هرکدام نتونستید پیدا کنید یا شک داشتید بگید براتون بذارم.


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

اما NTRU درسته. یک الگوریتم رمزنگاری نامتقارن با خصوصیات عالی (مثل سرعت خیلی بالاتر از RSA) و مقاومت دربرابر رایانه های کوانتمی.

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

JaVa
چهارشنبه 09 فروردین 1391, 01:21 صبح
با عرض سلام و خسته نباشید خدمت همه ی دوستان گرامی...

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

اما یک موضوع دیگه ای که در این تاپیک هیچ اشاره ای بهش نشده رمز نگاری تصاویر و نحوه ی به رمز در آوردن یک تصویر است؟
آیا پسوند تصاویر بر روی رمز نگاری تاثیر می گذارند یا نه ؟ و چه مولفه هایی از تصویر برای به رمز در آوردن تاثیر می گذارد؟

در سایت رشد هم یه مطلب جالبی در مورد رمز نگاری کوانتومی مطالعه کردم که خالی از لطف نبود.
http://www.roshd.ir/Default.aspx?tabid=442&EntryID=2324&SSOReturnPage=Check&Rand=0

http://fa.wikipedia.org/wiki/%D8%B1%D9%85%D8%B2_%D9%88_%D8%B1%D9%85%D8%B2%D9%86 %DA%AF%D8%A7%D8%B1%DB%8C

این الگوریتم هایی که دوست عزیز آقای eshpilen نام بردن رو کجا می تونیم DLL شون دانلود کنیم تا ازشون بهره ببریم در نرم افزار هایی که می نویسیم. استفاده کنیم.

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

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

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

eshpilen
چهارشنبه 09 فروردین 1391, 09:40 صبح
اما یک موضوع دیگه ای که در این تاپیک هیچ اشاره ای بهش نشده رمز نگاری تصاویر و نحوه ی به رمز در آوردن یک تصویر است؟
آیا پسوند تصاویر بر روی رمز نگاری تاثیر می گذارند یا نه ؟ و چه مولفه هایی از تصویر برای به رمز در آوردن تاثیر می گذارد؟

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


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

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


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

Hossein Bazyan
چهارشنبه 09 فروردین 1391, 11:18 صبح
سلام


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


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

eshpilen
چهارشنبه 09 فروردین 1391, 12:02 عصر
سلام.


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

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


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

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

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

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

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