Hướng dẫn giải mật mã caesar

Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn,

GAS32

, GO, Haskell, Itercal, Java, kotlin,

LEAN

, LISP, LUA, MONOVB,

Nasm

,

OCAML

, Pascal, Perl, php, PIKE,

prolog

, Pypy, Python,

Ruby 2

, RUST, Scala, SCM, SED,

SWIFT

, TCL,

TUR

,

V8JS

,

VB

, ZIG

Mật mã Caesar mã hóa bằng cách xếp bảng chữ cái thành một vòng tròn và mã hóa bằng cách dịch đi đúng k ký tự trong vòng tròn đó

Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn,

GAS32

, GO, Haskell, Itercal, Java, kotlin,

LEAN

, LISP, LUA, MONOVB,

Nasm

,

OCAML

, Pascal, Perl, php, PIKE,

prolog

, Pypy, Python,

Ruby 2

, RUST, Scala, SCM, SED,

SWIFT

, TCL,

TUR

,

V8JS

,

VB

, ZIG

Mật mã Caesar mã hóa bằng cách xếp bảng chữ cái thành một vòng tròn và mã hóa bằng cách dịch đi đúng k ký tự trong vòng tròn đó

Mật mã Caesar là một trong những kỹ thuật mã hóa đầu tiên, được phát minh bởi Julius Caesar hơn hai nghìn năm trước để trao đổi tin tức với đồng minh.

Đây là một loại mật mã có nguyên lý hoạt động đơn giản. Từ ví dụ về mật mã Caesar, ta sẽ cùng nhau tìm hiểu về cách mã hóa, giải mã và bẻ khóa dữ liệu.

Mã hóa tin nhắn

Hãy giả sử rằng Caesar muốn gửi một tin như sau:

SECRET MEETING AT THE PALACE (nghĩa tiếng Việt: GẶP GỠ BÍ MẬT Ở LÂU ĐÀI)

Sau khi được mã hóa, ta có tin nhắn như sau:

YKIXKZ SKKZOTM GZ ZNK VGRGIK

Những ký tự trên trông có vẻ chẳng có ý nghĩa gì, nhưng thực chất, tin nhắn được mã hóa này có mối liên hệ mật thiết với tin nhắn ban đầu.

Mật mã Caesar là một loại mã thay thế đơn giản mà ở đó, ta thay từng chữ cái ban đầu bằng một chữ cái khác trong cùng bảng chữ cái, bằng cách di chuyển mỗi chữ cái ban đầu sang một chữ cái mới với khoảng cách nhất định.

Để tạo ra mật mã như trên, ta dịch chuyển bảng chữ cái với khoảng dịch chuyển là 6 chữ và dùng bảng mã như sau:

ABCDEFGHIJKLMNOPQRSTUVWXYZGHIJKLMNOPQRSTUVWXYZABCDEF

S chuyển thành thành chữ Y - cách S 6 chữ cái, E sang thành chữ K - cách S 6 chữ cái, v.v. Theo nguyên lý này, từ đầu tiên trong dòng tin gốc đã được dịch chuyển như sau:

SECRET (nghĩa tiếng Việt: BÍ MẬT)YKIXKZ

Giải mã tin nhắn

Theo như những ghi chép lịch sử, Caesar luôn sử dụng khoảng dịch chuyển là 3 chữ cái. Chỉ cần người nhận tin biết được khoảng dịch chuyển này, thì họ có thể giải mã tin nhắn của Ceasar khá dễ dàng.

Hãy giả sử Caesar gửi tin nhắn cho một người đồng đội:

Người đồng đội đó đã dùng bảng mã dưới đây với khoảng dịch chuyển là 3 chữ cái:

ABCDEFGHIJKLMNOPQRSTUVWXYZDEFGHIJKLMNOPQRSTUVWXYZABC

Như vậy, người đồng đội chắc chắn có thể giải mã tin nhắn trên. Chữ cái đầu tiên, "E", được dịch chuyển 3 chữ từ "B". Chữ cái thứ hai, "H", được dịch chuyển 3 chữ từ "E", v.v. Kết quả ta nhận được là một thông điệp đáng lo ngại như sau:

BEWARE BRUTUS (nghĩa tiếng Việt: HÃY CẨN THẬN VỚI BRUTUS)

Bẻ khóa mật mã

Hãy giả sử một kẻ thuộc phe địch có khả năng đọc hiểu và phân tích tường tận nắm được một trong những tin nhắn của Caesar.

RZ VMZ WMDIBDIB VGG AJMXZN OJ EJDI RDOC XGZJKVOMV OJ YZAZVO OCZ ZIZHT LPZZI VO OCZ IDGZ YZGOV

Kẻ này không hề hay biết rằng Caesar luôn sử dụng khoảng dịch chuyển chữ cái là 3, vậy nên hắn ta phải cố gắng "bẻ khóa" mật mã này khi không biết số chữ bị di chuyển.

Có ba kỹ thuật chính mà hắn có thể sử dụng: phân tích tần suất, dựa vào nội dung gốc đã biết và dò tìm triệt để (brute-force).

Phân tích tần suất

Ngôn ngữ của loài người thường dùng một số ký tự nhiều hơn những ký tự khác. Ví dụ, chữ "E" là chữ cái phổ biến nhất trong tiếng Anh. Ta có thể phân tích tần suất xuất hiện của các chữ cái trong tin nhắn trên và tìm ra chữ cái có khả năng tương ứng với chữ "E" nhất, từ đó suy ra khoảng dịch chuyển chữ cái.

Ta cùng thử nhé! Hãy copy và dán lại tin nhắn mà phe địch đã nắm được ở trên vào ô bên dưới rồi phân tích biểu đồ tần suất để tìm ra chữ cái có thể là "E":

Dựa vào nội dung gốc đã biết

Một thuật ngữ khác để chỉ tin nhắn gốc chưa bị mã hóa là nội dung gốc. Nếu như kẻ thù đã biết được một vài phần của bản gốc thì chúng có thể dễ dàng bẻ khóa phần còn lại của mật mã hơn nhiều.

Ví dụ, có thể các tin nhắn đều sẽ có phần mở đầu giống nhau. Trong Thế Chiến II, những tin nhắn được mã hóa của quân Đức luôn bắt đầu bằng việc dự báo thời tiết. Điều này giúp cho nhà toán học người Anh Alan Turing dễ dàng bẻ khóa chúng hơn.

Bạn có nghĩ Julius mở đầu tin nhắn theo một cách tương tự như vậy không?

Dò tìm triệt để (brute force)

Chỉ có 25 cách dịch chuyển chữ cái trong bảng chữ cái tiếng Anh. Kẻ thù có thể dành thời gian để thử từng cách và tìm ra tin nhắn có nghĩa nhất. Thậm chí, chúng có thể không cần phải thử tất cả các cách dịch chuyển đó trên toàn bộ tin nhắn, mà chỉ cần dùng với một hay hai từ đầu tiên là có thể tìm ra đáp án.

Hãy thử vận dụng kiến thức trên nhé:

Nếu kẻ thù của Caesar hiểu được nguyên lý hoạt động của mật mã này, thì kể cả khi chúng không có máy tính trợ giúp, rất có thể chúng chỉ cần ít hơn một giờ để tự thử tất cả các trường hợp trên và ra được đáp án.

Bạn đã tìm được cách bẻ khóa và giải mã thông điệp chưa? Hãy nhấn vào dòng bên dưới để xem kết quả nhé!

Mã hóa, giải mã và bẻ khóa

Nhờ vào việc nghiên cứu mật mã Caesar, chúng ta giờ đã hiểu ba khía cạnh chính của quá trình mã hóa thông tin:

  • Mã hóa: xáo trộn dữ liệu theo một quy tắc bí mật (trong trường hợp này là quy tắc dịch chuyển chữ cái).
  • Giải mã: chuyển đổi dữ liệu đã được mã hóa về dạng ban đầu bằng cách sử dụng quy tắc bí mật.
  • Bẻ khóa: giải ra được dữ liệu ban đầu bằng cách sử dụng một vài kỹ thuật tài tình, cho dù ban đầu không biết quy tắc bí mật là gì.

Mỗi khi chúng ta cân nhắc sử dụng một kỹ thuật mã hóa nào đó, ta phải xem xét tất cả các khía cạnh như: Kỹ thuật đó có dễ mã hóa không? Có dễ bị giải mã không và quan trọng nhất, kỹ thuật này có dễ dàng bị kẻ xấu bẻ khóa không?

Hiện tại, chúng ta không còn có thể sử dụng mật mã Caesar để bảo vệ dữ liệu vì mật mã này có thể bị bẻ khóa rất dễ dàng. Tuy nhiên, hiểu được nguyên lý hoạt động của mật mã Caesar sẽ giúp chúng ta nắm được những kỹ thuật mã hóa hiện đại.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Bạn có câu hỏi nào về chủ đề này không? Chúng tôi rất sẵn sàng hỗ trợ bạn — hãy để lại câu hỏi ở mục câu hỏi phía dưới nhé!