გადანაცვლებადი შიფრი

გადანაცვლებადი შიფრი აღნიშნავს კრიპტოგრაფიულ ალგორითმს, რომელიც ახდენს ღია ტექსტში სიმბოლოების (ან სიმბოლოთა ჯგუფის) განსაზღვრული მიმდევრობით გადანაცვლებას. მიღებული შედეგი ფაქტობრივად წარმოადგენს საწყისი ინფორმაციის სიმბოლოების პერმუტაციას.
ქვემოთ ჩამოთვლილია გადანაცვლებადი შიფრის ზოგიერთი რეალიზაცია

რეალიზაცია
მარშრუტი
განსაზღვრული ზომის ცხრილში ღია ტექსტი იწერება ჰორიზონტალურად, ხოლო ვერტიკალურად იკითხება შიფროტექსტი. დეშიფრაციის პროცესში შიფროტექსტი იწერება იგივე ზომის ცხრილში ვერტიკალურად, ხოლო ჰორიზონტალურად ამოიკითხება ღია ტექსტის ორიგინალი. მაგალითად, ვთქვათ დასაშიფრი ღია ტექსტია „ვიკიპედია თავისუფალი ქართულენოვანი ენციკლოპედიაა“, გვექნება ცხრილი:

ამ ცხრილის ვერტიკალურად ამოკითხვით მივიღებთ „ვფნილიკლ იიეპ ნექცდაიირკათლ უოთლპაეევნდიოიისვაუაა“, ანუ შიფროტექსტს. დეშიფრაციის დროს თუ ეს შიფროტექსტი ჩაიწერება იგივე განზომილების ცხრილში ვერტიკალური მიმდევრობით, ბუნებრივია ჰორიზონტალური ამოკითხვით აღდგება ორიგინალი ტექსტი. ამ შიფრში ცხრილის განზომილება (სვეტების და მწკრივების რაოდენობა) წარმოადგენს შიფრის გასაღებს.
ამ შიფრის ერთ-ერთი ვარიაცია გამოიყენებოდა აშშ-ს სამოქალაქო ომში, რომელშიც სიმბოლოების ნაცვლად სიტყვების გადანაცვლება ხდებოდა. განსაკუთრებით მნიშვნელოვანი სიტყვები ჩანაცვლდებოდა შესაბამისი კოდური სიტყვებით. ასევე შიფროტექსტის გართულების მიზნით შესაძლებელია შეტყობინებას დამატებოდა სხვადასხვა უაზრო და არაფრისმომცემი სიტყვები.

სვეტებად გადანაცვლება
ამ შიფრში ხდება ღია ტექსტის ჩაწერა ცხრილად ჰორიზონტალურად, ხოლო ამოკითხვა ვერტიკალურად (მარშრუტის მსგავსად). განსხვავება იმაში მდგომარეობს, რომ ცხრილის განზომილებას და ამოკითხვის მიმდევრობას გასაღებად არჩეული სიტყვა განსაზღვრავს. კერძოდ, სვეტების რაოდენობა განისაზღვრება გასაღების სიმბოლოების რაოდენობით, ხოლო ამოკითხვის მიმდევრობა - ანბანში ამ სიმბოლოების ნომრით. მაგ. ღია ტექსტად ავიღოთ წინა მაგალითში გამოყენებული ფრაზა, ხოლო გასაღებად სიტყვა „ქართველი“. შედგება ცხრილი 8 სვეტით:

ცხრილის მითითებული მიმდევრობით ამოკითხვით მივიღებთ შიფროტექსტს „ი აუიოეიქოციპვ ნნდიაიეეეიურაკადსავიაკთლლ პვაფთნლ“. მის გასაშიფრად საჭიროა შედგეს ცხრილი, რომლის სვვეტების რაოდენობა განისაზღვრება გასაღების სიგრძით, ხოლო მწკრივების რაოდენობა გამოითვლება შიფროტექსტის სიგრძის გაყოფით გასაღების სიგრძეზე 48/8=6. შიფროტექსტი ჩამოიწერება ცხრილში სვეტებად, ხოლო სვეტები გადალაგდება გასაღების სიმბოლოების ანბანური ნომრის მიხედვით. შედეგად მივიღებთ პირვანდელ ცხრილს, საიდანაც ინფორმაციის ჰორიზონტალური ამოკითხვით აღდგება ორიგინალი ღია ტექსტი. შიფრაციის აღწერილი მეთოდი გასული საუკუნის შუა წლებამდე გამოიყენებოდა, როგორც უფრო რთული შიფრაციის პროტოკოლების ერთ-ერთი შემადგენელი ნაწილი.

ორმაგი გადანაცვლება
გადანაცვლებადი შიფრი შედარებით იოლად ტყდება, თუ მოხდება შიფროტექსტის ჩამოწერა სვეტებად, შემდეგ კი სვეტებიდან შესაძლო ანაგრამების ძიება. ამიტომ ხშირად გამოიყენებოდა ორმაგი გადანაცვლება, ანუ გადანაცვლების ოპერაციის გამეორება ორჯერ. გადანაცვლებისათვის იყენებდნენ ერთსა და იმავე, ზოგჯერ კი სხვადასხვა გასაღებს. აღნიშნულ მეთოდს მიმართავდნენ გერმანელები და მსოფლიო ომის დროს, ასევე დანიელები, ფრანგები, ინგლისელები და ამერიკელები. ორმაგი გადანაცვლების შიფრი ყველაზე დახვეწილ შიფრაციის ალგორითმად ითვლებოდა ( შიფრის გამოგონებამდე), რომლის გამოყენებაც იოლად შეიძლებოდა საველე პირობებში.

კრიპტოანალიზი
ვინაიდან გადანაცვლება არ მოქმედებს ღია ტექსტში სიმბოლოების სიხშირულ მახასიათებლებზე, მარტივი გადანაცვლებადი შიფრის გატეხვა შედარებით იოლია სიხშირული ანალიზით. თუ შიფროტექსტის სიმბოლოების სიხშირული მახასიათებლები მეტნაკლებად ემთხვევა იმ ენის სიხშირულ მახასიათებლებს, რომელზეც ღია ტექსტია დაწერილი, მაშინ აშკარა ხდება გადანაცვლების გამოყენება შიფრში. შემდგომ ხდება შიფროტექსტის ფრაგმენტების გადაადგილება აზრობრივად გამართული რაიმე ტექსტის ფრაგმენტის მოძიების მიზნით. წარმატების შემთხვევაში ხდება გადანაცვლების მიმდევრობის დახვეწა და განვრცობა მთელ შიფროტექსტზე, რითაც საბოლოოდ აღდგება ორიგინალი ღია ტექსტი. გადანაცვლებადი შიფრის კრიპტოანალიზი განსაკუთრებით იოლია კომპიუტერების და ე.წ. გენეტიკური ალგორითმების გამოყენებით.

შეთავსება სხვა მეთოდებთან
გადანაცვლებადი შიფრის საიმედოობის ასამაღლებლად, ხშირად გამოიყენება მისი შეთავსება სხვა კრიპტოგრაფიულ მეთოდებთან. მაგ. ჩანაცვლებადი შიფრის შეთავსება გადანაცვლებად შიფრთან აღმოფხვრის ორივე ალგორითმის სისუსტეებს - ჩანაცვლება ართულებს სიხშირულ ანალიზს, ხოლო გადანაცვლება ართულებს შიფროტექსტში ჩანაცვლების აღმოჩენას. კრიპტოანალიზს კიდევ უფრო ართულებს ე.წ. დაყოფის მეოდის გამოყენება, როდესაც ღია ტექსტის ყოველი სიმბოლო გადანაცვლებისას და ჩანაცვლებისას იყოფა 2 ან მეტ სხვა სიმბოლოებად. ასეთი შიფრის მაგალითია ზემოაღნიშნული შიფრი. კომპიუტერულ ალგორითმებში ხშირად გამოიყენება ღია ტექსტის სიმბოლოების გარდაქმნა ბინარულ ფორმატში, ბიტებზე გადანაცვლების და ჩანაცვლების ოპერაციები და შემდეგ ბაიტების უკუგარდაქმნა სომბოლოებად შესაბამის კოდებში. მრავალი თანამედროვე ბლოკური შიფრი იყენებს მსგავს, მაგრამ გაცილებით რთულ მეთოდიკას.