Designed by Bruce Schneier
Featured in Neal Stephenson's Cryptonomicon
ဒီနည္းကုိ တီထြင္သူက ေတာ့ Bruce Schneier ပါ။ Neal Stephenson ရဲ႔ ၀တၳဳ Cryptonomicon မွာ ကုတ္နာမည္ Pontifex ဟာ ဒီ ဖဲခ်ပ္မ်ားက ေနျပီး ၀ွက္စာေဖၚတဲ႔ နည္းကုိ ရည္ညြန္းတာပါ။ Solitaire မွာ အီလက္ထေရာနစ္ မပါဘဲနဲ႔ ၀ွက္စာမ်ားကို ၀ွက္တာေဖၚတာ ေတြကုိ လံုျခံဳစိတ္ခ်စြာ လုပ္ေဆာင္ႏုိင္ပါတယ္။ Solitaire ဟာ ဖဲခ်ပ္မ်ားရဲ႕ randomly တည္ရွိေနမႈ ဆုိတဲ့ security ကုိ ရယူထားပါတယ္။
ဒီနည္းမွာ key stream ဆုိတဲ့ ဂဏန္းအတန္း က အဓိကက်ပါတယ္ ။အဲဒါနဲ႔ ပဲ အားလံုးကုိ ေဖၚရတာျဖစ္ပါ တယ္။ အဲဒီ key stream ကုိ ဖဲခ်ပ္ထုတ္ထဲမွာ ဖြက္ထားပါတယ္။ Encrypt နဲ႔ Decrypt ကုိ key stream သိမွပဲလုပ္လုိ႔ရမွာ ျဖစ္ပါတယ္။ key stream ရဲ႕ စာတန္းအရွည္က Encrypt လုပ္ထားတဲ့စာတန္းအရွည္နဲ႔ အတူတူျဖစ္ရပါမယ္။
Encrypting with Solitaire
၁။ စာေၾကာင္းကေနျပီး punctuation ေတြအားလံုးကုိျဖဳတ္ျပီး character အားလံုးကုိ တစ္ပံုစံတည္း လုပ္ပါ။(ဆုိလုိတာက အားလံုးစာလံုးအၾကီးအေသးမရွိ အတူတူပဲ)
၂။ character အားလံုးကုိ ဂဏန္းတန္ဖုိးကုိေျပာင္းပါ။ A=1, B=2 ,C=3 ,etc (ေနာက္တြင္ plaintext လုိ႔ေခၚ ပါမည္)
၃။ Encrypt လုပ္ဖုိ႔အတြက္ plaintext က ဂဏန္းမ်ားကုိ key stream က ဂဏန္းေတြနဲ႔ တစ္လံုးခ်င္း စီေပါင္း ပါ။ ေပါင္းရာမွာ ဂဏန္းတန္ဖုိးက ၂၆ (အဂၤလိပ္စာလံုးေပါင္း ၂၆ လံုးသာရွိသည္) ထက္ေက်ာ္သြားရင္ mod 26 ယူေပးပါ(26 နဲ႔ စားျပီးအၾကြင္းကုိယူပါ) အဲဒီ ဂဏန္းတန္းကေတာ့ Encrypt လုပ္ျပီးသားျဖစ္ပါတယ္။
ဥပမာ။ DO NOT USE PC ဆုိတဲ့ စာေၾကာင္း (plain text) ကုိ ၀ွက္မယ္ဆုိရင္ အရင္ဆံုး ၅ လံုးစီပါတဲ့ group တစ္ခုစီကုိ လုပ္ပါ။ DONOT USEPC ဆုိတဲ႔ ဟာရပါတယ္။ေနာက္ key stream letter ကုိ KDWUP ONOWT လုိ႔ထားပါ။ plain text ကုိ ဂဏန္းေျပာင္းရင္ (A=1, B=2, etc)ဒီနည္းမွာ key stream ဆုိတဲ့ ဂဏန္းအတန္း က အဓိကက်ပါတယ္ ။အဲဒါနဲ႔ ပဲ အားလံုးကုိ ေဖၚရတာျဖစ္ပါ တယ္။ အဲဒီ key stream ကုိ ဖဲခ်ပ္ထုတ္ထဲမွာ ဖြက္ထားပါတယ္။ Encrypt နဲ႔ Decrypt ကုိ key stream သိမွပဲလုပ္လုိ႔ရမွာ ျဖစ္ပါတယ္။ key stream ရဲ႕ စာတန္းအရွည္က Encrypt လုပ္ထားတဲ့စာတန္းအရွည္နဲ႔ အတူတူျဖစ္ရပါမယ္။
Encrypting with Solitaire
၁။ စာေၾကာင္းကေနျပီး punctuation ေတြအားလံုးကုိျဖဳတ္ျပီး character အားလံုးကုိ တစ္ပံုစံတည္း လုပ္ပါ။(ဆုိလုိတာက အားလံုးစာလံုးအၾကီးအေသးမရွိ အတူတူပဲ)
၂။ character အားလံုးကုိ ဂဏန္းတန္ဖုိးကုိေျပာင္းပါ။ A=1, B=2 ,C=3 ,etc (ေနာက္တြင္ plaintext လုိ႔ေခၚ ပါမည္)
၃။ Encrypt လုပ္ဖုိ႔အတြက္ plaintext က ဂဏန္းမ်ားကုိ key stream က ဂဏန္းေတြနဲ႔ တစ္လံုးခ်င္း စီေပါင္း ပါ။ ေပါင္းရာမွာ ဂဏန္းတန္ဖုိးက ၂၆ (အဂၤလိပ္စာလံုးေပါင္း ၂၆ လံုးသာရွိသည္) ထက္ေက်ာ္သြားရင္ mod 26 ယူေပးပါ(26 နဲ႔ စားျပီးအၾကြင္းကုိယူပါ) အဲဒီ ဂဏန္းတန္းကေတာ့ Encrypt လုပ္ျပီးသားျဖစ္ပါတယ္။
4 15 14 15 20 21 19 5 16 3
key stream letter ကုိေျပာင္းရင္
11 4 23 21 16 15 14 15 23 20
ျပီးရင္အဲဒီႏွစ္ေၾကာင္းကုိေပါင္းပါမယ္။ ဥပမာ။ 1+1=2, 26+1=1
15 19 11 10 10 10 7 20 13 23
ဒါကုိ စာေၾကာင္းျပန္ေျပာင္းပါမယ္။
OSKJJ JGTMW
Decrypting with Solitaire
အျပန္အလွန္အေနနဲ႔ receiver ကလည္း key stream ကုိ အရင္ထုတ္ရပါမယ္။Encrypt stream ကေန အဲဒီ key stream ကုိ ႏႈတ္လုိက္ရင္ မူရင္း stream ကုိ ရပါမယ္။
ဥပမာ။ ေပးထားတဲ့ ciphertext ကုိ ၅ လံုးစီ ပါတဲ့ group ေလးေတြခဲြပါမယ္။
OSKJJ JGTMW
ျပီးရင္ Solitaire ကုိအသံုးျပဳျပီး key stream ကုိထုတ္ပါမယ္။အဲဒီ key stream က encrypt လုပ္တဲ့သူ အသံုးျပဳခဲ့တဲ့ key stream နဲ႔ တူရပါမယ္။
KDWUP ONOWT
ciphertext ကုိ ဂဏန္းေတြေျပာင္းပါမယ္။
15 19 11 10 10 10 7 20 13 23
key stream ကုိေျပာင္းပါမယ္။
11 4 23 21 16 15 14 15 23 20
အဲဒီႏွစ္ခုကုိ ႏႈတ္ပါမယ္။ ဥပမာ။ 21-1=20, 1-22=5 ,etc)
4 15 14 15 20 21 19 5 16 3
စာေၾကာင္းေျပာင္းပါ.
DONOT USEPC
No comments:
Post a Comment