2010/09/13

An ninh điện tử | Khoa Mã Hoá (Cryptology)

Tóm Tắt

I.    Mã hóa là quá trình biến thông tin trở thành không truy cập được với mọi người, trừ những người liên quan.  Bạn có thể mã hóa một bức thư, một bức email hoặc cả một máy điện toán.
II.    Để liên lạc bằng mã hóa, ta dùng hệ thống dùng khóa chung.  Phương pháp mã hóa của ta gồm có một khóa chung và một khóa riêng.  Ta dùng chung khóa chung với những ai muốn liên lạc với ta, và họ phải mã hóa mỗi bức thư gửi đến ta bằng khóa chung này.
III.    Mức an ninh của một hệ thống mã hóa dùng khóa chung lệ thuộc vào hiệu lực của cái khóa chung, vào một máy điện toán không có virus và spyware, và vào một mật khẩu tốt để bảo vệ khóa riêng của bạn.
IV.    Ta có thể đề phòng email bị lục soát trong khi thư đang được chuyển đến nơi gửi bằng cách dùng chữ ký kỹ thuật số.
V.    Mức độ an ninh mà mã hóa cung cấp đã làm cho sự thực hành và lý thuyết của mã hóa bị cấm trong vài đất nước.

Lịch Sử

Mật mã học là môn học có liên quan đến kỹ thuật ngôn ngữ học và toán học để bảo vệ thông tin.  Bức thư được mã hóa để không ai đọc được, trừ những người có liên quan.  Lịch sử lâu dài và đầy màu sắc của mật mã học được bắt nguồn tư thế kỷ thứ 5 trước công nguyên, khi người Spartan phát minh ra phương pháp mã hóa đầu tiên của nhân lọai bằng cách dùng hai gậy gỗ giống hệt nhau và một tờ giấy da.  Giấy da được cuộn chung quanh gậy, và bức thư được viết theo chiều dọc.  Khi mở giấy da ra, chữ có vẻ như được viết không theo thứ tự gì cả.  Giấy da được gửi đến người nhận, và người nhận có một cây gậy giống hệt để đọc bức thư.  Có những phương pháp khác để bảo vệ an ninh thông tin gồm có mật mã học ngôn ngữ (chẳng hạn như viết tượng hình) và steganography, nghĩa là quá trình che dấu sự tồn tại của chính bức thư.

Bức thư được viết trên giấy da dọc theo chiều dài cây gậy (scytale).  Scytale sử dụng cái mà ngày nay gọi là mật mã hoán vị, tức là cách sắp xếp lại thứ tự của các chữ cái trong một bức thư12.

Không nên quá đề cao sự an toàn, nếu chỉ do ngành mật mã học cung cấp.  Yếu điểm của nó thường là kết quả của lỗi con người phạm phải hoặc lỗi kỹ thuật trong toàn bộ thủ tục an ninh.  Một số quốc gia cũng đã ban ra luật cấm không cho dùng mật mã học.  Các nhà toán học, khoa học gia và hoạt động dân quyền ở Mỹ đã phải chiến đấu suốt 20 năm dài để ngăn cản chính phủ Mỹ không được ngăn cấm công chúng được truy cập và sử dụng mật mã học, cái mà ngày nay gọi là Cuộc Chiến Mật Mã.

Mã Hóa

Mã hóa (và ngược lại là giải mã) là một ngành học phổ biến trong ngành mật mã học.  Mã hóa hoạt động bằng cách áp dụng một mô hình toán học lớn vào một tập hợp thông tin rồi chuyển thông tin sang mật mã, làm cho thông tin trở thành không đọc được đối vơi những ai không có cách giải mã, mà còn gọi là mã khóa.

Mã Hóa Đĩa
Bạn có thể dùng mã hóa để bảo vệ toàn bộ đĩa cứng.  Thực chất là bạn mã hóa từng bit thông tin trên đĩa, để chỉ có bạn là người có mật khẩu có thể truy cập được thông tin.  Mỗi khi thông tin được rút ra từ máy bạn (chẳng hạn như từ đính kèm email) thông tin được tự động giải mã.  Nếu máy bạn bị mất cắp, người khác sẽ không truy cập được thông tin nằm trong máy.

Trên máy bạn cũng có thể tạo ra một đĩa ảo được mã hóa.  Cách này có thể thích hợp với những ai không muốn mã hóa toàn bộ máy điện toán, mà chỉ muốn phân bố khoảng trống để lưu lại thông tin được an toàn.  Nếu máy bạn còn dư 5GB trên đĩa, bạn có thể phân bố ra một khoảng trống chiếm 1GB.  Khoảng phân bố này trông giống như là một đĩa mới gắn vào máy (thực sự ra đĩa này không phải là mới, cho nên mới gọi là đĩa ảo).  Khoảng phân bố này được mã hóa, và bạn có thể lưu tài liệu vào đây

Bạn có thể sắp đặt cho chương trình email (thí dụ Thunderbird) để lưu lại tất cả email vào trong khoảng phân bố đã được mã hóa.  Chỉ có bạn là người có mật khẩu mới có thể truy cập được email trên khoảng phân bố này.

Bạn cũng có thể mã hóa toàn bộ thẻ nhớ USB hoặc các dụng cụ di động khác.  Việc này rất là có ích khi ta đi du lịch với mọi tài liệu nằm trong thẻ nhớ USB.  Bạn có thể chạy chương trình như TrueCrypt trực tiếp từ thẻ nhớ USB, để bạn không cần phải cài đặt chương trình này vào mỗi máy điện toán có chứa những tài liệu được mã hóa mà bạn muốn truy cập.

Mã Hóa Dùng Khóa Chung
Các phương pháp truyền thống để mã hóa thông tin mà bạn muốn chia sẽ với người khác đòi hỏi bạn phải đưa người kia mật khẩu để giải mã.  Đây không phải là cách an toàn lắm, vì mật khẩu của bạn có thể bị tiết lộ trong quá trình giải mã.  Để tránh tình trạng này, các nhà toán học đã sáng tạo ra cách mã hóa dùng khóa chung (PKE).  Đây là phương pháp thông dụng nhất cho việc mã hóa liên lạc (thí dụ là email) ngày nay.

Khi sử dụng PKE, khóa của bạn gồm hai phần: một khóa chung (public key) và một khóa riêng (private key).  Hai khóa này gom lại thành một đôi khóa.  Hai khóa phối hợp chặt chẽ; khi bạn mã hóa bằng khóa này thì bạn giải mã bằng khóa kia.  Đây là một phần thiết yếu của PKE và là nền tảng cho sự an toàn và cũng là yếu điểm của PKE.

Bạn chia sẽ khóa chung với những ai bạn muốn liên lạc.  Bạn cũng có thể tải khóa chung lên một máy chủ để chứa khóa trên mạng.  Khóa riêng thì được giữ bí mật trên máy hoặc đĩa mềm của bạn và hơn nữa còn được bảo vệ bằng một mật khẩu mà chỉ riêng bạn mới biết.  Đừng cho bất cứ ai biết khóa riêng này.  Nếu bạn nghĩ rằng mật khẩu đã bị tiết lộ (hoặc mất cắp) thì bạn phải hủy bỏ đôi khóa đi và tạo lại đôi khóa từ đầu.

Mã Hóa và Giải Mã Một Bức Thư

Trong hệ thống PKE, bức thư được mã hóa bằng khóa chung trước khi gửi đến cho ta, và ta giải mã bằng khóa riêng.  Khi có người muốn gửi cho bạn một bức thư được mã hóa, để lấy khóa chung họ sẽ hỏi bạn hoặc tự tìm ra trên một máy chủ chứa khóa trên mạng.

Thí Dụ: Bạn có một bức thư mà bạn muốn mã hóa trước khi gửi đến cho tôi.  Trước tiên tôi phải đưa bạn cái khóa chung.  Bạn dùng khóa chung này để mã hóa bức thư và gửi cho tôi bằng email hoặc bằng cách khác.  Chỉ có tôi là người duy nhất có thể giải mã được bức thư này, bởi vì chỉ có tôi mới có được mắt xích thất lạc, tức là cái khóa riêng của tôi.


Lưu Ý : chữ "plaintext" có nghĩa là bức thư còn nguyên thủy, trong khi "cipher text" có nghĩa là bức thư đã được mã hóa.

Phương pháp này làm thuận tiện cho việc trao đổi bức thư được mã hóa mà không phải chia sẻ mật khẩu, và đột ngột làm tăng lên sự an ninh và tính thiết thực trong liên lạc.  PKE đã được ứng dụng trong email, chat mạng, lướt mạng và nhiều chức năng mạng khác.  Mức độ an ninh của phương pháp này gây ra nhiều khó khăn đối với nhiều chính quyền.  Ứng dụng thành công của phương pháp này tạo ra mức độ kín đáo cao làm cho nhiều cơ quan theo dõi và tình báo rất lo ngại.

An Ninh Của Khóa

Mức độ an toàn của mã hóa lệ thuộc vào:

    Kích thước của đôi khóa (thường dài 2048 bit)
    Khả năng làm cho khóa chung của người nhận được có hiệu lực
    Sự bảo vệ mật khẩu dùng để mở khoá riêng 

Hệ thống PKE dựa vào cách nhận diện chính xác của khóa chung và khóa riêng.  Khi bạn mã hóa một bức thư dành cho tôi bằng khóa chung của tôi, bạn muốn bảo đảm rằng cái khóa này thuộc về tôi.  Hãy nghiên cứu đặc tính của một đôi khóa.

Một đôi khóa được nhận diện bởi 5 đặc điểm rõ ràng:

•    Nhận diện người dùng: thường là địa chỉ email của người giữ khóa.  Nhớ là phải đánh vần địa chỉ cho đúng.
•    Nhận diện khóa: một cách nhận diện đặc biệt do chương trình mã hóa tự động sinh ra.
•    Dấu tay (fingerprint): (cũng được gọi là MD5 và SHA1.  Xin đọc phần 'Mã Hóa Trên Mạng' để biết thêm chi tiết) đây là một cách nhận diện đặc biệt do khóa chung sinh ra.
•    Ngày làm ra: ngày đôi khóa được tạo ra.
•    Ngày mãn hạn: ngày đôi khóa mãn hạn.

Bạn hãy thử kiểm tra lại các chi tiết nói trên trước khi dùng khóa chung để liên lạc với một người khác.  Bởi vì mã hóa dùng khóa chung không đòi hỏi bạn phải dùng chung mật khẩu với người nhận bức thư, điều quan trọng là bạn phải nhận diện chính xác cái khóa chung. Khóa chung dễ chế tạo nhưng những đặc điểm nhận dạng cũng có thể bị giả mạo.  Vì vậy bạn nên xác minh khóa chung của người đó trước khi sử dụng khóa (xem thêm ở phần 'Chữ Ký Điện Tử' ở dưới đây).  Sau khi bạn đã xác định được rằng khóa chung này do người đó làm ra, bạn có thể 'ký' vào khóa.  Làm như vậy tức là bạn bảo cho chương trình biết là bạn tin tưởng giá trị của khóa và muốn dùng khóa.

Kích thước của khóa thường là 2048 bit.  Người ta cho rằng mức độ mã khóa này phức tạp đến nỗi không máy điện toán hiện đại nào có thể phá nỗi .

Dành cho chuyên viên : chữ ký điện tử (digital signature)
Chúng ta cần khả năng kiểm tra xem bức thư có bị giả mạo không.  Có thể kiểm tra bằng chữ ký điện tử, vốn cũng dùng PKE để hoạt động.  Khi bạn ký điện tử vào một bức thư, bạn bỏ vào bức thư một công thức toán đặc biệt, rút ra từ kích thước, ngày và nội dung riêng của bức thư.  Công thức này lại được mã hóa bằng khóa riêng của bạn, để người nhận có thể kiểm chứng được.  Sau khi giải mã, công thức trong chữ ký được so sánh với bức thư nhận được và xác nhận là bức thư đã được thay đổi chưa từ khi được ký điện tử vào.  Hầu như không thể nào thay đổi nội dung bức thư mà không làm mất hiệu lực chữ ký được.

Một số chương trình (chẳng hạn là GnuPG) có chức năng PKE có thể hợp nhất với chương trình email (chẳng hạn GnuPG với Thunderbird sử dụng Enigmail extension hoặc với MS Outlook sử dụng G Data GnuPG plug-in làm cho cả hệ thống được hoạt động đơn giản và nhanh hơn.

Bạn nên mã hóa mọi thư từ trao đổi sau khi bạn và những người bạn liên lạc đã cài đặt và bắt đầu sử dụng PKE.  Điều này loại trừ đi khả năng làm người khác nghi ngờ khi bạn gửi đi một lá thư đơn độc được mã hóa mà có chứa đựng thông tin nhạy cảm.

Tóm lại, sử dụng mã hóa thực sự không khó lắm khi ta có sẵn phần mềm hiện đại. 

Những điểm chính cần nhớ gồm:

    Bạn phải tạo ra một đôi khóa và giữ khóa riêng được an toàn.
    Bạn mã hóa bức thư bằng khóa chung của người nhận.
    Bạn nên luôn kiểm tra khóa của người nhận bằng cách kiểm lại dấu tay.

Sự Bất An Của Mã Hóa
Vấn đề lớn nhất khi mã hóa là đôi khi mã hóa làm cho ta một cảm giác an toàn giả tạo.  Chỉ vì bạn đã sử dụng mã hóa, không có nghĩa là bức thư của bạn sẽ được an toàn 100%.  Đương nhiên mã hóa vẫn là một phương pháp xuất sắc để nâng cao mức độ an toàn, nhưng mã hóa không phải là hoàn hảo.  Vấn đề chính đối với an ninh của PKE là yếu tố con người: những lỗi lầm phạm phải khi ta bất cẩn hoặc thiếu ý thức.  Sau đâu tôi sẽ trình bày ba cách để phá mã hóa của bạn.

•    Khóa riêng bị lộ.  Nếu tin tặc lấy được khóa riêng của bạn bằng cách truy cập máy bạn hay bằng cách nào khác, hắn chỉ cần phá mật khẩu bảo vệ khóa riêng là xong.  Phá mật mã bằng cách thử tất cả các dạng mật khẩu (dùng một chương trình phá mật khẩu để thử hết mọi phối hợp thông thường và ngẫu nhiên) hoặc bằng cách lén nhìn bạn trong khi bạn đang đánh mật khẩu trên bàn phím.  Có một cách khác để ăn cắp mật khẩu là cài đặt chương trình thâu chữ (keylogger), bằng cách truy cập vào máy bạn nhờ vào đính kèm trong email.  Keylogger sẽ thâu lại mọi chữ bạn đánh vào bàn phím, rồi gửi thông tin này cho một địa chỉ trên mạng hoặc email.  Bằng cách này, tin tặc có thể lấy được mật mã mà bạn dùng để truy cập khóa riêng mà không cần có mặt cạnh bên máy để truy cập máy của bạn16.

Giải pháp ở đây là dùng chương trình được cập nhật để chống virus và chống spyware, và tường lửa.  Hy vọng giải pháp này hoặc sẽ khám phá ra sự hiện diện của một chương trình thâu chữ, hoặc sẽ ngăn chương trình này không được gửi mật khẩu của bạn ra ngoài.  Nên cẩn thận khi bạn đánh mật khẩu, và nên lưu ý đừng để ai khác thấy được bàn phím hoặc màn hình của máy bạn.  Hầu hết các chương trình mã hóa đều không cho hiện mật khẩu ra trên màn hình.  Bạn phải đánh mật khẩu theo kiểu 'mù'.

•    Hệ phục hồi khóa (key recovery).  Bởi vì mã hóa hiện đã được hợp nhất vào nhiều dụng cụ điện tử hơn và được sử dụng hàng ngày, cơ cấu an toàn cao độ của mã hóa đã trở thành một vấn đề đối với nhiều cơ quan chính phủ và cơ quan hành pháp.  Qua nhiều năm, các cơ quan này đã và đang cố gắng hoàn thành hệ phục hồi khóa (giao kèo khóa) nhằm mục đích giúp các cơ quan truy cập được khóa riêng của bạn.  Ngoài ra, nhiều chính phủ đã bắt đầu ban ra luật lệ bắt buộc bạn phải nộp khóa riêng của bạn để chính phủ lưu lại.  Một số chương trình mã hóa có nguồn kín, mà phương pháp mã hóa chưa được thử nghiệm công khai, thực ra cung cấp một cửa hậu cho các cơ quan an ninh.  Mặc dù hành động này đã bị nhiều quốc gia cho là bất hợp pháp, nó vẫn còn nằm trong nhiều bản phần mềm và phần cứng.  Giải pháp cho nó là bạn hãy sử dụng các sản phẩm có nguồn mở (như GnuPG), đã được cộng đồng mạng phân tích và thử nghiệm kỹ lưỡng.

•    Giá trị và nguy hiểm của khóa chung.  Như đã trình bày trong chương này, giá trị của cái khóa chung mà bạn dùng để mã hóa là trọng tâm của mọi vấn đề an ninh trong ngành mật mã học sử dụng khóa chung.  Vấn đề là ở chỗ khóa chung có thể bị giả mạo dễ dàng.  Khi một người dùng mã hóa bất cẩn, có thể làm cho ta sử dụng khóa của đối phương mà cứ tưởng là khóa của người khác.  Hãy lưu ý kỹ càng khi nhận và nhập khóa chung.  Những bước để kiểm chứng giá trị của khóa chung đã được trình bày ở phần trên.  Mặc dù việc này có thể làm chậm đi chút đỉnh quá trình liên lạc, bạn không nên bỏ qua những bước này.

Đương nhiên là cũng có những phương pháp truyền thống là ra mặt hăm dọa và ép buộc để bạn tiết lộ mật khẩu.

Nên chọn chương trình mã hóa đã được công khai kiểm tra là không có cửa hậu (chẳng hạn như PGP, GnuPG, TrueCypt).  Hãy lưu ý xem luật lệ nơi bạn ở có cho phép dùng mã hóa không, và nếu có thì ở mức độ phức tạp nào (kích thước của khóa) .  Bạn cũng nên biết rằng luật lệ hiện tại ở xứ bạn có thể bắt buộc bạn phải tiết lộ mật khẩu cho chính quyền.  Hãy gắng tìm hiểu xem có luật bảo vệ sự riêng tư hay không, để bạn dùng để tránh tình trạng phải tiết lộ mật khẩu.

No comments:

Post a Comment