Transcript Slide 1

‫سیستم رمزنگاری‪GGH‬‬
‫و تعمیمات آن‬
‫در سال ‪ 1996‬گولدراش‪ ،‬گولدواشر و هالوی سیستم‬
‫رمزنگاری ‪ GGH‬را که مبتنی بر نظریه مشبکه بود‪،‬‬
‫ارائه کردند‪.‬‬
‫این سیستم امنیت خود را از دشواری مسئله ‪CVP‬‬
‫اخذ می کند‪.‬‬
‫چگونگی رفتار سیستم ‪GGH‬‬
‫‪ ‬کلید خصوصی پایه ‪ R‬برای یک مشبکه ‪ L‬با‬
‫خواص مطلوب شامل‬
‫کوتاه بودن طول بردارها و بردارهایی تقریبا َ متعامد‪.‬‬
‫‪‬کلید عمومی پایه نامطلوب ‪ B‬برای مشبکه ‪L‬‬
‫‪ o‬رمزنگاری برای رمز کردن یک بردار خام مانند‬
‫‪ ،pεZⁿ‬پایه بد مورد استفاده قرار می گیرد‪.‬‬
‫بدین گونه که بردار خطای ‪ eεZⁿ‬به صورت‬
‫تصادفی انتخاب شده و مقدار ‪ c=eB+p‬به‬
‫عنوان متن رمز شده ارسال می گردد‪.‬‬
‫باید توجه شود؛بردار ‪ p‬طوری ساخته می شود که به‬
‫قدر کافی کوچک باشد‪.‬‬
‫‪ o‬رمزگشایی پایه خوب ‪ R‬برای پیدا کردن‬
‫نزدیکترین بردار در مشبکه نسبت به متن رمزی‬
‫‪ ، c‬مورد استفاده قرار می گیرد‪.‬‬
‫چنان که نزدیک ترین بردار مشبکه به ‪، c‬بردار‬
‫‪eB‬ست‪ .‬که پس از یافتن آن به آسانی بردار ‪p‬‬
‫بدست می آید‪.‬‬
GGH cryptosystem
Alice
Bob
Plaintext
p
Encryption(c=eB+p)
Public key
B
ciphertext
c
CVP
Algorithm
Decryption
(p=c-eB)
Private key
R
‫این سیستم در صورتی امن است که بعد مشبکه بزرگ‬
‫باشد؛ طراحان این سیستم ادعا کردند که با‬
‫‪ n=200,250,300,350,400‬امنیت برقرار‬
‫میباشد‪...‬‬
‫در این صورت میتوان گفت ‪ ،‬کلید عمومی ‪330‬کیلو بایت تا‬
‫بیش از ‪2‬مگا بایت حافظه اشغال میکند‪.‬‬
‫• در کنفرانس ‪ ،crypto99‬فون نوین ثابت کرد که‬
‫این سیستم با بعد ‪ 200,250,300,350‬نیز‬
‫شکست پذیر است و این سیستم تنها برای کلید های‬
‫باالی ‪2‬مگا بایت حافظه امن می باشد‪.‬‬
‫این در حالی ست که این ویژگی برای زیرساختارهای‬
‫کلید عمومی با تعداد مشتری باال‪،‬مانند اینترنت یا شبکه‬
‫های بزرگ اینترانت‪،‬غیرممکن است‪...‬‬
‫• مشکل دیگر این سیستم ‪ ،‬سرعت پایین رمزگشایی‬
‫آن می باشد‪.‬‬
‫در نتیجه؛ این نارساعی ها باعث کاهش انگیزه برای‬
‫استفاده عملی از این سیستم می شود‪.‬‬
‫در سال ‪ Micciancio ،2001‬سیستم اولیه ‪GGH‬‬
‫را از لحاظ سرعت و امنیت بهبود بخشید‪.‬‬
‫برای معرفی این سیستم فوق‪ ،‬نیاز به چندی تعاریف اولیه داریم‪...‬‬
‫تعاریف‬
‫• تعریف‪)HNF(1‬‬
‫فرض کنید ‪ L‬مشبکه صحیحی با بعد ‪ n‬و ‪H‬‬
‫ماتریس ‪n*n‬صحیحی باشد‪ H .‬را پایه ای با فرم‬
‫نرمال هرمیت از ‪ L‬گویند‪ ،‬اگر و فقط اگر‬
‫‪i  j‬‬
‫‪‬‬
‫‪i  j‬‬
‫‪i  j ‬‬
‫‪  0 if‬‬
‫‪‬‬
‫‪  0 if‬‬
‫‪ H‬‬
‫‪if‬‬
‫‪j,j‬‬
‫‪‬‬
‫‪H i,j‬‬
‫‪1  i , j  n‬‬
‫نکته‪ :‬اگر پایه ‪ B‬در فرم نرمال هرمیت باشد‪ ،‬ماتریس‬
‫*‪ B‬قطری خواهد بود با درایه های ‪. bi,i‬‬
‫• تعریف‪(2‬کاهش بردارها به پیمانه پایه)‬
‫برای هر مشبکه‬
‫)‪( L=L(B‬ماتریس ‪ B‬دارای فرم‬
‫نرمال هرمیت است)‪،‬رابطه هم ارزی زیر وجود‬
‫‪L w  v w  L‬‬
‫دارد‪:‬‬
‫‪ W‬را با ‪ v mod B‬نمایش می دهند‪.‬‬
‫‪v‬‬
‫‪ ‬نکته‪:1‬برای هر ‪ ،vεRⁿn‬بردار منحصر به فرد ‪w‬‬
‫در }‪ P ( B * )  { x i b i* :0  x i  1‬موجود است که ‪.vΞLw‬‬
‫‪i 1‬‬
‫‪ ‬نکته‪ :2‬اگر پایه ‪ B‬در فرم نرمال هرمیت باشد‪،‬‬
‫‪ w=v mod B‬برداری صحیح می باشد که در شرط‬
‫‪ 0≤wi<bii‬صدق می کند‪.‬‬
‫در طرح ‪ ،Micciancio‬کلید عمومی سیستم ‪GGH‬‬
‫برابر با فرم نرمال هرمیت کلید خصوصی در نظر‬
‫گرفته شده است‪.‬‬
‫‪‬از آن جا که می توان ثابت کرد هر مشبکه دارای‬
‫پایه منحصر به فرد با فرم نرمال هرمیت است‪،‬‬
‫انتشار این پایه به عنوان کلید عمومی اطالعات‬
‫خاصی از پایه خصوصی را نمی دهد‪.‬‬
‫• به نظر می رسد که پایه ای با فرم نرمال هرمیت‪ ،‬خواص‬
‫پایه خوب در مشبکه را نداشته باشد؛ زیرا الگوریتم چند‬
‫جمله ای برای تولید چنین پایه ای موجود است‪ .‬در نتیجه‬
‫اگر پایه ای کارا بود‪ ،‬سیستم های رمزی کلید عمومی قوی‬
‫حمله پذیر بودند‪...‬‬
‫‪ ‬رمزنگاری در این طرح سعی شده به جای آن‬
‫که در هر مرحله بردار تصادفی ‪ eεZⁿ‬انتخاب شده‬
‫و متن رمز شده ‪ c=eB+p‬ارسال گردد‪ ،‬از‬
‫کاهش بردارها به پیمانه پایه ‪ B‬استفاده شود تا‬
‫بردار ‪ c‬بدست آید که )‪.c-pεL(B‬‬
‫به عبارت دیگر هدف در این فرایند‪ ،‬دست یابی به‬
‫بردار ‪ p mod B‬است‪.‬‬
:‫ اجرا می شود‬1‫بدین منظور الگوریتم‬
Input: B a HNF basis with dim nxn and pεZⁿ a vector
Output: c εZⁿ such that (c-p) εL(B) and 0≤ci<Bii
Begin
c←p
for i←n-1 to 0 do
q←  c i / B ii 
c ←c-qBi
end
end
‫الزم به ذکر است که اندازه کلید عمومی در این سیستم‬
‫کاهش چشم گیری دارد‪.‬‬
‫‪ ‬رمزگشایی برای رمز گشایی در این سیستم‪ ،‬از‬
‫الگوریتم ‪Babai’s Nearest Plane‬‬
‫استفاده می شود‪.‬‬
‫این الگوریتم تقریب بهتری نسبت به الگوریتم‬
‫‪ Round-Off‬می دهد‪.‬‬
‫الگوریتم های ‪Babai‬‬
‫در سال ‪ Babai ،1986‬دو الگوریتم به منظور حل‬
‫مسئله ‪ γ-CVP‬ارائه کرد‪ .‬چنان که هردو الگوریتم در‬
‫زمان چندجمله ای اجرا می شوند‪...‬‬
‫• الگوریتم ‪Round-Off‬‬
‫• الگوریتم ‪Nearest Plane‬‬
‫الگوریتم ‪Babai’s Round-Off‬‬
‫نقطه دلخواه ‪ uRn‬و مشبکه ‪ L‬به همراه پایه‬
‫‪ v1,..,vnRn‬داده شده است‪.‬‬
‫‪u=a1v1+…anvn‬‬
‫می توان نوشت ‪:‬‬
‫این الگوریتم برای پایه های مطلوب به‬
‫کار می‬
‫این الگوریتم ‪ a‬ها را با خوبی‬
‫ترینکند‪.‬عدد صحیح مثل ‪ti‬‬
‫نزدیک‬
‫‪i‬‬
‫جایگزین می کند‪ .‬و خروجی آن برداری مانند‬
‫‪ v=t1v1+…tnvn‬خواهد بود‪.‬‬
Babai’s Nearest Plane ‫الگوریتم‬
‫• الگوریتم ‪ nearest plane‬با آن که تقریب‬
‫بهتری نسبت به الگوریتم ‪ round-off‬دارد‪،‬‬
‫بسیار آهسته تر عمل می کند‪.‬‬
‫‪n‬‬
‫الگوریتم ‪ Nearest Plane‬دارای تقریب ‪   2 2‬و الگوریتم ‪ Round-Off‬دارای‬
‫‪n‬‬
‫‪9‬‬
‫تقریب ‪  1  2 n ( ) 2‬‬
‫‪2‬‬
‫بهبود سیستم رمزی ‪ GGH‬و ‪ Miccio‬با استفاده‬
‫از قضیه مانده چینی‬
‫• قضیه مانده چینی‪ :‬فرض کنید به ازای هر‪1≤i≤n‬‬
‫‪n‬‬
‫‪pi‬ها اعداد اول باشندو ‪.  p , P  P / p‬‬
‫آنگاه برای هر ‪n‬تایی ‪ ،ai‬یک عدد صحیح یکتا مانند‬
‫‪ 0≤A<P‬موجود است که‬
‫‪i‬‬
‫‪i‬‬
‫‪P ‬‬
‫‪i‬‬
‫‪i 1‬‬
‫‪a i  A m od p i‬‬
‫‪ a i ( Pi m od p i ) Pi m od P‬‬
‫‪1‬‬
‫‪A ‬‬
‫انگیزه استفاده از این قضیه در سیستم های رمزی‬
‫مبتنی بر مشبکه‬
‫• اجرای عملیات حسابی در میدان های متناهی کوچک این‬
‫امکان را می دهد که از بهینگی عملیات روی اعداد صحیح‬
‫استفاده شود‪.‬زیرا؛ کار کردن با اعداد صحیح که بزرگ تر‬
‫از اندازه کلمه در ماشین اجرا هستند‪ ،‬مخارج هنگفتی تحمیل‬
‫می کند‪...‬‬
‫• از آن جا که محاسبه در هر میدان متناهی‪ ،‬مستقل از‬
‫دیگری ست‪ ،‬اجرای محاسبات در هر میدان متناهی به طور‬
‫هم زمان و موازی ممکن می باشد‪.‬‬
Plantard,Rose,Susilo ‫سیستم پیشنهادی‬
‫ و پایه‬R ‫ تولید کلید برای ساخت پایه خصوصی‬
:‫ استفاده می شود‬2‫ از الگوریتم‬،B ‫عمومی‬
Input : nεN the security parameter
Output: B the public key,R the private key
begin
M←0 for i,j ←0 to n-1 do Mi,j ←Rand(-1,1)
1
1
b  2 2 n  repeat b  b  1 until || (bI  M ) ||
3 

2
R←bI+M
B←HNF(R)
end
‫مزایای الگوریتم‪2‬‬
‫‪ .i‬پایه خصوصی ‪ R‬در حد مناسب متعامد می باشد‪،‬‬
‫که این خود باعث درصد موفقیت بیشتر الگوریتم‬
‫‪ Round-Off‬برای رمزگشایی می شود‪.‬‬
‫‪ .ii‬کران تعیین شده در این الگوریتم باعث سرعت‬
‫بیشتر تولید کلید می شود‪.‬‬
‫‪ .iii‬اجرای این الگوریتم باعث کوچک تر شدن کلید‬
‫های عمومی می شود‪.‬هرچند که استفاده از‬
‫الگوریتم ‪ ،LLL‬پایه را کوچکتر نیز می کند‪.‬‬
‫‪ ‬رمزنگاری برای رمز کردن متن خام از روش‬
‫‪( Miccio‬کاهش پیمانه ای مشبکه)‪ ،‬استفاده‬
‫می کنیم‪.‬‬
‫‪ ‬رمزگشایی الگوریتم‪ 3‬را که تلفیقی از ‪ CRT‬و‬
‫‪ Round-Off‬است‪ ،‬به کار برده می شود‪.‬‬
3‫الگوریتم‬
Input: c ε Zⁿ the input vector, R a basis of L
Output: wεL a close vector of c in the lattice L
begin
x←0
for each pi do x←x+Q(pi)(cR΄(pi)mod pi) mod P
end
w   x / det( R )   R
‫توابع فراخوانده شده در الگوریتم‪ ،3‬عبارتند از‪:‬‬
‫‪m od p i‬‬
‫‪1‬‬
‫) ‪ det( R )  Q ( p i‬‬
‫‪pi‬‬
‫‪‬‬
‫‪, P ‬‬
‫‪1‬‬
‫‪P‬‬
‫‪pi‬‬
‫‪R ( pi )  R‬‬
‫'‬
‫‪Q ( pi ) ‬‬
‫الزم به ذکر است که علت ضرب )‪ det(R‬در تعریف‬
‫تابع΄‪ ،R‬اجتناب از عملیات حسابی اعدادگویا می باشد‪.‬‬
‫• به منظور تسریع فاز رمزگشایی‪ ،‬مقادیر توابع فوق الذکر‬
‫در مرحله تولید کلید‪،‬محاسبه و ذخیره می شود‪.‬‬
‫• طرح پیشنهادی فوق ‪ ،‬به زبان‪ c++‬همراه با کتابخانه‬
‫‪ NTL‬پیاده سازی شده؛ که نتایج به شرح زیر می باشد‪:‬‬
‫• با نگاهی به جدول فوق‪ ،‬می توان دریافت که سیستم‬
‫جدید؛ زمان رمزنگاری‪ ،‬زمان رمزگشایی و اندازه‬
‫کلید عمومی را کاهش می دهد‪.‬‬
‫با تشکر از توجه شما‬