PDA

View Full Version : سوال: به نظرتون این اینکد غیر قابل برگشت هست



billgivz
سه شنبه 11 بهمن 1390, 21:05 عصر
این نوع دی کد امن هست یا نه ؟

منظورم از نظر هک کردن دیتابیس هست

میشه برگردوندش ؟ یا اینکه چطوری امن تر میشه ؟

ممنون میشم توضیح بدید



<?php
echo $p=encode("091739154741","dsas%^&&^");

echo decode($p,"dsas%^&&^");

function encode($string,$key) {
$key = sha1($key);
$strLen = strlen($string);
$keyLen = strlen($key);
for ($i = 0; $i < $strLen; $i++) {
$ordStr = ord(substr($string,$i,1));
if ($j == $keyLen) { $j = 0; }
$ordKey = ord(substr($key,$j,1));
$j++;
$hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36));
}
return $hash;
}

function decode($string,$key) {
$key = sha1($key);
$strLen = strlen($string);
$keyLen = strlen($key);
for ($i = 0; $i < $strLen; $i+=2) {
$ordStr = hexdec(base_convert(strrev(substr($string,$i,2)),3 6,16));
if ($j == $keyLen) { $j = 0; }
$ordKey = ord(substr($key,$j,1));
$j++;
$hash .= chr($ordStr - $ordKey);
}
return $hash;
}

?>

eshpilen
سه شنبه 11 بهمن 1390, 22:25 عصر
از این روشها زیاد میشه اختراع کرد.
ولی اگر حداکثر امنیت واقعی میخواید باید از روشهای استاندارد استفاده کنید.
مثلا AES128 که قبلا تاپیکش رو گذاشته بودم: http://barnamenevis.org/showthread.php?314829
الگوریتم های استاندارد رمزنگاری اون همه حجم و پیچیدگی بیشتر رو الکی ندارن که.
تازه اونا رو متخصصان رمزنگاری طراز اول و ریاضیدان ها طراحی و تحلیل کردن و سالها تحت مطالعه و تست بودن.

billgivz
چهارشنبه 12 بهمن 1390, 20:52 عصر
از این روشها زیاد میشه اختراع کرد.
ولی اگر حداکثر امنیت واقعی میخواید باید از روشهای استاندارد استفاده کنید.
مثلا AES128 که قبلا تاپیکش رو گذاشته بودم: http://barnamenevis.org/showthread.php?314829
الگوریتم های استاندارد رمزنگاری اون همه حجم و پیچیدگی بیشتر رو الکی ندارن که.
تازه اونا رو متخصصان رمزنگاری طراز اول و ریاضیدان ها طراحی و تحلیل کردن و سالها تحت مطالعه و تست بودن.

یک مسئله به نظرتون استفاده از روش های استاندارد قابل نفوذ تر نسیت ؟

اگر سورس برنامه هک شد باید چی کار کرد ؟ چون الگوریتما لو میره برای جلوگیری از این کار چه باید کرد ؟

eshpilen
چهارشنبه 12 بهمن 1390, 23:15 عصر
یک مسئله به نظرتون استفاده از روش های استاندارد قابل نفوذ تر نسیت ؟خیر.
اونا امن تر هستن. خیلی هم امن تر.
چون کاملا تخصصی و علمی و تست و تحلیل شده هستند.
حاصل نهایت تکامل و تجربه تا حالا در زمینهء امنیت و علم رمزنگاری هستند.
سالهاست هیچ هکر، هیچ متخصص رمزنگاری، هیچ ریاضیدانی موفق به شکست این الگوریتم ها نشده.
البته الگوریتم هایی مثل AES که تایید شده هستن.


اگر سورس برنامه هک شد باید چی کار کرد ؟ چون الگوریتما لو میره برای جلوگیری از این کار چه باید کرد ؟ برنامه باید طوری باشه که اگر سورس افشا شد امنیت دچار فروپاشی نشه.
امنیت و رمزنگاری مدرن اساسا و تماما بر همین اصل بنا شده.
بازمتن چطور کار میکنه؟ چطور امنیت داره؟
اگر تاحالا این تاپیک رو نخوندی حالا بخون: امنیت از طریق تیرگی (http://barnamenevis.org/showthread.php?325263)
امنیت در رمزنگاری باید بر کلید استوار باشه، نه پنهان ماندن الگوریتم.
چطور این الگوریتم ها توسط اینهمه سازمانهای بزرگ و مهم و برای ادارهء بخش اعظم نیازهای امنیتی در اینترنت و دنیا استفاده میشن و مشکلی هم پیش نیامده؟

eshpilen
چهارشنبه 12 بهمن 1390, 23:38 عصر
اینکه فکر کنیم پنهان ماندن الگوریتم باعث امنیت بالا میشه یک توهمی بیش نیست.
بخصوص که روشهای اصولی رو استفاده نکنیم و بجاش از امنیت از طریق تیرگی استفاده کنیم.

این قضیه و روش برنامه نویسی که خیلی ها دارن و با فرض قایم کردن کد روی امنیت کار میکنن درواقع بیشتر شبیه جارو کردن آشغال ها به زیر فرشه!

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

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

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

billgivz
یک شنبه 16 بهمن 1390, 02:00 صبح
از این روشها زیاد میشه اختراع کرد.
ولی اگر حداکثر امنیت واقعی میخواید باید از روشهای استاندارد استفاده کنید.
مثلا AES128 که قبلا تاپیکش رو گذاشته بودم: http://barnamenevis.org/showthread.php?314829
الگوریتم های استاندارد رمزنگاری اون همه حجم و پیچیدگی بیشتر رو الکی ندارن که.
تازه اونا رو متخصصان رمزنگاری طراز اول و ریاضیدان ها طراحی و تحلیل کردن و سالها تحت مطالعه و تست بودن.

ممنون از مقاله خوبتون

بنده چند تا سوال دارم .

اول اینکه برای بازگردانی رشته کد شده نیاز به چه مواردی هست ؟ کلید تولید شده و یا رشته کد شده و در صورت نیاز به کلید تولید شده کلید چهت بازیابی رشته کد شده در کجا نگهداری می شود؟ (در کل یک توضیح در مورد بازگردانی رشته کد شده پس از درج در دیتابیس بفرمایید به همراه مثال)

$plaintext2=$aes->IvDecrypt($ciphertext);

echo 'Plaintext2: ', $plaintext2, '';


بنطرتون این کد برای کد کردن شماره تلفن زیاد حجیم نیست ؟! چه از لحاظ سرعت چه از لحاظ تعداد کاراکتر در دیتابیس

eshpilen
یک شنبه 16 بهمن 1390, 15:01 عصر
اول اینکه برای بازگردانی رشته کد شده نیاز به چه مواردی هست ؟ کلید تولید شده و یا رشته کد شده و در صورت نیاز به کلید تولید شده کلید چهت بازیابی رشته کد شده در کجا نگهداری می شود؟

خب اون کلید یا پسورد (درصورتیکه از پسورد استفاده کرده باشید) مورد نیازه دیگه.
اون نمونه کدی که خودتون در پست اول گذاشتید هم یک پسورد میخواد.
اون پسورد رو کجا نگه میدارید؟


در کل یک توضیح در مورد بازگردانی رشته کد شده پس از درج در دیتابیس بفرمایید به همراه مثالکجاش مشکل داری. چیز پیچیده و غیراستانداردی نداره.
الان بطور مثال اینو اجرا کن:

<?php

require_once 'crypto.php';

$plaintext='09120000001';

$aes = new Crypt_AES();

$aes->setPassword('MyPassword');

$ciphertext=base64_encode($aes->IvEncrypt($plaintext));

echo $ciphertext;

?>
اون ciphertext که اکو هم میشه متن رمز شدهء شماست که مثلا در دیتابیس ذخیره میکنی.

حالا موقعی که اون متن رو دوباره از دیتابیس بیرون میکشی، اینطوری رمزگشایی میکنی:

<?php

require_once 'crypto.php';

$ciphertext=base64_decode('LQNvg9UCFfgEmQw7MRn8jcB zLMDG9MvYig+HszHMcoE=');

$aes = new Crypt_AES();

$aes->setPassword('MyPassword');

$plaintext=$aes->IvDecrypt($ciphertext);

echo $plaintext;

?>
به تابع base64_decode رشته ای رو میدی که از دیتابیس خودت بیرون کشیدی. یعنی اون $ciphertext که در مرحلهء قبل با رمزگذاری بدست آورده بودی.

سوالی مشکلی هست بازم؟

ضمنا میتونی کلا توابع base64 رو حذف کنی و متن رمز رو در یک فیلد از نوع binary در دیتابیس ذخیره کنی. اینطوری حجمش یه مقدار کمتر میشه (حدودا 30% کمتر). من از تبدیل به base64 استفاده کردم که خواناتر و برای مثال و تست دستی راحتتر قابل استفاده باشه.


بنطرتون این کد برای کد کردن شماره تلفن زیاد حجیم نیست ؟! چه از لحاظ سرعت چه از لحاظ تعداد کاراکتر در دیتابیس
بالاخره شما امنیت بالا میخوای یا نه؟
اگر امنیت بالا میخوای باید از الگوریتم های استاندارد با حداقل طول کلید 128 بیت استفاده کنی.
البته بین الگوریتم ها و mode ها از نظر خصوصیات و نیز حجم خروجی تفاوتهایی هست، ولی این تفاوتها خیلی نیست و چند بایت کمتر و بیشتر بنظرم اهمیتی نداره و بنده هم وقت ندارم الان بخوام برم انواع دیگر رو بررسی و مقایسه کنم و دوباره کد بذارم. همون AES 128 در مد CBC برای کاربردهای عادی خوبه و کفایت میکنه.

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

eshpilen
یک شنبه 16 بهمن 1390, 15:14 عصر
راستی میخوای شماره تلفن ها رو بصورت رمزشده در دیتابیس ذخیره کنی؟ دقیقا به چه دلیل؟
اطلاع داری که اگر کسی به هردوی دیتابیس و کدمنبع دسترسی داشته باشه میتونه اونا رو رمزگشایی کنه؟
چه کدی که خودت گذاشتی و چه روشهای استانداردی که بنده گذاشتم همه برگشت پذیر هستن، ولی برای رمزگشایی مسلما نیاز به کلید/پسورد هست؛ یعنی هکر باید هم به دیتابیس دسترسی پیدا کرده باشه و هم به کدمنبع برنامهء شما (اگر پسورد رو در کدمنبع ذخیره کرده باشی).

اصلا پروژه و برنامت چیه و چه داستانی داره؟

billgivz
یک شنبه 16 بهمن 1390, 15:20 عصر
ممنون از راهنمایی شما نمیدونم شاید منظور من رو نفهمیدید یا بنده بد نوشتم .

موضوع اصلی من همون mypassword (کلید رمز) هست .

در صورتی که سورس لو بره رمز نگاری هم لو رفته !

همون طور مثال زدید کافیه هکر اطلاعات دیتابیس من رو به علاوه پسورد رو به کار بگیره و اطلاعات رو برگردونه .

مشکل اصلی من همینه در بالا ذکر کرد حتی اگر رمز هم در دیتابیس بزاری بازم همین مشکل هست .

ممنون میشم توضیح بفرمایید که چطور پسورد رو مخفی نگه دارم ؟

billgivz
یک شنبه 16 بهمن 1390, 15:22 عصر
راستی میخوای شماره تلفن ها رو بصورت رمزشده در دیتابیس ذخیره کنی؟ دقیقا به چه دلیل؟
اطلاع داری که اگر کسی به هردوی دیتابیس و کدمنبع دسترسی داشته باشه میتونه اونا رو رمزگشایی کنه؟
چه کدی که خودت گذاشتی و چه روشهای استانداردی که بنده گذاشتم همه برگشت پذیر هستن، ولی برای رمزگشایی مسلما نیاز به کلید/پسورد هست؛ یعنی هکر باید هم به دیتابیس دسترسی پیدا کرده باشه و هم به کدمنبع برنامهء شما (اگر پسورد رو در کدمنبع ذخیره کرده باشی).

اصلا پروژه و برنامت چیه و چه داستانی داره؟

منم از اول حرفم همینه که !

باید چی کار کرد ؟

eshpilen
یک شنبه 16 بهمن 1390, 16:08 عصر
ممنون از راهنمایی شما نمیدونم شاید منظور من رو نفهمیدید یا بنده بد نوشتم .

موضوع اصلی من همون mypassword (کلید رمز) هست .

در صورتی که سورس لو بره رمز نگاری هم لو رفته !

همون طور مثال زدید کافیه هکر اطلاعات دیتابیس من رو به علاوه پسورد رو به کار بگیره و اطلاعات رو برگردونه .

مشکل اصلی من همینه در بالا ذکر کرد حتی اگر رمز هم در دیتابیس بزاری بازم همین مشکل هست .

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

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

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

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

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

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

کلا راه اصولیش برنامهء دسکتاپ هست که کدش روی PC خودتون باشه و عملیات رمزنگاری در اون برنامه انجام بشه و کلید/پسورد هیچوقت از سیستم خودتون خارج نشه. چیزی که از سیستم شما بیرون میره و داخل میاد اطلاعات رمزگذاری شده هست که هیچکس نمیتونه بدون پسورد/کلید از اونها سوء استفاده کنه (البته بازم میگم که پسورد باید بقدر کافی قوی باشه).

MMSHFE
یک شنبه 16 بهمن 1390, 19:10 عصر
نظرتون چیه که به جای PC، از یک سرور دیگه برای انجام رمزگذاری/رمزگشایی استفاده کنیم؟ منظورم سروری هست که روی اون هاست قرار نگرفته. اینطوری احتمال اینکه همزمان هر دو سرور هک بشن کمتره. بالأخره PC خود فرد هم در اینجا نقش یک سرور دیگه رو بازی میکنه. مزیت روشی که گفتم در اینه که لازم نیست 24 ساعته PC خودتون روشن باشه. به نظرتون این روش مفیده؟

eshpilen
یک شنبه 16 بهمن 1390, 20:58 عصر
چیزی که بنده گفتم این نبود که PC خودمون نقش یک سرور رو بازی بکنه.
فرض کنید یک نرم افزار دسکتاپ دفترچه تلفن عادی دارید (اطلاعاتش روی PC خودتون ذخیره میشه).
حالا ما تنها تغییری که در این نرم افزار میدیم اینه که اطلاعات خودش رو بجای روی رایانه محلی، در یک سرور در اینترنت ذخیره میکنه، و این اطلاعات رو قبل از ارسال به سرور با کلید/پسوردی در خود نرم افزار رمز میکنیم تا اگر کسی به اطلاعات دفترچه تلفن ما روی سرور دستیابی پیدا کرد نتونه هیچ اطلاعات مهمی ازش استخراج بکنه.

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

در این سیستم نیازی نیست PC ما یا کس دیگری بصورت دائم روشن باشه.

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

----------------------------

درمورد ایدهء شما هم جزییاتش رو بیان کنید تا بشه درموردش بحث کرد.

مثلا در سیستم پیشنهادی شما، کاربر شماره تلفنی رو که میخواد ذخیره کنه در فرمی در یک صفحهء وب در مرورگر وارد میکنه؟ پسورد مورد استفاده برای رمزگذاری رو هم در همون فرم وارد میکنه یا اینکه روی یکی از دو سرور ذخیره هست؟ ....

billgivz
دوشنبه 17 بهمن 1390, 18:52 عصر
به نظرتون کد کردن سورس با نرم افزار zend معقول تر نیست ؟

آخه درگیر کردن خودت با یک سرور دیگه که رمز روی اون باشه

اول مشکلات زیادی داره یکی اینکه اومدیم اون سرور down‌ شددیگه همه ی سایت میخوابه

دوم اینکه هکر که نفهم نیست میفهمه که داره از یک سرور دیگه کد رو میگیره و اون رو هک میکنه .

من مد نظرم نهایت امنیت نیست منظورم رعایت یک امنیت معقول در سایت هست

ممنون میشم نظر بدید

eshpilen
دوشنبه 17 بهمن 1390, 23:48 عصر
به نظرتون کد کردن سورس با نرم افزار zend معقول تر نیست ؟

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


آخه درگیر کردن خودت با یک سرور دیگه که رمز روی اون باشه

اول مشکلات زیادی داره یکی اینکه اومدیم اون سرور down‌ شددیگه همه ی سایت میخوابه

دوم اینکه هکر که نفهم نیست میفهمه که داره از یک سرور دیگه کد رو میگیره و اون رو هک میکنه .
اون روش رو آقای MMSHFE (http://barnamenevis.org/member.php?55504-MMSHFE) گفتش.
بنظر من هم به دردسرش نمی ارزه و ضمنا امنیت بالایی هم نمیده، چون بالاخره کلید/پسورد رمزنگاری ما روی یک سرور وجود داره و همزمان دیتا هم در همونجا حداقل بصورت موقتی حضور داره برای رمز کردن و رمزگشایی. بنابراین بازم امنیت خیلی بالا نیست.
اگر جزییاتش رو مطرح و بررسی کنیم شاید مشکلات بزرگتری هم درش پیدا بشه. فعلا جزییاتش مشخص نیست و مبهمه. بنظرم به چند شکل میشه پیاده سازیش کرد و هر روش از نظر تحلیل و امنیت میتونه متفاوت باشه.


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

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