Chúng ta đang sống dưới thời đại của công nghệ, với tốc độ phát triển một cách đột phá như bây giờ, tốc độ của con người cũng phải đi ngang với tốc độ của nó. Lợi ích nó mang lại cũng không hề nhỏ thế nên được nhiều người sử dụng hơn. Cùng trong thời đại này sự bùng nổ mạnh mẽ của các đồng tiền ảo, với cái tên như thế nhưng nó hề ảo chút nào mà nó ngày càng trở nên hiện hữu hơn. Vì thế hiện nay có cái tên mới là tiền mã hóa để phù hợp với bản chất của nó hơn, mã hóa quan trọng với ngành công nghệ thông tin. Mật mã học có tầm ảnh hưởng như nào và ứng dụng trong kỹ thuật là gì? Chúng ta cùng tìm hiểu nhé.
Một số khái niệm cơ bản trong Mật Mã Học
- Mật mã học (Cryptography) chính là để đảm bảo độ an toàn của thông tin trong công nghệ. Nó đi liền với quá trình chuyển đổi thông tin từ dạng “ có thể hiểu được” sang “ không thể hiểu được” và ngược lại là quá trình giải mã. Nhưng như thế mật mã học vẫn đảm bảo được tính chất thông tin như sau:
- Tính bí mật (confidentiality): thông tin được hạn chế người biết
- Tính toàn vẹn (integrity): các thông tin không bị thay đổi rất an toàn
- Tính xác thực (authentication): xác thực người người gửi hoặc người nhận
- Tính chống chối bỏ (non-repudiation): người gửi hay người nhận không thể chối từ đã gửi hay nhận thông tin
- Thám mã (cryptanalysis): là việc phân tích bản tin mã hóa để nhận được bản tin rõ trong điều kiện không biết trước khóa mã. Thực tế công việc này gặp nhiều khó khăn khi không biết rõ hệ mật mã nào được sử dụng.
- 3 phương pháp tấn công cơ bản của thám mã là:
- Tìm khóa vét cạn
- Phân tích thống kê
- Phân tích toán
- Bản rõ (Plaintext): dạng thông báo ban đầu Bản mã (Ciphertext): dạng mã của bản rõ ban đầu Khóa (Key): thông tin tham số dùng để mã hóa Mã hóa (Encryption): sự biến đổi thông tin dạng bản rõ sang bản mã bằng khóa hoặc không Giải mã (Decryption): quá trình ngược lại so với giải mã.
Phân loại thuật toán mã hóa trong mật mã học
Cách phân loại theo khóa được sử dụng phổ biến nhất.
Thuật toán mã hóa khóa đối xứng
Thuật toán này còn có các tên khác như Secret Key Cryptography (hay Private Key Cryptography), quá trình mã hóa và giải hóa sử dụng một khóa. Được thực hiện như sau: Hệ thống mã hóa này, ban đầu phải thống nhất được về khóa dùng chung cho mã hóa và giải mã trước khi truyền dữ liệu 2 bên gửi và nhận, bộ phận sinh khóa đưa ra khóa. Tiếp theo là bên gửi mã hóa Plaintext bằng khóa bí mật rồi gửi thông điệp được mã hóa cho bên nhận. Công việc của bên nhận là dùng khóa bí mật trên giải mã và lấy ra Plaintext.
Trên đây là quá trình trao đổi thông tin của bên gửi và nhận đã sử dụng mã hóa đối xứng. Quá trình này diễn ra điểm trọng tâm cần đảm bảo là khóa. Ở đây bước thỏa thuận về khóa trong việc mã hóa và giải mã một cách bí mật. Thỏa thuận về khóa bởi lý do sau:
- Ngay từ đầu hai bên làm chung trên một mã hóa, nhưng người gửi gửi thông điệp đã mã hóa lại không cho biết khóa đã sử dụng với người nhận trong quá trình thực hiện. Thì người nhận sẽ không biết được nội dung tài liệu đã gửi, vì thế song song trao đổi về thuật toán là việc trao đổi về khóa.
- Quá trình trao đổi khóa phải theo một kênh bí mật, có thể trao đổi trực tiếp hoặc gián tiếp. Điều quan trọng là thực hiện trên kênh tuyệt đối bí mật và hai bên tin tưởng lẫn nhau tránh để bên thứ 3 biết được.
Một số thuật toán mã hóa khóa công khai phổ biến
- Ở đây Plaintext được mã hóa theo từng khối 64 bits và sử dụng một khóa là 64 bits, thực tế thì chỉ có 56 bits được sử dụng chính. Thuật toán này được sử dụng rộng rãi và trong khoảng thời gian hơn 20 năm phát triển. Đến bây giờ nó không được ưa chuộng nhiều vì kích thước khóa nhỏ và độ an toàn không được cao.
- Triple DES (3DES) để cải thiện độ mạnh của DES bằng việc sử dụng quá trình hóa- giải- mã- mã hóa sử dụng 3 khóa. Khối 64 bit Plaintext đầu tiên được mã hóa bởi khóa thứ nhất. Dùng mã thứ hai để giải mã, bước cuối là dùng khóa thứ 3 và có kết quả giải mã trên mã hóa.
- AES (Advanced Encryption Standard) Chính thức ra đời vào tháng 11 năm 2001 thay thế cho DES.AES. Hỗ trợ độ lớn nhỏ nhất của khóa là 128, 192 và 256 bits, đến hiện tại nó đang được sử dụng nhiều.
Thuật toán mã hóa bất đối xứng
Nó còn có tên khác là mã hóa khóa công khai (Public Key Cryptography) với thiết kế khóa sử dụng trong quá trình mã khóa khác biệt với khóa sử dụng trong giải mã. Hai khóa này có quan hệ về mặt toán học nhưng không thể suy diễn được ra nhau. Khóa được dùng ở đây sẽ được công khai cho tất cả mọi người thế nên thuật toán này gọi là Public-Key. Việc dùng khóa này để mã hóa rất dễ dàng nhưng chỉ có một người duy nhất có khóa giải mã tương ứng mới đọc được dữ liệu. Vì thế thuật mã hóa này Encryption key được gọi là Public key còn Decryption key được gọi là Prvate key.
Thuật toán trên có ưu điểm về tốc độ thực hiện rất nhanh nhưng vẫn có nhược điểm sau:
- Khóa phải được trao đổi thông qua một kênh bí mật.
- Thông tin chắc chắn sẽ bị lộ nếu như bị mất khóa
- Định kỳ chúng ta cần thay đổi khóa
- Số lượng người dùng tương ứng với số lượng khóa
Nhược điểm thuật toán mã hóa khóa riêng nằm ở việc quản lý khóa, để khắc phục thì mã hóa khóa công khai ra đời. Trong hệ thống mã khóa này thì một người sử dụng khi tham gia đều được cấp 2 khóa: một khóa để mã hóa dữ liệu (Public key) một dùng để giải mã (Private key). Khi đó Public key được nhiều người biết còn khóa còn lại chỉ duy nhất một người biết. Để truyền tin cho nhau sử dụng mã hóa công khai được thực hiện như sau:
- Sender yêu cầu cung cấp hay tự tìm khóa công khai của Receiver trên một Server quản lý khóa đó
- Khi hai phía thống nhất thuật toán để mã hóa dữ liệu xong, Sender sử dụng khóa công khai của Receiver cùng với thuật toán trên để mã hóa thông tin bí mật.
- Mã hóa thông tin xong sẽ gửi đến Receiver, nhưng Sender cũng không thể nào giải mã được thông tin đã mã hóa (khác với mã hóa khóa riêng).
- Nhận được thông tin đã mã hóa, Receiver dùng khóa bí mật của mình để giải mã và lấy thông tin ban đầu.
Mã hóa khóa công khai được quản lý một cách linh hoạt và hiệu quả hơn. Khi dùng chỉ cần bảo vệ khóa Private key. Hệ thống này có độ an toàn cao hơn nhiều so với mã khóa riêng. Nhưng nó vẫn chưa được hoàn chỉnh, nó có tốc độ thực hiện không được nhanh chậm hơn mã khóa riêng gần 1000 lần. Vì thế họ đã gộp hệ thống mã khóa riêng và công hai với nhau là Hybrid Cryptosytems. Có các thuật toán mã công khai như sau:
- RSA : được sử dụng đồng thời mã hóa công khai và chữ ký điện tử, mức độ an toàn ở đây dựa vào việc phân tích số nguyên tố lớn thành hai số nguyên tố.
Mã hóa một chiều
Có trường hợp ta chỉ cần mã hóa thông tin chứ không giải mã lúc đó ta sẽ dùng phương pháp mã hóa một chiều. Thường thì hay sử dụng hàm băm (hash funcution) để đưa chuỗi thông tin thành chuỗi hash với độ dài nhất định. Ở đây sẽ không có cách để khôi phục chuỗi hash về chuỗi thông tin như lúc đầu. Hàm băm nhận một chuỗi có độ dài khác nhau chuyển đổi thành chuỗi hash có độ dài cố định. Hai hash được sinh ra với kết quả khác nhau rất nhiều, thế nên hash function thường sử dụng để kiểm tra tính toàn vẹn của dữ liệu.
Gỉa sử bạn up một dữ liệu lên mạng với mục đích là người dùng có thể kiểm tra dữ liệu họ down về chính xác là dữ liệu mình up lên không. Khi đó bạn sẽ dùng hash function để băm dữ liệu file đó ra một chuỗi hash gửi kèm cho người dùng. Lúc này người dùng chỉ cần dùng đúng hash function để tìm chuỗi hash hiện tạ của file down, so sánh với chuỗi ban đầu giống nhau là ok. Bên cạnh đó nó còn giúp bạn lưu giữ mât khẩu của người dùng cách an toàn tuyệt đối, mật khẩu được lưu giữ dưới dạng chuỗi hash, mật khẩu có bị mất thì cũng khó thể giải mã được. Thuật toán mã hóa một chiều mà hay gặp đó là MD5 và SHA MD5 nó được chứng minh là không an toàn nhưng vẫn được dùng phổ biến trong việc lưu mật khẩu SHA ra đời sau MD5 và đã có phiên bản SHA-256 có độ an toàn cao.
Kết luận
Trong ngành nghề công nghệ thông tin thì việc bảo mật rất quan trọng, để đảm bảo độ an toàn trong quá trình làm việc, ban đầu bạn cần nắm được các thuật ngữ và kiến thức của mật mã học. Trên đây là các thuật ngữ bạn cần nắm được trong quá trình làm việc đọc bài và tham khảo các bạn nhé.