Mật mã học là gì?

Mật mã học là gì?

Bài viết này trình bày về thực tiễn và nghiên cứu các kỹ thuật liên lạc an toàn khi có sự hiện diện của kẻ thù

Định nghĩa mật mã

Mật mã học là quá trình che giấu hoặc mã hóa thông tin sao cho chỉ người nhận mới có thể đọc được. Nghệ thuật mật mã học đã được sử dụng để mã hóa thông điệp trong hàng nghìn năm và vẫn tiếp tục được sử dụng trong thẻ ngân hàng, mật khẩu máy tính và thương mại điện tử.

Các kỹ thuật mật mã hiện đại bao gồm các thuật toán và mật mã cho phép mã hóa và giải mã thông tin, chẳng hạn như khóa mã hóa 128 bit và 256 bit. Các mật mã hiện đại , như Chuẩn mã hóa nâng cao (AES), được coi là gần như không thể phá vỡ – mặc dù các thuật toán lượng tử mới nổi dự kiến ​​sẽ thách thức một số mô hình mật mã truyền thống trong tương lai.

Một định nghĩa phổ biến về mật mã học là việc mã hóa thông tin để đảm bảo chỉ người được gửi tin nhắn mới có thể đọc và xử lý thông tin đó. Thực tiễn an ninh mạng này , còn được gọi là mật mã học, kết hợp nhiều lĩnh vực khác nhau như khoa học máy tính, kỹ thuật và toán học để tạo ra các mã phức tạp nhằm che giấu ý nghĩa thực sự của thông điệp.

Mật mã học có nguồn gốc từ chữ tượng hình Ai Cập cổ đại nhưng vẫn đóng vai trò thiết yếu trong việc bảo mật thông tin và liên lạc, ngăn chặn việc thông tin bị đọc trộm bởi các bên không đáng tin cậy. Nó sử dụng các thuật toán và khái niệm toán học để chuyển đổi thông điệp thành các mã khó giải mã thông qua các kỹ thuật như khóa mật mã và chữ ký số để bảo vệ quyền riêng tư dữ liệu, giao dịch thẻ tín dụng, email và duyệt web.

Tầm quan trọng của mật mã học

Mật mã học vẫn đóng vai trò quan trọng trong việc bảo vệ dữ liệu và người dùng, đảm bảo tính bảo mật và ngăn chặn tội phạm mạng đánh cắp thông tin nhạy cảm của doanh nghiệp. Một số ứng dụng và ví dụ phổ biến của mật mã học bao gồm:

1. Quyền riêng tư và bảo mật

Hàng ngày, các cá nhân và tổ chức sử dụng mật mã học để bảo vệ quyền riêng tư và giữ bí mật các cuộc trò chuyện cũng như dữ liệu của họ. Mật mã học đảm bảo tính bảo mật bằng cách mã hóa các tin nhắn được gửi đi bằng một thuật toán với khóa chỉ người gửi và người nhận biết. Một ví dụ phổ biến về điều này là ứng dụng nhắn tin WhatsApp, mã hóa các cuộc trò chuyện giữa mọi người để đảm bảo chúng không thể bị hack hoặc chặn lại. 

Mật mã học cũng bảo mật việc duyệt web, ví dụ như với mạng riêng ảo (VPN), sử dụng các đường hầm mã hóa, mã hóa bất đối xứng và các khóa công khai và riêng tư được chia sẻ. Nó đóng vai trò tương tự trong mã hóa đám mây , nơi dữ liệu được lưu trữ và truyền tải trong môi trường đám mây được mã hóa để đảm bảo dữ liệu được bảo vệ khỏi truy cập trái phép.

2. Xác thực

  • Chính trực
    Tương tự như cách mật mã học có thể xác nhận tính xác thực của một thông điệp, nó cũng có thể chứng minh tính toàn vẹn của thông tin được gửi và nhận. Mật mã học đảm bảo thông tin không bị thay đổi trong quá trình lưu trữ hoặc trong quá trình truyền tải giữa người gửi và người nhận. Ví dụ, chữ ký số có thể phát hiện hành vi giả mạo hoặc can thiệp vào quá trình phân phối phần mềm và các giao dịch tài chính.
  • Không thể chối bỏ
    Mật mã học xác nhận trách nhiệm và nghĩa vụ của người gửi tin nhắn, có nghĩa là họ không thể phủ nhận ý định của mình khi tạo ra hoặc truyền tải thông tin sau này. Chữ ký số là một ví dụ điển hình, vì chúng đảm bảo người gửi không thể tuyên bố tin nhắn, hợp đồng hoặc tài liệu mà họ tạo ra là giả mạo. Hơn nữa, trong tính không thể phủ nhận của email, việc theo dõi email đảm bảo người gửi không thể phủ nhận việc gửi tin nhắn và người nhận không thể phủ nhận việc nhận được tin nhắn đó.

3. Trao đổi khóa

Trao đổi khóa là phương pháp được sử dụng để chia sẻ các khóa mã hóa giữa người gửi và người nhận.

Các loại thuật toán mật mã

Có rất nhiều loại thuật toán mã hóa khác nhau. Chúng khác nhau về độ phức tạp và tính bảo mật, tùy thuộc vào loại hình giao tiếp và độ nhạy cảm của thông tin được chia sẻ.

1. Mật mã khóa bí mật

Mã hóa khóa bí mật, còn được gọi là mã hóa đối xứng, sử dụng một khóa duy nhất để mã hóa và giải mã thông điệp. Người gửi mã hóa thông điệp gốc bằng khóa đó và gửi cho người nhận, người nhận sau đó sử dụng cùng khóa đó để giải mã và mở khóa thông điệp gốc.

  • Mã hóa dòng
    Mã hóa luồng hoạt động trên từng bit hoặc byte riêng lẻ tại bất kỳ thời điểm nào và liên tục thay đổi khóa bằng cách sử dụng các cơ chế phản hồi. Mã hóa luồng tự đồng bộ đảm bảo quá trình giải mã luôn đồng bộ với quá trình mã hóa bằng cách nhận biết vị trí của nó trong luồng khóa bit. Mã hóa luồng đồng bộ tạo ra luồng khóa độc lập với luồng thông điệp và tạo ra cùng một hàm luồng khóa ở cả phía người gửi và người nhận.
  • Mã hóa khối
    Mã hóa khối mã hóa từng khối dữ liệu có kích thước cố định một. Nó luôn mã hóa một khối dữ liệu gốc thành cùng một bản mã khi sử dụng cùng một khóa. Một ví dụ điển hình là mã hóa Feistel, sử dụng các yếu tố mở rộng khóa, hoán vị và thay thế để tạo ra sự hỗn loạn và phân tán rộng lớn trong quá trình mã hóa. 

Các giai đoạn mã hóa và giải mã tương tự nhau, nếu không muốn nói là giống hệt nhau, điều đó có nghĩa là việc đảo ngược khóa sẽ làm giảm kích thước mã và mạch điện cần thiết để triển khai thuật toán mã hóa trong phần mềm hoặc phần cứng.

2. Mật mã khóa công khai

Mật mã khóa công khai (PKC), hay mật mã bất đối xứng, sử dụng các hàm toán học để tạo ra các mã cực kỳ khó giải mã. Nó cho phép mọi người giao tiếp an toàn qua kênh truyền thông không an toàn mà không cần khóa bí mật. Ví dụ, mã hóa lại thông qua trung gian cho phép một thực thể trung gian mã hóa lại dữ liệu từ một khóa công khai này sang một khóa công khai khác mà không cần truy cập vào văn bản gốc hoặc khóa riêng tư. 

Một loại mã hóa khóa công khai (PKC) phổ biến là phép nhân so với phép phân tích thừa số, trong đó hai số nguyên tố lớn được nhân với nhau để tạo ra một số kết quả khổng lồ, khiến việc giải mã trở nên khó khăn. Một dạng PKC khác là phép lũy thừa so với phép logarit, chẳng hạn như mã hóa 256 bit, giúp tăng cường bảo mật đến mức ngay cả một máy tính có khả năng tìm kiếm hàng nghìn tỷ tổ hợp mỗi giây cũng không thể giải mã được.

Các dạng mã hóa khóa công khai (PKC) thông thường sử dụng hai khóa có liên quan đến nhau về mặt toán học nhưng không cho phép xác định được khóa nào. Nói một cách đơn giản, người gửi có thể mã hóa thông điệp văn bản gốc bằng khóa riêng của họ, sau đó người nhận giải mã văn bản mã hóa bằng khóa công khai của người gửi. 

Các thuật toán PKC phổ biến được sử dụng cho chữ ký số và trao đổi khóa bao gồm:

  • RSA
    RSA là thuật toán mã hóa khóa công khai (PKC) đầu tiên và vẫn là thuật toán phổ biến nhất. Thuật toán này được đặt tên theo các nhà toán học phát triển nó tại MIT, Ronald Rivest, Adi Shamir và Leonard Adleman, và được sử dụng trong mã hóa dữ liệu, chữ ký số và trao đổi khóa. Nó sử dụng một số lớn là kết quả của việc phân tích thừa số nguyên tố của hai số nguyên tố được chọn. Kẻ tấn công không thể tìm ra các thừa số nguyên tố này, điều này làm cho RSA đặc biệt an toàn.
  • Mật mã đường cong elip (ECC)
    ECC là một thuật toán mã hóa khóa công khai (PKC) dựa trên việc sử dụng đường cong elip trong mật mã học. Nó được thiết kế cho các thiết bị có sức mạnh tính toán hoặc bộ nhớ hạn chế để mã hóa lưu lượng truy cập internet. Một ứng dụng phổ biến của ECC là trong các máy tính nhúng, điện thoại thông minh và các mạng tiền điện tử như bitcoin, vốn chỉ tiêu thụ khoảng 10% dung lượng lưu trữ và băng thông mà RSA yêu cầu.
  • Thuật toán chữ ký số (DSA)
    DSA là một tiêu chuẩn cho phép sử dụng chữ ký số trong việc xác thực thông điệp. Tiêu chuẩn này được Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) giới thiệu vào năm 1991 để đảm bảo phương pháp tạo chữ ký số tốt hơn.
  • Mã hóa dựa trên danh tính (IBE)
    IBE là một hệ thống PKC cho phép tính toán khóa công khai từ thông tin duy nhất dựa trên danh tính người dùng, chẳng hạn như địa chỉ email của họ. Sau đó, bên thứ ba đáng tin cậy hoặc trình tạo khóa riêng sẽ sử dụng thuật toán mã hóa để tính toán khóa riêng tương ứng. Điều này cho phép người dùng tạo khóa riêng của họ mà không cần lo lắng về việc phân phối khóa công khai.
  • Tiêu chuẩn mật mã khóa công khai (PKCS)
    Tất cả các thuật toán và cách sử dụng PKC đều tuân theo một bộ tiêu chuẩn và hướng dẫn do RSA Data Security thiết kế. Cụ thể như sau:
    • PKCS #1 hoặc RFC 8017: Tiêu chuẩn mật mã RSA
    • PKCS #3: Tiêu chuẩn thỏa thuận khóa Diffie-Hellman
    • PKCS #5 và PKCS #5 v2.1 hoặc RFC 8018: Tiêu chuẩn mật mã dựa trên mật khẩu
    • PKCS #6: Chuẩn cú pháp chứng chỉ mở rộng (đang được thay thế bởi X.509v3)
    • PKCS #7 hoặc RFC 2315: Tiêu chuẩn cú pháp thông điệp mật mã 
    • PKCS #8 hoặc RFC 5958: Chuẩn cú pháp thông tin khóa riêng tư
    • PKCS #9 hoặc RFC 2985: Các loại thuộc tính được chọn
    • PKCS #10 hoặc RFC 2986: Tiêu chuẩn cú pháp yêu cầu chứng nhận
    • PKCS #11: Tiêu chuẩn giao diện mã thông báo mật mã
    • PKCS #12 hoặc RFC 7292: Tiêu chuẩn cú pháp trao đổi thông tin cá nhân 
    • PKCS #13: Tiêu chuẩn mật mã đường cong Elliptic
    • PKCS #14: Tiêu chuẩn tạo số giả ngẫu nhiên
    • PKCS #15: Tiêu chuẩn định dạng thông tin mã thông báo mật mã
  • Thuật toán Diffie-Hellman và thuật toán trao đổi khóa (KEA)
    Thuật toán Diffie-Hellman được phát minh vào năm 1976 bởi giáo sư Martin Hellman của Đại học Stanford và sinh viên cao học của ông, Whitfield Diffie, những người được coi là có công trong việc giới thiệu khái niệm mã hóa khóa công khai (PKC). Thuật toán này được sử dụng để trao đổi khóa bí mật và yêu cầu hai người phải thống nhất một số nguyên tố lớn. 
    KEA là một biến thể của thuật toán Diffie-Hellman và được đề xuất như một phương pháp trao đổi khóa trong dự án Capstone của NIST/Cơ quan An ninh Quốc gia (NSA), dự án đã phát triển các tiêu chuẩn mật mã cho mục đích sử dụng công cộng và chính phủ.
  • Hàm băm
    Hàm băm đảm bảo tính toàn vẹn dữ liệu được duy trì trong các giai đoạn mã hóa và giải mã của mật mã học. Nó cũng được sử dụng trong cơ sở dữ liệu để có thể truy xuất các mục nhanh hơn. 
    Hàm băm là quá trình lấy một khóa và ánh xạ nó đến một giá trị cụ thể, được gọi là giá trị băm. Hàm băm biến đổi khóa hoặc chữ ký số, sau đó giá trị băm và chữ ký được gửi đến người nhận, người này sử dụng hàm băm để tạo ra giá trị băm và so sánh nó với giá trị mà họ nhận được trong thông điệp. 
    Một hàm băm phổ biến là hàm chia đôi (folding), hàm này nhận một giá trị và chia nó thành nhiều phần, cộng các phần lại, và sử dụng bốn chữ số còn lại làm khóa hoặc giá trị băm. Một hàm khác là hàm sắp xếp lại chữ số (digit rearrangement), hàm này lấy các chữ số cụ thể trong giá trị ban đầu, đảo ngược chúng, và sử dụng số còn lại làm giá trị băm. Ví dụ về các loại hàm băm bao gồm Thuật toán băm an toàn 1 (SHA-1), SHA-2 và SHA-3.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Win a Raspberry Pi!

Answer 5 questions for your chance to win!
Question 1

What color is the sky?

Tìm kiếm bằng danh mục

Chọn danh mục