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

اگر فرض کنیم لینوکس و یک سرور برنامه که به زبان جاوا نوشته شده است ، 100٪ در مورد بهترین روش برای ذخیره کلید روشن نیستم.

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

من مبهم می دانم که این کلید در حالت ایده آل یا سخت افزار سخت افزاری (HSM) ذخیره می شود اما می خواهم بدون استفاده از سخت افزار ، در مورد راه حل های ممکن بدانم. (به عنوان یک سؤال جانبی ، استفاده از سخت افزار ویژه چقدر متداول است؟)

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

در جاوا امکان ذخیره کلیدها در KeyStore وجود دارد و سپس محافظت از رمز عبور برای KeyStore (من فکر می کنم چطور کار می کند)

آیا کسی می تواند دقیقاً به من بگوید که جداسازی کلید (یا رمز عبور KeyStore) چگونه کار می کند. با توضیح در مورد مجوزهای دقیق مورد نیاز؟ به عنوان مثال ، آیا مجری باید در حساب کاربری A مستقر شود اما به نوعی به عنوان حساب B اجرا شود و بنابراین به دایرکتوری B دسترسی داشته باشد؟ اگر چنین است پس چگونه مجوزها را برای همه اینها دوست دارم؟ (می دانم که به نظر می رسد تنبلی شده ام اما نگران هستم بدون مثال خاصی برای پیاده روی متوجه نخواهم شد!). حتی با رویکردی مانند موارد فوق ، آیا این خطر وجود دارد که اگر سرور برنامه به خطر بیفتد (به عنوان مثال RCE) ، آنگاه مهاجم می تواند کلید را بدست آورد؟