Các nguyên lý của bảo mật và mã hóa
Có 4 nguyên lý chính: o Tính bí mật (Confidentiality / Privacy). o Tính toàn vẹn (Integrity). o Tính xác thực (Authentication). o Tính không chối bỏ (Non-repudiation).
Thông tin gốc Giải mã
Thông tin cần mã hóa
Các dạng thuật toán mã hóa
Phương pháp thay thế, hay còn gọi là substitution, là một kỹ thuật mã hóa trong đó mỗi ký tự hoặc nhóm ký tự của thông điệp gốc được thay thế bằng một thông điệp khác Mặc dù phương pháp này đã không còn được áp dụng rộng rãi, nhưng những ý tưởng cơ bản của nó vẫn đóng vai trò quan trọng trong các thuật toán mã hóa hiện đại ngày nay.
Transposition, hay còn gọi là sự hoán vị, là một phương pháp mã hóa mà trong đó các ký tự của thông điệp ban đầu được thay đổi vị trí với nhau mà không làm thay đổi nội dung của thông điệp Phương pháp này thường được sử dụng trong các kỹ thuật mã hóa hiện đại.
Mã hóa đối xứng là phương pháp mà cả quá trình mã hóa và giải mã đều sử dụng chung một chìa khóa, cần được giữ bí mật để đảm bảo an toàn Do đó, nó còn được gọi là mã hóa bằng chìa khóa bí mật Các thuật toán mã hóa đối xứng thường được áp dụng để bảo vệ dữ liệu của cá nhân hoặc tổ chức, nhưng gặp khó khăn khi thông tin cần được chia sẻ với bên thứ ba.
Thuật toán khối, hay còn gọi là block ciphers, là phương pháp mã hóa trong đó mỗi khối dữ liệu của văn bản gốc được thay thế bằng một khối dữ liệu khác có cùng kích thước Độ dài của mỗi khối, được gọi là kích thước khối (block size), thường được đo bằng đơn vị bit.
Thuật toán dòng (stream ciphers) là một phương pháp mã hóa dữ liệu từng bit một, mang lại tốc độ nhanh hơn so với các thuật toán khối Chúng thường được sử dụng trong các tình huống mà khối lượng dữ liệu cần mã hóa chưa được xác định, chẳng hạn như trong kết nối không dây Có thể xem thuật toán dòng như một phiên bản của thuật toán khối với kích thước mỗi khối là 1 bit Một số thuật toán dòng phổ biến bao gồm RC4, A5/1, A5/2 và Chameleon.
Mã hóa bất đối xứng, hay còn gọi là public-key cryptography, sử dụng một cặp chìa khóa liên quan toán học: chìa công khai để mã hóa và chìa bí mật để giải mã Thông điệp được mã hóa bằng chìa công khai chỉ có thể được giải mã bằng chìa bí mật tương ứng Một số thuật toán mã hóa bất đối xứng phổ biến bao gồm RSA, Elliptic Curve, ElGamal và Diffie Hellman.
Một vài thuật toán mã hóa nổi tiếng
GIỚI THIỆU
Thuật toán DES (Data Encryption Standard) là một trong những phương pháp mã hóa phổ biến nhất trên toàn cầu Trong nhiều năm, DES đã được xem như một tiêu chuẩn bảo mật quan trọng Mặc dù đã có nhiều nỗ lực để bẻ khóa DES, như cỗ máy trị giá 220,000 USD của Electronic Frontier Foundation, thuật toán này vẫn được sử dụng rộng rãi trong các ngân hàng và chính phủ nhờ vào các phiên bản cải tiến như "Triple-DES".
Kể từ khi DES được giới thiệu, nhiều thuật toán mã hóa bảo mật khác đã được phát triển dựa trên hoặc tương tự như DES Nắm vững các nguyên tắc của DES sẽ giúp bạn dễ dàng hiểu các thuật toán mã hóa này.
Vào ngày 15 tháng 5 năm 1973, dưới thời Tổng thống Richard Nixon, Cục Tiêu chuẩn Liên bang Hoa Kỳ đã công bố thông báo trên Công báo Liên bang, mời gọi các đề xuất về thuật toán mã hóa nhằm bảo vệ dữ liệu trong quá trình truyền và lưu trữ Thông báo này đã nhấn mạnh tầm quan trọng của việc mã hóa dữ liệu trong việc đảm bảo an toàn thông tin.
Trong thập kỷ qua, sự gia tăng nhanh chóng trong việc tích lũy và truyền dữ liệu đã diễn ra mạnh mẽ trong các ngành công nghiệp, chính phủ và tổ chức tư nhân Nhiều nội dung được truyền tải là thông tin nhạy cảm và quan trọng, bao gồm chuyển tiền, hợp đồng, email, thông tin cá nhân và các hoạt động của chính phủ Sự gia tăng không ngừng về khối lượng và tính chất của thông tin này đã tạo ra nhu cầu cấp thiết về các thuật toán mã hóa để bảo vệ các thông điệp.
Sau một thời gian chờ đợi, nhiều đề xuất thuật toán mã hóa không đáp ứng yêu cầu, cho đến khi IBM giới thiệu thuật toán Lucifer vào ngày 6 tháng 8 năm 1974, ba ngày trước khi Nixon từ chức Thuật toán này được đánh giá với sự hỗ trợ của Cơ quan An ninh Quốc gia (NSA) và đáp ứng hầu hết tiêu chuẩn của Cục tiêu chuẩn Liên bang Hoa Kỳ Sau một số điều chỉnh, Cục tiêu chuẩn Liên bang Hoa Kỳ đã chính thức công nhận Lucifer và đổi tên thành Data Encryption Standard (DES) vào ngày 15 tháng 7 năm 1977.
DES has rapidly been adopted in the field of signal transmission, particularly in public telephone lines For instance, within a few years, International Flavors and Fragrances utilized DES to safeguard their production formulas during telephone communications.
Các ngân hàng, lực lượng có nhu cầu mã hóa dữ liệu lớn nhất bên ngoài chính phủ, đã áp dụng chuẩn mã hóa DES cho các giao dịch của mình Năm 1980, DES được Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) công nhận là chuẩn mã hóa dữ liệu trong lĩnh vực ngân hàng.
TỔNG QUAN
Giải thuật DES được phát triển tại công ty IBM dựa trên hệ mã hóa LUCIFER của Feistel.
DES là một thuật toán mã hóa khối, trong đó dữ liệu được chia thành các khối 64 bit và mã hóa thành chuỗi có kích thước tương đương Thuật toán này thực hiện hoán vị 64 vị trí của chuỗi 64 bit, với mỗi khối được chia thành hai nửa 32 bit: nửa trái L và nửa phải R Do quá trình mã hóa và giải mã sử dụng chung một "khóa", DES được phân loại là mã hóa đối xứng.
Hình Mô hình mã hóa đối xứng
Khóa mã 64 bit bao gồm 8 bit chẵn lẻ dùng để kiểm soát lỗi, được phân bố tại các vị trí 8, 16, 24, , 64 Mỗi 8 bit của khóa sẽ có một bit chẵn lẻ tương ứng, đảm bảo tính chính xác trong quá trình mã hóa.
1 bit kiểm soát lỗi, bit này qui định số bit có giá trị 1 của khối 8 bit đó theo tính bù chẵn.
DES dựa trên sự kết hợp giữa các kỹ thuật thay thế và hoán vị bản rõ theo khóa, tạo thành khối mã hóa Quy trình này diễn ra qua 16 vòng lặp, trong đó cùng một kiểu kết hợp được áp dụng cho khối bản rõ 16 lần.
Hình Sơ đồ mã DES
Thuật toán sử dụng các phép toán số học và lôgíc trên số 64 bít, giúp dễ dàng thực hiện vào những năm 1970 với công nghệ phần cứng thời đó Mặc dù ban đầu việc triển khai phần mềm còn thô sơ, nhưng hiện nay đã được cải thiện đáng kể Đặc tính lặp đi lặp lại của thuật toán đã dẫn đến ý tưởng phát triển chíp chuyên dụng cho mục đích này.
DES hoạt động trên các bit nhị phân 0 và 1 Một nhóm 4 bit sẽ tạo thành một số trong hệ thống thập lục phân (hex) Chẳng hạn, số nhị phân “0001” tương ứng với giá trị “1” trong hệ hex, trong khi “1000” có giá trị “8”, “1001” là “9”, và “1010” có giá trị “A”.
“A” và “1111” có giá trị bằng “F”
DES hoạt động bằng cách mã hóa thông điệp có độ dài 64 bit, tương đương với 16 ký tự hexa Để thực hiện mã hóa, DES sử dụng một "khóa" có chiều dài 64 bit (8 byte), nhưng 8 bit trong các byte này bị loại bỏ, dẫn đến kích thước thực tế của "khóa" chỉ còn 56 bit.
Ví dụ bạn cần mã hóa thông điệp sau “8787878787878787” sử dụng khóa
Sau khi mã hóa chuỗi "0E329232EA6D0D73" bằng thuật toán DES, kết quả thu được là chuỗi đã mã hóa "0000000000000000" Khi giải mã chuỗi này bằng khóa đã sử dụng, ta có thể khôi phục lại chuỗi ban đầu.
Thông điệp được mã hóa có chiều dài 64 bit là một ví dụ rõ ràng, và trường hợp tương tự cũng xảy ra với thông điệp có chiều dài là bội của 64 bit Tuy nhiên, nhiều chuỗi mã hóa không có chiều dài như vậy Ví dụ, thông điệp “Your lips are smoother than vaseline” có 36 byte, tương đương 76 số hexa, cần thêm byte vào cuối để đạt được chiều dài bội của 8 byte, 64 bit, hoặc 16 số hexa Khi giải mã, các byte thêm vào này sẽ được loại bỏ.
Thông điệp “Your lips are smoother than vaseline” trong mã hexa có dạng:
“596F7572206C6970732061726520736D6F6F74686572207468616E2076617365 6C696E650D0A” thông điệp chỉ chứa 72 số hexa do đó ta thêm vào cuối chuỗi các số 0 để đủ 80 sốhexa
“596F7572206C6970732061726520736D6F6F74686572207468616E2076617365 6C696E650D0A0000” sau đó ta sử dụng một “khóa” DES 64 bit “0E329232EA6D0D73” ta sẽ thu được chuỗi cần mã hóa:
“C0999FDDE378D7ED727DA00BCA5A84EE47F269A4D64381909DD52F78F53
THUẬT TOÁN
Hình: Quá trình tạo khóa con Đầu tiên, từ 64 bit ban đầu của khóa, 56 bit được chọn (Permuted Choice 1, hay
Trong quá trình xử lý, 8 bit cuối cùng bị loại bỏ, để lại 56 bit được chia thành hai phần bằng nhau, mỗi phần gồm 28 bit Mỗi phần này được xử lý độc lập và sau mỗi chu trình, chúng sẽ được dịch đi 1 hoặc 2 bit, tùy thuộc vào từng chu trình Các khóa con 48 bit được tạo ra thông qua thuật toán lựa chọn 2 (PC-2), bao gồm 24 bit từ mỗi phần Quá trình dịch bit, được ký hiệu là "