Các điểm yếu trong hệ thống mật mã
Người thiết kế hệ thống dành quá nhiều chú ý cho thuật toán mật mã sẽ giống người muốn bảo vệ tài sản của mình, song thay vì xây một hàng rào cao thì lại chỉ triển khai một loạt cổng mà hoàn toàn không nghĩ rằng kẻ đột nhập không khó khăn gì khi vượt qua chúng. Những kẻ ăn trộm nhà nghề có thể lọt qua những lỗ hổng khó nhận thấy nhất.
Trong nhiều tài liệu người ta thường phân loại sản phẩm mật mã theo thuật toán và độ dài khóa, ví dụ như “Khóa 1208 bit đảm bảo an toàn trong khi khóa 40 bit dễ dành bị phá” hay “Thuật toán Triple - DES tin cậy hơn nhiều so với DES bình thường” hoặc “Hệ mật RSA với khóa 2048 bit tốt hơn RSA 1024 bit”. Nhưng trong mật mã mọi việc không đơn giản như vậy.
Tấn công vào cấu trúc
Hệ thống mật mã không thể an toàn hơn những thuật toán mật mã riêng biệt được sử dụng trong đó. Nói cách khác, để vượt qua hệ thống bảo vệ chỉ cần phá được một thành phần bất kỳ của nó. Nếu các vật liệu tốt vẫn chưa đảm bảo tính bền vững cho ngôi nhà thì đối với hệ thống mật mã cũng vậy, khi được xây dựng trên cơ sở các thuật toán và giao thức mạnh vẫn có thể là hệ mật yếu.
Nhiều hệ thống không còn đảm bảo được an toàn nếu được dùng không đúng. Sử dụng nhiều lần tham số là một ví dụ của cách dùng không đúng. Các thuật toán mật mã không nhất thiết đảm bảo tính toàn vẹn, các giao thức trao đổi khóa không nhất thiết đảm bảo hai bên liên lạc nhận được cùng một khoá mã. Một số hệ thống sử dụng các khóa liên quan đến nhau có thể bị phá ngay cả khi từng khóa riêng biệt là hoàn toàn tin cậy. Để đảm bảo an toàn thì việc thực thi thuật toán là chưa đủ. Thậm chí ngay cả khi có kỹ sư trình độ cao với sự hỗ trợ của các công ty có uy tín và lao động cần cù cũng không đảm bảo được độ an toàn tuyệt đối.... Những lỗ hổng phát hiện được trong các thuật toán mật mã của hệ thống di động CDMA và GSM, cũng như trong các giao thức PP/TP chứng minh cho điều đó. Ví dụ, trong thuật toán khá tin cậy là thuật toán RC4 mà dựa vào đó người ta xây dựng nên giao thức PP/TP thì một chế độ vận hành mà việc bảo vệ hoàn toàn bị vô hiệu hóa cũng đã bị phát hiện.
Còn một điểm yếu nữa của các phương tiện mật mã là các bộ tạo số ngẫu nhiên. Thiết kế một bộ tạo số ngẫu nhiên có chất lượng tốt là việc không đơn giản, vì nó phụ thuộc vào đặc tính của thiết bị và chương trình phần mềm. Bản thân hệ thống mật mã có thể triển khai ở mức cao nhưng bộ tạo số ngẫu nhiên lại cho ra những khóa mật mã dễ đoán được thì các trở ngại còn lại dễ dàng vượt qua. Trong rất nhiều sản phẩm sử dụng các bộ tạo số ngẫu nhiên cho các khóa mật mã đã để lộ những qui luật nhất định. Trong những trường hợp như thế thì không thể nói đến an toàn. Cần lưu ý là với cùng một bộ tạo số ngẫu nhiên nhưng ứng dụng trong lĩnh vực này thì đảm bảo được an toàn còn trong lĩnh vực khác lại không.
Còn điểm yếu khác là tương tác giữa các giao thức mật mã. Gần như đối với từng giao thức an toàn thì về nguyên tắc, luôn tìm được giao thức khác không kém tin cậy nhưng lại làm cho mọi ưu điểm của giao thức ban đầu trở nên vô hiệu nếu chúng sử dụng cùng khóa mật mã và cùng thiết bị. Nếu các tiêu chuẩn bảo vệ được ứng dụng trong cùng một môi trường thì sự tương tác không đủ rõ ràng giữa chúng sẽ dẫn đến không ít hậu quả. Nhiều hệ thống đưa đến nhiều sai sót trong thực thi: một số sản phẩm không hủy thông tin gốc sau khi mã chúng, trong một số sản phẩm, để đề phòng mất thông tin khi có gián đoạn hệ thống người ta sử dụng các tệp tạm thời. Trong trường hợp này, trên đĩa cứng có thể còn lại một đoạn thông tin rõ chưa được mã hóa.
Việc quá tải các vùng đệm, thông tin mật không được xóa hết, hệ thống phát hiện và khôi phục lỗi không đủ tin cậy... là ví dụ về những lỗ hổng trong thực hiện mà kẻ tấn công có thể tận dụng để lọt qua. Trong một số trường hợp còn nguy hại hơn là hệ điều hành có thể để lại khóa trên đĩa cứng. Trong một số sản phẩm phần mềm đã được nghiên cứu, việc nhập mật khẩu được thực hiện qua một cửa sổ chuyên dùng và mật khẩu được giữ lại trong vùng đệm cả sau khi đóng cửa sổ. Như vậy, việc nghiên cứu khả năng bảo vệ hệ thống đã không còn ý nghĩa vì kẻ gian có thể xâm nhập vào hệ thống qua giao diện người dùng.
Thông thường, để mở rộng chức năng hệ thống các nhà thiết kế buộc phải thỏa hiệp và như vậy rất dễ xuất hiện lỗ hổng về an toàn. Việc rà soát lại các bản ghi thường chỉ làm một lần trong ngày nhưng kẻ đột nhập trong vài giờ đã có thể gây nên thiệt hại lớn. Việc quá tải các thủ tục xác thực cũng có thể dẫn đến hiện tượng không phát hiện được kẻ xâm nhập trái phép. Một số hệ thống chuyển các khóa nghi ngờ vào “danh sách đen” và việc tiếp cận được các danh sách đó sẽ tạo thuận lợi cho kẻ đột nhập. Nhiều hệ thống bảo vệ bị phá bởi các kiểu tấn công lặp lại và sử dụng các bản thông báo cũ hoặc các phần nội dung của chúng.
Tấn công vào trang bị
Một số hệ thống (thường dùng trong thương mại) được trang bị một “vành đai an toàn” bao gồm những thiết bị có độ ổn định cao, chống lại được các tấn công (như thẻ thông minh, khóa điện tử, giấy điện tử...). Những nhà sáng chế các phương tiện này xuất phát từ quan điểm rằng, cấu trúc của hệ thống bên trong vành đai là đã được bảo vệ tốt, có khả năng ngăn ngừa được tiếp cận trái phép. Nhưng nhiều khi độ tin cậy của trang bị chỉ chống được các hành vi ăn cắp và xâm nhập thiếu chuyên nghiệp.
Khi thiết kế các hệ thống thì điều quan trọng là không được quên các cơ chế bảo vệ bổ sung vì những cơ chế này sẽ phát huy tác dụng khi những kẻ tấn công đã vượt qua được vành đai phòng thủ ban đầu. Cần phải làm phức tạp tối đa công việc của đối phương và làm cho giải pháp của chúng không có lợi về mặt kinh tế. Khi thiết kế phương tiện bảo vệ cần phải xuất phát từ nguyên tắc là giá trị của dữ liệu được bảo vệ phải thấp hơn chi phí dành cho việc phá hệ thống an ninh.
Từ năm 1995, các cuộc “tấn công theo thời gian biểu” đã tăng đáng kể. Khóa của RSA có thể khôi phục bằng cách đo khoảng thời gian giữa các thao tác mã hóa. Đã có hàng loạt tấn công thành công vào smart- card cũng như các máy chủ thương mại điện tử trên Interrnet. Đã phát hiện các tấn công được xây dựng trên cơ sở đo công suất sử dụng, phân tích bức xạ điện từ và các nguồn thông tin hỗ trợ khác. Theo dấu hiệu này, các chuyên gia mật mã đã thành công trong việc khôi phục lôgic của nhiều hệ thống khóa công khai sau khi đã xem xét độ tin cậy của chúng.
Phương pháp được biết đến nhiều nhất là phân tích các gián đoạn hoạt động. Phương pháp này cho phép tìm ra các điểm yếu của các quá trình mật mã và khôi phục khóa mã bí mật.
Tấn công vào các mô hình quan hệ tin cậy
Rất nhiều phương pháp tấn công liên quan đến mô hình quan hệ tin cậy. Trước hết cần làm rõ quan hệ giữa các thành phần riêng lẻ của hệ thống, làm rõ các hạn chế và cơ chế thực thi lược đồ quan hệ tin cậy. Các hệ thống đơn giản (như phương tiện mã hóa các cuộc đàm thoại bằng điện thoại và thông tin trên đĩa cứng) sử dụng các mô hình quan hệ đơn giản. Các hệ thống đồng bộ (như sử dụng trong thương mại điện tử hoặc các phương tiện bảo vệ các gói dịch vụ nhiều người dùng trong thư điện tử) được xây dựng trên cơ sở các mô hình phức tạp và tin cậy hơn.
Trong chương trình thư điện tử có thể sử dụng các thuật toán mật mã, nhưng nếu khóa mật mã không được xác nhận bằng nguồn tin cậy thì an ninh hệ thống cũng không được đảm bảo. Một số hệ thống thương mại có thể bị phá do thỏa thuận giữa người mua và người bán hoặc của một nhóm khách hàng. Nếu mô hình quan hệ tin cậy không được quy trình hóa thì trong quá trình triển khai có thể ngẫu nhiên đưa vào sản phẩm một số thay đổi nào đó không được phép, kết quả là tính cân đối của hệ thống an toàn bị phá vỡ. Nhiều chương trình đã quá dựa vào tính an toàn của thiết bị phần cứng nhưng sớm hay muộn thì các chương trình này sẽ bị “con ngựa thành Tơ roa” xâm nhập vào. Nó sẽ chọn mật khẩu, đọc bản thông báo chưa mã hóa hoặc bằng cách nào đó can thiệp vào hệ thống bảo vệ. Các nhà thiết kế hệ thống hoạt động trong các mạng máy tính cần quan tâm đến an ninh của giao thức mạng vì nguy cơ an toàn đối với máy tính được kết nối vào Internet ngày càng tăng.
Một hệ thống mật mã bị vượt qua từ “bên ngoài mạng” là hệ thống hoàn toàn vô ích. Không tồn tại loại chương trình mà độ an toàn của nó đứng vững được sau khi kẻ ác ý đã thành công trong việc “thiết kế ngược”. Thông thường, hệ thống được thiết kế dựa trên một mô hình các quan hệ tin cậy, nhưng trên thực tế lại hiện diện mô hình hoàn toàn khác. Những giải pháp được chấp nhận trong quá trình thiết kế hoàn toàn bị bỏ qua sau khi sản phẩm được chuyển cho người dùng. Một hệ thống tuyệt đối an toàn với người vận hành đáng tin cậy và việc tiếp cận hoàn toàn được kiểm soát sẽ vẫn mất hết mọi ưu thế nếu trách nhiệm của người vận hành lại do những nhân viên được trả lương thấp thực hiện trong thời gian ngắn, còn việc giám sát vật lý thì bị bỏ qua.
Tấn công người dùng
Khi hệ thống đảm bảo tin cậy trong điều kiện khai thác đúng nhưng người sử dụng vẫn có thể ngẫu nhiên phá vỡ nó, nhất là những hệ thống được thiết kế không đủ tốt. Ví dụ kinh điển là nhân viên để lại mật khẩu cho đồng nghiệp của mình để họ có thể tham gia thực hiện các nhiệm vụ khi anh ta vắng mặt. Tấn công tính đến yếu tố con người còn hiệu quả hơn nhiều so với việc phân tích thuật toán phức tạp trong hàng tháng trời.
Nhiều sản phẩm bị phá vì việc bảo vệ chúng được xây dựng trên cơ sở mật khẩu do người dùng tự tạo ra. Người dùng thường không lưu ý đến việc chọn một dãy ký tự không bình thường làm mật khẩu vì chúng không dễ chọn và lại khó nhớ. Nếu chọn mật khẩu đơn giản làm khóa mật thì kẻ tấn công tìm ra nó đơn giản hơn nhiều. Thậm chí chọn mật khẩu dưới dạng câu cũng không hề đảm bảo được độ an toàn đòi hỏi bởi vì kẻ tấn công tìm một câu gồm 40 chữ cái dễ hơn là duyệt tất cả các dãy có thể từ 64 khóa ngẫu nhiên. Đôi khi hệ thống bảo vệ trong đó sử dụng cơ chế tin cậy khóa phiên vẫn bị phá do sử dụng mật khẩu yếu để khôi phục khóa. Chính mong muốn tạo ra điều kiện thuận lợi cho việc khôi phục hệ thống sau khi bị gián đoạn trên thực tế lại mở đường cho kẻ tấn công.
Tấn công các phương tiện khôi phục sau gián đoạn hoạt động
Thực tế có rất nhiều hệ thống mặc định được thiết lập ở chế độ không sử dụng các phương tiện an toàn và sẽ tạo cơ hội cho cách thức tấn công từ chối dịch vụ.
Đôi lúc kẻ tấn công có khả năng sử dụng tính tương thích ngược trong các phương án khác nhau của các chương trình phần mềm. Về nguyên tắc, trong mỗi phương án sản phẩm nhà thiết kế cố gắng loại trừ các lỗ hổng có trong phương án cũ. Nhưng yêu cầu tương thích ngược lại cho phép sử dụng giao thức của phương án cũ không được bảo vệ.
Một số hệ thống không có phương tiện khôi phục. Nếu lớp bảo vệ bị phá thì không có khả năng khôi phục chương trình trở lại trạng thái làm việc bình thường. Một hệ thống được thiết kế tốt tự nó phải có khả năng chống lại tấn công, khắc phục thiệt hại và khôi phục lại khả năng làm việc của mình.
Tấn công vào các phương tiện mật mã
Nhiều khi các điểm yếu có thể tìm trực tiếp trong hệ thống mật mã. Một số sản phẩm được xây dựng trên cơ sở thuật toán mật mã tự thiết kế sẽ là không đủ mạnh. Về nguyên tắc, các thuật toán đã được biết rộng rãi chỉ có thể phá được trong các trường hợp rất đặc biệt. Nếu nhà thiết kế dựa vào phương pháp tự mình xây dựng thì cơ hội thành công của kẻ tấn công tăng lên nhiều lần. Khi đó việc không nắm được khóa mật mã cũng không còn là trở ngại đặc biệt đối với kẻ tấn công. Một chuyên gia có kinh nghiệm có thể khám phá ra thuật toán mật mã trong một khoảng thời gian nhất định.
Độ tin cậy của S/MINE 2 dùng trong hệ thống thư điện tử không thể bù lại các điểm yếu của thuật toán. Hệ thống bảo vệ GSM dùng thuật toán yếu càng nguy hiểm hơn. Trong nhiều hệ thống GSM đang sử dụng khóa có độ dài quá ngắn.
Có thể liệt kê nhiều ví dụ về những sai sót trong hệ thống mật mã: chương trình lặp lại các giá trị ngẫu nhiên, các thuật toán ký số không thể đảm bảo kiểm soát các tham số của hàm băm, để lộ thông tin cần bảo vệ trong các giao thức mật mã được đưa vào những sửa đổi mà nhà thiết kế không hề xem xét trước; Người dùng thích “tối ưu hóa” các phương tiện hiện có, đơn giản hóa đến mức toàn bộ hệ thống sẽ sụp đổ giống như một ngôi nhà được làm bằng bìa cát tông.
Cảnh báo các nguy cơ tiềm ẩn
Các phương tiện mật mã làm giảm khả năng người dùng có thể trở thành nạn nhân của những kẻ tấn công. Nhưng thiết kế an toàn thì không nên chỉ hạn chế trong những khuôn khổ hạn hẹp như vậy.
Hệ thống tin cậy cần tự mình phát hiện ra các hành vi trái phép và loại trừ hậu quả của các tấn công. Một trong các nguyên tắc cơ bản trong thiết kế các hệ thống an toàn là sớm hay muộn thì cuối cùng kẻ tấn công cũng sẽ thành công. Đúng hơn là điểm ra đòn sẽ ở những hướng ít ngờ nhất với việc sử dụng các phương pháp mà nhà thiết kế không biết. Bởi vậy, cần kịp thời nhận biết tấn công và đưa ra các biện pháp cần thiết để giảm thiểu thiệt hại.
Điều hết sức quan trọng là phải nhanh chóng khôi phục hệ thống bị tổn hại do tấn công. Cần tạo các cặp khóa mới, thay đổi giao thức, không sử dụng các phương tiện đã bị kẻ tấn công phát hiện, loại trừ ra khỏi hệ thống các điểm mà qua đó kẻ tấn công tiếp cận hệ thống. Đáng tiếc là nhiều sản phẩm đã không thu thập đủ thông tin, không kiểm soát tình huống và không có khả năng bảo vệ dữ liệu chống lại các sửa đổi.
Sổ nhật ký cần phản ánh tất cả sự kiện cho phép khẳng định có tấn công. Trong trường hợp cần thiết, cần đưa ra các bằng chứng xác đáng có khả năng thuyết phục tòa án khép tội kẻ tấn công.
Nhà thiết kế hệ thống an ninh cần tuân thủ một nguyên tắc là: các phương tiện phòng thủ tốt là những phương tiện có khả năng đánh trả mọi đòn tấn công thậm chí ngay cả khi hiện tại chưa biết gì về chúng. Ngược lại, kẻ tấn công chỉ cần tìm được một lỗ hổng duy nhất và khi đó toàn bộ hệ thống bảo vệ sẽ bị vô hiệu. Với mọi mánh khóe, kẻ tấn công sẽ ngụy trang cẩn thận mọi hành vi trái phép của mình và sẵn sàng chờ trong một thời gian dài để có các phương tiện cần thiết. Chúng luôn có sẵn ý tưởng để sẵn sàng thực hiện mọi “cú đấm” bất ngờ vào nhà thiết kế.
Không có gì đơn giản hơn là bảo vệ thông tin bằng một hàng rào yếu ớt với đầy lỗ hổng. Trong khi đó, xây dựng một hệ thống bảo vệ không để kẻ gian lọt qua được lại vô cùng phức tạp. Đáng tiếc là người dùng không nhìn thấy sự khác nhau giữa hai hệ thống như vậy. Trong nhiều lĩnh vực khác thì việc phân tích chức năng hệ thống sẽ cho phép phân biệt những sản phẩm tốt với những sản phẩm tồi, nhưng trong lĩnh vực mật mã thì mọi sự đều khác. Có được chương trình mật mã làm việc tốt cũng chưa thể nói là đã có hệ thống bảo vệ tin cậy. Vậy các sản phẩm được tạo ra như thế nào? Những nhà thiết kế sau khi đọc cuốn Mật mã ứng dụng sẽ chọn các thuật toán và giao thức phù hợp, kiểm tra chúng và phương án coi như đã xong. Trên thực tế lại không đơn giản như vậy.