احراز هویت – خطرات امنیتی مربوط به تولید یک رشته امنیتی به عنوان یک رشته، به جای یک تصویر چیست؟

در کار ما با استفاده از یک سیستم تأیید اعتبار به نام Swivel Secure بدون پیاده سازی به طور خاص هنگام اتصال به دستگاه های مشتریان ما مانند روترها، سوئیچ ها، فایروال ها و غیره باید یک OTC (برای 2FA البته)

اتصال به یک سوئیچ باید ارائه دهد: نام کاربری، گذرواژه و OTC به منظور دریافت OTC ما باید یک پیوند را ایجاد کنیم که تصویر را تولید می کند (نگاه کنید به مثال زیر)

یک پیوند معمولا به شیوه زیر نمایش داده می شود – https: // PinSecurity .StackExchange.com: 8443 // proxy / SCImage؟ username = JoshJones

 Image String Image

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

به عنوان مثال: اگر پین من 1234 با استفاده از تصویر بالای OTC من برای تأیید صحت موفق 3087 باشد.

در Swivel یک گزینه وجود دارد که به شما اجازه می دهد که آن SCImage را فقط یک رشته با استفاده از SCIMage با SCText ، من از یک توسعه دهنده در Swivel در مورد این سوال خواسته بودم و او گفت: "به طور پیش فرض غیر فعال شده است زیرا به طور ذاتی ناامن است." من این بیانیه را بسیار مبهم یافتم و متاسفانه او هرگز به درخواست خود برای گسترش پاسخ نمی دهد.

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

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

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

TLS – توضیحات مربوط به سایفر و اسکن Nmap

من دستور زیر Nmap را اجرا میکنم تا قدرت سوئیتهای سری که در میزبان من استفاده شده است را آزمایش کنم

 nmap -sV - script ssl-enum-ciphers -p 443 

Nmap doc می گوید هر ciphersuite با درجه نامه (A through F) نشان داده شده است که نشان دهنده قدرت اتصال است و خط خروجی از ابتدا شروع می شود. مقاومت کم نشان دهنده قدرت ضعیف ترین رمز شده است

وقتی که من فرمان را در برابر میزبان اجرا کردم، من خروجی را دریافت کردم همانطور که در زیر نشان داده شده است

 | ssl-enum-ciphers:
| TLSv1.0:
| رمزهای عبور:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 768) - E
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 768) - C
| TLS_DHE_RSA_WITH_DES_CBC_SHA (dh 768) - E
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| کمپرسورها:
| خالی
| اولویت رمز: مشتری
| هشدارها:
| بلوک بلوک 64 بیتی 3DES به حمله SWEET32 آسیب پذیر است
| رمزگذاری بلوک 64 بیتی vulnerable to attack SWEET32
| RF4 رفع شده توسط RFC 7465 رد شده است
| Ciphersuite از MD5 برای صداقت استفاده می کند
| تبادل کلید (dh 768) از قدرت پایین تر از کلید گواهی
| TLSv1.1:
| رمزهای عبور:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 768) - E
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 768) - C
| TLS_DHE_RSA_WITH_DES_CBC_SHA (dh 768) - E
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| کمپرسورها:
| خالی
| اولویت رمز: مشتری
| هشدارها:
| بلوک بلوک 64 بیتی 3DES به حمله SWEET32 آسیب پذیر است
| رمزگذاری بلوک 64 بیتی vulnerable to attack SWEET32
| RF4 رفع شده توسط RFC 7465 رد شده است
| Ciphersuite از MD5 برای صداقت استفاده می کند
| تبادل کلید (dh 768) از قدرت پایین تر از کلید گواهی
| TLSv1.2:
| رمزهای عبور:
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 768) - E
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 768) - C
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| کمپرسورها:
| خالی
| اولویت رمز: مشتری
| هشدارها:
| بلوک بلوک 64 بیتی 3DES به حمله SWEET32 آسیب پذیر است
| RF4 رفع شده توسط RFC 7465 رد شده است
| Ciphersuite از MD5 برای صداقت استفاده می کند
| تبادل کلید (dh 768) از قدرت پایین تر از کلید گواهی
| حداقل قدرت: E

سوالات من

  1. همانطور که در متن آمده است، کافیست که علامتگذاری شده به عنوان "E" رمز ضعیف است و به شیوه دیگری می توان رمز را به عنوان "A" به عنوان رمزنگاری قوی مشخص کرد
  2. TLS_RSA_WITH_AES_128_CBC_SHA به عنوان "A" در اینجا، اما در برخی از بحث ها، من مشاهده کرده ام آن را به عنوان WEAK ذکر شده است. آیا این به خاطر استفاده از SHA1 است؟ اگر چنین است چرا این به عنوان "A" در NMAP ارزیابی می شود؟
  3. من لیست زیر رمز در سرور من پیکربندی شده است.

    رمزهای = "SSL_RSA_WITH_RC4_128_MD5، SSL_RSA_WITH_RC4_128_SHA، SSL_DHE_RSA_WITH_DES_CBC_SHA، SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA، TLS_RSA_WITH_AES_128_CBC_SHA، TLS_DHE_RSA_WITH_AES_128_CBC_SHA، TLS_RSA_WITH_AES_256_CBC_SHA، TLS_DHE_RSA_WITH_AES_256_CBC_SHA، TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256، TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"

اما رمزهای مانند SSL_RSA_WITH_RC4_128 در خروجی از Nmap در دسترس نیست، در عوض، رمزهای مانند TLS_RSA_WITH_RC4_128 وجود دارد ، دلیل این چیست؟ آیا می توانیم از SSL و TLS به طور تعویض در Ciphers استفاده کنیم؟

  1. اگر چه من TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 را به عنوان یک رمز در سرورم اضافه کرده ام، در نتایج Nmap موجود نبود، چه چیزی ممکن است دلیل آن باشد؟

PS : من از JDK 1.7 به عنوان نسخه اصلی JDK برای سرور استفاده می کنم