Substitution Cipher

Leu Kongsun
2 min readSep 2, 2019

--

១. ការណែនាំ

ពាក្យ substitution គឺ “ជាការជំនួស” ដែលមានន័យថាតួអក្សរមួយត្រូវបានជំនួសដោយតួអក្សរមួយផ្សេងទៀត។ ចំណែកឯក ​cipher គឺជា Algorithm សម្រាប់ធ្វើការ encrypt ឬ decrypt មកវិញ។
ដូចនេះ​ substitution cipher គឺជា algorithm encryption ដែលយកតួអក្សរណាមួយផ្សេង មកដាក់ជំនួសតួអក្សរដើម​ ដើម្បីកុំឲ្យមើលយល់ ។ ឧទាហរណ៍ a ត្រូវបានជំនួសដោយ x ។

substitution cipher ត្រូវបានប្រើប្រាស់ជាច្រើនពាន់ឆ្នាំមកហើយ មិនមែនទើបតែមានក្នុងសម័យកុំព្យូទ័រនេះនោះទេ។ ​វាខុសគ្នាពី​ Caesar cipher ដែល Caesar គឺគ្រាន់តែផ្លាស់ប្តូរតួអក្សរតែប៉ុណ្ណោះ (shifted) ដែលមានន័យថា ប្រសិនបើ A​ ត្រូវបានជំនួសដោយ B នោះ ​B និងត្រូវបានជំនួសបន្តដោយ C និងធ្វើរបៀបនេះបន្តបន្ទាប់ទៅ និងម្យ៉ាងទៀត Caesar គឺមានលក្ខណៈ fixed ជានិច្ច។

ឧទាហរណ៍

ខាងក្រោមនេះគឺជាឧទាហរណ៍នៃរបៀប encrypt និង decrypt នៅក្នុង Substitution cipher ហើយឃ្លាដែលយើងនឹងធ្វើការ encrypt នោះគឺ ‘defend the east wall of the castle’ ។

ជាទូទៅ​ Keys ដែលប្រើសម្រាប់ substitution cipher គឺមាន 26​ តួ:

plain alphabet : abcdefghijklmnopqrstuvwxyz

cipher alphabet: phqgiumeaylnofdxjkrcvstzwb

ឧទាហរណ៍ខាងក្រោមគឺប្រើ keys ខាងលើៈ

plain text: defend the east wall of the castle
cipher text: giuifg cei iprc tpnn du cei qprcni

អក្សរ d ត្រូវបានជំនួសដោយ g និងត្រូវបានផ្លាស់ប្តូរបន្តបន្ទាប់ដូចដែលបានឃើញនៅលើ key របស់ cipher alphabet នៅខាងលើ។

ដើម្បីធ្វើការ decrypt មកវិញ គឺមិនមានអ្វីជាពិបាកនោះទេ ព្រោះយើងបានដឹងពី Key របស់វារួចទៅហើយ ដោយគ្រាន់តែធ្វើការផ្ទៀងផ្ទាត់នូវអក្សរដែលបានជំនួសជាមួយនឹងអក្សរដើមគឺជាការស្រេច។

២. Cryptanalysis (របៀបក្នុងការវិភាគ)

Substitution cipher អាចនឹងងាយបំបែកបាន បើទោះបីជាចំនួននៃ keys មានរហូតដល់ 2 ស្វ័យគុណ 88.4 ក៏ដោយ(ជាចំនួនដ៏ច្រើនមួយ) ក៏មាន text ភាគច្រើនមិនត្រូវបានប្រើប្រាស់ និងមួយចំនួនទៀតអាចនឹងងាយស្រួលក្នុងការទស្សន៍ទាយនូវ keys របស់វាផងដែរ។ ​មុនដំបូងគេត្រូវគិតពីតួអក្សរដែលនឹងត្រូវប្រើញឹកញាប់ជាងគេនៅក្នុង cipher text ដែលមានន័យថា តើតួអក្សរណាមួយដែលនឹងត្រូវលេចចេញមកញឹកញាប់ជាងគេ។ យើងអាចមើលតារាងនៃតួអក្សរដែលគេឃើញនៅក្នុង English text ញឹកញាប់បានៈ

អក្សរអង់គ្លេសដែលប្រើច្រើននៅក្នុង text គឺមានក្រាបសសរខ្ពស់ជាងគេ។

នេះជាការរៀបតាមលំដាប់ចាប់ពីច្រើនបំផុតដល់តិចបំផុត

គឺមានន័យថាអក្សរ e ត្រូវបានប្រើប្រាស់ច្រើនជាងគេ បើធៀបនឹងអក្សរដទៃផ្សេងទៀត ហើយត្រូវឃើញញឹកញាប់ស្ទើរតែ 13% ខណៈដែល z អាចមាននៅក្នុងពាក្យផ្សេងៗមិនដល់ 1% ផង។ cryptanalyst ត្រូវរកឲ្យឃើញនូវ keys ដែលគេយកមក encrypt message ដែលមានន័យថាស្វែងរកយើងត្រូវស្វែងរកតួអក្សរដែលត្រូវគ្នា (mapping for each character)។ ឧទាហរណ៍ នៅក្នុងរូបទីមួយ តួដំបូងគឺអក្សរ a បន្ទាប់មកត្រូវបាន enciphered ទៅជា e (រូបទី២) ដែលនេះគឺជាការ map ពីអក្សរមួយជាមួយអក្សរមួយផ្សេងទៀត។

សម្រាប់ពពួក text មានលក្ខណៈវែងអន្លាយ និងច្រើន (ខ្ទង់ពាន់អក្សរ) យើងអាចជំនួសតួអក្សរ ciphertext លើតួអក្សរណាមួលដែលគិតថាលេខមុខច្រើនជាងគេក្នុងmessage ជំនួសដោយអក្សរ e (ព្រោះវាត្រូវបានគេទាយថាអាចនឹងមានច្រើនជាងគេក្នុងពាក្យភាសាអង់គ្លេស -មើលតារាង) បន្ទាប់មកគឺតួអក្សរដែលឃើញច្រើនជាងគេទី២ គឺជំនួសដោយ t និងតួអក្សរផ្សេងទៀត ធ្វើដូចនេះបន្តបន្ទាប់ទៅតាមលំដាប់ពីច្រើនទៅតិច។ យើងនឹងទទួលបានលទ្ធផលដូចដែលយើងចង់បានជាលក្ខណៈ plain text (អក្សរមើលយល់ដោយមនុស្ស)។

សម្រាប់តួអក្សរតិច យើងត្រូវការជំនាញជាងនេះបន្តិច ព្រោះយើងត្រូវការទស្សន៍ទាយទៅលើពាក្យច្រើន។ ឧទាហរណ៍អក្សរដែលមានចំនួនពីរតួដូចខាងក្រោម

--

--

Leu Kongsun
Leu Kongsun

No responses yet