Khi các công nghệ mật mã tiếp tục phát triển và tìm ra những ứng dụng mới và quan trọng hơn bao giờ hết trong cuộc sống của chúng ta, các quy trình mà các công nghệ này thực hiện ngày càng phức tạp hơn. Mặc dù có thể thực hiện được rất nhiều việc với các nguyên tắc mã hóa đơn giản, nhưng đó là những gì chúng có thể làm khi kết hợp với nhau mới là điều thú vị nhất.
Ấn tượng hơn nữa là ý tưởng rằng một số giao thức mật mã được thiết kế với khả năng mô tả phần cứng, mang lại cho chúng sức mạnh để giải quyết các thách thức phổ quát. Ý tưởng này, được gọi một cách thích hợp là “mật mã có thể lập trình”, hứa hẹn có thể thực hiện các hành động phức tạp hơn bằng cách, diễn giải Brian Gu, biến vấn đề toán học về thiết kế các giao thức mới thành vấn đề lập trình kết hợp các giao thức hiện có.
Trong bài viết này, chúng ta sẽ khám phá các lớp ứng dụng mật mã, từ mục tiêu cấp cao đến thuật toán cấp thấp, để hiểu những ý tưởng này đến từ đâu. Sau đó, chúng ta sẽ xem họ sẽ đi đâu.
Trước khi bắt đầu, chúng ta hãy dành chút thời gian để suy ngẫm về động lực cơ bản thúc đẩy các nhà mật mã học đi sâu vào công việc của họ. Rốt cuộc, việc ở nhà và không làm gì sẽ dễ dàng hơn nhiều so với việc nghiên cứu các bằng chứng toán học rằng một giao thức mới là an toàn, khả thi và là một cải tiến có ý nghĩa so với các mô hình hiện có.
Đó là do tầm quan trọng ngày càng tăng của dữ liệu kỹ thuật số mà chúng ta lưu trữ, chia sẻ và xử lý nên cần có các phương pháp mới và cải tiến để đảm bảo quyền riêng tư và bảo vệ dữ liệu đó khỏi bị giả mạo. Chính mong muốn đáp ứng nhu cầu đó đã khiến các nhà mật mã phải rời khỏi giường vào buổi sáng.
Thật sự đáng kinh ngạc khi nghĩ đến lượng thông tin được xử lý trực tuyến ngày nay. Điều ngay lập tức hơn đối với hầu hết mọi người là lượng thời gian họ dành để tương tác với dữ liệu hiện tại nhiều hơn bao nhiêu so với cách đây vài năm. Tất cả thông tin họ tạo ra, tương tác, xem xét và gửi đều có nguy cơ bị theo dõi, đánh cắp hoặc thao túng nếu thông tin đó không được bảo vệ đúng cách.
Đây là lý do tại sao luôn có nhu cầu về mật mã. Đây là lý do tại sao các phương pháp mới và cải tiến để giữ dữ liệu riêng tư tiếp tục được phát triển.
Giống như nhiều ngành khác, mật mã dựa trên các khái niệm đơn giản được mở rộng khi nhiệm vụ trở nên thú vị hơn. Những khái niệm đơn giản này, thường được gọi trong mật mã hiện đại là “mật mã nguyên thủy”, bản thân chúng thường cơ bản nhưng có thể được kết hợp để tạo nên một thứ gì đó phức tạp.
Ví dụ, hãy xem xét một trong những mật mã lâu đời nhất - mật mã Cesar. Được đặt theo tên người dùng nổi tiếng nhất của nó, mã này bao gồm việc viết các từ trong văn bản mật mã dịch chuyển ba chữ cái trở lại so với tin nhắn ban đầu. Trong trường hợp này, từ “the” sẽ được viết là “qeb”. Mỗi chữ cái được chuyển sang ba vị trí phía trước nó trong bảng chữ cái tiếng Anh.
Mặc dù mã này khá đơn giản nhưng nó đã được kiểm tra kỹ lưỡng, hữu ích và hoàn toàn không mang tính thử nghiệm. Nếu bạn cần mã hóa dữ liệu, thao tác này sẽ mã hóa dữ liệu. Mặc dù đây không phải là mã an toàn nhất trên thế giới nhưng nó cũng có thể được kết hợp với các kỹ thuật khác để làm cho mã mạnh hơn.
Lấy một ví dụ khác, mật mã Vigenère là một công cụ để mã hóa tin nhắn bằng nhiều mật mã Cesar khác nhau. Trong hệ thống này, mỗi tin nhắn được kết hợp với một khóa; hãy tưởng tượng lần lượt là “đại bàng” và “chanh”. Phím này cho bạn biết có bao nhiêu vị trí để dịch chuyển các chữ cái trong tin nhắn, nhưng mỗi chữ cái có số lần dịch chuyển khác nhau. Chữ “L” trong quả chanh yêu cầu bạn dịch chuyển chữ cái đầu tiên trong tin nhắn thành mười hai khoảng trắng, vì L là chữ cái thứ mười hai trong bảng chữ cái tiếng Anh. Chữ “E” yêu cầu bạn chuyển chữ cái thứ hai sang năm dấu cách, v.v.
Vì vậy, “quả táo” trở thành “peszr”. Nếu không có chìa khóa, việc giải mã tin nhắn sẽ trở nên khó khăn hơn nhiều. Mặc dù nó vẫn còn những điểm yếu của mật mã Cesar - nếu có đủ thời gian, một phép tính mạnh mẽ sẽ xác định thông điệp là gì - bằng cách kết hợp các công cụ hiện có theo một cách mới, mức độ bảo mật tăng lên đáng kể.
Như bạn có thể đoán, việc kết hợp các mật mã hiện có như thế này với nhau theo những cách mới, phức tạp hơn thường dễ dàng hơn nhiều so với việc phát minh ra một hệ thống mới. Cesar đã chết từ lâu và chúng tôi vẫn đang sử dụng cuốn sách mã của ông ấy.
Giống như sự khôn ngoan của các mã cũ vẫn tồn tại, phần lớn công nghệ mật mã hiện đại cũng có nền tảng tương tự. Việc nhờ một nhà mật mã viết bằng chứng mới cho thấy một hệ thống mới sẽ giữ an toàn cho bí mật kỹ thuật số của bạn là điều tuyệt vời, nhưng việc này cũng khá tốn thời gian và không đảm bảo sẽ hoạt động. Mặt khác, các hệ thống mã hóa nguyên thủy như RSA (Rivest-Shamir-Adleman), AES (Tiêu chuẩn mã hóa nâng cao) hoặc Chữ ký số được biết là có hiệu quả và có thể dễ dàng áp dụng cho nhiều vấn đề. Chẳng hạn, RSA được sử dụng rộng rãi để truyền dữ liệu an toàn, trong khi AES là tiêu chuẩn để mã hóa dữ liệu nhạy cảm. Nếu chúng được kết hợp, chúng có thể cung cấp chức năng đổi mới và giải quyết các vấn đề phức tạp hơn bất kỳ thứ nào trong số chúng có thể làm một mình.
Mặc dù việc kết hợp các phương pháp đơn giản với nhau là một cách tuyệt vời để tạo ra các hệ thống phức tạp hơn nhưng nó vẫn có những hạn chế. Mỗi loại nguyên thủy này được thiết kế để thực hiện tốt một nhiệm vụ cụ thể và không có gì lạ khi mắc sai lầm khi kết hợp chúng khiến điểm yếu của chúng bị bộc lộ.
Dựa trên các giao thức cấp thấp, các giao thức cấp trung nhắm đến các tính năng và chức năng nâng cao hơn. Sau đây, chúng ta sẽ khám phá một số giao thức cấp trung được áp dụng và thảo luận rộng rãi nhất.
Mã hóa đồng hình là một giao thức cho phép xử lý dữ liệu được mã hóa mà không cần phải giải mã trước. Các ví dụ về nó vẫn tồn tại cho đến ngày nay, mặc dù nó vẫn đang ở giai đoạn tương đối sớm - nó thậm chí chỉ được chứng minh là có tính thực tế vào năm 2009. Các mô hình hiện tại đôi khi bị hạn chế về những quy trình có thể được tiến hành trên dữ liệu được mã hóa.
Tuy nhiên, khái niệm này cực kỳ thú vị và có nhiều ứng dụng rõ ràng. Hãy xem xét tần suất dữ liệu nhạy cảm nhưng hữu ích như hồ sơ y tế hoặc thông tin tín dụng bị đánh cắp từ các tổ chức cần truy cập vào dữ liệu đó để trợ giúp bạn. Điều gì sẽ xảy ra nếu có thể tương tác với thông tin y tế được mã hóa của bạn mà không cần giải mã? Những lợi ích của cải tiến này đối với vấn đề bảo mật là không cần bàn cãi.
Tính toán nhiều bên (MPC) là một công cụ để ẩn đầu vào được cung cấp bởi các tác nhân khác nhau làm việc cùng nhau trên một đầu ra chung. Nó thường được mô tả là “Vấn đề triệu phú”.
Hãy tưởng tượng có hai triệu phú muốn biết ai trong số họ có nhiều tiền hơn. Tuy nhiên, họ không muốn chỉ ra ngoài và nói giá trị tài sản ròng của họ là bao nhiêu. Họ có thể sử dụng MPC để giải quyết vấn đề này. Triệu phú đầu tiên có thể thêm giá trị ròng được mã hóa của họ vào một chương trình được thiết kế để so sánh các giá trị trước khi gửi nó cho triệu phú thứ hai. Triệu phú thứ hai không thể nhìn thấy giá trị đầu tiên khi họ cộng giá trị tài sản ròng của mình vào.
Sau đó, họ có thể giải mã đầu ra và tìm ra ai trong số họ đã nhập giá trị lớn hơn - tất cả đều không thể nhìn thấy một trong hai đầu vào.
Cuối cùng, chúng ta hãy xem Bằng chứng không có kiến thức (ZKP). Những điều này có lẽ đã được người đọc biết đến vì chúng được sử dụng rộng rãi và chúng ta sẽ xem xét chúng một cách ngắn gọn. ZKP rất giỏi trong việc cho phép người chứng minh nói với người khác, thường được gọi là người xác minh , rằng điều gì đó là đúng mà không cần nói gì khác. Thông thường, họ cung cấp dịch vụ này cho một người dùng; một người yêu cầu bằng chứng và họ nhận được nó. Có một số ZKP, bao gồm zk-SNARK và zk-STARK. Mỗi thứ có lợi thế và bất lợi riêng của nó.
Khi nghiên cứu về các giao thức tiên tiến này tiến triển, trọng tâm đã mở rộng sang phát triển các giao thức mật mã có mục đích chung. Những sáng kiến này nhằm mục đích chứng minh rằng mật mã có thể cho phép tính toán phổ quát được thực hiện một cách an toàn và riêng tư. Ban đầu, những nỗ lực này hoàn toàn mang tính lý thuyết, ưu tiên tính khả thi hơn là hiệu quả triển khai thực tế. Tuy nhiên, khi nghiên cứu ngày càng sâu rộng, các nhà mật mã học đã chuyển sự chú ý của họ sang việc làm cho những khái niệm này có thể áp dụng được trên thực tế. Họ tăng cường, kết hợp và phát minh ra các giao thức và thành phần mới. Thông thường, giao thức cuối cùng sẽ là giao thức kết hợp, tận dụng điểm mạnh của nhiều phương pháp tiếp cận. Ví dụ: mã hóa đồng cấu sử dụng bằng chứng không có kiến thức cho bằng chứng phạm vi để đảm bảo các phép tính vẫn nằm trong phạm vi hợp lệ. Trong khi đó, các giao thức MPC có thể kết hợp các yếu tố đồng hình để thực hiện các hoạt động phi tuyến tính.
Trong số rất nhiều giao thức thử nghiệm, một số giao thức đã tiến gần đến mức tiện ích thực tế mà chúng đã mở đường cho sự phát triển trong thế giới thực. Những công cụ này hoạt động tương tự như trình biên dịch, diễn giải các ngôn ngữ cấp cao và chuyển đổi chúng thành các mạch mà các giao thức mật mã có thể xử lý. Quá trình chuyển đổi này giống như chuyển đổi phần mềm thành các hoạt động đăng ký CPU hoặc chuyển Solidity sang chuyển đổi trạng thái EVM. Việc đạt được khả năng giống như trình biên dịch này, hoàn chỉnh với sự hỗ trợ cho tính toán Turing-complete, đánh dấu sự ra đời của cái mà chúng tôi gọi là mật mã có thể lập trình. Mặc dù điều này có vẻ lạc quan quá mức nhưng thực tế lại có nhiều sắc thái khác nhau. Ví dụ, các hàm băm khôn ngoan theo bit không hiệu quả bằng trong giao thức chứng minh không có kiến thức, trong khi các hàm băm được thực hiện thông qua phép nhân mô-đun mang lại hiệu quả vượt trội. Do đó, nên tránh xa các thuật toán như SHA-3. Hơn nữa, việc tránh tính toán dấu phẩy động là một thực tế phổ biến, vì các giao thức mật mã chủ yếu hoạt động trong các trường hữu hạn. Những thủ thuật như thế này tồn tại ở khắp mọi nơi khi đưa mật mã có thể lập trình vào cuộc sống.
Mật mã lập trình được vẫn là một khái niệm mới, nhưng nó mang đến cơ hội biến những vấn đề rất phức tạp trở nên đơn giản hơn nhiều. Thật dễ dàng để suy đoán về hướng nó sẽ đi. Gần như chắc chắn rằng những nỗ lực sẽ được thực hiện để lập trình với tất cả các loại công cụ mật mã, mặc dù mức độ thành công đạt được với chúng sẽ được xác định.
Tuy nhiên, một số thí nghiệm này sẽ có tác dụng. Một số trong số chúng sẽ hoạt động tốt và những thứ hoạt động tốt sẽ cung cấp các chức năng mạnh mẽ và mức độ bảo mật cao mà không cần phải tốn chi phí nhờ chuyên gia mật mã tạo ra một hệ thống hoàn toàn mới cho một ứng dụng. Chỉ riêng khả năng này thôi cũng có thể sẽ thu hút rất nhiều sự quan tâm đến lĩnh vực này.
Vấn đề làm thế nào để thực hiện điều này theo cách phù hợp với các hệ thống hiện có sẽ phải được giải quyết và có thể phần lớn những gì được áp dụng là những gì hoạt động hiệu quả với dữ liệu cần được tương tác.
Khó có thể phóng đại tác động của công nghệ này đến bảo mật dữ liệu, quyền riêng tư và lĩnh vực bảo mật kỹ thuật số rộng hơn. Một số lượng lớn các hành động phức tạp sẽ trở nên dễ thực hiện hơn. Mặc dù lập trình tồi sẽ gây ra vấn đề, như mọi khi, ở nơi công nghệ hoạt động, chúng ta sẽ thấy hệ thống bảo mật tốt hơn và quyền riêng tư mạnh mẽ hơn.
Có lẽ điều đáng khích lệ nhất là vẫn còn khá sớm về việc sử dụng công nghệ này. Bằng chứng ZK được nghĩ ra vào những năm 1980 nhưng chỉ thực hiện được vào năm 2012. Có thể có nhiều cơ chế và sự kết hợp của các cơ chế mà chưa ai từng mơ tới. Ý tưởng chấn động thế giới tiếp theo có thể đến vào ngày mai. Chúng tôi thậm chí có thể không đoán được nó sẽ làm gì.