Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 58 trang
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
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 [...]... 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 AES (Advanced... 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 ứng dụng thương... 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 I.3 Các hàm Hash được đề nghị 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ữ. .. bảo mật của 3DES, AES, Blowfish I.2.1 Những thuật toán bất đối xứ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 •... 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 So sánh hiệu năng của 3DES, AES, Blowfish • Cho dữ liệu có dung lượng 256MB • Được... thương mại 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... 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 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 RC4... khác nhau Hashing I.2 Các thuật toán Encryption được đề nghị 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... 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() MD5 (Message Digest 5) • Được phát triển bởi Ron Rivest Được định nghĩa vào năm 1992 trong. .. 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() SHA-1 • Được công bố vào tháng 9/2001, được định nghĩa trong RFC 3174 • Nó được phát triển bởi U.S Federal Government . 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. 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. 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