• Empty
  • قاطی کردم
  • مهربون
  • موفق
  • متعجب
  • مریض
  • مشغول
  • معترض
  • ناراحت
  • هیچ
  • کنجکاو
  • کسل
  • گیج شدم
  • گریه
  • پکر
  • اخمو
  • از خود راضی
  • بی تفاوفت
  • بد جنس
  • بد حال
  • خونسرد
  • خواب آلود
  • خوشحال
  • خجالتی
  • خسته
  • دلواپس
  • رنجور
  • ریلکس
  • سپاسگزار
  • سر به زیر
  • شوکه
  • شاد و سر حال
  • عاشق
  • عصبانی
  • غمگین
  • غافلگیر
  • User Tag List

    نمایش پیکها: از 1 به 10 از 22

    جُستار: پروژهء سیستم رجیستر و لاگین بازمتن

    Hybrid View

    1. #1
      سخنور یکم
      Points: 9,302, Level: 64
      Level completed: 84%, Points required for next Level: 48
      Overall activity: 90.0%
      دستاوردها:
      First 1000 Experience Points
      آغازگر جُستار
      بدون وضعیت
       
      خالی
       
      folaani آواتار ها
      تاریخ هموندی
      Oct 2012
      نوشته ها
      673
      جُستارها
      44
      امتیازها
      9,302
      رنک
      64
      Post Thanks / Like
      سپاس
      380
      از ایشان 567 بار در 352 پست سپاسگزاری شده است .
      یافتن همه‌یِ سپاسهای گرفته شده
      یافتن همه‌یِ سپاسهای داده شده
      Mentioned
      2 Post(s)
      Tagged
      0 Thread(s)
      خب من هنوز به اون مرحله یا نیاز و انگیزه و اولویت نرسیدم که بخوام سعی کنم اینو به شکل یک ماجولی چیزی که براحتی برای بقیهء بقیهء برنامه نویسان قابل Embed کردن و استفاده در پروژه های خودشون باشه دربیارم.
      اون خودش کار میبره و پیچیده است یا حداقل من هنوز تجربه ای در این زمینه ندارم و بنابراین تصور پیشاپیش از روش و میزان سختی و کارش ندارم.

      ولی مثلا اگر خودم بخوام در پروژه ای اون رو Integrate کنم فکر میکنم کار زیاد سختی نباشه برام، و برای دیگران هم شاید با مقداری بررسی و دانش و مهارت این کار مقدور بشه. البته بخاطر شیء گرا نبودن و اینها و عدم داشتن فضای نامی مستقل برای متغییرها برنامه، احتمال تداخل نامی با متغییرهای برنامه های دیگران خیلی زیاده که باید برای اینم فکری کرد؛ ولی فکر نمیکنم لزوما راه طولانی و سخت تغییر اساسی ساختار برنامه رو مجبور باشن برن؛ مثلا میشه به اسم تمام متغییرها یک پیشوند یکتا اضافه کرد. البته بازم من انتظار ندارم دیگران این کار رو بکنن. ولی حتی نگاه کردن به تنظیمات و امکانات و تمهیدات و کدها و منطق و الگوریتم این برنامه میتونه براشون خیلی مفید باشه. بعضی کدها و توابعش رو حتی میتونن برداشت کنن؛ چون تقریبا همهء کار داخلیش واقعا در سطح برجسته است.

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

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

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

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

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

    2. یک کاربر برای این پست سودمند از folaani گرامی سپاسگزاری کرده اند:

      sonixax (03-22-2013)

    3. #2
      دفترچه نویس
      Points: 471,639, Level: 100
      Level completed: 0%, Points required for next Level: 0
      Overall activity: 2.0%
      دستاوردها:
      First 1000 Experience PointsGot three Friends
      نِشان‌ها:
      Most Popular
      سرور خویـشتـن
       
      Empty
       
      Mehrbod آواتار ها
      تاریخ هموندی
      Oct 2010
      ماندگاه
      لاجیکستان
      نوشته ها
      8,712
      جُستارها
      188
      امتیازها
      471,639
      رنک
      100
      Post Thanks / Like
      سپاس
      12,116
      از ایشان 21,650 بار در 7,581 پست سپاسگزاری شده است .
      یافتن همه‌یِ سپاسهای گرفته شده
      یافتن همه‌یِ سپاسهای داده شده
      Mentioned
      62 Post(s)
      Tagged
      1 Thread(s)
      گفت‌آورد نوشته اصلی از سوی folaani نمایش پست ها
      خب حالا دیگه زیاد از خودم تعریف نکنم.
      بهرحال کار سختی بود و حتی اینم نمیتونم بگم آخر کامل و بی نقصه؛ باگ هم که ممکنه بهرحال هر برنامه ای داشته باشه. خطای انسانی رو همه و در هر برنامه ای هرچقدر هم که دقت بکنن میشه پیدا کرد.
      من یک نگاه سرسری برای باگ‌ها انداختم, تا اینجا به نگر فرزام[1] میاید (تنها یک گیر کوچک اینجا شاید داشته باشی):
      کد PHP:
      function quote_smart($value$identifier=false)
      {

      if(!
      is_numeric($value)) {
      //if(get_magic_quotes_gpc()) $value = stripslashes($value);
      if(!$identifier) return "'" .mysql_real_escape_string($value) . "'";
      else if(
      strpos($value'`')===false) return '`' .$value '`';
      else {
      $this->error("Value contains invalid character (backtick - '`') for identifiers");
      return 
      false;
      }

      اینجا با اینکه بسیار خوب کارو انجام دادی و query پایانی هم quote میشود, همچنان ولی جا برای injection هست, اگر که mysql روی سرور یکی از encoding‌هایِ زیر را ببیوسد[2]: GBK or BIG-5

      php - SQL injection that gets around mysql_real_escape_string() - Stack Overflow

      در این ریخت ما هنوز میتوانیم یک ' در query رد کنیم و login را بپیچانیم (:


      رویهمرفته کد براستی پیشه‌ای نوشته شده و نکته‌هایِ امنیتی کمابیش همگی به کار رفته‌اند, از globals گرفته تا access و .., همانجور هم که گفتی بیشمار
      ساماندهی (configs) آنجاست و به درد یک پروژه‌یِ بزرگ میخورد.

      با همه‌یِ اینها من فرزامگرایی[3] بیش از اندازه‌ای در کدت میبینم که به نگرم برای همان خودنمایی بوده باشد ((:

      نکته‌یِ crypt_random ٸه دستکاری شده چیه؟ درگاشت[4] را از کجا گرفته‌ای؟

      چیزیکه من یافتم:
      کد PHP:
      @$request_entropy=sha1(microtime().$pepper.$_SERVER['REMOTE_ADDR'].$_SERVER['REMOTE_PORT'].$_SERVER['HTTP_USER_AGENT'].serialize($_POST).serialize($_GET).serialize($_COOKIE)); 
      اگر تنها این باشد میشود گفت خوبه, ولی همچنان درگاشت نابِ ناب نیست و هنوز اسپاش[5] به اندازه‌یِ بسنده random نیست.
      من پیشتر یک خوارزم[6] رازنگاری نوشته بودم برای rsa که درگاشت را از cpu میگرفت, نمیدانم روی php چه اندازه دسترسی به hardware داریم, ولی
      این ورتنده‌ها[7] (time, remote_addr, serialaized post, etc) همگی هنوز پیشبینی‌پذیر میباشند و به اندازه‌ای که باید و شاید درگاشت[4] را بزرگ نمیکنند (:



      ----
      1. ^ Farzâm || فرزام: بی عیب و نقص; کامل Ϣiki-En Perfect
      2. ^ Bayusidan || بیوسیدن: چشمداشتن, انتظار بردن To expect
      3. ^ Farzâmgerâyi (farzâm+gerâ+yi) || فرزامگرایی: گرایش به فرزامی; کمال‌گرایی Ϣiki-En, Dehxodâ Perfectionism
      4. ^ آ ب Dargâšt || درگاشت: آنتروپی Ϣiki-En, Ϣiki-Pâ Entropy
      5. ^ Espâš || اسپاش: فضا Ϣiki-En, www.loghatnaameh.org Space
      6. ^ Xvârzmidan || خوارزمیدن: الگوریتم کردن To algorithmize
      7. ^ Vartande || ورتنده: متغیر Ϣiki-En Variable

      Sticky بجای وادادن در برابر واقعیت تلخ، بهتر است آدمی بكوشد كه واقعیت را بسود خود دگرگون كند و اگر بتواند حتی یك واژه ی تازی را هم از زبان شیرین مادری خود بیرون بیندازد بهتر از این است كه بگوید چه كنم ! ناراحتم! ولی همچنان در گنداب بماند و دیگران را هم به ماندن در گنداب گول بزند!!

      —مزدک بامداد


    4. یک کاربر برای این پست سودمند از Mehrbod گرامی سپاسگزاری کرده اند:

      sonixax (03-22-2013)

    5. #3
      سخنور یکم
      Points: 9,302, Level: 64
      Level completed: 84%, Points required for next Level: 48
      Overall activity: 90.0%
      دستاوردها:
      First 1000 Experience Points
      آغازگر جُستار
      بدون وضعیت
       
      خالی
       
      folaani آواتار ها
      تاریخ هموندی
      Oct 2012
      نوشته ها
      673
      جُستارها
      44
      امتیازها
      9,302
      رنک
      64
      Post Thanks / Like
      سپاس
      380
      از ایشان 567 بار در 352 پست سپاسگزاری شده است .
      یافتن همه‌یِ سپاسهای گرفته شده
      یافتن همه‌یِ سپاسهای داده شده
      Mentioned
      2 Post(s)
      Tagged
      0 Thread(s)
      گفت‌آورد نوشته اصلی از سوی Mehrbod نمایش پست ها
      اگر که mysql روی سرور یکی از encoding‌هایِ زیر را ببیوسد[2]: GBK or BIG-5
      اتفاقا این مورد که گفتی رو قبلا هم بارها اشاره بهش دیده بودم و جدی نگرفته بودم (البته جدی نگرفتن از روی بینش و حدس حرفه ای بود که تاحدی درست هم بود)، ولی چند وقت پیش دوباره بهش برخورد کردم و یک تحقیق مفصل و جدی تری روش انجام دادم که اینجا هم منعکسش کردم:
      کد:
      http://forum.iranphp.org/Thread-mysql-set-charset-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%AD%D8%AA%D9%85%D8%A7-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%D8%A8%D8%B4%D9%87%D8%9F
      کد و توضیحات داخل فایل code_db_object.php رو هم نگاهی بنداز.
      این مشکل البته تاحد زیادی پیچیده و مبهم هست، ولی من مکانیزم اون رو فهمیدم و تاجاییکه فهمیدم باگ خود MySQL هم درش دخیل بوده و در نسخه های جدیدتر این مسئله برطرف شده، اما همچنان من از تابع mysql_set_charset استفاده کردم تا نقصی در کارم نباشه. گذشته از اینکه این کاراکترست ها در زبان انگلیسی و فارسی که پروژهء من داره استفاده ندارن؛ ولی بهرحال از نظر اصولی بهتره این رو بحساب نیاریم و برنامه بی نقص و دقیق باشه از این نظر هم.

      با همه‌یِ اینها من فرزامگرایی[3] بیش از اندازه‌ای در کدت میبینم که به نگرم برای همان خودنمایی بوده باشد ((:
      در حرفت دلیل و سندی نمیبینم.
      بنظر من اینطورها هم نیست.
      شما هم اگر قدر من در زمینهء امنیت و رمزنگاری مطالعه و تحقیق کرده بودی احتمالا همینطور عمل میکردی.
      اصلا من اگر میخواستم مثل دیگران بنویسم نه ارضا میشدم نه استفاده ای از سواد و تواناییم میکردم و نه فکر میکردم کار حرفه ایه.
      شما چه تخصصی در این زمینه داری و بر چه اساسی اینطور میگی؟
      ببخشید البته قصد کل کل و توهین ندارما.
      نکته‌یِ crypt_random ٸه دستکاری شده چیه؟ درگاشت[4] را از کجا گرفته‌ای؟
      ...
      ولی همچنان درگاشت نابِ ناب نیست و هنوز اسپاش[5] به اندازه‌یِ بسنده random نیست.
      من پیشتر یک خوارزم[6] رازنگاری نوشته بودم برای rsa که درگاشت را از cpu میگرفت, نمیدانم روی php چه اندازه دسترسی به hardware داریم, ولی
      این ورتنده‌ها[7] (time, remote_addr, serialaized post, etc) همگی هنوز پیشبینی‌پذیر میباشند و به اندازه‌ای که باید و شاید درگاشت[4] را بزرگ نمیکنند (:
      خب موضوع اینه که این سیستم جمع آوری و استفاده از آنتروپی تولید شده توسط کلاینت فقط یک آنتروپی افزوده و محکم کاریه و اساس سیستم نیست. دیگه من خیلی سیستم رو محکم کاری و شاید حتی Overkill کردم؛ چون در اصل از توابع دیگری در درون تابع رندوم استفاده شده که خودشون توابع/منابع رندوم از نوع امنیتی/رمزنگاری بحساب میان (openssl_random_pseudo_bytes، /dev/urandom، mcrypt_create_iv) و امروزه بعیده حداقل یکی از اینها روی سیستمی در دسترس تابع نباشه. آنتروپی این منابع خودش کافیه و برنامه های رمزنگاری دارن از اینا استفاده میکنن، ولی خب در امنیت در هیچ کجا اطمینان 100% هم نیست و اینها هم میتونن مواردی از کم کفایتی و حمله و شرایط نامساعد دچار بشن (حداقل از نظر تئوریک).
      این آنتروپی که من اضافه کردم در بدترین حالت میتونه نزدیک به صفر باشه، و هیچوقت آنتروپی سیستم کمتر از آنتروپی اون توابع امنیتی نمیشه. آنتروپی ای که من گذاشتم (البته به کمک اون دوست خارجی - ایدش از ایشون بوده)، باعث افزایش اطمینان در ترکیب با اون توابع میشه، و اگر در موارد نادری هیچکدام از اون توابع امنیتی در دسترس نبودن، باز یک منبع آنتروپی بسیار با ارزشی رو تامین میکنه که همون هم برای کاربردهای عادی شاید خیلی بیش از حد مورد نیاز هم باشه.

      البته اینم بگم که یک دلیل افزوده شدن این سیستم آنتروپی، ضعف اولیهء تابع رندوم ایشون بود که بنده دیدم و با خودش هم مطرح کردم و بحث افزودن منابع آنتروپی از اون موقع افتاد وسط و شاید دست آخر دیگه اصلا نیازی نبود، چون چند تابع دیگر برای گرفتن آنتروپی از منابع رسمی سیستم رو به تابع ایشون اضافه کردم که دیگه 99% روی سیستمها حداقل یکی از اینا پیدا میشه.
      تابع اصلاح شدهء بنده الان از تابع اون موقع ایشون خیلی بهتر هم هست. ولی نمیدونم این تغییرات مفید رو ایشون در تابع خودش هم اعمال کرد یا نه.
      البته اون openssl_random_pseudo_bytes رو تاجاییکه یادمه به نسخهء بعدی تابع در SVN اضافه کرد. منتها اضافه کردن mcrypt_create_iv هم مهم بود، چون از openssl_random_pseudo_bytes همونطور که در کد و کامنت هاش میبینید در روی ویندوز بخاطر کندی غیرعادیش استفاده نمیشه، و روی ویندوز /dev/urandom رو هم که نداریم!

    6. 2 کاربر برای این پست سودمند از folaani گرامی سپاسگزاری کرده اند:

      Mehrbod (03-21-2013),sonixax (03-22-2013)

    7. #4
      سخنور یکم
      Points: 9,302, Level: 64
      Level completed: 84%, Points required for next Level: 48
      Overall activity: 90.0%
      دستاوردها:
      First 1000 Experience Points
      آغازگر جُستار
      بدون وضعیت
       
      خالی
       
      folaani آواتار ها
      تاریخ هموندی
      Oct 2012
      نوشته ها
      673
      جُستارها
      44
      امتیازها
      9,302
      رنک
      64
      Post Thanks / Like
      سپاس
      380
      از ایشان 567 بار در 352 پست سپاسگزاری شده است .
      یافتن همه‌یِ سپاسهای گرفته شده
      یافتن همه‌یِ سپاسهای داده شده
      Mentioned
      2 Post(s)
      Tagged
      0 Thread(s)
      گفت‌آورد نوشته اصلی از سوی Mehrbod نمایش پست ها
      من پیشتر یک خوارزم[6] رازنگاری نوشته بودم برای rsa که درگاشت را از cpu میگرفت
      متوجه نشدم که خود الگوریتم RSA رو نوشتی یا از RSA در برنامت استفاده کردی؟
      چون پیاده سازی الگوریتم RSA خیلی جزییات ظریف و امنیتی داره. من توی یه کتاب رمزنگاری خوندم. فقط به همون فرمول ریاضیش خلاصه نمیشه! باید همهء جوانب و ریزه کاریهای دیگرش رو هم بدونی و پیاده کنی تا کاملا امن و حرفه ای باشه.

      ضمنا برای بدست آوردن آنتروپی هم قاعدتا باید از توابع خود سیستم عامل/کتابخانه های برنامه نویسی که توابع رندوم از نوع مخصوص کاربردهای Cryptography هستن استفاده کنی. چرا راه دیگه رفتی؟

      مثلا اینجا رو نگاهی بکن: علم خوره
      تاجاییکه میدونم این تابع CryptGenRandom هم در API سی/سی++ ویندوز در دسترس هست و هم در دات نت.
      اون تابع mcrypt_create_iv هم که در تابع رندوم پروژهء من بکار رفته، روی ویندوز در پشت صحنه از همین تابع CryptGenRandom استفاده میکنه. بخاطر همین آنتروپی کافی و بقیهء خصوصیات لازم برای کاربردهای امنیتی/رمزنگاری رو داره.

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

    8. یک کاربر برای این پست سودمند از folaani گرامی سپاسگزاری کرده اند:

      sonixax (03-22-2013)

    9. #5
      دفترچه نویس
      Points: 471,639, Level: 100
      Level completed: 0%, Points required for next Level: 0
      Overall activity: 2.0%
      دستاوردها:
      First 1000 Experience PointsGot three Friends
      نِشان‌ها:
      Most Popular
      سرور خویـشتـن
       
      Empty
       
      Mehrbod آواتار ها
      تاریخ هموندی
      Oct 2010
      ماندگاه
      لاجیکستان
      نوشته ها
      8,712
      جُستارها
      188
      امتیازها
      471,639
      رنک
      100
      Post Thanks / Like
      سپاس
      12,116
      از ایشان 21,650 بار در 7,581 پست سپاسگزاری شده است .
      یافتن همه‌یِ سپاسهای گرفته شده
      یافتن همه‌یِ سپاسهای داده شده
      Mentioned
      62 Post(s)
      Tagged
      1 Thread(s)
      گفت‌آورد نوشته اصلی از سوی folaani نمایش پست ها
      متوجه نشدم که خود الگوریتم RSA رو نوشتی یا از RSA در برنامت استفاده کردی؟
      چون پیاده سازی الگوریتم RSA خیلی جزییات ظریف و امنیتی داره. من توی یه کتاب رمزنگاری خوندم. فقط به همون فرمول ریاضیش خلاصه نمیشه! باید همهء جوانب و ریزه کاریهای دیگرش رو هم بدونی و پیاده کنی تا کاملا امن و حرفه ای باشه.

      ضمنا برای بدست آوردن آنتروپی هم قاعدتا باید از توابع خود سیستم عامل/کتابخانه های برنامه نویسی که توابع رندوم از نوع مخصوص کاربردهای Cryptography هستن استفاده کنی. چرا راه دیگه رفتی؟
      نه جوان بودم و بیکار,همان rsa را از بیخ روی c از نو نوشتم (:

      خوارزمِ[1] rsa که چیزی ندارد از دید مزداهیکین[2] و برنامه‌ریزی, برای درگاشت[3] اش ولی راهِ باید سختی رفته میشد تا براستی رندم باشد.



      گفت‌آورد نوشته اصلی از سوی folaani نمایش پست ها
      مثلا اینجا رو نگاهی بکن: علم خوره
      تاجاییکه میدونم این تابع CryptGenRandom هم در API سی/سی++ ویندوز در دسترس هست و هم در دات نت.
      اون تابع mcrypt_create_iv هم که در تابع رندوم پروژهء من بکار رفته، روی ویندوز در پشت صحنه از همین تابع CryptGenRandom استفاده میکنه. بخاطر همین آنتروپی کافی و بقیهء خصوصیات لازم برای کاربردهای امنیتی/رمزنگاری رو داره.

      حالا جالب اینه که لیست منابعی که /dev/urandom در لینوکس، آنتروپی خودش رو از اونا میگیره خیلی محدودتره ظاهرا. تاجاییکه من دیدم حتی یکی یا دوتا منبع بطور استاندارد و پیشفرض! مثلا آنتروپی دسترسی به دیسک.

      ولی با اینحال ظاهرا همین هم کفایت میکنه! (وگرنه این همه متخصص رمزنگاری و لینوکس بازمتن و به این مهمی همینطور باقی نمیموندن که) چه میدونم والا. شاید ویندوز Overkill کرده!!
      /dev/urandom هم برای رازنگاری[4] کاربرد ندارد: /dev/random - WiKi

      باید از /dev/random گرفت که از همان نوفه‌یِ[5] hardware بهره میگیرد, بجز hardware براستی راهی نیست که بتوانیم از خود خوارزمِ[1] تنها
      مر[6] رندم بفرآوریم[7], hardware هم به گونه‌ای نیرینگ میماند, چون تنها کار را وابسته کرده‌ایم به پدیده‌هایِ کوانتومی مادی[8] که برایمان rng درآورند.








      ----
      1. ^ آ ب Xwârazmidan || خوارزمیدن: الگورتیم کردن To algorithmize
      2. ^ Mazdâhikin || مزداهیکین: ریاضیاتی Mathematical
      3. ^ Dargâšt || درگاشت: آنتروپی Ϣiki-En, Ϣiki-Pâ Entropy
      4. ^ Râznegâri (râz+negâr+i) || رازنگاری: رمزنگاری Ϣiki-En Cryptography
      5. ^ Nufe || نوفه: اختلال ⚕Heydari☉, Ϣiki-En Noise
      6. ^ Mar || مر: شماره; عدد MacKenzie, Ϣiki-En, Ϣiki-Pâ Number
      7. ^ Farâvardan (far+âvardan) || فراوردن: حاصل کردن Ϣiki-En To produce
      8. ^ Mâdi || مادی: Material

      Sticky بجای وادادن در برابر واقعیت تلخ، بهتر است آدمی بكوشد كه واقعیت را بسود خود دگرگون كند و اگر بتواند حتی یك واژه ی تازی را هم از زبان شیرین مادری خود بیرون بیندازد بهتر از این است كه بگوید چه كنم ! ناراحتم! ولی همچنان در گنداب بماند و دیگران را هم به ماندن در گنداب گول بزند!!

      —مزدک بامداد


    10. 2 کاربر برای این پست سودمند از Mehrbod گرامی سپاسگزاری کرده اند:

      sonixax (03-22-2013),undead_knight (03-23-2013)

    11. #6
      سخنور یکم
      Points: 9,302, Level: 64
      Level completed: 84%, Points required for next Level: 48
      Overall activity: 90.0%
      دستاوردها:
      First 1000 Experience Points
      آغازگر جُستار
      بدون وضعیت
       
      خالی
       
      folaani آواتار ها
      تاریخ هموندی
      Oct 2012
      نوشته ها
      673
      جُستارها
      44
      امتیازها
      9,302
      رنک
      64
      Post Thanks / Like
      سپاس
      380
      از ایشان 567 بار در 352 پست سپاسگزاری شده است .
      یافتن همه‌یِ سپاسهای گرفته شده
      یافتن همه‌یِ سپاسهای داده شده
      Mentioned
      2 Post(s)
      Tagged
      0 Thread(s)
      گفت‌آورد نوشته اصلی از سوی Mehrbod نمایش پست ها
      نه جوان بودم و بیکار,همان rsa را از بیخ روی c از نو نوشتم (:

      خوارزمِ[1] rsa که چیزی ندارد از دید مزداهیکین[2] و برنامه‌ریزی, برای درگاشت[3] اش ولی راهِ باید سختی رفته میشد تا براستی رندم باشد.
      تاجاییکه یادمه در کتابی تخصصی یه چیزایی درمورد مسائل جانبی ای خوندم که جدای از فرمول کلی اصلیش بودن.
      مثلا ظاهرا از انتخاب بعضی کلیدهای خاص باید اجتناب کرد به دلایلی. یعنی شما اگر رندوم هم کلیدها رو تولید میکنی، ممکنه توش از اون کلیدهای خاص دربیاد که باید چک کنی، یا شایدم باید الگوریتم رندوم رو طوری آگاهانه طراحی کنی که اون کلیدهای خاص که اجزای اونا نسبت به هم رابطه ای دارن که باعث ضعف خاصی میشه رو تولید نکنه.

      بعد یه چیزهایی راجع به Padding و این حرفها هم داشت مثل اینکه.

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

      /dev/urandom هم برای رازنگاری[4] کاربرد ندارد: /dev/random - WiKi

      باید از /dev/random گرفت که از همان نوفه‌یِ[5] hardware بهره میگیرد, بجز hardware براستی راهی نیست که بتوانیم از خود خوارزمِ[1] تنها
      مر[6] رندم بفرآوریم[7], hardware هم به گونه‌ای نیرینگ میماند, چون تنها کار را وابسته کرده‌ایم به پدیده‌هایِ کوانتومی مادی[8] که برایمان rng درآورند.
      من قبلا روی همهء اینا تحقیقات مفصل داشتم.
      خیر اینطور نیست که کاربرد رمزنگاری نداشته باشه.
      urandom یک CSPRNG است که با آنتروپی اولیه از همون random بقولی seed میشه. تا وقتی این seed اولیه خدشه دار نشده، همونقدر امنیت داره و خروجی رندومی که تولید میکنه قابل پیشبینی/محاسبه نیست. ضمنا این seed هم همینطور نمیمونه و وقتی random آنتروپی جدید کافی جمع آوری کرد و در دسترس گذاشت، urandom مجددا خودش رو با آنتروپی جدید seed میکنه. البته الگوریتم دقیقش یادم نیست؛ شاید فورا هم seed مجدد نکنه، ولی بهرحال اونقدری مهم نیست.
      random رو دیگه افراد خیلی وسواسی یا در کاربردهای نیازمند امنیت حداکثر حداکثر (مثلا درحد رمزنگاری اسناد امنیت ملی برای مدت 100 سال) استفاده میکنن.
      random منتظر میمونه تا آنتروپی لازم از منابع سخت افزاری ای یا هر منبع دیگری که داره بقدر کافی جمع بشه، بعد به شما خروجی میده؛ تا قبل از جمع شدن آنتروپی لازم هم برنامه بلاک میشه و منتظر میمونه، که این در خیلی از برنامه ها قابل قبول نیست. امکان اینکه random موقع استفادهء برنامهء شما، بخاطر منتظر جمع شدن آنتروپی جدید بودن بلاک بشه زیاده، بخصوص اگر مصرف دیتای رندوم برنامهء شما زیاد باشه و زود به زود بخواد از random آنتروپی بگیره (و یا برنامه های متعددی روی سیستم از random استفاده بکنن).

      u در urandom مخفف همون unblocking است. یعنی بلاک نمیکنه برنامه رو و بطور نامحدود میتونه دیتای رندوم تولید کنه. منتها امنیت این دیتای رندوم هم بسیار بالاست. درحد seed اولیه تقریبا. مثلا seed اولیه اگر 256 بیت آنتروپی واقعی داشته بوده باشه، هیچکس نمیتونه دیتاهای رندوم شما رو پیشبینی کنه، ولو چند مگابایت هم دیتای رندوم بر اساس همون seed اولیه گرفته باشی.

    12. 2 کاربر برای این پست سودمند از folaani گرامی سپاسگزاری کرده اند:

      Mehrbod (03-22-2013),sonixax (03-22-2013)

    داده‌های جُستار

    کاربری که سرگرم دیدن این جُستار هستند

    هم‌اکنون 1 کاربر سرگرم دیدن این جُستار است. (0 کاربر و 1 مهمان)

    جُستارهای همانند

    1. چیستان
      از سوی Mehrbod در تالار تالار سرگرمی
      پاسخ: 246
      واپسین پیک: 01-02-2018, 09:51 PM
    2. پاسخ: 72
      واپسین پیک: 10-26-2013, 02:02 PM
    3. چرا جمهوری اسلامی یک سیستم حکومتی فاشیستی است؟
      از سوی Kaveh در تالار سیاست و اقتصاد
      پاسخ: 6
      واپسین پیک: 08-12-2012, 07:46 AM
    4. سیستم عامل موبایل؟
      از سوی بهمنیار در تالار رایانه، اینترنت، تلفن‌های همراه
      پاسخ: 4
      واپسین پیک: 09-22-2011, 12:55 PM

    مجوز های پیک و ویرایش

    • شما نمیتوانید جُستار نوی بفرستید
    • شما نمیتوانید پیکی بفرستید
    • شما نمیتوانید فایل پیوست کنید.
    • شما نمیتوانید پست های خود را ویرایش کنید
    •