Ngày nay, các sản phẩm của kĩ thuật mã hoá luôn có mặt khắp nơi trong đời sống thường ngày, đối với ngành IT, đây là yếu tố không thể thiếu trong mọi ứng dụng hiện đại, đặc biệt là đối với lĩnh vực giao dịch điện tử & bảo mật mạng.

Chúng ta sẽ tìm hiểu đôi nét về kĩ thuật mã hoá với những nội dung:
I. Tổng quan về mã hoá
II. Kĩ thuật mã hoá chung
III. Ứng dụng thực tiễn
IV. Các công cụ mã hoá
I. Tổng quan về mã hoá
Mã hoá là gì? Mã hoá là một tiến trình biến đổi thông tin, sử dụng các thuật toán nhằm mục đích không cho người khác có thể nắm bắt được nếu thiếu một vốn thông số nhất định (key) để dịch ngược.
Đi kèm với mã hoá là giải mã.
Có rất nhiều loại thuật toán mã hoá cho dữ liệu máy tính, chúng được gọi tên theo thuật toán và có thể so sánh trực tiếp với nhau, ví dụ mã hoá 128-bit, Triple-DES, 2048-bit RSA.
Trong cùng một loại, dĩ nhiên một phép mã hoá 2048-bit RSA sẽ mạnh mẽ hơn phép mã hoá 1024-bit RSA.
Nhưng như vậy không có nghĩa là một phép mã hoá với độ dài dãy bit lớn được xem là an toàn. Thử liên tưởng đến ngôi biệt thự của bạn, với chiếc cổng được khoá bằng ổ khoá 4 chân, mỗi chân như vậy có thể nằm trong 10 vị trí, ổ khoá chỉ mở được khi 4 chân được sắp theo mã khoá của chủ nhà, và để vượt qua, 1 tên trộm cần phải dùng tối đa 10.000 phép thử (brute-force attack). Nhưng nếu tăng ổ khoá lên 10 chân, sẽ tạo nên 10 triệu khe cắm khoá hợp lệ, thì không ai đủ sự thông minh (hay sự ngu dốt) để mở chiếc khoá bằng cách tấn công thuật toán này. Họ có thể phá cửa sổ, hay thậm chí là phá chiếc cổng, giả danh chính quyền, thợ nước… để đột nhập vào căn nhà của bạn. Một ổ khoá tốt không thể chống lại những kiểu tấn công như thế được.
Điều đó cho thấy một thuật toán mã hoá cực mạnh sẽ chỉ hữu ít nếu được sử dụng ở đúng những nơi cần thiết, không phải lúc nào cũng là tối ưu. Cái cần bảo vệ ở trên chính là ngôi nhà của bạn chứ không phải là đặt một hàng rào bẫy và hi vọng kẻ trộm sẽ dính vào cái bẫy đó.
Với sự phát triển mạnh mẽ của mình, hầu hết các kênh thông tin đều lấy Internet làm nền tảng để phát triển. Điều tất yếu sẽ nảy sinh là vấn đề An toàn thông tin, một ngày nào đó, bạn bỗng nhận ra rằng, thông tin của bạn đang bị theo dõi.
Để vừa đảm bảo thông tin luôn kết nối, vừa đảm bảo yếu tố bảo mật của thông tin thì phương pháp tốt nhất là mã hoá thông tin.
Ngày nay việc mã hoá đã trở nên phổ cập, các quốc gia hay là các công ty lớn đều có chính sách phát triển công cụ mã hoá riêng biệt để bảo vệ cho chính thông tin của họ.
Trên thế giới hiện có rất nhiều các loại thuật toán, trong khuôn khổ bài báo cáo, chúng ta chỉ tìm hiểu về các thuật toán được ứng dụng phổ biển trong Internet.

Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn cho thông tin liên lạc. Các thuộc tính được yêu cầu là:
1) Bí mật: Chỉ có người nhận đã xác thực có thể lấy ra được nội dung của thông tin chứa đựng trong dạng đã mật mã hóa của nó. Nói khác đi, nó không thể cho phép thu lượm được bất kỳ thông tin đáng kể nào về nội dung của thông điệp.
2) Nguyên vẹn: Người nhận cần có khả năng xác định được thông tin có bị thay đổi trong quá trình truyền thông hay không.
3) Xác thực: Người nhận cần có khả năng xác định người gửi và kiểm tra xem người gửi đó có thực sự gửi thông tin đi hay không.
II. Kĩ thuật mã hoá chung
Các kĩ thuật mã hoá đều sử dụng các khoá (key) làm tác nhân thực hiện việc khoá mã, thông thường khoá được thể hiện bằng độ dài của khoá tính theo bit, số bits càng lớn thì tính bảo mật của phép mã hoá càng cao, có thể hiểu nôm na một khoá là một mật khẩu. Thông thường, để an toàn thì các khoá thường có độ dài 128bits, nghĩa là phương pháp tấn công vét cạn sẽ phải dò 2128 trường hợp.
Có 3 kĩ thuật mã hoá chính:
1) Mã hoá đối xứng (Symmetric-key algorithms) - AES, IDEA, DES
Là các thuật toán mã hoá và giải mã trong đó các khoá (key) dùng cho việc mã hoá và giải mã có quan hệ ràng buộc với nhau (về mặt toán học) hoặc là như nhau.
Hạn chế của mã hoá đối xứng là khi trao đổi, khoá mã phải được 2 bên nắm giữ, do vậy việc bảo vệ an toàn cho khoá mã là một việc hết sức khó khăn. Để đảm bảo việc thông tin liên lạc được an toàn trong một nhóm n người thì bắt buộc số lượng chìa khoá phải là n(n-1)/2. Do tính chất này, để tránh rườm ra, người ta phân phối mã khoá này bằng phương pháp mã hoá bất đối xứng khi có một phiên giao dịch, lúc đó ít nhiều sẽ dễ dàng quản lý mã khoá hơn thông thường.
Ví dụ điển hình:
Ngày xưa, khi chưa có máy tính, người ta đã vận dụng phương pháp mã hoá đối xứng bằng một miếng bìa có đục lỗ theo ý của người viết mã (đóng vai trò là key), áp miếng bìa lên một mặt giấy, các kí tự từ văn bản gốc sẽ lần lượt được ghi lên giấy qua các lỗ hổng, sau khi hoàn tất, các khoảng trống trên mặt giấy sẽ được điền các kí tự ngẫu nhiên. Có thể nhận xét ngay, việc giải mã thông tin đó hầu như là không thể nếu không có miếng bìa (key) để tra ngược lại.
Ngày nay người ta sử dụng nhiều thuật toán thao tác trên bit (xor, shift) để biến đổi thông tin cần được mã hoá, các phép toán này được thực hiện hàng chục vòng lặp (các giai đoạn monkey around) khiến cho việc dịch ngược là vô cùng khó khăn nếu không có key.
2) Mã hoá bất đối xứng (Public key cryptography) - RSA
Mã hoá bất đối xứng là kĩ thuật mã hoá sử dụng một cặp khoá dùng để mã hoá và giải mã thông tin. Khoá được dùng để mã hoá gọi là khoá công khai (public key), khoá dùng để giải mã thông tin là khoá riêng tư (private key). Để trao đổi thông tin, một chỉ cần public hoá mã khoá công khai của mình (Public key), người khác dựa vào mã public đó để mã hoá thông điệp cần được gửi. Ví dụ mỗi bên A, B sẽ có một public key (PU ) private key (PR) riêng mình. A tạo ra PUA và PRA. B tạo ra PUB và PRB. PUA sẽ được A gửi cho B và khi B muốn truyền dữ liệu cho A thì B sẽ mã hóa bằng PUA. A sẽ giải mã bằng PRA. Ngược lại nếu A muốn truyền cho B thì A sẽ mã hóa bằng PUB và B giải mã bằng PRB. PRA và PRB không bao giờ được truyền đi và chỉ được giữ riêng cho mỗi bên.
Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
Với cách thức này, khái niệm chữ kí điện tử ra đời, khi một thông tin (chữ kí) đã được mã hoá bằng một khoá công khai (public key), để thử xem đó có phải là chữ kí của bạn hay không, bạn có thể mã hoá chúng bằng khoá riêng tư, sau đó giải mã bằng khoá công khai của chính bạn, nếu thông tin không bị sai lệch thì đó chính là chữ kí của bạn.
3) Mã hoá một chiều (hàm băm):
Tên gọi của nó đã gợi lên ý niệm là chuỗi mã hoá không thể bị dịch ngược lại. Người ta đã chứng minh được rằng, mỗi chuỗi đã mã hoá chỉ có thể là ánh xạ của duy nhất một chuỗi chưa mã hoá nhập vào ; có nghĩa là một mật khẩu chỉ có thể được mã hoá ra một chuỗi duy nhất và ngược lại. Các thuật toán mã hoá một chiều được dùng nhiều trong quá trình xác thực, lưu mật khẩu, thông tin thẻ tín dụng… Nền tảng của loại này có thể xếp vào cùng loại với mã hoá đối xứng. Trong giao dịch điện tử, chìa khoá chính là mật khẩu mà người sử dụng đã chọn lựa sẽ được dùng để mã hoá thông tin của khách hàng, còn mật khẩu sẽ được mã hoá theo hàm băm một chiều, các hackers 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.
Ban đầu, người dùng nhập mật khẩu dưới dạng text và gửi yêu cầu xác thực. Mật khẩu này sẽ được mã hoá băm (chẳng hạn là MD5). Quá trình kiểm tra nếu trùng với chuỗi mã hoá đã lưu ở máy chủ thì mật khẩu đó là hợp lệ.
Các thuật toán nổi tiếng được sử dụng nhiều nhất là MD-5 (Message-Digest algorithm 5) và các thuật toán SHA (SHA-1, SHA-2). Mọi ứng dụng từ các forum như IPB, VBB cho đến Yahoo! đều ứng dụng trong việc mã hoá mật khẩu của users.
Theo nhận xét được ghi trong chuẩn của FIPS 180-2:
1) Cho một giá trị băm nhất định được tạo nên bởi một trong những thuật giải SHA, việc tìm lại được đoạn dữ liệu gốc là không khả thi.
2) Việc tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi một trong những thuật giải SHA là không khả thi. Bất cứ thay đổi nào trên đoạn dữ liệu gốc, dù nhỏ, cũng sẽ tạo nên một giá trị băm hoàn toàn khác với xác suất rất cao.
* MD5 chuyển đổi thông tin có chiều dài bất kì thành một chuỗi có độ dài 128 bit không đổi với xác suất khác biệt cao, được biểu diễn bằng 32 số mã hex.
MD5("The quick brown fox jumps over the lazy dog")
= 9e107d9d372bb6826bd81d3542a419d6
Thậm chí một sự thay đổi nhỏ trong mẩu tin cũng dẫn đến thay đổi hoàn toàn bảng băm, do hiệu ứng tuyết lở. Ví dụ, thay d thành e:
MD5("The quick brown fox jumps over the lazy eog")
= ffd93f16876049265fbaef4da268dd0e
Bảng băm của một chuỗi rỗng là:
MD5("")
= d41d8cd98f00b204e9800998ecf8427e
MD5 rất khó để có thể giải mã ngược chiều. Hiện nay cách đơn giản và hiệu quả nhất của việc giải mã MD5 là dựng các databases của các giá trị mã hoá MD5, trước tiên hackers cung cấp các công cụ cho phép người dùng xem mã MD5 của một chuỗi người dùng nhập vào, kết quả sẽ được trả về đồng thời nó cũng được lưu vào DB trong máy chủ, dần dần tạo nên một khối DB khổng lồ. http://gdataonline.com
Chính vì lý do này, MD5 đã được cải tiến, ngoài giá trị nhập vào của người dùng (thường là password) máy tính sẽ tạo thêm một mã ngẫu nhiên (random salt) được sinh và lưu ở máy chủ để “trộn” 2 lần vào chuỗi nhập sau đó mới MD5 kết quả cuối cùng.
return md5( md5( $salt ) . $md5_once_password );
Vì vậy nếu bằng một cách nào đấy, hackers sniff được đoạn MD5(password) của bạn thì việc dịch ngược cũng bó tay vì không thể nào có được mã salt. Và dù cho hackers biết được mã salt thì việc dịch ngược cũng là bất khả thi bởi DB có sẵn không thể nào lường hết được các kí tự của mã salt này.
(Còn tiếp)
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
UITnetwork
- 19/10/2009 16:14 - Malware tồn tại trong máy tính dài hơn chúng ta ng…
- 11/10/2009 02:04 - Tạo user có full quyền administrator từ user thườn…
- 09/10/2009 00:19 - Hệ Thống Honeypot và Honeynet
- 18/09/2009 22:17 - Những nguyên tắc Bảo mật cần nhớ
- 18/09/2009 10:16 - Kĩ thuật Mã hoá trong Mạng máy tính (P2)
- 11/09/2009 16:48 - Lỗ hổng zero-day của SMB 2.0 protocol
- 11/09/2009 11:21 - Phần mềm mã nguồn mở trong kiểm tra tự động ứng dụ…
- 11/09/2009 11:00 - Khóa WPA Wi-Fi bị tấn công trong vòng 1 phút
- 10/09/2009 14:05 - Tăng cường an ninh cho trung tâm dữ liệu
- 19/05/2009 00:04 - Cài đặt Snort + MySQL+ BASE trên fedora 10