(با قوانین کیرشهف اشتباه نشود.)

**اصل کِرک‌هُوفس** (به هلندی: Kerckhoffs)، اصلی مهم در سامانه‌های رمزنگاری است که بر پایۀ آن، در ارزیابی امنیت این سامانه‌ها همواره باید فرض کرد که نفوذگران روش‌های به‌کاررفته در سامانه را می‌دانند و با آن آشنایند. بنابر این اصل، امنیت سامانه نباید به پنهانی و محرمانه بودن الگوریتم‌های آن، بلکه تنها باید به محرمانه‌بودن کلیدهای رمز وابسته باشد.

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

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

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

اصول شش‌گانه
------------

او در دو مقاله‌ای که در ۱۸۸۳ در مجله علوم نظامی فرانسه (*Le Journal des Sciences Militaires*) چاپ کرد. این مقاله‌ها که با نام رمزنگاری نظامی منتشر شدند، شامل شش اصل بودند که اصل دوم، یکی از قوانین اساسی در رمزنگاری مدرن مورد تأیید دانشمندان و زیربنای فعالیت و پژوهش قرار گرفت. در زیر اصول شش‌گانه کرک‌هوفس آمده‌اند:

1. سیستم رمزنگاری، اگر نه از نظر تئوری که در عمل غیرقابل شکست باشد.
2. سیستم رمزنگاری باید هیچ نکته پنهان و محرمانه‌ای نداشته باشد بلکه تنها چیزی که باید محرمانه‌ نگه داشته شود کلید رمز است (اصل کرک‌هوفس). طراح سیستم رمزنگار نباید جزئیات سیستم خود را حتی از دشمنان پنهان کند.
3. کلید رمز باید به گونه‌ای قابل انتخاب باشد که اولاً بتوان آن را به‌راحتی عوض کرد و ثانیاً بتوان آن را به خاطر سپرد و نیازی به یادداشت کردن کلید رمز نباشد.
4. متون رمزنگاریشده باید با تلگراف قابل مخابره باشند.
5. دستگاه رمزنگاری یا اسناد رمزشده باید برای یک نفر قابل حمل باشد.
6. سیستم رمزنگاری باید به آسانی قابل راه‌اندازی و کاربری باشند. چنین سیستمی نباید به آموزش‌های مفصل و رعایت فهرست بزرگی از قواعد و دستورالعمل‌ها نیاز داشته‌ باشد.

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

توضیح اصل
---------

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

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

### مزیت های کلید امن

استفاده از secure cryptography دشواری های حفظ کردن امنیت تمام مسیج ها را از بین برده و فقط کافیست از امنیت کلیدی با سایز کم مطمئن باشیم. در سیستمی که نیاز به رازداری طولانی مدت برای اطلاعاتی حجیم و زیاد دارد منطقا بهره بردن از سیستم های قدیمی بی کاربرد است. این در حالیست که کار ساده تر این است که فقط کلید را امن نگه داری کنیم و حتی اگر سیستم توسط دشمن لو رفت مشکلی گریبان گیر ما نمیشود.

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

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

### امن باقی ماندن

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

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

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

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

امنیت در مخفی کردن (Security through obscurity)
-----------------------------------------------

در عموم شرکت ها یا اشخاص موضوع مخفی نگه داشتن اطلاعات داخلی مسئله پیش پا افتاده ای است مانند CSS encryption on DVDs. بعضی ها بحث میکنند که این مخفی کاری باعث کاهش حملات اطلاعاتی میشود. یک بحث مقابلی که مطرح است این است که شاید در مدت زمان های کوتاه این روش کار ساز باشد اما در بلند مدت این روش نیاز به بررسی و بهبود زیادی دارد. (Steven Bellovin ، Randy Bush)

### امنیت در مخفی کاری خطرناک است

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

### بحث آزاد امنیت بهتر را تضمین میکند

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

کاربری ها
---------

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

جستارهای وابسته
---------------

* کلود شانون

واژه‌نامه
---------

منابع
-----



1. ↑  Xu and  Trappe, *Securing Emerging Wireless Systems: Lower-layer Approaches*, 270.
2. ↑  Kern, Kesavan and  Daswani, *Foundations of Security: What Every Programmer Needs to Know*, 231.
3. ↑  Rankl and  Effing, *Smart Card Handbook*, 217–218.
4. ↑  "Claude Shannon". *Wikipedia* (به انگلیسی). 2020-05-13.
5. ↑  "Bruce Schneier". *Wikipedia* (به انگلیسی). 2020-03-13.

* Xu, Wenyuan; Trappe, Wade (2008). *Securing Emerging Wireless Systems: Lower-layer Approaches* (به انگلیسی). Springer. Retrieved 2013-08-10.
* Kern, Christoph; Kesavan, Anita; Daswani, Neil (2007). *Foundations of Security: What Every Programmer Needs to Know* (به انگلیسی). Apress. Retrieved 2013-08-10.
* Rankl, Wolfgang; Effing, Wolfgang (2010). *Smart Card Handbook* (به انگلیسی). John Wiley & Sons. Retrieved 2013-08-10.