PDA

View Full Version : امنیت ذخیره پسورد نرم افزار در سیستم کاربر



AliReza Vafakhah
دوشنبه 23 آبان 1390, 01:08 صبح
با سلام خدمت دوستان

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

آیا راه حلی هست که احتمال بازیابی کلمه عبور به حداقل برسه؟

و سوال دیگم که بی ربط با موضوع نیست اینه که چه طوری سطح امنیت نرم افرار را ببرم بالا؟ به عنوان مثال کاربر نتونه با ویرایش فایل Exe دیالوگ مربوط به امنیت رو برداره و یا کلمه عبور را بشکنه.

در کل نیاز به یک سطوح امنیت بالا دارم.

راستی کتاب جامع و کامل در رابطه با امنیت نرم افزار و جلوگیری از هک شدن هم اگه معرفی کنید متشکر میشم

Securebit
سه شنبه 24 آبان 1390, 10:24 صبح
استفاده از رشته برای مقایسه پسورد میتونه پیدا کردن پسورد رو حتی بدون دیباگ امکان پذیر کنه استفاده از آرایه ها میتونه این مشکل را تا حدودی بر طرف کنه قبل از مقایسه آرایه باید از آنتی دیباگ استفاده و کد رو VM کنید.

AliReza Vafakhah
چهارشنبه 25 آبان 1390, 15:10 عصر
تشکر

من تو گوگل مطلبی پیدا نکردم

جستجو من (https://www.google.com/search?hl=en&client=opera&hs=2xz&rls=en&channel=suggest&sa=X&ei=XafDTrDIJsbfsgaS4omJDA&ved=0CBYQBSgA&q=Anti+Debug+Array+and+Convert+To+VM&spell=1)

میشه شما چندتا لینک راهنما بگذارید و بیشتر توضیح بدهید.

Securebit
چهارشنبه 25 آبان 1390, 16:24 عصر
شما رشته پسورد رو انکریپت کنید به آرایه تبدیل در رجیستری ذخیره موقع چک کردن پسورد از رجیستری بخونید با پسورد وارد شده توسط کاربر به صورت دو آرایه مقایسه کنید 1000 جور مختلف میشه اینو نوشت که بستگی به خلاقیت شما داره از آنتی دیباگ استفاده نکردید مهم نیست برای VM هم از VMProtect استفاده کنید.

AliReza Vafakhah
پنج شنبه 26 آبان 1390, 00:47 صبح
شما رشته پسورد رو انکریپت کنید به آرایه تبدیل در رجیستری ذخیره موقع چک کردن پسورد از رجیستری بخونید با پسورد وارد شده توسط کاربر به صورت دو آرایه مقایسه کنید 1000 جور مختلف میشه اینو نوشت که بستگی به خلاقیت شما داره

من این کد رو نوشتم (البته بدون رمزنگاری رشته گفتم کوتاه باشه). درسته


procedure TForm1.Button1Click(Sender: TObject);

function SetPassInReg(const Pass: string): Boolean;
var
Reg: TRegistry;
EncryptString: array of string;
i, PassLen: Integer;
begin

PassLen:= Length(Pass);
SetLength(EncryptString, PassLen);

{Variable Pass Encrypt and then move to array // no this code}

{String copy to array}
for i:= 1 to PassLen do
EncryptString[i - 1]:= Copy(Pass, i, 1);

try

Reg:= TRegistry.Create;
Reg.RootKey:= HKEY_CURRENT_USER;

if (Reg.OpenKey('Software\AVF\My Program', True)) then
begin
Reg.DeleteValue('My Pass');
for i:= 0 to PassLen - 1 do
begin
{Write Array by index in Reg}
Reg.WriteString('My Pass' , Reg.ReadString('My Pass') +
EncryptString[i]);
end;
end;

finally
FreeAndNil(Reg);
end;
end;

begin
SetPassInReg('SeCuRiTy_ToKen');
end;


آنتی دیباگ استفاده نکردید مهم نیست برای VM هم از VMProtect استفاده کنید.

میشه لطفا بیشتر توضیح بدهید(من با VM و VMProtect آشنا نیستم).

JaguarXF
پنج شنبه 26 آبان 1390, 05:23 صبح
بسیار صحبتهای مفیدی زده شده اینجا. با دقت بخون.
http://stackoverflow.com/questions/354676/have-you-ever-used-code-virtualizer-or-vmprotect-to-protect-from-reverse-enginee

Securebit
پنج شنبه 26 آبان 1390, 14:56 عصر
شما نوشتن و خواندن از رجیستری رو کامل کنید فایل کامپایل شده رو با پیام خصوصی بفرستید اگر مشکلی باشه خدمت شما عرض میکنم.
VM Protect را دانلود کنید راهنما و مثال زیاد داره.