Cryptography Cổ Điển – Mã Thay Thế Phần 1

Để hiểu những hệ thống Cryptography hiện đại, một ý không tồi là quay sang nhìn lại những hệ thống cũ để tìm hiểu cách thức hoạt động của chúng, từ đó có một cái nhìn chung về cách thức hoạt động của cryptography.

Hôm nay chúng ta sẽ tìm hiểu về một lớp những hệ thống cũ như vậy: Substitution Cipher (Mã Thay thế)

Cryptography cổ điển vỡ lòng

Thông thường, khi tất cả chúng ta nhắc tới cryptography cổ xưa, ta sẽ thường nghĩ tới những mạng lưới hệ thống mà ta hoàn toàn có thể thực thi encrypt và decrypt bằng tay một cách thuận tiện, không cần tới sự trợ giúp của những thuật toán nhanh siêu tốc mà máy tính ngày này hoàn toàn có thể triển khai. Đó là do tại những mạng lưới hệ thống này được ý tưởng trong thực trạng chưa có máy tính, nên hầu hết những mạng lưới hệ thống này Open trước thế kỉ XX .

Những hệ thống cryptography cổ điển có thể được chia làm 2 lớp: Substitution Cipher, lớp chúng ta sẽ tìm hiểu trong blog này, và Transposition Cryptography. 2 lớp này đều thuộc một phạm trù của cryptography được biết đến là symmetric cipher (mã đối xứng).

Những thành phần cơ bản của một mạng lưới hệ thống symmetric cipher gồm có :

  • Ciphertext (tin nhắn mật)
  • Plaintext (tin nhắn thường)
  • Thuật toán Encryption
  • Thuật toán Decryption
  • Key cho 2 thuật toán trên

Mối quan hệ mật thiết giữa những thành phần trên là :

Ciphertext = Encryption(Plaintext, Key)
Plaintext = Decryption(Ciphertext, Key)

Ngoài ra, 2 thuật toán encryption và decryption tương đương nhau, dẫn tới việc 2 key tương đương nhau .
Ta sẽ định nghĩa và nghiên cứu và phân tích từng mạng lưới hệ thống qua những thành phần trên của chúng, cũng như độ bảo mật thông tin của chúng .
Ngoài ra, để thuận tiện cho việc quan sát, hàng loạt plaintext sẽ được viết bằng chữ thường, và hàng loạt ciphertext sẽ được viết bằng chữ hoa .
Hầu hết chúng giờ là lỗi thời do đã bị phá vỡ trọn vẹn và được coi là rất thiếu bảo mật so với những tiêu chuẩn cryptography ngày này. Tuy nhiên, như đã nói, khám phá về chúng không phải là một ý tồi để có một cái nhìn tổng quát về phương pháp quản lý và vận hành của những thuật toán cryptography .

Simple Substitution Cipher

Phân tích

Đây là dạng Substitution Cipher đơn thuần nhất : Xáo trộn bảng vần âm và viết theo bảng vần âm mới đó. Như vậy ta sẽ coi bảng vần âm mới đó là key .
Ta sẽ khởi đầu bằng Caesar Cipher. Nó được đặt tên từ Julius Caesar, người tiếp tục sử dụng cipher này trong những tin mật của ông .
Key của Caesar Cipher rất đơn thuần : Bảng vần âm mới tịnh tiến với khoảng cách là 3, tức là A thành D, B thành E, …, Z thành C .

Encrryption mẫu của tin nhắn "I Am Julius Caesar"

plaintext:   i am julius caesar
CIPHERTEXT:  L DP MXOLXV FDHVDU

Caesar Cipher cũng gồm có những cipher với bảng vần âm được tịnh tiến với khoảng cách khác 3 .

ROT 13, một Caesar Cipher với khoảng cách tịnh tiến là 13
Caesar Cipher là dạng đặc biệt quan trọng của Affine Cipher. Affine Cipher sử dụng hàm bậc nhất để encrypt từng vần âm .

Cách Affine Cipher vận hành: Mỗi chữ cái được đánh số như sau:
a b c d e ...  z
0 1 2 3 4 ... 25
Affine Cipher sẽ cho từng chữ cái trong plaintext qua hàm f(x) = (ax + b) mod 26,
kết quả là chữ cái tương ứng trong ciphertext
Ví dụ: a = 3, b = 5
plaintext     x     f(x)     CIPHERTEXT
    c         2      11           L
    i         8       3           D
    p        15      24           Y
    h         7       0           A
    e         4      17           R
    r        17       4           E
Tức là encryption(cipher, (3, 5)) = LDYARE
Để ý rằng điều kiện của a là a != 0 và GCD(a, 26) = 1. Vì nếu GCD(a, 26) != 1
thì một ciphertext có thể decrypt ra thành nhiều plaintext.
Ví dụ, khi a = 13, b = 4,
encryption(input, (13, 4)) = encryption(alter, (13, 4)) = ERRER

Bạn hoàn toàn có thể thử những ví dụ trên bằng giấy và bút, hoặc bạn hoàn toàn có thể thử viết code implement những cipher trên. Dưới đây là pseudocode triển khai encrypt một tin nhắn bằng Affine Cipher .

encryptAffineCipher(string plaintext, int a, int b) {
    string ciphertext;
    for char c_plain in plaintext {
        char c_cipher = char((a * int(c_plain) + b) mod 26);
        /*
        int(c) trả về số ứng với chữ cái c với a = 0, b = 1, ...
        char(i) trả về chữ cái ứng với số i
        Lưu ý là cách viết trên chỉ để phục vụ cho việc minh họa,
        không đúng với cú pháp
        */
        append c_cipher to ciphertext;
    }
    return ciphertext;
}

Thuật toán decryption của Caesar Cipher cũng như Affine Cipher rất đơn giản: Ta đảo ngược cách tính hàm f(x) lại.

Đối với Caesar Cipher thì đơn thuần. Ta tịnh tiến lùi bảng vần âm. Affine Cipher thì ” mệt ” hơn một chút ít. Xem thử bạn hoàn toàn có thể tìm ra cách tính hàm ngược để decrypt một ciphertext của Affine Cipher không nhé !

Tấn công trong cryptanalysis

Cho trước một ciphertext mà không biết key, có nhiều giải pháp tiến công trong cryptanalysis hoàn toàn có thể giúp ta decrypt ciphertext đó. Tuy nhiên, cách đơn thuần nhất và đặc trưng với Simple Substitution Cipher chính là Frequency Analysis ( nghiên cứu và phân tích tần số ) .
Nếu Caesar Cipher đã được sử dụng từ thời La Mã cổ đại thì mãi đến thế kỉ thứ 9, một nhà bác học người Ả Rập mới tăng trưởng lối nghiên cứu và phân tích ciphertext này nhằm mục đích bẻ khóa Caesar Cipher nói riêng và Substitution Cipher nói chung .
Nguyên tắc cơ bản là như sau : Lợi dụng việc tần số Open của mỗi vần âm là khác nhau, chữ này sẽ thường Open nhiều hơn chữ khác. Cụ thể hơn, trong những văn bản Tiếng Anh, chữ e Open nhiều nhất .

Phân bố sự Open của những vần âm trong những văn bản Tiếng Anh
Tương tự, ta cũng hoàn toàn có thể nghiên cứu và phân tích tần số Open theo cặp vần âm, những cặp Open nhiều nhất là ” th “, ” er “, ” on “, ” an “, hoặc theo bộ ba vần âm, v.v.
Và bằng cách đếm tần số Open của từng vần âm trong ciphertext, ta hoàn toàn có thể dịch ra thành vần âm plaintext tương ứng. Ví dụ, giả sử Q. là vần âm Open nhiều nhất trong ciphertext, năng lực cao decrypt ( Q. ) = e. Làm tương tự như lần lượt với vần âm Open liên tục thứ 2, thứ 3, cho đến khi ta dịch được hết hàng loạt ciphertext .
Điểm yếu nghiêm trọng này của Simple SUbstitution Cipher thôi thúc những nhà mật mã học thời bấy giờ tăng trưởng những Substitution Cipher có đặc thù polygraphic, tức là nhiều vần âm plaintext hoàn toàn có thể encrypt thành 1 vần âm ciphertext duy nhất nhằm mục đích chống trả Frequency Analysis, mà ta sẽ bàn đơn cử trong blog sau .
Nhân đây, mình có một ciphertext nhỏ được encrypt bằng Affine Cipher mà tất cả chúng ta vừa khám phá ở trên và muốn những bạn decrypt. Hãy thử vận dụng những gì bạn vừa học được ở trên và xem thử bạn decrypt được đoạn tin nhắn dưới đây mà không cần key bí hiểm nha !

BGUFXCACAOWGAFAOFCANOYFGVEOBDCWLGVFOBFFXCBSFGFXCBMOTGK
FNGVTVKFORCFEUCRRBGFYOBBGFOYYGWLRCAXUXOFOMCBDREDCALGAC
FCGBUCRROBDCNNGRMAYGKRDGBREMBGUXGUQKCYMREOTORMEYXCRDUC
RRFXVGKSXRGPCBSOBDYKDDRCBSSVGUCBFGOYXOVWCBSXOLLEEGKFXW
KYXYXCRDCAXSRGGWOBDAGVVGUUGKRDPOBCAXNGVOWOBGVUGWOBUXGC
AKSREFGOYXCRDCAFGGRGUFGVOBMOAXCSXREOAOUCRDOBCWORNGVBGO
BCWORUCRRAFOBDNGVOBCBAFOBFOBEFXCBSOLLVGOYXCBSOBOFFOYMG
VOBENGVWGNXOVWFGCFAEGKBSTKFUXOFORGFGNFGFANCBDAROLAEOBM
AOBDXOVDUGVDANGVYGBDCFCGBAUXCYXDGBGFYORRNGVAKYXXOVAXFO
YFCYABGYXCRDCABOFKVORREKSREGVYVOBMEOBDTCSSKRLCBSAGTAGV
AODKBXOLLEEGKBSWCBDACBOFCBETGDEAXGKRDBGFGYYKVCBOBEYGWW
KBCFEGNYCPCRCJOFCGBODKRFXGGDXGRDAWOBEOBGLLGVFKBCFENGVA
KYXYGBDCFCGBAYXCRDXGGDAXGKRDBGF

( Hint : Đoạn tin nhắn trên được trích từ Gadsby, một tiểu thuyết hơn 50 000 từ mà không có một chữ e nào, do đó hãy mở màn nghiên cứu và phân tích tần số bằng vần âm khác nhé )
Simple Substitution Cipher Open rất nhiều trong đời sống hàng ngày. Những ví dụ thường thấy là Pigpen Cipher / Tic-Tac-Toe Cipher hay Morse Code. Ngoài ra, trong Microsoft Word cũng có những font chữ kì khôi như Webdings cũng hoàn toàn có thể được coi là Substitution Cipher, khi mỗi hình thù riêng bộc lộ một vần âm khác nhau .

An example pigpen message

Pigpen Cipher

Tạm kết

Trên đây là nghiên cứu và phân tích Simple Substitution Cipher, điểm khởi đầu trong hành trình dài tò mò những mạng lưới hệ thống Cryptography của tất cả chúng ta !

Blog tiếp theo sẽ nghiên cứu và điều tra Polyalphabetic Substitution, một dạng tiến hóa của loại cipher này. Các bạn hãy đón xem nhé !

Cryptography Cổ Điển – Mã Thay Thế Phần 1

Bài viết liên quan
Hotline 24/7: O984.666.352
Alternate Text Gọi ngay