می گویند یک کاربر از یک برنامه چت رایج مانند Telegram، Signal، Whatsapp، Ricochet استفاده می کند.
دستگاه او هک می شود و کلید خصوصی به سرقت رفته است. برای استفاده از نرم افزار PGP با استفاده از ایمیل، می توانید از دو عامل تأیید اعتبار استفاده کنید و به عنوان مثال کلید yubikey را ذخیره کنید. آیا چیزی مشابه با آن برنامه های چت ممکن است، به عنوان مثال دستگاه 2FA باید در همه زمان ها متصل شود و بدون آن چت امکان پذیر باشد؟
زیرساخت کلید عمومی – چه اتفاقی خواهد افتاد اگر کلید خصوصی من در وب اعتماد به سرقت رفته باشد؟
شما می توانید گواهی لغو را منتشر کنید. در حالت ایدهآل، باید یک گواهی لغو ایجاد کنید در حالی که شما جفت کلید را تولید کرده اید، بنابراین هنوز می توانید لغو کنید حتی اگر بعدها دسترسی به کلید خصوصی را از دست بدهید. اگر نه، شما می توانید گواهی لغو را تا زمانی که به کلید خصوصی دسترسی داشته باشید، تولید کنید.
هنگامی که یک گواهی لغو را منتشر می کنید، کاربران مجبورند گواهی لغو را قبل از اینکه متوجه شوند کلید شما دیگر نباید اعتماد به نفس آنها می توانند این کار را با همگام سازی کلید های جاسازی شده با سرور اصلی که در آن گواهی لغو خود را منتشر کرده اید، انجام دهید.
TLS – تولید گواهی ها با openssl – بهینه سازی
گواهی های خودم را برای یک سیستم داخلی ایجاد می کنم:
- گواهی ریشه برای صدور گواهینامه
- برای سرور وب،
- گواهی نامه برای مشتریان،
- امضای کد،
- و غیره [19659007] معماری سرور چربی (خدمات مایکروسافت IIS WCF) و مشتریان نازک (برنامه های کاربردی دسک تاپ مایکروسافت WPF) است. سرور فقط در https قابل دسترسی است و مشتریان باید خود را با گواهی مشتری تأیید کنند.
این اسکریپت من است:
1. گواهی ریشه را ایجاد کنید openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits: 2048 -aes-256-cbc-pass pass: AbmDF5XU -out "Acme Root.key" openssl req -new -x509 -days 24854 -subj "/ C = US / ST = / L = آستین / O = Acme Corporation / OU = / CN = Acme Root" گذرنامه: AbmDF5XU -key "Acme Root.key" - "Acme Root.cer" 2. ایجاد گواهینامه برای سرور وب (تأیید هویت سرور). openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits: 2048 -aes-256-cbc-pass pass: R2xEK3rT -out "Acme IIS.key" openssl req -new -subj "/ C = US / ST = / L = آستین / O = Acme Corporation / OU = / CN = acme" گذرنامه: R2xEK3rT -key "Acme IIS.key" -out "Acme IIS. CSR " openssl x509 -days 24854 -sha256 -req -in "Acme IIS.csr" -xtxtfile v3_server.ext -CA "Acme Root.cer" -CAkey "Acme Root.key" گذرنامه: AbmDF5XU -CAcreateserial -out "Acme IIS .cer " openssl pkcs12 -aes256 -export -inkey "Acme IIS.key" -passin pass: R2xEK3rT- در "Acme IIS.cer" گذرنامه: R2xEK3rT -out "Acme IIS.pfx" 3. ایجاد گواهینامه برای مشتری (احراز هویت مشتری). openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits: 2048 -aes-256-cbc -pass pass: fDWnfJYq -out "Acme Client 001.key" openssl req -new -subj "/ C = US / ST = / L = آستین / O = Acme Corporation / OU = / CN = Acme Client 001" گذرنامه: fDWnfJYq -key "Acme Client 001.key" -out " Acme Client 001.csr " openssl x509 -days 24854 -sha256 -req -in "Acme Client 001.csr" -xtxt v3_client.ext -CA "Acme Root.cer" -CAkey "Acme Root.key" گذرنامه: AbmDF5XU -CAcreateserial -out "Acme مشتری 001.cer " openssl pkcs12 -aes256 -export -inkey "Acme Client 001.key" -passin pass: fDWnfJYq -in "Acme Client 001.cer" -password pass: fDWnfJYq -out "Acme Client 001.pfx"
همانگونه که می بینید، از چهار دستور برای تولید یک فایل PFX استفاده می کنم (برای مثال برای تأیید اعتبار مشتری). این کار به خوبی انجام می شود، من فقط کنجکاو هستم اگر فقط با یک دستور برای مثال انجام شود؟
همچنین – برای تمام کارشناسان وجود دارد، اسکریپت من خوب است یا شما آن را تغییر شکل دهید؟
زیرساخت کلید عمومی – تأیید هویت مشتری با استفاده از گواهی در ارتباط M2M
ما قصد داریم سناریوی زیر را برای یک سناریوی ارتباطی ایمن ماشین-ماشین (M2M) اجرا کنیم. ما برخی از دروازه ها و بسیاری از سنسورهای ایمن داریم که فقط باید بتوانند به یکدیگر «صحبت کنند» اگر بتوانند خود را تأیید کنند. هیچ DNS در دسترس نیست، بنابراین همه چیز در حال کار بر روی آدرس آی پی است.
دروازه به عنوان یک CA عمل می کند، به این معنی که CA.crt و CA.key روی آن وجود دارد، که احتمالا در داخل TPM ذخیره می شود. علاوه بر این gateway.crt و gateway.key وجود دارد، جایی که gateway.crt توسط CA صادر می شود. gateway.crt می تواند در زمان اجرا هر زمانی که لازم باشد انجام می شود (به عنوان مثال اگر IP آدرس تغییر کند، که نیاز به تغییر در CN از gateway.crt) ایجاد می شود.
هر سنسور آن را منحصر به فرد sensor.key و sensor.crt. Sensor.crt توسط CA.crt توسط تولید کننده سنسور امضا شده است و CA.crt در سنسور در لیستی از CA های مورد اعتماد ذخیره می شود. تمام حسگرها همانند CN = "TrustedSensor" خواهند بود.
ارتباط با SSL / TLS با هر دو مورد احراز هویت سرور و مشتری انجام خواهد شد. در درک من، برقراری ارتباط و ارتباط باید به عنوان هر نوع دستگاه (دروازه، سنسور) کار می کند CA.crt در فهرست CA های مورد اعتماد خود. چیزی که من مطمئن نیستم این است که همه حسگرها همانند CN = "TrustedSensor" هستند. من نمی خواهم یک پایگاه داده بزرگ حسگرهای قابل اعتماد را در دروازه حفظ کنم، بلکه می خواهم اعتماد کنم به تمام سنسورهایی که یک گواهینامه مطابق با آن وجود دارد که CN نشان دهنده آن است. آیا یک مسئله امنیتی با این رویکرد همه سنسورهای دارای CN همانند است؟