فاکتورگیری خم بیضوی لنسترا

از testwiki
پرش به ناوبری پرش به جستجو

فاکتورگیری خم بیضوی لنسترا (Lenstra elliptic-curve factorization) یا روش فاکتورگیری خم بیضوی (ECM) یک الگوریتم سریع (سرعت اجرای زیرنمایی) برای عامل‌گیری عدد صحیح در خم بیضوی است. در حال حاضر هنوز بهترین الگوریتم برای تقسیم‌کننده‌ها است که بیش از ۲۰ تا ۲۵ رقم (۶۴ تا ۸۳ بیت) نیستند، زیرا زمان اجرای آن تحت تأثیر اندازه کوچکترین عامل p قرار می‌گیرد و نه عدد n که فاکتورگیری می‌شود.

اغلب، ECM برای حذف عوامل کوچک از عدد صحیح بسیار زیاد که عوامل بسیار دارد استفاده می‌شود. بزرگترین عددی که تاکنون با استفاده از ECM فاکتورگیری شده دارای ۸۳ رقم است و در ۷ سپتامبر ۲۰۱۳ توسط R. Propper کشف شد. افزایش تعداد منحنی‌های آزمایش شده، شانس یافتن عامل را بهبود می‌بخشد، اما نسبت این افزایش تعداد خطی نیست.

فاکتورگیری خم بیضوی لنسترا

روش یافتن عوامل عدد n به صورت زیر است:

۱- خم بیضوی تصادفی در /n را با معادله فرم yy2=x3+ax+b(modn) را با یک نقطه غیر بدیهی P(x0,y0) بر روی آن انتخاب کنید.

اینکار را می‌توان با انتخاب تصادفی x0,y0,a/n و سپس محاسبه b=y02x03ax0(modn) انجام داد.

2-جمع P و Q بر روی خم که به عنوان گروه عملیاتی PQ تعریف می‌شوند. برای جمع به روش زیر عمل میکنیم:

P+Q=R(xp,yp)+(xq,yq)=(xr,yr).

s=yqypxqxpxr=s2xpxqyr=s(xpxr)yp.

نکته: اگر خواستیم یک نقطه را با خودش جمع کنیم(PP). آنگاه s=3xp2+a2yp



3-محاسبه eP بر روی خم بیضوی (mod n).

مثال

این مثال از الگو:Harvtxt با کمی توضیحات آورده شده‌است.

ما می خواهیم به عامل n=455839 بپردازیم. خم بیضوی y2=x3+5x5 را با نقطه P = (1، 1) بر روی آن انتخاب می‌کنیم و سعی می‌کنیم الگو:Math را محاسبه کنیم.


ابتدا 2P=P ⊕ P را محا سبه میکنیم:

s=3xp2+a2yp(modn) پس

s=3+52(mod455839) 

خواهد بود یعنی s=4

x2=s2xpxpy2=s(xpx2)yp.


x2=4211=14y2=4(114)1=53.

فقط برای بررسی اینکه این 2P در واقع بر روی خم است: (53)2=2809=143+5*145


سپس 4P=2P ⊕ 2P را محا سبه میکنیم:

به همان روش بالا s=593106(mod455839)

منابع

الگو:پانویس Lenstra elliptic-curve factorization. (2018). En.wikipedia.org. Retrieved 2 March 2018, from en:Lenstra elliptic-curve factorization