version 1.2, 5/26/99
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
Tuesday, October 20, 2009
min that thant
Posted in 
No Response to "The Solitaire Encryption Algorithm"
Post a Comment