You are on page 1of 36

SYMMETRIC CIPHERS

Trường ĐHCN TP.HCM

Giáo viên: Từ Thị Xuân Hiền


Nội dung
❑ Hệ Mã hóa cổ điển Caesar
❑ Mã hóa thay thế đơn (Monoalphabetic Cipher)
❑ Mã hóa Playfair
❑ One-Time Pad (OTP)
Mã hóa cổ điển Caesar (Caesar cipher)
❑ Mật mã Caesar: còn gọi là mật mã dịch chuyển, Hệ mã Caesar
là một hệ mã hóa thay thế đơn âm, làm việc trên bẳng chữ cái
tiếng Anh 26 ký tự, trong đó mỗi ký tự trong văn bản được thay
thế bằng một ký tự cách nó một đoạn k trong bảng chữ cái để
tạo thành bản mã.
Mã hóa cổ điển Caesar (Caesar cipher)
❑ Mật mã Caesar:
❖ Ví dụ: Mã hóa văn bản “HELLO WORLD” với k=3
+ H sẽ được thay thế bằng K,
+ E sẽ được thay thế bằng H,...

+ Và thông điệp được mã hóa cho HELLO WORLD là KHOOR ZRUOG.


❖ Lưu ý: các chữ cái ở cuối: X, Y, Z sẽ vòng lại và được thay thế
bằng A, B, C tương ứng, trong trường hợp dịch sang phải.
Mã hóa cổ điển Caesar (Caesar cipher)
❑ Mật mã Caesar: Tổng quát: nếu gán số thứ tự cho bảng chữ cái

❖ Quy tắc mã hóa Caesar Cipher được biểu thị bằng toán học
như sau:
❖ Trong đó
C = (M + k)% 26
+ C là ký tự được mã hóa,
+ M là ký tự gốc,
+ k là số vị trí muốn chuyển ký tự x,
Mã hóa cổ điển Caesar (Caesar cipher)
❑ Mật mã Caesar:
❖ Cho bản rõ : TOIYEUVIETNAM Khóa k = 4
❖ Tìm bản mã ? Theo công thức thay vào ta sẽ có kết quả sau.

❖ Vậy bản mã là : YSMBYZWMIYREQ


Mã hóa cổ điển Caesar (Caesar cipher)
❑ Phá mã Caesar: Quá trình giải mã ngược lại với quá trình mã
hóa.
M = (c - k)% 26
❑ Ví dụ: giải mã bản mật mã "EXXEGOEXSRGI“, với k=4
Mã hóa cổ điển Caesar (Caesar cipher)
❑ Phá mã Caesar:
❖ Chỉ có 25 khóa do đó nếu biết ngôn ngữ của thông điệp sẽ dễ
dàng vét cạn để tìm khóa
❖ Ví dụ: lần lượt thử giải mã C = GCUA VQ DTGCM bằng các
khóa k = 1, 2, 3, … đến khi M nhận được “có nghĩa” thì k chính
là khóa cần tìm
Mã hóa cổ điển Caesar (Caesar cipher)
❑ Bài tập
1. Hãy mã hóa họ tên bạn dùng k=4
2. Áp dụng mật mã Ceasar mật mã hóa các bản rõ sau với khóa k = 4
actions speak louder than words
3. Đoán khóa k và giải mật cho bản mật sau:
ST RFS HFS XJWAJ YBT RFXYJWX
Mã hóa thay thế đơn (Monoalphabetic Cipher)
❑ Cách mã hóa thay thế đơn
❖ Khóa chính là một cách sắp xếp các ký tự trong bảng chữ cái
theo thứ tự tùy ý
❖ Ký tự trong M sẽ được thế thành ký tự tương ứng với sắp xếp
trong khóa
❖ Ví dụ:
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ K: DKVQFIBJWPESCXHTMYAUOLRGZN
+ M: ifwewishtoreplaceletters
+ C: WIRFRWAJUHYFTSDVFSFUUFYA
Mã hóa thay thế đơn (Monoalphabetic Cipher)
❑ Cách mã hóa thay thế đơn
❖ Số lượng khóa là 26! do đó khó vét cạn được khóa
❖ Nếu biết ngôn ngữ nguồn, có thể thám mã bằng cách phân tích dựa vào
tần số xuất hiện của ký tự chữ cái trong ngôn ngữ
❖ Cần có C đủ dài để phân tích chính xác
Mã hóa thay thế đơn (Monoalphabetic Cipher)
❑ Ví dụ: Tần số chữ cái của tiếng Anh
Mã hóa thay thế đơn (Monoalphabetic Cipher)
❑ Cách phá mã dựa vào tần số
❖ Lập bảng thống kê tần số của các ký tự trong C
❖ Dựa vào bảng tần số chuẩn để dự đoán các ký tự trong bản C
tương ứng
❖ Kết hợp với các phân tích: (giả sử là tiếng Anh)
❖ Các ký tự liền kề nhau
+ Ví dụ E thường đi theo sau T,R,N,I,O,A,S
+ Các từ biên giới: a, i, in, on, at, that, the, and, for,...
+ Các ký tự đi theo bộ 2, 3,…
Mã hóa Playfair
❑ Đặt vấn đề
❖ Số lượng khóa nhiều chưa hẳn là an toàn
❖ Hướng tiếp cận là mã hóa cùng lúc nhiều ký tự
❖ Phát minh bởi Sir Charles Wheatstone năm 1854, đặt theo tên bạn ông là
Baron Playfair
❖ Được sử dụng một thời gian dài bởi quân đội Anh, Mỹ, Đồng minh trong
chiến tranh thế giới I, II
Mã hóa Playfair
❑ Ý tưởng
❖ Từ K xây dựng ma trận ký tự 5 x 5 bằng cách điền các ký tự
của K vào ma trận theo thứ tự từ trái qua phải, từ trên xuống,
không lặp lại ký tự trùng. Ký tự I và J xem như một
❖ Phần còn trống điền các ký tự còn lại của bảng chữ cái theo
thứ tự
Mã hóa Playfair
❑ Ý tưởng
❖ M được mã hóa theo từng cặp ký tự, nếu cuối cùng không
đủ cặp thì thêm vào một ký tự đệm để đủ cặp (vd: x/q)
❖ Nếu cặp ký tự được chọn giống nhau thì chèn vào giữa một ký
tự đệm và bắt cặp lại
❖ Ví dụ:
+ M: little
+ bắt cặp: li tq tl eq
Mã hóa Playfair
❑ Ý tưởng
❖ Mã hóa từng cặp ký tự dựa vào ma trận 5x5 theo quy tắc:
+ Nếu cặp ký tự nằm cùng dòng/cột thì thay mỗi ký tự bằng ký tự kế
tiếp trong cùng dòng/cột (xoay vòng lại nếu đến cuối dòng/cột)
+ Trường hợp còn lại thì 2 ký tự sẽ là 2 đỉnh đối diện qua 1 đường chéo
hình chữ nhật, thay lần lượt từng ký tự bằng ký tự ở đỉnh cùng dòng
hoặc cùng cột (tùy theo người sử dụng giải thuật nhưng phải nhất
quán)
Mã hóa Playfair
❑ Ý tưởng
Mã hóa Playfair
❑ Ví dụ: cho chuỗi M: “THUONG MAI DIEN TU”, mã hóa chuỗi đã
cho với playfair cipher với keyword là “MINH”.
❖ Bước 1:
+ Loại bỏ ký tự J, thêm keyword “MINH” vào ma trận sau đó
thêm lần lượt các chữ cái trong bảng bảng chữ cái alphabet
vào ma trận;
+ Chữ cái nào trùng với keyword thì bỏ qua, ta được ma trận X
sau:
Mã hóa Playfair
❑ Ví dụ:
M I N H A
❖ Bước 2: Tách các chữ cái
trong chuỗi M theo cặp, thêm B C D E F
X vào các cặp trùng và tiếp
G K L O P
tục tách (nếu có) .
❖ Ta được: Q R S T U
TH UO NG MA ID IE NT UX V W X Y Z
Mã hóa Playfair
❑ Ví dụ:
❖ Bước 3: Áp dụng nguyên tắc dưới đây cho chuỗi M và ma trận X
+ TH1: Nếu 2 chữ nằm cùng hàng, thay bởi các chữ bên phải
+ TH2: Nếu 2 chữ nằm cùng cột, thay bởi các chữ bên dưới
+ TH3: Các trường hợp khác, mỗi chữ cái được thay bởi chữ cái khác cùng
hàng, trên cột chữ cái cùng cặp
Mã hóa Playfair
❑ Ví dụ: + IE => HC (TH3)
❖ Ta được: + NT => HS (TH3)
+ TH => YE (TH2) + UX => SZ (TH2)
+ UO => TP (TH3)
+ NG => ML (TH3)
+ MA => IM (TH1)
+ ID => NC (TH3)
Kết luận: Cipher Text: YETPMLIMNCHCHSSZ
Mã hóa Playfair
❑ Bài tập:
1. Cho chuỗi M: “DAI HOC CONG NGHIEP TP HCM”, mã hóa chuỗi đã cho
với playfair cipher với keyword là “DHTMDT”.
2. Cho chuỗi AN TOAN THONG TIN, từ khóa MONARCHY mã hóa chuỗi đã
cho với playfair cipher
One-Time Pad (OTP)
❑ One Time Pad - OTP (Mã Một Lần) là một trong số rất ít những
cryptosystem đạt được độ bảo mật tuyệt đối, kể cả đối với tiêu
chuẩn ngày nay!
❑ One-time pad là một kỹ thuật mã hóa không thể bị bẻ khóa,
nhưng yêu cầu sử dụng khóa chia sẻ trước dùng một lần không
nhỏ hơn thông điệp được gửi.
❑ Trong kỹ thuật này, một bản rõ được ghép nối với một khóa bí
mật ngẫu nhiên
One-Time Pad (OTP)
❑ Phép XOR
One-Time Pad (OTP)
❑ One-Time Pad:
❖ Mã hóa:

E(M, k) = M XOR k = C
❖ Giải mã

D(C, k) = C XOR k = (M XOR k) XOR k = M


One-Time Pad (OTP)
❑ One-Time Pad:
❖ Với OTP, khóa k phải đáp ứng 3 điều kiện:
+ Độ dài của khóa phải bằng kích thước bản rõ.
+ Khóa phải được chọn hoàn toàn ngẫu nhiên (truly random).
+ Khóa chỉ được sử dụng một lần.
❖ Nếu thỏa mãn 3 điều kiện trên, hệ mã OTP sẽ là an toàn tuyệt đối (perfect
security) theo định lý của Clause Shannon. OTP sẽ cho ta tốc độ tính toán
rất nhanh
One-Time Pad (OTP)
❑ Ý tưởng
❖ Chuyển dữ liệu sang dạng nhị phân (đây là plaintext).
❖ Sinh ngẫu nhiên một mảng dữ liệu nhị phân với chiều dài bằng chiều dài
của plaintext (gọi đây là pad).
❖ XOR từng bit trong plaintext với bit ở vị trí tương ứng trong pad để được
dữ liệu mã hóa (gọi đây là cipher).
❖ Để lấy plaintext từ cipher, ta chỉ cần thực hiện XOR cipher với pad.
One-Time Pad (OTP)
❑ Mã hóa One-Time Pad:
❖ Ví dụ:
One-Time Pad (OTP)
❑ Giải mã One-Time Pad:
❖ Ví dụ:
Mã DES (Data Encryption Standard)
❑ DES được công nhận vào năm 1977 bởi Viện nghiên cứu quốc
gia về chuẩn của Mỹ (NIST –National Institut of Standards and
Technology), chuẩn hóa 1979.
❑ Là mã thuộc hệ mã Feistel gồm 16 vòng, ngoài ra DES có thêm
một hoán vị khởi tạo trước khi vào vòng 1 và một hoán vị khởi
tạo sau vòng 16
❑ Kích thước của khối là 64 bít.
❑ Ví dụ bản tin “meetmeafterthetogaparty” biểu diễn theo mã ASCII
thì mã DES sẽ mã hóa làm 3 lần, mỗi lần 8 chữ cái (64 bít):
meetmeaf - tertheto - gaparty.
Mã DES (Data Encryption Standard)
❑ Đặc điểm của thuật toán DES
❖ Khóa dùng trong DES có độ dài toàn bộ là 64 bit. Tuy nhiên chỉ có 56 bit
thực sự được sử dụng; 8 bit còn lại chỉ dùng cho việc kiểm tra.
❖ Mỗi vòng của DES dùng khóa con có kích thước 48 bít được trích ra từ
khóa chính. 64 bit M 64 bit C
DES Encryption
❖ Des xuất ra bãn mã 64 bit.
❖ Mã hoá và giải mã được sử dụng cùng một khoá.
❖ DES được thiết kế để chạy trên phần cứng
56 bits
Mã DES (Data Encryption Standard)
❑ Mô tả thuật toán
❖ DES nhận vào một thông điệp M 64 bit, một khóa K 56 bit và cho ra một
bảng mã C 64 bit.
+ Bước 1: áp dụng một phép hoán vị( bit khởi tạo IP vào M cho ra M’: M’=IP(M).
+ Bước 2: chia M’ thành hai phần: nửa trái L0 =32 bit và nửa phải R0=32 bit.
+ Bước 3: thi hành các phép toán sau với i = 1, 2,…16 (có 16 vòng).
• Li = Ri-1
• Ri = Li-1  f(Ri-1, Ki)
+ Cuối cùng hoán vị với phép hoán vị( IP-1) để được bản mã cuối cùng C.
Mã DES (Data Encryption Standard)
❑ Mô tả thuật toán
❖ DES nhận vào một thông điệp M
64 bit, một khóa K 56 bit và cho
ra một bảng mã C 64 bit.
Mã DES (Data Encryption Standard)
❑ Mô tả thuật toán
❖ Bước 1: áp dụng một phép hoán vị( bit khởi tạo IP vào M cho ra M’:
M’=IP(M).
❖ Bước 2: chia M’ thành hai phần: nửa trái L0 =32 bit và nửa phải R0=32
bit.
❖ Bước 3: thi hành các phép toán sau với i = 1, 2,…16 (có 16 vòng).
+ Li = Ri-1
+ Ri = Li-1  f(Ri-1, Ki)
❖ Cuối cùng hoán vị với phép hoán vị( IP-1) để được bản mã cuối cùng C.
Câu hỏi và bài tập
1. Độ an toàn của DES
2. Tìm hiểu Mã Triple DES
3. Tìm hiểu Mã AES (Advanced Encryption Standard)
4. Mã hóa đối xứng hiện đại và mã hóa đối xứng cổ điển khác nhau
ở điểm nào.
5. Mã dòng hoạt động dựa trên nguyên tắc thay thế hay hoán vị?
6. Hệ mã Fiestel có thuận lợi gì trong việc thực hiện mã khối?
7. Tại sao mã hóa DES lại dùng các phép biến đổi phức tạp chỉ để
mã hóa một khối 64 bít?

You might also like