logo
banner
avatar
Nhabachoc Dũng
Thứ năm 2023
Mã hoá cổ điển 🔐 món quà đau não đầu tiên của con người 🤯
# javascript
# html
# blockchain

Chao xìn mọi người lại là mình đây Nhabachoc KAD.

Bài viết này có dành cho bạn?

  • Muốn biết xuất phát điểm của bảo mật thông tin

Hành trang cần chuẩn bị:

  • Một cái đầu lạnh và trái tim nóng

Cùng tắt đèn bật ý tưởng, gét go 🪄

1. Dịch vòng

Đơn giản chỉ là gán A-Z tương ứng 0-25

A

B

C

D

E

F

G

H

I

J

K

L

M

0

1

2

3

4

5

6

7

8

9

10

11

12

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

13

14

15

16

17

18

19

20

21

22

23

24

25

chúng ta muốn ẩn giấu đoạn văn gốc trong phương pháp này sử dụng cách tịnh tiến ký tự với k là bước tịnh tiến. VD A với k = 5 ta có:

  • A tương ứng với 0 ⇒ 0 + k = 0 + 5 = 5 tương ứng với F

rất dễ nhưng nếu là Y thì sao? Chúng ta sẽ xoay một vòng 24 → 25 → 0 → 1 → 2 → 3.

Khi mà phép toán cứ quay theo 1 chu kỳ thì ta dùng phương thức mod (tìm số dư của phép chia 2 số). ****VD:

  • Phép tính 2 mod 5 = 2 vì 2 chia 5 bằng 0 dư 2

  • Phép tính 9 mod 5 = 4 vì 9 chia 5 bằng 1 dư 4

  • Phép tính 10 mod 5 = 0 vì 10 chia 5 bằng 2 dư 0

⇒ Ta thấy ngay với bảng chữ là hữu hạn ký tự (26) vì vậy không thể tịnh tiến quá 26 nên sẽ xoay vòng thành n chu kỳ và ta chỉ cần quan tâm đến phần lẻ không quay hết chu kỳ.

k = 3 được gọi là mã Ceasar đã từng được Julius Ceasar - một danh tướng thời La mã sử dụng

2. Thay thế

Đúng với cái tên thay thế là thay thế từ ký tự này sang ký tự khác với các ký tự được quy ước từ trước. Chia ra làm:

  • 1 bảng mã hoá và 1 bảng giải mã

  • Chữ thường (bản rõ) ⇒ mã hoá ⇒ chữ in hoa (bản mã) và ngược lại

Bảng mã hoá:

a

b

c

d

e

f

g

h

i

j

k

l

m

X

N

Y

A

H

P

O

G

Z

Q

W

B

T

n

o

p

q

r

s

t

u

v

w

x

y

z

S

F

L

R

C

V

M

U

E

K

J

D

I

Bảng giải mã:

A

B

C

D

E

F

G

H

I

J

K

L

M

d

l

r

y

v

o

h

e

z

x

w

p

t

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

b

g

f

j

q

n

m

u

s

k

a

c

i

vậy chúng ta chỉ có a ⇒ X thôi ư? Thế thì lại dễ đoán quá rồi, nó đi ngược lại với tiêu chí mã hoá là ko cho bên kia đoán được một cách dễ dàng. a có thể là Y, có thể là Z, … Ta có thể đúc kết đc kết luận: Có tổng 26! hoán vị

Vì sao ư. Mình giải thích nha:

  • a có 26 trường hợp (vì là ký tự đầu tiên được chọn)

  • b có 25 trường hợp trừ a đã chọn ra

  • c có 24 trường hợp trừ a, b đã chọn ra

⇒ vậy có tổng cộng có 262524*…*1 = 26! trường hợp và bạn có thể hiểu rằng sẽ có 26! (1 số rất to) cách (bảng) để mã hoá, giải mã

3. Affine

Đầu tiên thì hệ mã hoá này lấy ý tưởng từ phần tử khả nghịch

a*a-1 = 1 mod m

VD: 3 và 9 là 2 số nghịch đảo với Z26 vì 3*9 = 27. 27 mod 26 = 1 mod 26

Tập khoá K = {k=(a;b) thuộc Z26 x Z26 : UCLN(a,26) = 1}

⇒ có tổng cộng 312 trường hợp khoá:

  • a có 12 trường hợp (phi m)

  • b có 26 trường hợp (26 ký tự)

Sau khi đã hiểu về phần tử khả nghịch và có hệ số a và b. Chúng ta kết hợp lại thành biểu thức:

  • y = (ax + b) mod 26 ( với x là bản rõ, y là bản mã)

bình thường chúng ta thường thấy có biểu thức ax + b = y, nhưng ta lại bị giới hạn y trong 26 ký tự tương ứng với (0-25) ⇒ cần thêm mod

  • x = (a-1y - b) mod 26

Tổng kết

Sau khi nhịn nhận tổng quan 3 phương pháp cổ điển ta thấy (không nói đến việc dễ giải mã vì nó cổ điển mà):

  • Phương pháp thay thế là phương pháp có K (tập hợp của khoá k) rộng nhất, bao trùm 2 phương pháp còn lại nhưng cần truyền tin cần 2 bảng (cồng kềnh không phù hợp khi truyền thông tin bí mật).

  • Phương pháp dịch vòng thì gọn nhẹ hơn khi chi cần đưa khoá k gọn nhẹ nhưng lại bị giới hạn K trong 26 (khoá k chạy 0 → vô cùng nhưng mod 26 nên cuối cùng cũng bị giới hạn trong 0-26).

  • Phương pháp affine thì vừa gọn nhẹ đưa khoá k gồm a,b và K thì rộng hơn 312.

Đọc tiếp
Cách tạo ra một database lưu trữ dữ liệu từ đầu
Khổng Anh Dũng - Thứ5 15
Cách tạo ra một database lưu trữ dữ liệu từ đầu
Khổng Anh Dũng - Thứ5 15
Cách tạo ra một database lưu trữ dữ liệu từ đầu
Khổng Anh Dũng - Thứ5 15