1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

58 1,4K 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 567,31 KB

Nội dung

• 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... Khóa này dùng để mã hóa

Trang 1

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

Trang 2

N i dung ộ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

Trang 3

I LÝ THUY T ẾT

3

Trang 4

I.1 Encryption vs

Hashing

4

Trang 5

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

Trang 6

Mã hóa đ i x ng ối xứng ứ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

Trang 7

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

7

Trang 8

Mã hóa b t đ i x ng ất đối xứng ối xứng ứ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

Trang 9

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

(Asymmetric)

9

Trang 10

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

Trang 11

• 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

Trang 12

12

Trang 13

I.2 Các thu t toán ật toán

Encryption đ ược đề ề c đ

nghị

13

Trang 14

I.2.1 Nh ng thu t toán đ i x ng ững thuật toán đối xứng ật toán ối xứng ứ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:

Trang 15

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

Trang 16

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

Trang 17

• Đượ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

Trang 18

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

Trang 19

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

Trang 21

So sánh hi u năng c a 3DES, AES, ệu năng của 3DES, AES, ủ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

21

Trang 22

So sánh hi u năng c a 3DES, AES, ệu năng của 3DES, AES, ủa 3DES, AES,

Blowfish (tt)

22

Trang 23

So sánh hi u năng c a 3DES, AES, ệu năng của 3DES, AES, ủa 3DES, AES,

Blowfish (tt)

• Encryption • Decryption

23

Trang 24

So sánh hi u năng c a 3DES, AES, ệu năng của 3DES, AES, ủa 3DES, AES,

Blowfish (tt)

24

Trang 25

So sánh m c đ b o m t c a 3DES, ứng ội dung ảo mật của 3DES, ật toán ủa 3DES, AES,

AES, Blowfish

25

Trang 26

I.2.1 Nh ng thu t toán b t đ i ững thuật toán đối xứng ật toán ất đối xứng ối xứng

x ng ứng

• Mỗi bên nhận private key từ public key của bên kia,

private key dùng để giải mã, public key dùng để mã

hóa.

Không có sự vận chuyển khóa.

Những thuật toán này chậm hơn những thuật toán đối

xứng, bởi vì chúng yêu cầu sự phân tích những số nguyên

rất lớn để mã hóa và giải mã một cách hiệu quả

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

• RSA

• PGP và GnuPG

Trang 27

Do Ron Rivest, Adi Shamir và Leonard Adleman của MIT

tạo ra trong suốt năm 1977

• Rivest và Shamir cố gắng phát triển một thuật toán

không thể phá vỡ, còn Adleman cố gắng phá vỡ mục đích

của 2 người kia

• RSA là thuật toán mã hóa thường được dùng nhất trong

thương mại ngày nay

• Nó được xây dựng trong những trình duyệt hiện đại và

được dùng tự động trong các giao tác an toàn

• Nó sử dụng một khóa cực kỳ lớn, ít nhất 1024 bit cho các

Trang 28

PGP (Pretty Good Privacy) và

GnuPG

• PGP là một thuật toán được phát triển và được đưa ra

vào năm 1991 bởi Philip Zimmermann, dùng để mã hóa

những thông điệp trong email.

PGP là một sự kết hợp giữa những thành phần của cả mã

hóa đối xứng và bất đối xứng.

• RFC 2440 đã định nghĩa một phiển bản Open Source của

PGP, nó đã được phát triển dưới sự bảo hộ của The

OpenPGP Alliance

• Phiên bản này hoàn toàn tương thích với PGP

• Tuân theo các tiêu chuẩn của OpenPGP, Free Software

Foundation đã phát triển Gnu Privacy Guard (GnuPG).

Trang 29

S/MIME (Secure/Multipurpose

Internet Mail Extension)

• RSA Security đã phát triển giao thức S/MIME cho

Public-Key Cryptography Standard (PKCS) #7 nhầm mục đích mở

rộng dịch vụ mã hóa những thông điệp email.

• Nó được định nghĩa trong RFC 3851 Nó là đối thủ của

PGP

• S/MIME yêu cầu sử dụng trao đổi khóa RSA.

• Nó chỉ sử dụng khóa 40 bit.

• S/MIME không có thương mại như PGP, nhưng có hàm S/

MIME được xây dựng trong openssl của PHP

29

Trang 30

I.3 Các hàm Hash

đ ược đề ề c đ ngh ị

30

Trang 31

CRC32 (Cycle Redundancy Check 32)

• Dùng phép lấy dư của 2 để tạo ra một sự biểu diễn số

nguyên nhỏ của một khúc dữ liệu lớn Con số dữ liệu này

được gọi là checksum.

• CRC32 được đặt tên vì kích thước 32 bit của kết quả sau

khi hashing

• Khi dùng CRC để xác định lỗi, người gửi sẽ tính toán một

CRC và gửi nó đi kèm với nội dung Người dùng chỉ việc

tính toán lại CRC rồi so sánh CRC mà người gửi đã gửi

Trong PHP có hàm crc32().

31

Trang 32

MD5 (Message Digest 5)

• Được phát triển bởi Ron Rivest Được định nghĩa vào

năm 1992 trong RFC 1321

• Một phương pháp để tính toán một số 128 bit của bất cứ

thông điệp có chiều dài tùy ý

• Phiên bản thứ 5 của thuật toán được dùng rộng rãi nhất.

• MD5 được dùng để xác thực dữ liệu vì an toàn và con số

được sản sinh ra nhỏ hơn hơn CRC32

• Mặc dù 128 bit là một con số khổng lồ nhưng một

collision đã được tìm thấy vào 1996

• Nhưng MD5 vẫn là một phương pháp nhanh, mạnh và an

toàn

Trong PHP có hàm md5().

32

Trang 33

• Tháng 2/2005, một tổ chuyên gia đã công bố điểm yếu

của SHA-1 để giảm bớt số lượng thực hiện brute-force để

tạo ra một collision từ 2^80 đến 2^69

Trang 34

DSA (Digital Signature Algorithm)

• Nó được thông báo vào ngày 19/5/1994.

• Được phát triển bởi NSA và NIST.

Được thiết kế để sử dụng cho chữ ký số (những phiên

bản hashed của chữ ký được dùng để xác thực người gửi

thông điệp đó)

• DSA đã phổ biến và được sử dụng rộng rãi.

• Nó được xây dựng trong bộ mã nguồn mở OpenSSL và

OpenSSH

34

Trang 35

So sánh hi u năng c a MD5, SHA1 ệu năng của 3DES, AES, ủa 3DES, AES,

Digest Performance in MegaBytes per Second

Trang 36

So sánh hi u năng c a MD5, ệu năng của 3DES, AES, ủa 3DES, AES,

SHA1, SHA256, SHA 512

36

Trang 37

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

khác

37

Trang 38

• Được phát triển để cho phép vận chuyển những đính

kèm email nhị phân bằng cách thay đổi chúng thành

những ký tự có thể in được

• Một đoạn chuỗi mã hóa chứa một tập giới hạn các ký tự

và luôn kết thúc với ít nhất một dấu bằng

• Base64 không nên được dùng mã hóa những thông tin

quan trọng

38

Trang 39

• SHA-2 có một chút thay đổi so với SHA-1, nó sử

dụng con số có chiều dài 256 hoặc 512, thậm chí

1024 bit.

• Ngoài việc độ dài số lớn hơn, thì nó đồng nhất

với SHA-1.

39

Trang 40

• Được phát triển bởi một đội ngũ những nhà mã hóa của

Bỉ

• Nó được phát triển từ MD4 và được xem là một ứng cử

viên để thay thế SHA-1

• Phiên bản hiện tại sử dụng 256 và 320 bit.

• Nó là một phần trong bộ công cụ mã hóa OpenSSL.

40

Trang 41

I.5 Blocks, Modes và

Initialization Vectors

41

Trang 42

Streams và Blocks

Stream cipher: sử dụng XOR giữa thông điệp chưa mã

hóa và một khóa

• RC4 là một ví dụ của stream cipher.

Block cipher: phá vỡ các thông điệp chưa mã hóa và

chuyển thành những khối dữ liệu có cùng kích thước, sau

đó thực hiện tác động trên mỗi khối dữ liệu đó theo

lượt

• Nó giúp an toàn hơn.

42

Trang 43

Streams và Blocks (tt)

43

Trang 44

• Gồm có 4 loại:

• Electronic Codebook Mode

• Output Feedback Mode

• Cipher Feedback Mode

• Cipher Block Chaining Mode

44

Trang 45

1 Electronic Codebook Mode (ECB)

• Nguyên lý: mỗi block được mã hóa riêng, sau đó ta nối

các block đã được mã hóa thành văn bản đã được mã

hóa

• Ưu điểm: có hiệu quả rất tốt, việc mã hóa mỗi block

được tiến hành song song

• Nhược điểm: các khuôn mẫu của văn bản chưa được mã

hóa có thể xuất hiện như là khuôn mẫu trong văn bản

Trang 46

1 Electronic Codebook Mode (ECB) (tt)

ECB

Mã hóa sử dụng

Trang 47

2 Output Feedback Mode (OFB)

Sử dụng một chuỗi các block dữ liệu gọi là keystream.

• Mỗi block trong keystream được mã hóa bằng cách sử

dụng khóa bí mật để tạo block tiếp theo

Một keystream được tạo, nó sẽ XOR với những block

chưa mã hóa để tạo thành văn bản mã hóa.

• Mỗi keystream được tạo một cách độc lập với văn bản

gốc nên chế độ này có thể ngăn cản tất cả các lỗi

• Nếu một block có các bit bị lỗi, nó sẽ không ảnh hưởng

đến việc giải mã những block tiếp theo

• OFB không làm rò rỉ thông tin về khuôn mẫu trong văn

Trang 48

2 Output Feedback Mode (OFB) (tt)

48

Trang 49

3 Cipher Feedback Mode (CFB)

CFB cũng sử dụng keystream

Việc tạo ra nó hoàn toàn độc lập, tuy nhiên mỗi

keystream kế tiếp được tạo bằng cách mã hóa những

block văn bản mã hóa ở trước.

• Kết quả sẽ được XOR với giá trị của block văn bản gốc để

tạo ra văn bản mã hóa

• Ưu điểm: ngăn việc thao tác đoạn văn bản mã hóa trong

khi vận chuyển

• Bởi vì mỗi block của văn bản mã hóa đóng vai trò là

khóa của block kế tiếp

• Vì cơ chế liên hệ ngược này, CFB có thể gây rò rỉ thông tin

về những block liền kề nhau

49

Trang 50

3 Cipher Feedback Mode (CFB) (tt)

50

Trang 51

4 Cipher Block Chaining Mode (CBC)

XOR mỗi block văn bản gốc với những block văn bản mã

hóa phía trước, sau đó mã hóa kết quả.

• Đây là chế độ an toàn cao nhất.

• Vì các khuôn mẫu trong văn bản gốc đã được làm tối

nghĩa trước khi những block văn bản gốc được mã

hóa

• Bất cứ thay đổi nào đến một block văn bản mã hóa sẽ

làm cho những block sau nó không thể giải mã được

• Nên chọn chế độ CBC khi làm việc.

51

Trang 52

4 Cipher Block Chaining Mode (CBC) (tt)

52

Trang 53

Initialization Vectors (IV)

• Ngoại trừ ECB, các chế độ mã hóa sử dụng block đều phụ

thuộc vào việc mã hóa các block trước nó

Các chế độ mã hóa trừ ECB đều cần một IV, đó là một

phần của dữ liệu nhị phân mà sẽ đóng vai trò như một

block “zero”.

• IV cũng được sử dụng trong các hàm random hoặc sử

dụng làm salt trong việc mã hóa

• IV phải được cung cấp để giải mã thông điệp.

53

Trang 54

I.6 Mcrypt, Hash và

OpenSSL

54

Trang 55

Là một giao diện giúp tương tác đến thư viện mcrypt, hỗ

trợ nhiều thuật toán khác nhau

• Nó hỗ trợ những thuật toán toán mã hóa đây:

• 3DES, ARCFOUR, BLOWFISH, CAST, DES, ENIGMA,

GOST, IDEA (không miễn phí), LOKI97, MARS, PANAMA,

RIJNDAEL, RC2, RC4, RC6, SAFER, SERPENT, SKIPJACK,

TEAN, TWOFISH, WAKE, XTEA

55

Trang 56

• Hash không yêu cầu thư viện ngoài và nó được kích hoạt

theo mặc định trong PHP 5.1.2

• Nó thay thế cho mhash cũ.

• Với hash, ta có thể tạo ra những giá trị hash hoặc HMAC

(Hash-based Message Authentication Code)

• Hỗ trợ những thuật toán sau:

• MD4, MD5, SHA1, SHA256, SHA384, SHA512, RIPEMD,

WHIRLPOOL, GOST, TIGER, HAVAL…

56

Trang 57

OpenSSL sử dụng những hàm trong OpenSSL project để

tạo và chứng thực chữ ký và niêm phong (mã hóa) và mở

niêm phong (giải mã) dữ liệu

• Ta có thể sử dụng OpenSSL để bảo vệ dữ liệu bằng cách

sử dụng mã hóa khóa công cộng với thuật toán RSA

57

Trang 58

II TH C HÀNH ỰC HÀNH

58

Ngày đăng: 05/04/2015, 21:56

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w