Mật mã năm 2014

09:15 | 18/07/2014

Mật mã dân dụng dường như đang bị “đánh gục” trong thời gian gần đây. Điều này vừa có mặt tốt vừa không tốt: Mật mã luôn luôn bị tấn công và đó là lý do để nó liên tục phát triển. Tuy nhiên, những cảnh báo này hữu ích ở chỗ giúp chúng ta nhận thức rằng mật mã cần được quan tâm thường xuyên hơn.

 

Sự mong manh và Heartbleed “trái tim rỉ máu”

Các mối đe dọa do mật mã  gây ra là vô cùng rắc rối và phức tạp, gần đây nhất là lỗ hổng Heartbleed và trước đây là “các vấn đề” với các thuật toán như RC4, MD5, SHA1 và Dual_EC_DRBG (tất cả các thuật toán này đều không nên sử dụng tiếp).

Chúng ta có nên đặt hết tin tưởng vào mật mã?

Mật mã là cả một nghệ thuật và cũng là một môn khoa học. Rất nhiều công trình dựa trên cơ sở toán học đã tạo ra các thuật toán mã hóa hoặc giao thức tốt và cũng rất tinh xảo. Hiện nay, có lẽ chỉ có rất ít các chuyên gia trên toàn cầu đang còn đam mê nghiên cứu lý thuyết thông tin, thống kê và các thuật toán để tạo ra các thuật toán mạnh mẽ, chắc chắn hơn. Tuy nhiên, những chuyên gia này có thể chưa hẳn là phù hợp với việc phân tích mã (thám mã) - mặt trái của việc thiết kế một hệ mật. Cần phải có cả hai môn học là mật mã và phân tích mã để sản sinh ra một thuật toán mật mã an toàn.

Vẫn chưa có quy chuẩn nào về cách thức tạo ra một thuật toán mã hóa tốt hay thuật toán mã hóa khác sau đó tốt hơn, vì vậy tính sáng tạo trong lĩnh vực này được đặt lên hàng đầu. Các thuật toán hữu ích như hàm băm một chiều (như MD5) được tạo ra theo linh cảm ban đầu và sau đó được đưa ra phân tích chặt chẽ. Mỗi khi một phép toán được tạo ra, nó sẽ bị tấn công ngược lại cho đến khi hoàn thiện và các kết quả sẽ được quay vòng để thiết kế lại. Cuối cùng, một thuật toán được cho là đủ mạnh sẽ được tạo ra.

Mặc dù vậy, các thuật toán này cuối cùng cũng có thể bị phá vỡ. Trường hợp MD5 và SHA1, năm 2004, khi các nhà nghiên cứu phát hiện ra và chứng minh rằng chúng không thể chống lại các va chạm (điều kiện tiên quyết cần thiết cho việc sử dụng một hàm băm để xác thực), dù rằng các chuyên gia trước đó đã tìm thấy những lỗ hổng này, nhưng vào thời điểm đó, đã không chứng minh được lỗ hổng này có thể bị khai thác hay không.

Các nghiên cứu năm 2004 cho thấy đã có các cuộc tấn công lên giao thức SSL/TLS được dùng để bảo đảm an toàn trình duyệt web. Tuy nhiên, cho tới tận bây giờ, MD5 vẫn đang được sử dụng trong việc cấp chứng nhận SSL/TLS - dựa trên dữ liệu từ các dự án Crossbear SSL. Mặc dù người ta tin rằng, một số các lỗ hổng của MD5 được giảm nhẹ trong trường hợp này, nhưng các cuộc tấn công thì luôn luôn tinh vi hơn, vì vậy việc sử dụng MD5 vẫn không được khuyến khích. Đáng lo ngại hơn, trong thực tế, không thể chắc chắn rằng hàm băm mật mã đã được chứng minh là an toàn có thể đáp ứng đủ các tiêu chí cần thiết cho một hàm như vậy hay không. Hơn nữa, MD5 vẫn đang được sử dụng cho một số mục đích khác, điều này không quá nguy hiểm khi các nhà sản xuất và người dùng nắm chắc được mục đích sử dụng.

Những thông tin trên đây luôn hữu ích cho người dùng. Mật mã vẫn đang tiến hóa và người sử dụng phải theo kịp với sự phát triển của nó, bằng cách trực tiếp hay gián tiếp. Ví dụ, Microsoft đã thông báo rằng họ sẽ từ chối các chứng thư số dựa trên SHA1 từ năm 2016 trở đi. Nếu người dùng lựa chọn Microsoft là nhà cung cấp, thì đây là tin tốt, nó có nghĩa là người dùng sẽ được Microsoft bảo vệ. Một số nhà cung cấp làm tốt quy trình bảo đảm an toàn thông tin, một số khác thì ít chú trọng đến vấn đề này. Do đó, việc người dùng lựa chọn nhà cung cấp có thể ảnh hưởng đến an toàn hệ thống thông tin của chính mình.

Tính mỏng manh của mật mã

Bởi vì các phép toán đằng sau mật mã học khá tinh tế và chuyên sâu, cho nên việc cài đặt và thực thi thuật toán mật mã là rất khó khăn. Có rất nhiều lỗi có thể khai thác đã được tìm thấy trong việc triển khai cài đặt mật mã, do đó cần sử dụng mã nguồn mở đáng tin cậy bất cứ khi nào có thể, hoặc ký hợp đồng lập trình với các chuyên gia mật mã để đảm bảo công việc. Victor Shoup, một chuyên gia mật mã hàng đầu, luôn duy trì thư viện C++ riêng của mình, vì không tin tưởng vào việc sử dụng một thư viện mà vấn đề bảo mật không được chú trọng.

Cộng đồng mạng đã biết tới Heartbleed – OpenSSL. OpenSSL là một thực thi mã nguồn mở của giao thức SSL/TLS và các thuật toán liên quan. Nó đã từng được coi như định hướng mới cho việc thực thi mật mã. Tuy nhiên, lỗi đã xảy ra, và thảm kịch thực sự của Heartbleed ở chỗ, đây không phải lỗi mới được tạo ra, nó đã tồn tại mà không bị phát hiện trong hơn hai năm qua. Điều này là không nên để xảy ra trong một dự án mã nguồn mở, khi mà bất cứ thay đổi nào của nó đều được công khai và có thể ngay lập tức được cộng đồng xem xét.

Như một phản ứng tự nhiên, cộng đồng OpenBSD tỏ ý không tin tưởng vào sự quản lý của OpenSSL và phân nhánh nó, tạo ra LibreSSL. Dù hành động đầu tiên của họ là để loại bỏ rất nhiều các nền tảng mã gốc, nó nhanh chóng trở thành một thư viện OpenBSD thuần túy. Chúng ta sẽ thất bại nếu phương pháp này được thực hiện thường xuyên hơn, đến một giai đoạn mà các nhánh mã bị chia rẽ rất khác nhau, khiến cho việc chia sẻ các bản vá bảo mật rất khó khăn. Postfix đã được tạo ra như một biện pháp đối phó với các khóa thừa của Sendmail, nhưng không thu được kết quả và chỉ sửa được một ít lỗi. Đây sẽ là số phận của LibreSSL?

Heartbleed gần như không liên quan gì đến các vấn đề mật mã trong thực tế của OpenSSL, nhưng nó thực sự đã gây hậu quả nghiêm trọng, điều này cho thấy vấn đề an toàn thông tin có thể phát sinh trong bất cứ công đoạn nào của phần mềm.

Phần cứng và Những con Thiên nga đen

Câu hỏi đặt ra là các phần cứng có thể đáng tin cậy hơn không? Người ta sẽ nghĩ rằng cũng có thể như vậy... nhưng thực tế thì nó là không thể. Gần đây, các nhà sản xuất chip đã kết hợp mật mã vào CPU hoặc chipset. Thông thường, đây là việc thực thi một thuật toán mã hóa “tiêu chuẩn” (như AES) hoặc một bộ tạo số giả ngẫu nhiên (PRNG).

Mặc dù tất cả những tiết lộ từ Edward Snowden về NSA đã cài cửa hậu các thuật toán mã hóa khác nhau (đặc biệt là Dual_EC_DRBG PRNG mà NIST sản xuất năm 2006), chúng tôi nghĩ rằng AES không có bất kỳ cửa hậu nào hoặc lỗ hổng có thể bị khai thác. Tuy nhiên, nếu AES đã bị xâm nhập, thì bây giờ bạn đã có phần cứng mã hóa mà không thể sử dụng được. Nếu việc thực thi bị sai sẽ không thể khắc phục nhưng một số thư viện vẫn sẽ được sử dụng.

Một thuật toán khi đưa ra, dù có thiếu sót hoặc thực hiện sai thì đây không hẳn là điều thiết yếu. Nếu sai sót nằm trong nền tảng của phần cứng, chúng ta sẽ không thể sửa chữa hoặc vô hiệu hóa nó. Intel, AMD và ARM… thực hiện toàn bộ thuật toán AES theo cách thức riêng biệt. Sẽ không khôn ngoan khi sử dụng các nguyên thủy mật mã dùng chung mà có thể được chọn lựa để thực hiện bất kỳ thuật toán nào, với mỗi phần tử được kiểm tra kỹ lưỡng, điều này nên được cân nhắc. Đây không phải là một vấn đề thuần túy về lý thuyết. FreeBSD - dự án liên quan tới OpenBSD, đã nhận định rằng các bộ tạo số giả ngẫu nhiên trong chipset Intel và VIA không thể tin cậy được và không phát triển chúng để sử dụng nữa. Cho dù nghi ngờ của họ không có căn cứ rõ ràng, nhưng sẽ là một hồi chuông cảnh tỉnh để rà soát độ an toàn của các phần cứng triệt để hơn.

Một cách khác mà phần cứng cung cấp biện pháp mật mã chống lừa đảo là sử dụng khóa và thuật toán bí mật. Các công ty cung cấp mạng di động GSM cho rằng biện pháp này có thể giữ các thuật toán A5/1 và A5/2 bí mật qua các chip được cấp phép. (A5/1 và A5/2 là thuật toán sử dụng để mã hóa lưu lượng thoại trong mạng dạng tế bào. Năm 1994, một nhà nghiên cứu cho biết việc đảo chiều chip là không quá khó khăn. Năm 2003, một số lỗi trong các thuật toán đã được phát hiện (thiết kế A5/2 này yếu hơn so với A5/1). Trong khi đó, tin tặc có thể lấy các khóa từ firmware mà không cần tìm cách để đọc được dữ liệu từ bên ngoài và đã thực hiện đảo chiều chip một cách dễ dàng.

Những con thiên nga đen

Các cơ quan tình báo và những tin đồn, mặc dù không liên quan đến mật mã cũng sẽ làm cộng đồng lo lắng. Thực tế, các cơ quan tình báo thực hiện chức năng thu thập một lượng lớn dữ liệu, bằng sức mạnh tính toán vô cùng lớn và sử dụng rất nhiều các chuyên gia mật mã. Nhưng điều này cũng có mặt tốt, sẽ có cơ hội để kiểm tra lại các phép mã hóa bị họ phá vỡ trong số thuật toán mã thông dụng hiện đang được sử dụng. Ở đây, cách bảo vệ tốt nhất là luôn luôn cập nhật để phát triển.

Ngay cả khi người dùng không phải lo lắng, hoặc quên đi các mối đe dọa từ các đối thủ như vậy, thì họ cũng vẫn còn có các lo ngại về các phép tính toán lượng tử, một khi nó phát triển ra khỏi phòng thí nghiệm, nó sẽ có khả năng thực hiện tất cả các phép toán cần thiết để phá vỡ hầu hết các hệ mật cùng một lúc. Đây không phải là một sự thay đổi ăn theo mà là “Con Thiên nga đen” trong lĩnh vực bảo mật máy tính. Hiện nay, máy tính lượng tử đoạn nhiệt có thể mua được nhưng rất tốn kém và cũng không hẳn là loại thích hợp, vì vậy, đây chưa hẳn là một mối đe dọa.

Nhưng  mật mã lượng tử sẽ không đến giải cứu chúng ta. Các công cụ này sẽ được sử dụng trong phạm vi hạn chế hơn so mật mã truyền thống, vì vậy nó sẽ không thể thay thế tất cả mọi thứ, nhưng nó có thể cung cấp thêm một vài tính năng mới và hiện nay việc thực hiện cũng đã khả dĩ hơn. Trong những năm 2000, các nhà nghiên cứu ở Thụy Sĩ đã thiết lập một đường truyền cáp quang giữa Geneva với Lausanne và thực hiện phân phối khóa lượng tử thành công (QKD). Tuy nhiên, vẫn còn nhiều vấn đề về công nghệ và dường như chúng ta còn lâu mới đi đến kết quả thực tế.

Nhưng chúng ta không nên bị đánh lạc hướng, những con Thiên nga đen, dù chỉ rất nhỏ, có thể xuất hiện bất cứ lúc nào dưới dạng các lỗi trong các thuật toán thường được sử dụng, hoặc trong việc áp dụng chúng. Những sự việc như vậy sẽ xảy ra khi chúng ta ít chú ý đề phòng.

Một số bài học

Hiện nay, người ta dựa vào mật mã để bảo đảm tính bí mật và tính toàn vẹn thông tin trong hầu hết các lĩnh vực. Không còn ranh giới giữa Internet và cuộc sống hàng ngày và điều duy nhất giúp chúng ta an toàn là dựa vào một số giao thức mã hóa hoặc các thuật toán. Tuy nhiên, chúng ta không nên suy nghĩ rằng, mật mã chỉ như là một sản phẩm đơn giản và nó luôn bảo đảm an toàn. Mật mã là một quá trình phát triển liên tục, không ngừng và chúng ta luôn cần phải thận trọng và chủ động chuẩn bị để thay thế các thuật toán và giao thức lỗi thời, không an toàn khi được cảnh báo. Điều này có thể dẫn đến việc di chuyển dữ liệu từ một hệ mật này sang hệ mật khác và cập nhật một số lượng lớn khóa mã.

Việc này là khó khăn và dễ mắc sai lầm, nhưng khía cạnh tích cực nhất của vụ Heartbleed là hầu hết các trang web lớn, uy tín nhất đã có thể cập nhật bản vá trong một khoảng thời gian rất ngắn. Vì vậy, đối với nhiều người trong chúng ta, việc thao tác trên web chỉ không an toàn trong một thời gian tương đối ngắn.

Tuy nhiên, nhiều trang web và dịch vụ trên Internet vẫn còn dễ bị tổn thương. Điều này cho thấy không phải ai cũng nắm được việc thực hiện các biện pháp an toàn đúng lúc. Hơn nữa, các thiết bị xung quanh chúng ta thường kết hợp cùng một loại công nghệ. Vậy ai là người cập nhật Internet của tất cả mọi thứ? Quá trình đó xảy ra như thế nào? Liệu Hacker có thể dùng chính ngôi nhà của ta để chống lại ta, khi chúng sử dụng vài lỗ hổng trong một thiết bị nào đó, chỉ vì các nhà cung cấp không cẩn thận hoặc không biết làm thế nào để sửa chữa nó.

Trong thời điểm hiện nay, hầu hết các hệ mật đều dựa trên cơ sở và nguyên lý nhất định. Tuy nhiên, các mối đe dọa không ngừng phát triển. Vì thế mật mã cần phải được phát triển để đáp ứng với những thay đổi này và người sử dụng mật mã cũng phải thích ứng với điều đó.