Mã hóa trong bảo mật Thương mại điện tử
Bài đăng này đã không được cập nhật trong 3 năm
Ngày nay, cùng với sự phát triển nhanh chóng của khoa học công nghệ, các hoạt động thương mại điện tử (TMĐT) được đẩy mạnh và nhanh chóng được ứng dụng rộng rãi trong mọi ngành nghề.
Và tất nhiên, đi kèm theo đó luôn là các vấn đề an toàn bảo mật thông tin được đặt ra.
Một trong giải pháp bảo mật thông tin ứng dụng trong TMĐT là sử dụng kỹ thuật mã hóa.
1. Mã hóa là gì?
Để đảm bảo an toàn bảo mật cho các giao dịch, người ta dùng hệ thống khoá mã và kỹ thuật mã hoá cho các giao dịch TMĐT. Mã hoá là quá trình trộn văn bản với khoá mã tạo thành văn bản không thể đọc được truyền trên mạng.
2. Các kỹ thuật mã hóa
2.1. Mã hóa đối xứng Ceasar
Mã hóa đối xứng Ceasar sử dụng cùng một khoá cho cả hai quá trình mã hoá và giải mã.
Ví dụ:
-
Thay thế mỗi chữ trong bản tin bằng chữ đứng sau nó k vị trí trong bảng chữ cái. Giả sử chọn k = 3, ta có bảng chuyển đổi như sau:
-
Chữ ban đầu:
a b c d e f g h i j k l m n o p q r s t u v w x y z
-
Chữ thay thế:
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
-
Giả sử có bản tin gốc là:
meet me after the toga party
-
Như vậy bản tin mã hóa sẽ là:
PHHW PH DIWHU WKH WRJD SDUWB
Phương pháp mã hóa Ceasar như sau:
- Gán cho mỗi chữ cái một con số nguyên từ 0 đến 25:
-
Với mỗi chữ cái p thay bằng chữ mã hóa C, trong đó:
C = (p + k) mod 26
, k được gọi là khóa. -
Quá trình giải mã đơn giản là:
p = (C – k) mod 26
Tuy nhiên, phương pháp mã hóa của Ceasar không được xem là an toàn.
Giả sử đối thủ của Ceasar có được bản mã PHHW PH DIWHU WKH WRJD SDUWB
và biết được phương pháp mã hóa và giải mã là phép cộng trừ module 26. Đối thủ có thể thử tất cả 25 trường hợp của k như sau:
Trong 25 trường hợp trên, chỉ có trường hợp k=3 thì bản giải mã tương ứng là có ý nghĩa. Do đó đối thủ có thể chắc chắn rằng, meet me after the toga party
là bản tin ban đầu.
2.2. Mã hóa công khai - Thuật toán RSA
Các thuật toán mật mã với khóa công khai sử dụng 2 khóa:
-
1 khóa để mã hóa
-
1 khóa để giải mã
RSA là một thuật toán mã hóa khóa công khai đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn.
Giả sử A và B cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví dụ như Internet). Với thuật toán RSA, A đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật, sau đó A gửi khóa công khai cho B và giữ bí mật khóa cá nhân của mình. B sẽ tìm được khóa bí mật dựa vào các quy tắc của thuật toán.
Phương pháp mã hóa và giải mã của thuật toán RSA tương đối phức tạp, vui lòng tham khảo tại link sau:
https://vi.wikipedia.org/wiki/RSA(m%C3%A3_h%C3%B3a)_
2.3. Mã hóa 1 chiều - Thuật toán MD5
Khác với 2 phương pháp ở trên, việc mã hóa và giải mã đều thực hiện được, thì mã hóa một chiều là phương pháp mà chúng ta chỉ có thể mã hóa mà không thể giải mã.
Thuật toán MD5 biến đổi một thông điệp có chiều dài bất kì thành một khối có kích thước cố định 128 bits. Thông điệp đưa vào sẽ được cắt thành các khối 512 bits. Thông điệp được đưa vào bộ đệm để chiều dài của nó sẻ chia hết cho 512. Bộ đệm hoạt động như sau:
- Trước tiên, chèn bit 1 vào cuối thông điệp
- Tiếp đó là hàng loạt bit Zero cho tới khi chiều dài của nó nhỏ hơn bội số của 512 một khoảng 64 bit
- Phần còn lại sẽ được lấp đầy bởi một số nguyên 64 bit biểu diển chiều dài ban đầu của thông điệp.
MD5 hoạt động trên một bộ 128 bit. Chia nhỏ nó ra thành 4 từ 32 bit, kí hiệu là A, B, C và D. Các giá trị này là các hằng số cố định. Sau đó thuật toán chính sẽ luân phiên hoạt động trên các khối 512 bit. Mỗi khối sẽ phối hợp với một bộ. Quá trình xử lý một khối thông điệp bao gồm 4 bước tương tự nhau, gọi là vòng “round”. Mỗi vòng lại gồm 16 quá trình tương tự nhau dựa trên hàm một chiều F, phép cộng module và phép xoay trái.
Hình bên dưới mô tả một quá trình trong một vòng. Có 4 hàm một chiều F có thể sử dụng. Mỗi vòng sử dụng một hàm khác nhau.
Kết quả trả về là một chuỗi số thập lục phân gồm 32 số liên tiếp.
Dưới đây là các ví dụ mô tả các kết quả thu được sau khi băm:
- MD5("The quick brown fox jumps over the lazy dog") =
9e107d9d372bb6826bd81d3542a419d6
Thậm chỉ chỉ cần một thay đổi nhỏ cũng làm thay đổi hoàn toàn kết quả trả về:
- MD5("The quick brown fox jumps over the lazy cog") =
1055d3e698d289f2af8663725127bd4b
Ngay cả một chuỗi rỗng cũng cho ra một kết quả phức tạp:
- MD5(" ") =
d41d8cd98f00b204e9800998ecf8427e
Trong giao dịch điện tử, chìa khóa chính là mật khẩu mà người dùng đã chọn lựa sẽ được dùng để mã hóa thông tin của khách hàng, còn mật khẩu sẽ được mã hóa theo hàm băm một chiều, các hacker hay thậm chí là admin của trang giao dịch dù có lấy được dữ liệu lưu trên máy chủ cũng không thể nào dịch ngược nếu không biết được mật khẩu (key) của user.
Trên đây là một số thuật toán mã hóa để đảm bảo an toàn trong thương mại điện tử mà mình đã tìm hiểu và thực hành mã khóa/giải mã. Phạm vi bài viết còn hạn hẹp và chắc chắn sẽ tồn tại nhiều thiếu sót, mong các bạn góp ý.
Xin cảm ơn!
All rights reserved