اصل کرکهوفس
اصل کِرک‌هُوفس ، اصلی مهم در سامانه‌های رمزنگاری است که بر پایۀ آن، در ارزیابی امنیت این سامانه‌ها همواره باید فرض کرد که نفوذگران روش‌های به‌کاررفته در سامانه را می‌دانند و با آن آشنایند. بنابر این اصل، امنیت سامانه نباید به پنهانی و محرمانه بودن الگوریتم‌های آن، بلکه تنها باید به محرمانه‌بودن کلیدهای رمز وابسته باشد.
این اصل به نام اگوست کرک‌هوفس نام‌گذاری شده‌است. بیشتر سامانه‌های رمزنگاری نوین بر پایهٔ اصل کرکهوفس بنا می‌شوند. هرچند امروزه استفاده از سامانه‌هایی که محرمانه‌بودن روش‌ها را اصل قرار می‌دهند همچنان رایج است، اما رمز در چنین سامانه‌هایی معمولاً زود شکسته می‌شود و در دنیای اطلاعات امروزی محرمانه نگاه‌داشتن جزئیات فنی یک سامانه، دشوار است؛ همچنین با پیشرفت روزافزون فناوری‌ها مدت لازم برای شکستن رمزها روز به روز کاهش می‌یابد و به علت نامعلوم بودن میزان این پیشرفت‌ها نمی‌توان آن‌ها را در طراحی سامانه به‌حساب آورد؛ ولی می‌توان محرمانه‌ نگاه‌داشتن روش‌ها را به عنوان یک سطح امنیتی بیشتر و به صورت ترکیبی با اصل کرک‌هوفس استفاده کرد.
یک سیستم رمزنگاری امن در صورتی که تمام جزیات سیستم مشخص باشد غیر از کلید آن.
اصل کرک‌هوفس جور دیگر هم تعبیر شده است ( یا تعریف دیگر آن) توسط ریاضی دان آمریکایی، کلود شانن: "دشمن سیستم را میداند" ، " هر طراح سیستمی باید در نظر داشته باشد که سیستم طراحی شده، به محض استفاده به صورت کامل توسط دشمن فهمیده خواهد شد". این فرم به نام اصل شانن به کار میرود. این مفهوم بین رمزنگاران به شدت مورد استقبال قرار گرفته است در تضاد با "" که از آن استقبال نمیشود.
او در دو مقاله‌ای که در ۱۸۸۳ در مجله علوم نظامی فرانسه ("Le Journal des Sciences Militaires") چاپ کرد. این مقاله‌ها که با نام رمزنگاری نظامی منتشر شدند، شامل شش اصل بودند که اصل دوم، یکی از قوانین اساسی در رمزنگاری مدرن مورد تأیید دانشمندان و زیربنای فعالیت و پژوهش قرار گرفت. در زیر اصول شش‌گانه کرک‌هوفس آمده‌اند:
بعضی از این قواعد دیگر معتبر نیستند چون با توجه به پیشرفت روزافزون نیازی به آنها نیست، اما بند دوم کرک‌هوفس به عنوان اصل کرک‌هوفس مشهور است.
کرک‌هوفس رمزنگاری را در جایگاه رقیب و جایگزین بهتری برای قرار داده است که پنهان‌نگاری بیشتر در قرن نوزدهم برای مخفی نگه داشتن پیام های نظامی کاربرد داشت و نیازمند این بود فردی دیکشنری از لغات رو برای به دست آوردن معنی نگه داری کند، در صورتی که این دیکشنری لو برود تمام پیام ها و متن های داخل این سیستم قابل دسترسی و معنا کردن برای مهاجم خواهد بود. مشکل دیگر این رمزنگاری در زیادن شدن ریسک لو رفتن دیکشنری با زیاد شدن کاربران است.
رمزنگاری در قرن نوزدهم در تضاد با پنهان‌نگاری، از جدول های ساده ایی برای جابه‌جا کردن حروف الفبا با هم استفاده کرد که به‌طور عمده با استفاده از کلید و ردیف و ستون این جدول میتوانستند رمزنگاری کنند و در عین حال کلید از جنس ارقام کوتاهی بود که برای انسان قابل فهم است. این سیستم indecipherable بود به این خاطر که کلید و جدول به تنهایی دارای معنا ومفهومی نبودند و در صورتی سیستم شکسته میشد که یه ست مشخص از کلید، ردیف جدول، و متن مورد نظر در یک باز زمانی مشخص به دشمن داده میشد. کرک‌هوفس نشان داد پیام های تاتیکی نظامی فقط در عرض چند ساعت ارزش دارند. این سیستم ها به راحتی شکست نمیخوردن چون اجزا آنها (حروف الفبا و کلید...) به راحتی قابل تعویض است.
استفاده از secure cryptography دشواری های حفظ کردن امنیت تمام مسیج ها را از بین برده و فقط کافیست از امنیت کلیدی با سایز کم مطمئن باشیم. در سیستمی که نیاز به رازداری طولانی مدت برای اطلاعاتی حجیم و زیاد دارد منطقا بهره بردن از سیستم های قدیمی بی کاربرد است. این در حالیست که کار ساده تر این است که فقط کلید را امن نگه داری کنیم و حتی اگر سیستم توسط دشمن لو رفت مشکلی گریبان گیر ما نمیشود.
راه های بسیاری برای اطلاع پیدا کردن از جزئیات داخلی یک سیستم موجود است مانند تحدید یا به زور مجبور کردن افراد و کار کنان اون شرکت یا سیستم. برای مثال در جنگ ، هر طرف اسیر هایی از طرف مقابل میگیرند و در عین حال از جاسوسان هم بهره میبردن.
در صورتی که این سیستم تحت نرم‌افزار باشد مهاجم میتوند انجام دهد یا برنامه را دیباگ دقیق کند تا بفهمد. در صورتی که از سخت افزار استفاده شود ممکن است دزدیده شود یا خریده شود یا حتی اجزای آن را از هم جدا کنند تا به اطلاعات درونی دست یابند.
برداشت جامعی که بعضی های از این اصل میکنند این است که هر چقدر که مطالب کمتری به کاربر برای حفظ داده شود، سیستم امن تر خواهد ماند. Bruce Schneier معتقد است که همه سیستم های امنیتی باید طوری طراحی شوند که به شکسته شوند.
اصل کرک‌هوفس چیزی فراتر از یک اصل برای سیستم های امنیتی تعریف میکند: هر راز باعث میشود در سیستم به وجود آید به معنای دیگر رازداریی بزرگترین دلیل شکست سیستم است و در نقطه مقابل باز بودن و نگه داری نکردن از راز باعث انعطاف پذیری بیشتر میشود.
امنیت هر سیستمی نیازمند راز باقی ماندن چیزهایی است، در حالی که اصل به ما میگوید که چیز هایی را که راز هستند و باید مخفی بماند باید قابلیت عوض کردن داشته باشند تا درصورت لو رفتن به سرعت عوض شوند.
به عنوان مثال سیستمی که سخت افزاری یا نرم افزاری است و در دسترس کاربران زیادی قرار دارد ، کار سختی است که بتوان این راز ها را مخفی نگه داشت چون این سیستم نیاز به دولوپ منت و همکاری و نگه داری از طرف دیگران دارد و در عین حال در دسترس و آگاهی همه قرار گرفته است و در عین حال در صورتی که برای حفظ امنیت بخواهیم از الگوریتم جدید استفاده کنیم کاری شکننده و در عین حال نگه داری خود الگوریتم سختر است تا تعویض و نگه داری کلید مناسب و یا تولید کلید جدید و جایگزین کردن آن با کلید قبلی و حفظ امنیت سیستم.
در عموم شرکت ها یا اشخاص موضوع مخفی نگه داشتن اطلاعات داخلی مسئله پیش پا افتاده ای است مانند . بعضی ها بحث میکنند که این مخفی کاری باعث کاهش حملات اطلاعاتی میشود. یک بحث مقابلی که مطرح است این است که شاید در مدت زمان های کوتاه این روش کار ساز باشد اما در بلند مدت این روش نیاز به بررسی و بهبود زیادی دارد. ( ، )
مخفی کردن درون یک نرم‌افزار یا سخت افزار یا الگوریتم باعث میشود برای تعمیر یا تغییر دست نخورده بماند و این عامل اصلی لو رفتن یا استفاده نا به جاست. جلوگیری کردن از بحث های در مورد ضعف های امنیت و یا تشویق نکردن آن ها باعث میشود شرایط خطرناکی برای شبکه مجازی ، سیستم های کامپیوتری و مردم اتفاق بیوفتد.
تاریخچه طولانی cryptography و cryptoanalysis بار ها و بارها نشان داده است که بحث های آزاد و آنالیز امنیت الگوریتم ها باعث نمایان شدن نقاط ضعفی میشود که به آن ها توجه نشده است و به همین علت باعث بهینه تر شدن میشود. همان‌طور که کرک‌هوفس در نقل قولی میگوید: "سیستم نباید دارای رازی باشد و در صورتی که توسط دشمن دزدیده شد مشکل زا نباشد."
با بهره گیری از این اصل تمام الگوریتم های رمزنگاری با کاربری عادی برای همه قابل دسترس اند اما در کاربرد های دولتی یا نظامی الوگریتم ها هم مخفی میمانند() ، در هر حال نباید فکر کرد که چون این الگوریتم ها مخفی نگه داشته میشوند باعث میشود امنیتشان تضمین شود. ممکن است این الگوریتم ها هم همان الگوریتم های عادی اند با این تفاوت که برای امن تر شدن لایه ایی مخفی نگه داشته میشوند.http://encyclopedia.thefreedictionary.com/Kerckhoffs'%20law