در مورد مدل امنیتی کیف پول نرم افزاری | دفتر کل

در مورد مدل امنیتی کیف پول نرم افزاری | دفتر کل

گره منبع: 2671485

ما می توانیم دو نوع رایج کیف پول را تشخیص دهیم: کیف پول نرم افزاری و کیف پول سخت افزاری. آنها عملکرد یکسانی را انجام می دهند، اما به روشی متفاوت. کیف پول های نرم افزاری برای استفاده ساده تر در نظر گرفته می شوند: یک برنامه واحد برای ایجاد، اعتبارسنجی و امضای تراکنش ها کافی است. با کیف پول نرم افزاری، نیازی به ایجاد تراکنش روی نرم افزار و تایید آن در دستگاه سخت افزاری نیست.

دو هفته پیش، داستانهای ممنوعه از یک حمله هدفمند علیه هزاران نفر در سراسر جهان پرده برداری کرد. این حمله از آسیب پذیری های اندروید و iOS برای نصب نرم افزارهای جاسوسی توسعه یافته توسط NSO Group: Pegasus استفاده کرد. این بدافزار قادر است کل فعالیت دستگاه را زیر نظر داشته باشد و اطلاعات شخصی مانند پیامک، واتس‌اپ و مکالمات سیگنال، تماس‌های تلفنی و غیره را از بین ببرد. این مقاله توضیح می‌دهد که چگونه، تحت این شرایط، چنین بدافزاری می‌تواند همه موارد را استخراج کند. اسرار کیف پول های نرم افزاری و تفاوت ها از نظر امنیتی بین کیف پول های نرم افزاری در تلفن های همراه و رایانه های رومیزی.

این مقاله قصد دارد خیلی فنی نباشد. برای ساده نگه داشتن آن، فقط ویژگی های اساسی مورد بحث قرار خواهد گرفت.

محافظت از اسرار

چه چیزی در کیف پول رمزنگاری ذخیره می شود؟

کیف پول ها در واقع ارزهای رمزنگاری شده کاربران را ذخیره نمی کنند: آنها فقط اسرار، به ویژه کلیدهای خصوصی را ذخیره می کنند که امکان دسترسی به ارزهای دیجیتال و امکان خرج کردن آنها را فراهم می کند. این کلیدهای خصوصی عمدتاً کلیدهای خصوصی ECC (رمز نگاری منحنی بیضی) در منحنی های مختلف بسته به بلاک چین هستند. رایج ترین منحنی ها secp256k1 (Bitcoin، Ethereum…)، Ed25519 (Monero) یا BLS12-381 (Ethereum 2) هستند.

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

ذخیره سازی این کلیدها به نوع کیف پول بستگی دارد: قطعی یا غیر قطعی. یک کیف پول قطعی سلسله مراتبی (HD) امکان ایجاد درختی از کلیدها را از یک راز اصلی به نام seed می دهد. BIP44). این دانه اغلب از یک دنباله یادگاری 12، 18 یا 24 کلمه ای که به طور تصادفی توسط کاربر تولید یا انتخاب شده است، مشتق شده است (ر.BIP39). این حافظه‌ها به شما اجازه می‌دهد تعداد کلیدهای ذخیره‌سازی را محدود کنید: آنها را می‌توان در هر زمان از دانه دوباره محاسبه کرد. کیف پول های HD فقط این یادگاری یا دانه را ذخیره می کنند.

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

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

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

مدل امنیتی کیف پول سخت افزاری با هدف از بین بردن این تهدیدات امنیتی است. کیف پول های سخت افزاری با طراحی در برابر بدافزارها محافظت می کنند. آنها دستگاه های مستقلی هستند که به تنهایی معاملات را امضا می کنند. مواد رمزنگاری همیشه در داخل دستگاه می مانند و هرگز به نرم افزاری که با آن ارتباط برقرار می کنند ارسال نمی شوند. رابط ارتباطی همیشه ساده است که سطح حمله را به شدت کاهش می دهد. این می تواند USB، Micro SD یا دوربین + صفحه نمایش (از طریق کد QR) یا بلوتوث کم انرژی باشد.

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

کیف پول‌های سخت‌افزاری نیز برای محافظت در برابر حملات «خدمت‌کار شیطانی» و در برابر مهاجمی با دسترسی فیزیکی طراحی شده‌اند. بسته به کیف پول سخت افزاری، سطوح امنیتی مختلفی دارند، اما در همه موارد برای ایمن سازی در برابر این تهدیدات طراحی شده اند. شرح مفصلی از مدل‌های تهدید Ledger Nano را می‌توان یافت اینجا کلیک نمایید.

کیف پول نرم افزار

کیف پول‌های نرم‌افزاری معمولی از اسرار با ابزارهای منظم محافظت می‌کنند: مکانیسم‌های امنیتی سیستم‌عاملی که روی آن اجرا می‌شوند و گاهی اوقات کنترل دسترسی بر اساس پین یا رمز عبور.

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

کیف پول های نرم افزاری روی کامپیوتر

چندین کیف پول محبوب مانند Electrum، Exodus، Atomic یا Bitcoin core بر روی کامپیوتر اجرا می شوند.

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

امنیت این کیف پول‌های نرم‌افزاری عمدتاً بر امنیت رمز عبوری است که از آنها محافظت می‌کند و همچنین به این واقعیت که هیچ بدافزاری روی سیستم‌عامل اجرا نمی‌شود (که تضمین آن بسیار دشوار است، اخبار اخیر در مورد Pegasus را ببینید).

بیشتر اوقات، دانه در یک محفظه رمزگذاری شده ذخیره می شود که با یک رمز عبور محافظت می شود. یک حمله ساده برای یک بدافزار یا یک ابزار مدیریت راه دور، برای بازیابی این ظرف رمزگذاری شده و ارسال آن به مهاجم است. سپس رمز عبور را می توان به صورت brute-forced یا با استفاده از a بدست آورد Keylogger ها.

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

اکثر رمزهای عبور هستند بد. میلیاردها رمز عبور در وب وجود دارد که به بیرون درز کرده است و بسیاری از افراد تمایل دارند از رمز عبور خود برای چندین سرویس استفاده مجدد کنند. ابزارهای آماده به شما این امکان را می دهند که رمزهای عبور کیف پول ارزهای دیجیتال را بازیابی کنید، مانند btcrecover or هش کت. گذرواژه‌ها می‌توانند پیچیده باشند، اما در پشت هر کیف پول پول واقعی وجود دارد، بنابراین مهاجمان از سرمایه‌گذاری منابع برای شکستن چنین رمزهای عبور دریغ نمی‌کنند.

دو اصل اساسی امنیتی برای ایمن نگه داشتن رمزهای عبور استفاده از مدیر رمز عبور و استفاده مجدد از رمز عبور برای اهداف مختلف است.

نگران‌کننده‌ترین تهدید برای کیف پول‌های نرم‌افزاری، بدافزارها و دزدان اختصاصی هستند که به طور خاص برای تخلیه وجوه شما ایجاد شده‌اند. چنین بدافزارهایی مانند KPOT یا ElectroRAT، حتی لازم نیست رمز عبور خود را bruteforce کنید: آنها می توانند مستقیماً هنگام ورود آن را ضبط کنند، داده های پیکربندی کیف پول را رمزگشایی کرده و دانه را استخراج کنند.

در اینجا یک برنامه اسباب‌بازی است که برای این مقاله توسعه یافته است که کیف پول Electrum را هدف قرار می‌دهد (اگرچه می‌توانست یک کیف پول نرم‌افزاری دیگر باشد). این نرم افزار بدافزاری را شبیه سازی می کند که رمز عبور کاربر را هنگامی که قربانی وارد می کند سرقت می کند. رمز عبور سپس برای رمزگشایی داده های کیف پول و نمایش دانه استفاده می شود:

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

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

برای نتیجه گیری در مورد کیف پول های نرم افزاری که روی رایانه ها اجرا می شوند:

  • در بیشتر موارد کیف پول‌های نرم‌افزاری که روی رایانه‌ها اجرا می‌شوند، با استفاده از رمز عبور، از نسل کاربر محافظت می‌کنند.
  • کنترل دسترسی برای این فایل های کیف پول عمدتاً به امنیت رایانه بستگی دارد. در عمل، محافظت از رایانه ها در برابر بدافزارها دشوار است، و با تبدیل شدن ارزهای دیجیتال به جریان اصلی، حملات علیه کیف پول ها پیچیده تر و پیچیده تر می شوند.
  • استفاده از چنین کیف پول های نرم افزاری برای ایمن سازی دارایی های دیجیتال ایده خوبی نیست. هر بدافزار تخصصی می‌تواند فایل‌های کیف پول را دریافت کند و گذرواژه‌ها را به‌صورت آفلاین پیدا کند، یا رمز عبور را از طریق یک کی لاگر دریافت کند.
کیف پول های نرم افزاری در گوشی های هوشمند

تلفن های هوشمند اندروید و iOS به طور پیش فرض ویژگی های امنیتی را ارائه می دهند که به طور گسترده در سیستم عامل های دسکتاپ استفاده نمی شود.

سیستم‌عامل‌های موبایل محافظت از داده‌های اپلیکیشن و کاربر را ارائه می‌کنند. به طور خاص، جعبه‌های سندباکس برنامه برای همه برنامه‌ها اجباری است. به عنوان مثال، در ویندوز اینطور نیست: به طور پیش فرض، هر برنامه ای می تواند به داده های کاربر دسترسی داشته باشد.

بنابراین، یک برنامه مخرب نمی تواند داده ها را از یک برنامه دیگر بخواند، مگر اینکه:

  • یک آسیب پذیری در آن برنامه پیدا می کند.
  • یا می‌تواند امتیازات را افزایش دهد، برای مثال با سوء استفاده از یک آسیب‌پذیری هسته که به آن اجازه دسترسی ریشه به سیستم را می‌دهد.

متاسفانه چنین حملاتی وجود دارد. آنها در نسخه‌های قدیمی Android و iOS و در دستگاه‌های قدیمی یا ارزان‌تر که کد شخص ثالث اغلب امنیت کمتری دارند، بسیار آسان‌تر هستند.

در یک سیستم عامل به روز، این حملات سخت تر هستند اما از راه دور غیر قابل اجرا نیستند. به عنوان مثال، یان بیر نشان داد حمله صفر کلیک بسیار چشمگیر در iOS 13.5 در دسامبر 2020. گوانگ گونگ یک زنجیره بهره برداری برای روت کردن از راه دور طیف گسترده ای از دستگاه های اندروید مبتنی بر کوالکام در ژوئن 2020. و دو هفته پیش، داستانهای ممنوعه پرده برداری کرد که گروه NSO از یک زنجیره بهره برداری برای هدف قرار دادن دستگاه های iOS و Android اخیر با استفاده از آسیب پذیری های 0 روزه استفاده کرده است.

مهاجمان کمتر پیچیده می توانند از آسیب پذیری های محلی استفاده کنند که به آنها امکان می دهد داده های کیف پول را از یک برنامه مخرب استخراج کنند. کارگزاران آسیب پذیری مانند Zerodium pay تا دلار 200,000 برای افزایش امتیاز برای روت کردن در اندروید و iOS، اما تا سقف 1,500,000 دلار برای حملات از راه دور.

ما چند کیف پول Android/iOS را مطالعه کردیم. امنیت آنها به خود برنامه و همچنین به ویژگی های امنیتی سیستم عامل اصلی بستگی دارد. البته زمانی که امنیت سیستم عامل از بین برود، برنامه دیگر امن نیست

دو روش برای محافظت از بذر معمولا استفاده می شود:

  • حفاظت از رمز عبور - داده های کیف پول با رمز عبور وارد شده توسط کاربر محافظت می شود. طراحی مانند کیف پول های دسکتاپ است. در عمل، استخراج داده‌ها سخت‌تر از رایانه است، زیرا به دلایلی که در بالا توضیح داده شد، بازیابی اطلاعات برنامه از یک برنامه مخرب از نظر فنی دشوارتر است. با این حال، بازیابی رمز عبور پس از سرقت داده ها در عمل آسان تر است: وارد کردن رمزهای عبور پیچیده در تلفن های همراه خسته کننده است، از این رو کاربران تمایل دارند رمزهای عبور ساده تر را انتخاب کنند. علاوه بر این، مکانیسم‌های مشتق کلید (که برای ایجاد کلید از رمز عبور استفاده می‌شود) در دستگاه‌های تلفن همراه معمولاً ساده‌تر شکسته می‌شوند، زیرا اغلب به دلایل عملکرد سبک‌تر هستند.
  • کوئینیمو و Metamask نمونه هایی از این کیف پول ها هستند.

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

این روش مختص کیف پول نیست. این می تواند (کم و بیش) به راحتی با هر کیف پول محافظت شده با رمز عبور سازگار شود. در اینجا او همان مثال با کیف پول کوین بیس است:

[محتوای جاسازی شده]

  • امنیت مبتنی بر Android Keystore (یا Keychain iOS) – در این حالت، داده های کیف پول با یک کلید رمزگذاری ذخیره شده در فروشگاه Android Keystore (iOS Keychain) رمزگذاری می شود. این سرویس ها در ابتدا برای ذخیره ایمن کلیدهای رمزگذاری طراحی شده بودند و بسیاری از برنامه ها از آنها برای تولید کلیدی استفاده می کنند که تمام داده های حساس کاربر را رمزگذاری می کند. برنامه هایی که از Keystore استفاده می کنند مکانیسم زیر را اجرا می کنند:
    • برنامه از Keystore می خواهد که یک کلید رمزگذاری برای یک شناسه داده شده ایجاد کند. Keystore کلید را تولید می کند و آن را ایمن ذخیره می کند.
    • هنگامی که برنامه می خواهد یک لکه را رمزگذاری یا رمزگشایی کند، حباب را به همراه شناسه کلید به Keystore می فرستد.
    • در نهایت، فروشگاه کلید بررسی می کند که آیا برنامه واقعاً حقوق استفاده از این کلید را دارد یا خیر و سپس داده های خروجی را به برنامه ارسال می کند.

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

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

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

Keystore خدمات رمزگذاری و امضا را نیز ارائه می دهد. بنابراین، آیا یک کیف پول می تواند از کلیدهای رمزگذاری خود محافظت کند و استخراج آنها را دشوار کند؟ پاسخ متاسفانه خیر است: کیف پول های نرم افزاری از Keystore برای امضای تراکنش ها استفاده نمی کنندو کلیدهای خصوصی همیشه در متن ساده توسط برنامه دستکاری می شوند.

این به یک دلیل ساده است: KeyStore و KeyChain خدمات امضا و رمزگذاری عمومی را ارائه می‌کنند، اما از رمزنگاری مورد استفاده در ارزهای دیجیتال پشتیبانی نمی‌کنند. به عنوان مثال، KeyStore امضای ECDSA را اجرا می کند اما فقط در منحنی های NIST تعریف شده در FIPS 186-4 (P-224، P-256، P-384 و P-521). بیت کوین از منحنی دیگری استفاده می کند، secp256k1، که هنوز پشتیبانی نمی شود.

به طور خلاصه، Keystore و Keychain خدمات خوبی برای محافظت هستند کلیدهای مخفی و خصوصی. آنها می‌توانند با رمزگذاری داده‌های حساس مقداری امنیت ارائه دهند: برخی از کلاس‌های آسیب‌پذیری (مثلاً خواندن فایل دلخواه) توسط رمزگذاری Keystore شناسایی می‌شوند. با این حال، اگر افزایش امتیاز ریشه برای استخراج مقادیر کلید از یک Keystore سخت افزاری کافی نباشد، برای رمزگشایی داده های حساس کافی است. مهاجمی که بتواند برنامه را ابزار کند، می‌تواند اسرار آن را بازیابی کند.

برای نتیجه گیری در مورد کیف پول موبایل:

  • مکانیسم جداسازی بین برنامه‌های ارائه شده توسط iOS/Android در مقایسه با کیف پول نرم‌افزاری که روی رایانه اجرا می‌شود، سطح امنیت را افزایش می‌دهد. مهاجم برای دسترسی به داده های برنامه ابتدا به افزایش امتیاز نیاز دارد. این در دستگاه های قدیمی امکان پذیر است. مهاجمان ماهر (Ian Beer این کار را به تنهایی در 6 ماه انجام داد اما ... Ian Beer است) همچنین می توانند این کار را در دستگاه های اخیر وصله شده انجام دهند.
  • خدمات حفاظت از کلید (KeyStore، KeyChain) می توانند یک لایه امنیتی اضافی برای محافظت از اسرار در حالت استراحت اضافه کنند. با این وجود، از آنجایی که آنها از الگوریتم‌های رمزنگاری برای برنامه‌های ارزهای دیجیتال پشتیبانی نمی‌کنند، کلید همچنان قابل استخراج است.
  • در همه موارد، یک مهاجم با دسترسی ریشه می‌تواند در حالت استراحت، زمانی که از آن استفاده می‌شود، seed را بازیابی کند یا از حقوق کاربر برای خالی کردن کیف پول با استفاده از کیف پول نرم‌افزار به عنوان اوراکل استفاده کند.

در اینجا آخرین نمونه از جاسوس‌افزار اسباب‌بازی است که کیف پول Blockchain.com را هدف قرار می‌دهد (اگرچه این کار را می‌توان در بسیاری از کیف‌های دیگر به همین راحتی انجام داد). از راه دور نصب می شود و کیف پول را کنترل می کند. هنگامی که کاربر با استفاده از اثر انگشت خود احراز هویت شد، کلید رمزگذاری باز می شود و داده های کیف پول رمزگشایی می شوند. جاسوس افزار برنامه را برای بازیابی این کلید رمزگذاری ابزار می کند. سپس کلید و داده های کیف پول را به یک سرور راه دور استخراج می کند:

[محتوای جاسازی شده]

نتیجه

به عنوان یک نتیجه، کیف پول های نرم افزاری دارای سطوح مختلف امنیتی هستند. با این حال، مدل تهدید آنها مورد بدافزاری که در سیستم عامل با افزایش امتیاز اجرا می شود را پوشش نمی دهد. این بر اساس طراحی است: برنامه کیف پول نمی تواند امن تر از سیستم عاملی باشد که روی آن اجرا می شود.

  • مکانیسم جداسازی بین برنامه‌های ارائه شده توسط iOS/Android در مقایسه با کیف پول نرم‌افزاری که روی رایانه اجرا می‌شود، سطح امنیت را افزایش می‌دهد. مهاجم برای دسترسی به داده های برنامه ابتدا به افزایش امتیاز نیاز دارد.
  • خدمات حفاظت از کلید (KeyStore، KeyChain) می توانند یک لایه امنیتی اضافی برای محافظت از اسرار در حالت استراحت اضافه کنند. با این وجود، از آنجایی که آنها از الگوریتم‌های رمزنگاری برای برنامه‌های ارزهای دیجیتال پشتیبانی نمی‌کنند، کلیدها باید مستقیماً از برنامه دستکاری شوند، بنابراین محافظت محدودی ارائه می‌دهند.
  • در همه موارد، یک مهاجم با دسترسی ریشه، می‌تواند در حالت استراحت، زمانی که از آن استفاده می‌شود، Seed را بازیابی کند یا از حقوق کاربر برای خالی کردن کیف پول با استفاده از کیف پول نرم‌افزار به عنوان اوراکل استفاده کند.

تمبر زمان:

بیشتر از دفتر کل