You are on page 1of 81

LOGO

www.dtu.edu.vn

Chương 2
Mã hóa và các kỹ thuật nền tảng
GV: Nguyễn Minh Nhật
Email: nguyenminhnhat@duytan.edu.vn
Mob: 0905125143

www.dtu.edu.vn
Mục tiêu LOGO

 Trong chương này, bạn sẽ được giới thiệu về


các khái niệm, lý thuyết và các khía cạnh
thực tế của mã hóa.
 Sẽ tập trung nhiều hơn vào các khía cạnh có
liên quan cụ thể trong bối cảnh của công
nghệ blockchain. Nhờ các các khái niệm này
các bạn sẽ hiểu hơn cơ chế bảo mật trong
thị trường tài chính hiện tại

www.dtu.edu.vn Chương 2 - Mã hóa và các


Nội dung LOGO

1 Giới thiệu

2 Khái niệm

3 Cơ bản về mã hóa

4 Mã hóa đối xứng

5 Mã hóa bất đối xứng

www.dtu.edu.vn Chương 2 - Mã hóa và các


Giới thiệu LOGO

 Cryptography (Mật mã học): là khoa học làm cho


thông tin an toàn trước sự hiện diện của kẻ thù. Nó
cung cấp một phương tiện liên lạc an toàn khi có
đối thủ với các nguồn lực vô hạn được giả định.
 Mật mã được sử dụng để mã hóa dữ liệu để nếu bị
kẻ thù đánh chặn, dữ liệu sẽ vô nghĩa đối với chúng
nếu không có sự giải mã, điều này cần có khóa bí
mật.
 Mật mã thường được sử dụng để cung cấp dịch vụ
bảo mật. Về bản chất, nó không thể được coi là
một giải pháp hoàn chỉnh nhưng đóng vai trò như
một khối xây dựng quan trọng trong một hệ thống
bảo mật lớn hơn để giải quyết một vấn đề bảo mật.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 Về toán học
 Tập hợp (SET)
Tập hợp là tập hợp các đối tượng riêng biệt, ví dụ, X
= {1, 2, 3, 4, 5}.
 Nhóm (GROUP)
Nhóm là một tập hợp giao hoán với một phép toán
kết hợp hai phần tử của tập hợp. Hoạt động nhóm
được đóng và được liên kết với một phần tử nhận
dạng được xác

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 Về toán học
 Đóng (closed) có nghĩa là nếucác phần tử A và B
nằm trong tập hợp, thì phần tử kết quả sau khi
thực hiện thao tác trên các phần tử cũng nằm trong
tập hợp đó.
 Liên kết (Associative) có nghĩa là việc nhóm các
yếu tố không ảnh hưởng đến kết quả của hoạt
động.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 Trường (FIELD)
Trường là một tập hợp chứa cả nhóm cộng và nhóm
nhân. Chính xác hơn, tất cả các phần tử trong tập
hợp tạo thành một nhóm cộng và nhân.
Nó thỏa mãn các tiên đề cụ thể cho phép cộng và
phép nhân. Đối với tất cả các hoạt động của nhóm,
luật phân phối cũng được áp dụng. Luật quy định
rằng cùng một tổng hoặc sản phẩm sẽ được tạo ra
ngay cả khi bất kỳ điều khoản hoặc yếu tố nào được
sắp xếp lại.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 Trường hữu hạn (A FINITE FIELD)


Trường hữu hạn là trường có tập hợp hữu hạn các
phần tử. Còn được gọi là trường Galois, những cấu
trúc này có tầm quan trọng đặc biệt trong mật mã vì
chúng có thể được sử dụng để tạo ra các kết quả
chính xác và không có lỗi của các phép toán số học.
Ví dụ, các trường hữu hạn nguyên tố được sử dụng
trong mật mã đường cong elliptic để xây dựng bài
toán logarit rời rạc.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 Lực lượng (ORDER)


Đây là số phần tử trong một trường. Nó còn được gọi
là cardinality của trường.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 TRƯỜNG SỐ NGUYÊN TỐ (PRIME FIELDS)


Đây là một trường hữu hạn với một số nguyên tố. Nó
có các quy tắc cụ thể cho phép cộng và phép nhân,
và mỗi phần tử khác không trong trường có một
nghịch đảo. Các phép toán cộng và nhân được thực
hiện theo modulo p.
 Vòng (RING)
Nếu có nhiều hơn một phép toán có thể được xác định
trên một nhóm abel, nhóm đó sẽ trở thành một vòng.
Ngoài ra còn có một số thuộc tính nhất định cần được
thỏa mãn. Một vòng phải có các thuộc tính đóng, kết
hợp và phân phối.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 AN ABELIAN GROUP
Một nhóm abel được hình thành khi phép toán trên
các phần tử của một tập hợp là giao hoán. Luật giao
hoán về cơ bản có nghĩa là việc thay đổi thứ tự của
các phần tử không ảnh hưởng đến kết quả của phép
toán, ví dụ, A X B = B X A.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 A CYCLIC GROUP
Nhóm tuần hoàn là một loại nhóm có thể được tạo bởi
một phần tử duy nhất được gọi là trình tạo nhóm. Nói
cách khác, nếu thao tác nhóm được áp dụng nhiều lần
cho một phần tử cụ thể trong nhóm, thì tất cả các
phần tử trong nhóm có thể được tạo ra.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 MODULAR ARITHMETIC
Còn được gọi là số học đồng hồ, các con số trong số
học mô-đun quấn quanh khi chúng đạt đến một số cố
định nhất định. Số cố định này là một số dương được
gọi là môđun và tất cả các hoạt động được thực hiện
liên quan đến số cố định này. Tương tự với một chiếc
đồng hồ, có các số từ 1 đến 12. Khi đến 12, số 1 bắt
đầu lại. Nói cách khác, số học này xử lý phần còn lại
sau phép toán chia. Ví dụ: 50 mod 11 là 6 vì 50/11
để lại phần còn lại của 6.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 Về mật mã
 Tính an toàn (confidentiality): Bảo đảm thông tin
không bị lộ hoặc bị đánh cắp bởi những cá nhân
không được phép.
 Tính toàn vẹn dữ liệu (Data integrity ) : Bảo đảm
dữ liệu không bị thay đổi hay biến dạng trong quá
trình truyền hay sử dụng các các thuật toán mã hóa.
 Tính xác thực (Authentication ): Đảm bảo các
thông điệp được gởi từ người gởi cho người nhận
đúng là của người nhận. Trong thực các mạng máy
tính cá nhân hoặc công cộng ( kể cả mạng Internet)
xác thực thông thường được thực hiện qua đăng

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

nhập mật khẩu kèm theo thông tin về nguồn dữ liệu


đăng ký ban đầu của người gởi như : người tạo, ngày
tạo, tần số bắt phím v.v…
 Tính không từ chối (Non-repudiation) : bảo đảm
rằng một chuyển giao bài viết đã được gửi và nhận
của các bên có quyền đòi được gửi và nhận tin
nhắn. Nonrepudiation là một cách để bảo đảm rằng
người gửi một tin nhắn không thể từ chối sau này
có được gửi tin nhắn và rằng người nhận có thể từ
chối không có nhận được tin nhắn.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Một số khái niệm cơ bản LOGO

 Về mật mã
 Plaintext:thông điệp gốc (original message)
 Ciphertext: mã hóa message (tin nhắn được mã hóa)
 Cipher: thuật toán chuyển bản rõ sang bản mã
 Key: thông tin được sử dụng trong mật mã chỉ người gửi / người
nhận mới biết
 Encipher (mã hóa): chuyển đổi bản rõ sang bản mã
 Decipher (giải mã): khôi phục bản mã từ bản rõ
 Cryptography: nghiên cứu các nguyên tắc / phương pháp mã hóa
 Cryptanalysis (phá mã): nghiên cứu các nguyên tắc / phương
pháp giải mã bản mã mà không cần biết khóa
 Cryptology: nghiên cứu lĩnh vực của cả cryptography và
cryptanalysis

www.dtu.edu.vn Chương 2 - Mã hóa và các


Cơ bản về mật mã LOGO

 Nguyên thủy mật mã là các khối xây dựng cơ bản


của một hệ thống hoặc giao thức bảo mật.
 Giao thức bảo mật (security protocol) là một
tập hợp các bước được thực hiện để đạt được các
mục tiêu bảo mật cần thiết bằng cách sử dụng các
cơ chế bảo mật thích hợp.Nhiều loại giao thức bảo
mật đang được sử dụng, chẳng hạn như giao thức
xác thực, giao thức không thoái thác (non-
repudiation protocols) và giao thức quản lý khóa
(key management protocols.)

www.dtu.edu.vn Chương 2 - Mã hóa và các


Cơ bản về mật mã LOGO

 Một mô hình mật mã chung được thể hiện trong sơ


đồ sau:

Hình 2.1. Mô hình giao tiếp cơ bản cho mã hóa

www.dtu.edu.vn Chương 2 - Mã hóa và các


Cơ bản về mật mã LOGO

1. Đọc thông điệp


2. Tìm khóa và mã hóa tất cả thông điệp với khóa đã
chọn
3. Thay đổi thông điệp của Alice và chuyển đến Bob
4. Kẻ giả mạo Eva có thể thực hiện tấn công vào mô
hình giao tiếp này ở các vị trí (1),(2),(3). Từ mô hình
giao tiếp trên, ta có thể hình dung một quy trình mã
hóa an toàn dữ liệu tổng quát như sau (Hình 2.2):

www.dtu.edu.vn Chương 2 - Mã hóa và các


Cơ bản về mật mã LOGO

Trong đó:
- M: Văn bản gốc (Plaintext)
- C: Văn bản được mã hóa (Ciphertext)
- E: Hàm mã hóa (Encryption Function)
- D: Hàm giải mã (Decryption Function)
www.dtu.edu.vn Chương 2 - Mã hóa và các
Cơ bản về mật mã LOGO

 Có 2 yêu cầu để đảm bảo sử dụng cho mã hóa khóa đối


xứng này là:
 Có một thuật tóan encryption tốt
 Có một khóa bí mật chỉ đươc biết bởi người gởi/nhận

 Do đó, việc giữ bí mật khóa là đủ để đảm bảo để bảo mật
cho thông điệp đã mã hóa
 Có quan hệ phụ thuộc giữa plaintext X, ciphertext Y, key K,
encryption algorithm EK, decryption algorithm DK.
Y = EK(X)
X = DK(Y)
 Cung cấp một kênh bí mật để phân phát key

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa đối xứng (Symmetric Encryption)


 Khóa mã hóa dữ liệu là khóa giống nhau ở 2 đầu kênh
truyền. Nghĩa là quá trình mã hóa và giải mã sử dụng chung
1 khóa (public key) khóa phải được giữ bí mật tuyệt
đối
 Khóa phải được thiết lập hoặc thỏa thuận trước khi trao đổi
dữ liệu giữa các bên giao tiếp. Đây là lý do nó còn được gọi
là Hệ mật mã khóa bí mật (secret key cryptography)

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa đối xứng (Symmetric Encryption)


 Hệ mật sẽ bao gồm:
 Bản rõ (plaintext-M): bản tin được sinh ra bởi bên gửi
 Bản mã hóa (ciphertext-C): bản tin che giấu thông tin của
bản rõ, được gửi tới bên nhận qua một kênh không bí
mật
 Khóa (Ks): nó là giá trị ngẫu nhiên và bí mật được chia
sẻ giữa các bên trao đổi thông tin và được tạo ra từ:
o Bên thứ 3 được tin cậy tạo và phân phối tới bên gửi và bên nhận
o Hoặc, bên gửi tạo ra và chuyển cho bên nhận

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa đối xứng (Symmetric Encryption)


 Cơ chế hoạt động:
 Người gửi sử dụng khóa chung (Ks) để mã hóa
thông tin rồi gửi cho nguời nhận.
 Người nhận nhận được thông tin đó sẽ dùng chính
khóa chung (Ks) để giải mã.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

   hóa đối xứng (Symmetric Encryption)


 Mã
 Hạn chế:
 Nếu bị mất hoặc bị đánh cắp bởi hacker sẽ bị lộ thông
tin, bảo mật không cao.
 Cần kênh bí mật để chia sẻ khóa bí mật giữa các bên
 Để đảm bảo liên lạc an toàn cho tất cả mọi người trong
một nhóm gồm n người  cần tổng số lượng lớn khóa là
n(n-1)/2 xấp xĩ
 Khó ứng dụng trong các hệ thống mở.
 Không thể dùng cho mục đích xác thực hay mục đích
chống thoái thác được.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Các chế độ mã hóa LOGO

 Mã hóa đối xứng (Symmetric Encryption)


 Một vài thuật tóan mã hóa khối đối xứng, như:
 Mã hóa khối: DES, AES, Triple-DES, Blowfish
 Mã hóa dòng: RC4, RC5
Ví dụ: Để mã hóa WIFI thì người ta sử dụng các giao
thức bảo mật:
+ WEP: Dùng thuật toán DES, không an toàn
+ WAP2,3: Dùng thuật toán AES an toàn cao

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa dòng (STREAM CIPHERS)

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa dòng (STREAM CIPHERS)


 Với hệ mã dòng(stream cipher) là mật mã khóa đối
xứng, các chữ trên văn bản rõ được kết hợp với một
luồng chữ số mật mã giả ngẫu nhiên gọi là dòng
khóa (Key Stream).
 Trong mật mã luồng, mỗi chữ số bản rõ được mã hóa lần
lượt với chữ số tương ứng của dòng khóa, để tạo ra một
chữ số của luồng bản mã.
 Trong thực tế, một chữ số thường là một bit và phép toán
kết hợp là XOR.
 Mật mã dòng được sử dụng rộng rãi nhất là RC4.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa khối (BLOCK CIPHERS)


Hoạt động đơn giản của mật mã khối như sau:

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa khối (BLOCK CIPHERS)


 Mật mã khối là một thuật toán mật mã đối xứng hoạt động
trên một khối dữ liệu có kích thước cố định sử dụng khóa bí
mật được chia sẻ.
 Mật mã khối thường được xây dựng bằng cách sử dụng
chiến lược thiết kế được gọi là mật mã Fiestel. Các mật mã
khối gần đây, chẳng hạn như AES (Rijndael) đã được xây
dựng bằng cách sử dụng kết hợp thay thế và hoán vị được
gọi là mạng thay thế-hoán vị (substitution-permutation
network - SPN). Mật mã Fiestel dựa trên mạng Fiestel, là
một cấu trúc được phát triển bởi Horst Fiestel.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa khối (BLOCK CIPHERS)


 Cấu trúc này dựa trên ý tưởng kết hợp nhiều vòng hoạt
động lặp đi lặp lại để đạt được các thuộc tính mật mã mong
muốn được biết đến như sự nhầm lẫn và lan truyền. Mạng
Fiestel hoạt động bằng cách chia dữ liệu thành hai khối (trái
và phải) và xử lý các khối này thông qua các hàm.
 Một ưu điểm chính của việc sử dụng mật mã Fiestel là các
hoạt động mã hóa và giải mã gần như giống hệt nhau và chỉ
yêu cầu đảo ngược quá trình mã hóa để đạt được giải mã.
 DES, AES là một ví dụ điển hình về mật mã dựa trên Fiestel

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa khối (BLOCK CIPHERS)


 Có các chế độ hoạt động khác nhau cho mật mã khối là
 Sổ mã điện tử (Electronic Code Book - ECB),
 Chuỗi khối mật mã (Cipher block chaining - CBC),
 Chế độ phản hồi đầu ra (Output Feedback Mode - OFB)
 Chế độ bộ đếm (Counter mode - CTR).

www.dtu.edu.vn Chương 2 - Mã hóa và các


Các chế độ mã hóa LOGO

 Chế độ mã hóa chặn (Block encryption mode)


Trong chế độ này, bản rõ được chia thành các khối có độ dài
cố định tùy thuộc vào loại mật mã được sử dụng và sau đó
chức năng mã hóa được áp dụng trên mỗi khối.
 Chế độ tạo dòng khóa (Keystream generation
modes)
Trong chế độ này, chức năng mã hóa tạo ra một dòng khóa
sau đó được XOR với dòng văn bản rõ để đạt được mã hóa.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Các chế độ mã hóa LOGO

 Chế độ xác thực tin nhắn (Message authentication


modes)
Trong chế độ này, mã xác thực tin nhắn được tính là kết quả
của một chức năng mã hóa. MAC về cơ bản là một tổng kiểm
tra mật mã cung cấp một dịch vụ toàn vẹn. Phương pháp phổ
biến nhất để tạo MAC bằng cách sử dụng mật mã khối là
CBC-MAC, trong đó một số phần của khối cuối cùng của chuỗi
được sử dụng làm MAC.
 Băm mật mã (Cryptographic hashes)
 Các hàm băm về cơ bản được sử dụng để nén một thông
báo thành một thông báo có độ dài cố định. Trong chế độ
này, mật mã khối được sử dụng như một hàm nén để tạo ra
một hàm băm của văn bản thuần túy.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Các chế độ mã hóa LOGO

 Sổ mã hóa điện tử (Electronic code book)


 Đây là một phương thức hoạt động cơ bản trong đó dữ liệu
được mã hóa được tạo ra do áp dụng từng thuật toán mã
hóa riêng biệt cho từng khối văn bản thuần túy. Đây là chế
độ đơn giản nhất nhưng không nên được sử dụng trong
thực tế vì nó không an toàn và có thể tiết lộ thông tin:

www.dtu.edu.vn Chương 2 - Mã hóa và các


Các chế độ mã hóa LOGO

 Mã hóa chuỗi khối (Cipher block chaining)


 Trong chế độ này, mỗi khối văn bản thuần túy được XOR
với khối được mã hóa trước đó. Chế độ CBC sử dụng vectơ
khởi tạo IV để mã hóa khối đầu tiên. Khuyến cáo nên chọn
ngẫu nhiên IV:

www.dtu.edu.vn Chương 2 - Mã hóa và các


Các chế độ mã hóa LOGO

 Chế độ truy cập (Counter mode)


Chế độ CTR sử dụng hiệu quả mật mã khối làm mật mã luồng.
Trong trường hợp này, một nonce duy nhất được cung cấp
được nối với giá trị bộ đếm để tạo ra một luồng khóa:

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

 DES (Data Encryption Standard) là một phương


pháp mật mã hóa được FIPS (Tiêu chuẩn Xử lý
Thông tin Liên bang Hoa Kỳ) chọn làm chuẩn chính
thức vào năm 1976. Sau đó chuẩn này được sử
dụng rộng rãi trên phạm vi thế giới.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

 Ý tưởng
 Hàm mã hóa sắp xếp một đoạn 64 bit (“0” và “1”)
của văn bản rõ ở đầu vào thành 64 bit mã hóa ở
đầu ra với việc sử dụng khóa 56 bit.
 Trong 64 bit này có 56 bit được phát sinh ngẫu
nhiên và được sử dụng trực tiếp trong thuật toán
 8 bit còn lại không được dùng trong thuật toán mà
sử dụng để kiểm tra lỗi,
 Kiểm tra tính chẵn lẻ trong mỗi 8 bit – byte của
key, tức là sẽ có một số lẻ các bit 1 trong mỗi 8 bit
của key.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

 Dữ liệu có thể được tìm thấy trở lại từ mật mã chỉ


duy nhất bằng cách sử dụng đúng key như đã dùng
để mã hóa nó. Nhận 1 mật mã không đúng cách dù
vẫn được biết đến như 1 thuật toán, nhưng có key
không đúng thì sẽ không thể nhận lại được dữ liệu
như ban đầu.
 Tuy nhiên, nếu ai đó có được key và thuật toán thì
có thể dễ dàng giải mã dữ liệu và thu được dữ liệu
ban đầu.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

 Thuật toán DES đơn giản


Thuật toán mã hóa bao gồm 3 giai đoạn:
Giai đoạn 1:
Với từ cần mã hóa x có độ dài 64 bit, tạo ra từ x0
(cũng có độ dài 64 bit) bằng cách hoán vị các bit
trong từ x theo một hoán vị cho trước IP (Initial
Permutation).
Biểu diễn x0 = IP(x) = L0R0, L0 gồm 32 bit bên trái của
x0, R0 gồm 32 bit bên phải của x0
L 0 R 0

x0
Biểu diễn dãy 64 bit x thành 2 thành phần L và R

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

Giai đoạn 2:
 Xác định các cặp từ 32 bit Li, Ri với 1 i  16 theo
quy tắc sau:
 Li = Ri-1
 Ri = Li-1 f (Ri-1, Ki)
 Với  : biểu diễn phép tóan XOR trên 2 dãy bit
 K1, K2, ..., K16 là các dãy 48 bit phát sinh từ khóa K
cho trước (Trên thực tế, mỗi khóa Ki được phát sinh
bằng cách hoán vị các bit trong khóa K cho trước).

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

Giai đoạn 2:
L i- 1 R i- 1

f K i

L i R i

Quy trình phát sinh dãy 64 bit LiRi từ dãy 64

bit Li-1Ri-1và khóa Ki

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

Giai đoạn 3:
 Áp dụng hoán vị ngược IP-1 đối với dãy bit R16L16,
thu được từ y gồm 64 bit. Như vậy, y = IP-1 (R16L16)
 Hàm f được sử dụng bước 2 sẽ là: IP-1
 Hàm f có gồm 2 tham số: Tham số thứ nhất A là
một dãy 32 bit, tham số thứ hai J là một dãy 48
bit. Kết quả của hàm f là một dãy 32 bit. Các bước
xử lý của hàm f(A, J)như sau:

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

Giai đoạn 3:

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

Giai đoạn 3:
 Tham số thứ nhất A (32 bit) được mở rộng thành
dãy 48 bit bằng hàm mở rộng E. Kết quả của hàm
E(A) là một dãy 48 bit được phát sinh từ A bằng
cách hoán vị theo một thứ tự nhất định 32 bit của
A, trong đó có 16 bit của A được lập lại 2 lần trong
E(A).Thực hiện phép toán XOR cho 2 dãy 48 bit
E(A) và J, ta thu được một dãy 48 bit B.
 Biểu diễn B thành từng nhóm 6 bit như sau:B =
B1B2B3B4B5B6B7B8

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

Giai đoạn 3:
 Sử dụng 8 ma trận S1, S2,..., S8, mỗi ma trận Si có
kích thước 416 và mỗi dòng của ma trận nhận đủ
16 giá trị từ 0 đến 15.
 Xét dãy gồm 6 bit Bj = b1b2b3b4b5b6, Sj(Bj) được xác
định bằng giá trị của phần tử tại dòng r cột c của
Sj, trong đó, chỉ số dòng r có biểu diễn nhị phân là
b1b6, chỉ số cột c có biểu diễn nhị phân là b2b3b4b5.
 Bằng cách này, ta xác định được các dãy 4 bit Cj =
Sj(Bj), 1  j  8.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Data Encryption Standard (DES) LOGO

Giai đoạn 3:
 Tập hợp các dãy 4 bit Cj lại. ta có được dãy 32 bit C
= C1C2C3C4C5C6C7C8.
 Dãy 32 bit thu được bằng cách hoán vị C theo một
quy luật P nhất định chính là kết quả của hàm F(A,
J) các hàm được sử dụng trong DES.

www.dtu.edu.vn Chương 2 - Mã hóa và các kỹ


Data Encryption Standard (DES) LOGO

 Minh họa
1. Tạo key (tạo khóa mã hóa/giải mã)
 String SECRET_KEY = "12345678";
 SecretKeySpec skeySpec = new SecretKeySpec(SECRET_KEY.getBytes(),
"DES");
2. Cipher Info
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5PADDING");
Lưu ý:
 DES = Data Encryption Standard.
 ECB = Electronic Codebook mode.
 PKCS5Padding = PKCS #5-style padding.
 3. Mã hóa
String original = "stackjava.com";
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5PADDING");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] byteEncrypted = cipher.doFinal(original.getBytes());
String encrypted = Base64.getEncoder().encodeToString(byteEncrypted);

www.dtu.edu.vn
Data Encryption Standard (DES) LOGO

4. Giải mã
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] byteDecrypted = cipher.doFinal(byteEncrypted);
String decrypted = new String(byteDecrypted);
5. Kết quả
original text: stackjava.com
encrypted text: xvHjRlZOjIxmi+R3h4/gUw==
decrypted text: stackjava.com

www.dtu.edu.vn Chương 2 - Mã hóa và các kỹ thuật nền tảng


Data Encryption Standard (DES) LOGO

 Xem thêm ở:
1. https://stackjava.com/demo/code-java-vi-du-ma-hoa-giai-ma
-voi-des.html
2. http://
nguyenquanicd.blogspot.com/2017/08/background-thuat-toan-
ma-hoa-va-giai-ma.html

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa khóa bất đối xứng (Non - Symmetric


Encryption)
 Sử dụng 1 cặp khóa gọi là khóa công khai (public key) và
khóa bí mật (private key).

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa khóa bất đối xứng (Non - Symmetric Encryption)


 Hệ mật mã bao gồm:
 Bản rõ (plaintext-M): bản tin được sinh ra bởi bên gửi
 Bản mật (ciphertext-C): bản tin che giấu thông tin của
bản rõ, được gửi tới bên nhận qua một kênh không bí
mật
 Khóa: Bên nhận có 1 cặp khóa:
+ Khóa công khai (Kub): công bố cho tất cả mọi người biết (kể
cả hacker)
+ Khóa riêng (Krb): bên nhận giữ bí mật, không chia sẻ cho
bất kỳ ai.
 Mã hóa (encrypt-E): C = E(Kub, M)
 Giải mã (decrypt): M = D(Krb, C) = D(Krb, E(Kub, M))

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa khóa bất đối xứng (Non - Symmetric


Encryption)
 Cơ chế hoạt động
 Người gửi(A) gửi thông tin đã được mã hóa bằng
khóa công khai (Kub) của người nhận(B) thông qua
kênh truyền tin không bí mật
 Người nhận(B) nhận được thông tin đó sẽ giải mã
bằng khóa riêng (Krb) của mình.
 Hacker cũng sẽ biết khóa công khai (Kub) của B tuy
nhiên do không có khóa riêng (Krb) nên Hacker
không thể xem được thông tin gửi.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Phân loại mã hóa LOGO

 Mã hóa khóa bất đối xứng (Non - Symmetric


Encryption)
 Ưu điểm
 Không cần chia sẻ khóa mã hóa(khóa công khai)
một cách bí mật  Dễ dàng ứng dụng trong các hệ
thống mở.
 Khóa giải mã(khóa riêng) chỉ có B biết  An toàn
hơn, có thể xác thực nguồn gốc thông tin
 n phần tử chỉ cần n cặp khóa.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

 Mô hình mã hóa công khai

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

 Mô hình mã hóa công khai


 Xét mô hình này ở mã hóa truyền thống, chỉ dùng 1
khóa để mã hóa và giải mã.
 Dùng chung cho cả người gởi (sender) và người nhận
(receiver)
 Nếu sử dụng khóa này để khóa giao tiếp thì được thỏa
thuận ở sender và receiver
 Là mã hóa khóa đối xứng(symmetric), người tham gia là
bình đẳng nhau.
 không được bảo vệ do có thể bị đánh cắp khi gởi qua
mạng.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

 Thuật toán mã hóa công khai (Public Key


Cryptography)
 Được đưa ra bởi Whitfield Diffie & Martin Hellman ở
Stanford Uni năm 1976.
 Là dạng mật mã hóa cho phép người sử dụng trao đổi
các thông tin mật mà không cần phải trao đổi
các khóa chung bí mật trước đó. 
 Sử dụng 1 cặp khóa có quan hệ toán học với nhau,
một khóa công khai (public key) & một khóa cá
nhân (private key)
 Khóa công khai, mọi người có thể được biết, có thể sử
dụng để mã hóa thông điệp và xác thực chữ ký (verify
signatures )

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

  Thuậttoán mã hóa công khai (Public Key


Cryptography)
 Khóa cá nhân (private-key), chỉ được bởi người
nhận, dùng để giải mã thông điệp, và tạo dấu trong
chữ ký điện tử. Đây là thuật toán mã hóa khóa bất
đối xứng (symmetric key), người tham gia là không
bình đẳng nhau.
C= E(P, ) và P =D(C, )

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

 Thuật toán mã hóa công khai (Public Key


Cryptography)
 Có 2 phương pháp cho mã hóa công khai
 Phương pháp 1:
o Người nhận (Bob) giữ khóa bí mật , còn khóa công khai
cho tất cả mọi người.
o Alice gởi cho Bob thì dùng khóa để mã hóa, Bob dùng
khóa để giải mã.
o Kẻ nghe trộm Trudy cũng biết khóa , nhưng không thể
giải mã được vì không có khóa .
 Phương pháp này an toàn vì Alice không cần trao đổi
khóa với Bob.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

 Thuật toán mã hóa công khai (Public Key Cryptography)


 Phương pháp 2:
o Người gởi (Alice) giữ khóa bí mật , còn khóa công khai cho
tất cả mọi người.
o Alice gởi cho Bob thì dùng khóa để mã hóa, Bob dùng
khóa để giải mã.
o Kẻ nghe trộm Trudy cũng biết khóa , nên có thể giải mã
được vì có khóa  Không bảo đảm an toàn.
o Vì Alice là người duy nhất biết được , nên nếu Trudy biết
khóa  Alice đã làm lộ khóa

 Mã hóa công khai kết hợp cả 2 phương pháp trên.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

 Thuật toán mã hóa công khai (Public Key


Cryptography)
 Có 2 mode làm việc:
 Bảo mật: Mã hóa bằng Public Key, giải mã bằng
private key
 Xác thực: Mã hóa bằng Private Key, giải mã bằng
private key  kiểm tra nguồn gốc người gởi thông
chữ ký số (Digital Signature)
 Mã hóa công khai được sử dụng rộng rãi nhất là RSA

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

 Đặc điểm của thuật toán mã hóa công khai


 Không thể làm được sự tính tóan để tìm khóa giải
mã nếu chỉ hiểu biết thuật tóan và khóa mã hóa
 Dễ dàng tính tóan được khi khóa liên quan
(relevant key) được biết
 Một trong 2 khóa có thể sử dụng để mã hóa với
khóa còn lại dùng để giải mã

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

www.dtu.edu.vn Chương 2 - Mã hóa và các


Mã hóa công khai - RSA LOGO

 Ứng dụng thuật toán mã hóa công khai


 Có thể phân loại dựa vào 3 quan điểm sử dụng sau:
 Mã hóa và giải mã (Encryption/decryption)  Cung
cấp bảo mật (SSL,VPN, SSH)
 Chữ ký số (Digital signatures)  Cung cấp xác thực
 Trao đổi khóa (Key exchange)  Hợp tác để trao
đổi khóa phiên.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Giới thiệu

3 tác giả của thuật toán mã hóa RSA

 Phát minh bởi Rivest, Shamir & Adleman (1977).


 Đây là thuật toán đầu tiên phù hợp với việc tạo ra
chữ ký điện tử đồng thời với việc mã hóa
 Đang được sử dụng phổ biến trong thương mại điện tử
www.dtu.edu.vn Chương 2 - Mã hóa và các
Thuật toán RSA LOGO

 Giới thiệu
 Cơ sở thuật toán RSA dựa trên tính khó của bài toán
phân tích các số lớn ra thừa số nguyên tố:
“ phân tích số nguyên n lớn thành tích của 2 thừa số
nguyên tố p và q”. Dựa trên phát hiện của Clifford Cocks
-1973
 Theo Cocks nếu n đủ lớn (khoảng 300 chữ số)  thực
hiện 10150300  Nếu dùng máy tính tốc độ 1 tỷ phép
tính/giây, ta sẽ mất chừng...tỷ tỷ tỷ năm để phân tích
số.
 1977 dựa vào ý tưởng trên, Rivest, Shamir và Adleman
(MIT) cuộc cách mạng trong lĩnh vực mật mã, cuộc
cách mạng mang tên RSA.
 RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào
năm 1983 (Số đăng ký 4.405.829)
www.dtu.edu.vn Chương 2 - Mã hóa và các
Thuật toán RSA LOGO

 Giới thiệu
 Mô tả hoạt động
 Sử dụng hai khóa: Khóa công khai(hay khóa công
cộng) và Khóa bí mật (hay khóa cá nhân).
 Mỗi khóa là những số cố định sử dụng trong quá
trình mã hóa và giải mã.
 Khóa công khai được công bố rộng rãi cho mọi người
và được dùng để mã hóa.
 Những thông tin được mã hóa bằng khóa công khai
chỉ có thể được giải mã bằng khóa bí mật tương
ứng. Nói cách khác, mọi người đều có thể mã hóa
nhưng chỉ có người biết khóa cá nhân (bí mật) mới
có thể giải mã được.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Quá trình thực hiện


 Mô tả hoạt động
 Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai
như sau:
o Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất
Alice có thể đọc được.
o Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã
mở sẵn và giữ lại chìa khóa.
o Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và
khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi
sập chốt khóa ngay cả Bob cũng không thể mở lại được-không đọc
lại hay sửa thông tin trong thư được nữa).
o Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa
của mình và đọc thông tin trong thư.
o Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai,
chiếc chìa khóa chính là khóa bí mật.
www.dtu.edu.vn Chương 2 - Mã hóa và các
Thuật toán RSA LOGO

 Quá trình tạo khóa


 Giả sử Alice và Bob cần trao đổi thông tin bí mật
thông qua một kênh không an toàn (ví dụ như
Internet). Với thuật toán RSA, Alice đầu tiên cần tạo
ra cho mình cặp khóa gồm khóa công khai và khóa
bí mật theo các bước sau:
1.Chọn 2 số nguyên tố p và q lớn, pq, lựa chọn ngẫu nhiên
và độc lập nhau.
2.Tính: n=p*q
3.Tính hàm số Ơle:
4.Chọn một số tự nhiên e sao cho:1<e< và là số nguyên tố
cùng nhau với hoặc n
5.Tính: d sao cho: )

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Quá trình tạo khóa


 Lưu ý:
o Các số nguyên tố thường được chọn bằng phương
pháp thử xác suất.
o Các bước 4 và 5 có thể được thực hiện bằng giải
thuật Euclid mở rộng (xem thêm: lý thuyết chia dư).
o Bước 5 có thể viết cách khác:Tìm số x sao cho:
cũng là số tự nhiên.
Khi đó:

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Quá trình tạo khóa


 Khóa công khai:
o n: xuất hiện cả trong khóa công khai và khóa bí mật.
o e: số mũ công khai (cũng gọi là số mũ mã hóa).
 Khóa bí mật:
o n: Như trên
o d: số mũ bí mật (cũng gọi là số mũ giải mã).
Lưu ý:
o Một dạng khác để chọn khóa bí mật d.
o Khi n được tạo ra thì xóa ngay p và q khi thực hiện
xong quá trình tạo khóa.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Mã hóa
 Giả sử Bob muốn gửi đoạn thông tin M cho Alice.
Đầu tiên Bob chuyển M thành một số m < n theo
một hàm có thể đảo ngược (từ m có thể xác định lại
được M) được thỏa thuận trước (Chuyển đổi từ văn
bản gố thành văn bản rõ): M m
 Lúc này Bob có m và biết n cũng như e do Alice gửi.
Bob sẽ tính c là bản mã hóa của m theo công thức:
hoặc
 Để mã hóa thông điệp M, người gởi cần thực hiện:
o Xác định public key từ KU={e,N}
o Tính: , ở đây 0<=m<N
o Cuối cùng Bob gởi c cho Alice

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Giải mã
 Alice nhận c từ Bob và biết khóa bí mật d. Alice có
thể tìm được m từ c theo công thức sau:
m
 Biết m, Alice tìm lại được M theo phương pháp đã
thỏa thuận trước: m  M
 Quá trình giải mã hoạt động vì ta có:

Do: nên theo định lý Fermat nhỏ:



Do p và q là 2 số nguyên tố cùng nhau nên áp dụng
định lý số dư , ta có:

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Ví dụ:
1.Chọn 2 số nguyên tố ngẫu nhiên:
p = 17 - số nguyên tố thứ nhất (giữ bí mật hoặc
hủy sau khi tạo khóa)
q = 11 - số nguyên tố thứ hai (giữ bí mật hoặc hủy
sau khi tạo khóa)
2.Tính:
n = pq = 17*11= 187 - môđun (công bố công khai)
3. Tính ø(n):
ø(n) =(p–1)(q-1)=16×10=160
4. Lựa chọn e: gcd(e,160)=1 và 1<e<160
Chọn e=7 (số mũ công khai)
5. Xác định d: de=1 mod 160 và d < 160
www.dtu.edu.vn Chương 2 - Mã hóa và các
Thuật toán RSA LOGO

 Ví dụ:
 Giá trị của d là: d=23, do 23×7=161= 1×160+1(số
mũ bí mật)
6. Khóa công khai KU={7,187}
7. Giữ bí mật khóa private KR={23,17,11}
m
Giả sử cho thông điệp M = 88 (88<187)
Thông điệp mã hóa:C
Thông điệp giải mã:M = 88

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Các vấn đề đối với RSA


 Vấn đề chuyển đổi văn bản rõ
 Trước khi thực hiện mã hóa, ta phải thực hiện việc
chuyển đổi văn bản rõ (chuyển đổi từ M sang m) sao
cho không có giá trị nào của M tạo ra văn bản mã
không an toàn. Nếu không có quá trình này, RSA sẽ
gặp phải một số vấn đề sau:
o Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá
trị là 0 và 1 tương ứng
o Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m
cũng có giá trị nhỏ, giá trị me cũng nhận giá trị nhỏ
(so với n).

www.dtu.edu.vn Chương 2 - Mã hóa và các


Thuật toán RSA LOGO

 Các vấn đề đối với RSA


 Vấn đề sinh khóa
 Năm 1999: Nếu n có độ dài 512 bit, nó có thể bị phân
tích bởi vài trăm máy tính.
 Năm 2005: n có độ dài 1024 bit có thể bị phá (Break).
Với khóa 4096 bit thì hầu như không có khả năng bị
phá vỡ trong tương lai gần.
 Hiện nay khuyến cáo: sử dụng khóa có độ dài tối
thiểu 2048 bit.

www.dtu.edu.vn Chương 2 - Mã hóa và các


Chữ ký điện tử (Digital Signatures) LOGO

 Sinh viên tìm hiểu ở bài tập nhóm

www.dtu.edu.vn Chương 2 - Mã hóa và các


LOGO

Click to edit company slogan .

www.dtu.edu.vn

You might also like