Tải bản đầy đủ (.pptx) (58 trang)

Tiểu luận môn lập trình ứng dụng web MÃ HÓA DỮ LIỆU TRONG PHP

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.82 MB, 58 trang )

MÃ HÓA DỮ LIỆU
TRONG PHP
Giảng viên hướng dẫn: ThS. Mai Xuân Hùng
Sinh viên thực hiện:
Nguyễn Trần Tuấn Phong 09520604
Trần Anh Tuấn 09520710
1
Nội dung

I. Lý thuyết

I.1. Encryption vs. Hashing

I.2. Các thuật toán Encryption được đề nghị

I.3. Các hàm Hash được đề nghị

I.4. Các thuật toán khác

I.5. Blocks, Modes và Initialization Vectors

I.6. Mcrypt, Hash và OpenSSL

II. Thực hành
2
I. LÝ THUYẾT
3
I.1. Encryption vs.
Hashing
4
I.1.1. Encryption



Nhu cầu: Muốn bảo vệ thông tin quan trọng, không cho
người tấn công đọc được những thông tin đó.

Nguyên lý chủ yếu của encryption: Thông qua những
thuật toán thích hợp, những ứng dụng có khóa thích hợp
sẽ đưa thông tin trở lại trạng thái không mã hóa.

Có 2 phương pháp chung để thực hiện mã hóa:

Đối xứng (Symmetric)

Bất đối xứng (Asymmetric)
5
Mã hóa đối xứng (Symmetric)

Đối xứng (Symmetric):

Cả 2 bên đều giữ cùng một khóa. Khóa này dùng
để mã hóa thông điệp và chỉ có thể dùng khóa này
để giải mã.

Loại mã hóa này nhanh và hiệu quả, nhưng nó yêu
cầu cả 2 bên đều giữ khóa.

Một vài thuật toán sử dụng private key: AES,
Blowfish, 3DES.
6
Mã hóa đối xứng (Symmetric)
7

Mã hóa bất đối xứng (Asymmetric)

Bất đối xứng (Asymmetric):

Cả 2 bên không cần giữ cùng một khóa. Mỗi bên giữ một
khóa trong một cặp khóa và thuật toán được sử dụng cần
chắc chắn rằng thông điệp được mã hóa bởi một khóa chỉ
có thể được giải mã bởi khóa kia.

Một khóa được đánh dấu là “public”, được gửi đến bất cứ
ai muốn mã hóa thông điệp .

Một khóa được đánh dấu là “private”, được giữ bí mật.

Một bên dùng “public key” để mã hóa và bên kia sử dụng
“private key” để giải mã.

Các thuật toán: RSA.
8
Mã hóa bất đối xứng (Asymmetric)
9
I.1.2. Hashing

Nhu cầu: Giữ cho thông điệp không thay đổi trong quá
trình vận chuyển.

Nguyên lý chủ yếu của hasing: Một thuật toán hashing
tạo ra một giá trị độc nhất từ thông điệp đầu vào. Không
thể chuyển đổi giá trị hashed trở về dạng thông điệp
ban đầu.


Hashing không hữu ích trong việc vận chuyển thông tin,
nhưng nó rất hữu ích trong việc xác thực thông tin.

Những thay đổi nhỏ nhất trong một thông điệp hàng
triệu gigabyte thì những giá trị hash vẫn khác nhau.
10
Hashing

Một giá trị hash có 3 đặc điểm quan trọng:

Về mặt lý thuyết thì có thể tìm thấy bất cứ giá trị
plaintext nào để tạo ra cùng một giá trị hash, nhưng
thực tế thì không thể (Collisions).

Cho một thông điệp và một thuật toán hash, thì giá trị
hash sẽ luôn luôn giống nhau.

Cho một thuật toán hash, những thông điệp tương tự
nhau sẽ tạo ra những giá trị hash khác nhau.
11
Hashing
12
I.2. Các thuật toán
Encryption được đề
nghị
13
I.2.1. Những thuật toán đối xứng

Cả 2 bên đều phải giữ cùng 1 khóa.


Một khó khăn là: không gì đảm bảo việc vận chuyển khóa từ bên
này sang bên kia là an toàn.

Nếu đảm bảo được điều này thì thuật toán đối xứng sẽ cho mức
bảo mật cao và dễ dàng mã hóa.

Các thuật toán sẽ được đề cập:

3DES

AES

Blowfish

RC4

Diffie-Hellman-Merkle Key Exchange
14
3DES (Triple-DES)

Được phát triển vào những năm 1997 đến 1998 bởi Walter
Tuchman.

Một sự nâng cấp của DES (Data Encyption Standard).

Thuật toán này thực hiện 3 lần mã hóa DES: Đầu tiên là mã hóa.
Sau đó giãi mã và mã hóa tiếp với một khóa khác.

Quá trình này cho chiều dài khóa lên đến 168 bit.


Năm 1998, Stenfan Lucks, University ò Mannheim, đã phát triển
lý thuyết một phương pháp cracking 3DES trong 2^90 bước tính.

Ngày nay, nó vẫn là một sự lựa chọn phổ biến cho sự mã hóa
những thông điệp không quan trọng.
15
AES (Advanced Encryption Standard)

Joan Daemen và Vincent Rijmen đã công bố một thuật
toán gọi là Rijndael.

AES là một biến thể của Rijndael.

12/2001, AES được xem là người kế vị của DES.

AES được thiết kế để sử dụng khóa 128 bit, những năm
sau nó được điều chỉnh để sử dụng khóa 192 hoặc 256
bit.
16
Blowfish

Được đề xuất bởi Bruce Schneier vào năm 1994.

Về tổng quát, nó được xem như là người thay thế cho
AES.

Nó có một sự thuận lợi là Mã Nguồn Mở, vì vậy nó cũng
không có bằng sáng chế và cả bản quyền.


Nó có thể sử dụng khóa có chiều dài từ 32 bit đến 448
bit.
17
RC4 (Rivest Cipher #4)

Được phát triển vào năm 1987 bởi Ron Rivest.

Nó là một sản phẩm độc quyền của RSA Security, Inc.

RC4 là một kỹ thuật mã hóa được sử dụng với Wired
Equivalent Privacy (WEP) và Wi-fi Protected Access
(WPA) để bảo vệ mạng không dây.
18
Diffie-Hellman-Merkle Key Exchange

Năm 1976, Whitfield Diffie và Martin Hellman đã mô tả một phương pháp
đầu tiên về việc trao đổi khóa bí mật thông qua đường truyền không bí mật.

Mô tả:

Một bên chọn base, là một con số từ 1 đến 256, sau đó gửi base đó đến
cho bên kia.

Mỗi bên sẽ xác định một con số bí mật để dùng để lũy thừa base đó.

Sau đó, mỗi bên sẽ gửi kết quả vừa lũy thừa đến bên kia và sử dụng nó như
là một base khi thực hiện quá trình giống như vậy với con số bí mật dùng
để lũy thừa.

Kết quả là 2 bên sẽ nhận được một con số giống nhau sau khi đã thực hiện

quá trình trên.

Trong thực tế, thuật toán này sử dụng những con số lớn hơn và một kỹ thuật
toán học phức tạp hơn.
19
20
So sánh hiệu năng của 3DES, AES,
Blowfish

Cho dữ liệu có dung lượng 256MB.

Được thực hiện trên máy có CPU P4 2.1GHZ chạy Windows XP
SP1.
Thuật toán Dữ liệu
Thời gian
(giây)
Tốc độ trung
bình
(MB/giây)
Hiệu năng
3DES 256MB 12 12 Thấp
AES (256-bit) 256MB 5 51.2 Bình thường
Blowfish 256MB 3.5 – 4 64 Cao
21
So sánh hiệu năng của 3DES, AES,
Blowfish (tt)
22
So sánh hiệu năng của 3DES, AES,
Blowfish (tt)


Encryption

Decryption
23
So sánh hiệu năng của 3DES, AES,
Blowfish (tt)
24
So sánh mức độ bảo mật của 3DES,
AES, Blowfish
25

×