Bài này thảo luận mối liên hệ mất thiết giữa lý thuyết mật mã và lý thuyết độ phức tạp tính toán.
I. Khởi động: Bài toán quyết định và bài toán tìm kiếm (Decision versus Search)
Trong thực tế, khi có một bài toán, ta thường quan tâm tới việc tìm ra lời giải cho bài toán đó hơn là xem xét liệu bài toán đó có tồn tại lời giải hay không. Tuy nhiên, trong lý thuyết độ phức tạp tính toán, ta lại toàn bắt gặp các bài toán quyết định (chẳng hạn như với là xem 1 công thức có thỏa được hay không) mà ít chú ý đến việc tìm kiếm lời giải (tìm một phép gán giá trị cho các biến để công thức là thỏa được). Các lớp phổ biến
,… đều là các lớp các bài toán quyết định. Điều đó hẳn làm chúng ta băn khoăn tự hỏi, lý do nào mà ta thường ít nói tới các bài toán tìm kiếm? Một số lý do cơ bản (tất nhiên có thể có nhiều lý do khác) là như sau :
- Nếu lý thuyết thuật toán là đưa ra cận trên (upper bound) của sự phức tạp để giải quyết một bài toán (thực vậy, khi ta có thiết kế một thuật toán để giải một bài toán, thì đồng thời độ phức tạp của thuật toán đó cho ta một cận trên để giải bài toán) thì lý thuyết độ phức tạp nghiên cứu chủ yếu cận dưới (lower bound) hay độ khó tối thiểu để giải một bài toán. Bài toán quyết định hiển nhiên không thể khó hơn bài toán tìm kiếm nên nếu ta chứng minh được bài toán quyết định là khó thì nghiễm nhiên bài toán tìm kiếm cũng khó theo. Do vậy, dù gì cũng nên nghiên cứu độ khó của bài toán quyết định trước.
- Trong nhiều bài toán ta có sự “tương đương” giữa bài toán quyết định và bài toán tìm kiếm nên chỉ cần nghiên cứu bài toán quyết định. Thực tế, tất cả các bài toán trong lớp NP-đầy đủ đều có tính chất này. Kỹ thuật qui dẫn một bài toán tìm kiếm về bài toán quyết định thường là dùng cách phương pháp tìm kiếm nhị phân. Chẳng hạn đối với , giả sử ta giải được bài toán quyết định xác định một công thức thỏa được hay không, khi đó ta cũng có thể tìm một phép gán giá trị các biến để công thức thỏa được như sau: cho biến đầu tiên giá trị đúng ; nếu công thức giản lược là thỏa được thì ta tiếp tục tìm phép gán cho biến thứ hai, nếu không ta cho biến đầu giá trị sai và tiếp tục với công thức giản lược cho trường hợp này; chỉ sau n bước như vậy (n = số biến) là ta có được phép gán giá trị cho tất cả các biến.
- Ta tạm gọi (sẽ định nghĩa chính xác dưới đây) lớp bài toán tìm kiếm tương ứng với các lớp bài toán quyết định là
(Function
, Function
). Khi đó ta có thể chứng minh được
khi và chỉ khi
. Như vậy tình trạng đối với các bài toán tìm kiếm cũng tương tự như các bài toán quyết định: tìm kiếm lời giải cho một bài toán
thực hiện được trong thời gia đa thức khi và chỉ khi bài toán quyết định cũng thực hiện được trong thời gian đa thức. Do vậy nghiên cứu vấn đề nổi cộm “
vs.
” là bao quát được vấn đề chung.
Tuy vậy, những lý do trên chưa đủ thuyết phục để ta hoàn toàn quên đi các bài toán tìm kiếm. Vẫn có nhiều bài toán tìm kiếm có vẻ thực sự khó hơn là quyết định (chẳng hạn Bellare và Goldwasser chứng minh rằng, dưới giả thiết khá hợp lý (), có những ngôn ngữ
mà ở đó bài toán tìm kiếm không thể qui dẫn về bài toán quyết định). Một số ví dụ khác liên quan đến mật mã nơi chủ yếu dựa trên các bài toán không phải NP-đầy đủ (phân tích thành thừa số nguyên tố chẳng hạn) và do vậy, bài toán tìm kiếm có thể rất khác bài toán quyết định.
Trong bài này, chúng ta sẽ xem xét lớp các bài toán tìm kiếm và sự liên quan tới mật mã. Sự liên hệ giữa các lớp bài toán
và
cuối cùng giúp chúng ta có một liên hệ giữa sự tồn tại của mật mã với câu hỏi trọng tâm của lý thuyết độ phức tạp – “
“.
I.1 Lớp bài toán
Một cách nôm na, cho một ngôn ngữ (
chẳng hạn) và một đầu vào
(một công thức lô gíc chẳng hạn), bài toán quyết định là xác định xem liệu
có thuộc
(công thức lô gíc đầu vào liệu có thỏa được) còn bài toán tìm kiếm là bài toán chỉ ra, khi
thuộc
(công thức đã cho là thỏa được), một lời giải chứng tỏ
thuộc
(một phép gán giá trị cho các biến để công thức đã cho là thỏa được).
Mọi việc tưởng chừng đơn giản trừ việc ta chưa nói cho chính xác thế nào là một lời giải để chứng tỏ thuộc
. Một bài toán có thể có nhiều cách chứng minh chứ không phải chỉ có một. Và như vậy, để định nghĩa chính xác bài toán tìm kiếm, ta cần đưa ra quan hệ giữa đầu vào và lời giải cho nó một cách thích hợp.
Ta hãy xem xét một cách viết lại định nghĩa của ngôn ngữ dựa trên các quan hệ hai ngôi.
Quan hệ NP-relation
Một quan hệ hai ngôi(với
là bảng ký hiệu dùng trong một ngôn ngữ) được gọi là NP-relation nếu nó thỏa mãn các điều kiện sau:
-có thể xác định được trong thời gian đa thức. Tức là, với các đầu vào
, ta có thể xác định liệu
có quan hệ
với
(ký hiệu
) hay không trong thời gian đa thức tính trên
(độ dài của
).
-có tính chất cân bằng đa thức (polynomially balanced), tức là tồn tại một đa thức
để, nếu
thì
). Đó là một yêu cầu tự nhiên : lời giải không thể quá dài so với đầu vào (nếu không thì riêng việc viết ra lời giải đã không thể thực hiện trong thời gian đa thức).
(Ta hãy cứ hình dung, cho là một bài toán,
là định nghĩa của “lời giải”, thì
là lời giải của
nếu
).
Nhìn lại (và chép lại) định nghĩa về lớp trong bài PCP số 1 của anh Hưng: một ngôn ngữ
thuộc
nếu tồn tại một poly-time algorithm verifier
:
- Verifier nhận inputs
, và trả lời YES/NO. Nhiệm vụ là xác định xem
là YES-instance hay NO-instance của
.
- Nếu
là YES-instance thì tồn tại “chứng minh”
sao cho
YES.
- Nếu
là NO-instance thì với bất kỳ “chứng minh”
nào ta cũng có
NO.
Một verifier như vậy thực chất chính là một NP-relation và ngôn ngữ
.
Ngược lại, với mỗi NP-relation , ta cũng có thể định nghĩa một ngôn ngữ
và ngôn ngữ
hiển nhiên là thuộc
(bằng cách đặt
chính là
).
Như vậy thực chất là tập hợp tất cả các ngôn ngữ
với
là NP-relation.
Điểm hay là quan hệ giúp ta có thể định nghĩa được bài toán tìm kiếm một cách tường minh.
Định nghĩa bài toán tìm kiếm
Với quan hệ
, ta có thể định nghĩa một bài toán tìm kiếm
như sau:
- Đầu vào: Cho một
- Trả lời: Tìm mộtsao cho
nếu tồn tại một
như vậy, hoặc trả lời “KHONG” nếu không tồn tại
.
Như vậy, ta đã định nghĩa được bài toán tìm kiếm tương ứng cho bài toán quyết định
: nếu
thì câu trả lời là KHONG, còn nếu
thì phải chỉ ra lời giải
chứng tỏ điều đó (
thỏa mãn
).
Định nghĩa các lớp
-là tập hợp tất cả các bài toán
với
là NP-relation.
-là tập con của
bao gồm các bài toán
ở đó câu “Trả lời” (trong định nghĩa bài toán tìm kiếm trên) được thực hiện trong thời gian đa thức.
Để ý rằng, cho trước một ngôn ngữ , ta chưa có ngay bài toán tìm kiếm tương ứng với nó. Ta phải định nghĩa thế nào là một lời giải chứng tỏ
, đó chính là việc định nghĩa quan hệ
thỏa mãn
. Chỉ khi đã định nghĩa được
thì tương ứng với nó ta mới định nghĩa được bài toán tìm kiếm
.
chính là một bài toán tìm kiếm tương ứng với bài toán quyết định
.
Do vậy, với một bài toán quyết định, có thể cho tương ứng nhiều bài toán tìm kiếm. Chẳng hạn, nếu ta tìm được hai quan hệ và
sao cho
thì tương ứng với
có hai bài toán tìm kiếm
. Điều này phù hợp với thực tế, một phát biểu có thể đúng hoặc sai, nhưng chứng minh nó là đúng hay sai thì có thể có nhiều cách khác nhau.
Có những bài toán mà tương ứng với nó có hai bài toán tìm kiếm mà một thì có thể dễ, mà một thì lại có vẻ khó. Ta sẽ xem xét một ví dụ thú vị liên quan đến bài toán phân tích thành thừa số nguyên tố. Nhưng trước hết ta hãy chứng minh định lý quan trọng sau đây:
Định lý về sự liên quan giữa lớp các bài toán quyết định và lớp các bài toán tìm kiếm
khi và chỉ khi
Chứng minh rất đơn giản:
- Đầu tiên, nếu thì
. Điều này hiển nhiên, tìm được lời giải nhanh nếu có (trong thời gian đa thức) thì cũng sẽ quyết định được nhanh là có lời giải hay không.
- Ngược lại, nếu thì
. Ý tưởng là sử dụng tìm kiếm nhị phân.
Cho một quan hệ NP-relation bất kỳ , ta cần chứng minh
. Điều đó có nghĩa là với mọi
, cần tìm trong thời gian đa thức
để
(nếu có
như vậy), hoặc trả lời KHONG nếu không có
nào thỏa mãn
.
Do , nên việc quyết định có tồn tại
hay không được thực hiện trong thời gian đa thức. Nếu không có
thì trả lời KHONG là xong.
Trường hợp tồn tại , ta làm sao tìm được
đây?
Với mỗi , định nghĩa một quan hệ
. (quan hệ thứ tự tính theo quan hệ thứ tự từ trên bảng chữ cái
)
Do là NP-relation,
cũng là NP-relation. Do vậy
và do đó việc bài toán quyết định
thực hiện được trong thời gian đa thức.
Nếu lấy là điểm giữa
và
– xâu lớn nhất có độ dài
(với
là đa thức chặn trên độ dài của
theo độ dài của
. Hiển nhiên ta có
). Nếu
thì tồn tại lời giải
giữa
và
, ngược lại, nếu
thì tồn tại lời giải
giữa
và
.
Như vậy ta giới hạn miền tìm kiếm xuống còn một nửa. Tiếp tục một cách tương tự ta sẽ tìm được chính xác
trong thời gian đa thức.
I.2 Có những bài toán quyết định dễ, còn tìm kiếm lại khó
Phía trên ta nhắc đến kêt quả của Bellare và Goldwasser chứng minh rằng, dưới một giả thiết khá hợp lý (), có những ngôn ngữ
mà ở đó bài toán tìm kiếm không thể qui dẫn bài toán quyết định. Ở đây ta xét một ví dụ đơn giản hơn và kết quả tuy không mạnh bằng nhưng khá lý thú.
Ta xét một số và một dãy cặp
với
là các số nguyên tố và
là các số tự nhiên.
Ta định nghĩa một quan hệ .
Điều đó có nghĩa là và
có quan hệ
nếu phân tích thành thừa số nguyên tố của
chính là
.
Với quan hệ định nghĩa như vậy, ngôn ngữ
chính là toàn bộ các số tự nhiên vì mọi số tự nhiên đều có tương ứng một cách phân tích thành thừa số nguyên tố. Bài toán quyết định
do đó là tầm thường.
Trong khi đó, bài toán tìm kiếm chính là việc cho số
, phân tích
ra thừa số nguyên tố. Bài toán này được tin là khó.
I.3 Sự khéo léo trong việc định nghĩa bài toán tìm kiếm cho các bài toán quyết định
Bây giờ ta hãy xem một ví dụ cho thấy, cùng một bài toán quyết định, có thể có hai bài toán tìm kiếm khá xa nhau. Hơn nhau là việc định nghĩa bài toán tìm kiếm sao cho hợp lý để có thể giải nó một cách hiệu quả nhất.
Xét ngôn ngữ COMPOSITE gồm các số tự nhiên là hợp số.
Bài toán tìm kiếm 1 tương ứng với COMPOSITE:
Ta định nghĩa một quan hệ giữa một số tự nhiên và một chứng minh
(một số tự nhiên) như sau:
.
Đây là cách định nghĩa tự nhiên nhất để chứng minh một số là hợp số: đưa ra một ước số không tầm thường của nó.
Bài toán tìm kiếm tương ứng là cho
, nếu
là hợp số thì tìm một ước số không tầm thường của nó.
Rõ ràng bài toán tìm kiếm này tương đương bài toán phân tích một số thành thừa số nguyên tố, do vậy nó được tin là khó.
Bài toán tìm kiếm 2 tương ứng với COMPOSITE:
Ta định nghĩa một quan hệ giữa một số tự nhiên và một chứng minh
(một số tự nhiên) như sau:
với là ký hiệu Jacobi (một mở rộng tự nhiên của ký hiệu Legendre cho trường hợp các số tự nhiên thay vì chỉ cho các số nguyên tố).
Ta đã biết:
- Nếu
là số nguyên tố thì, với mọi
ta đều có
, tức là
.
- Ngược lại, nếu
là hợp số thì, ít nhất một nửa các số
nguyên tố cùng nhau với
thỏa mãn
. (Chứng minh điều này không khó, bởi tập các
để
tạo thành 1 nhóm, và ta có thể chứng minh khi
là hợp số thì tồn tại ít nhất một phần tử
để
. Điều đó dẫn đến tập các
để
tạo thành một nhóm con thực sự của
, và do đó số phần tử của nó nhiều nhất bằng nửa số phần tử của
.
Từ đó ta thấy ngôn ngữ chính là COMPOSITE.
Tuy vậy, bài toán tìm kiếm ở đây khá là dễ dàng.
Thực vậy, nếu là hợp số, ta chỉ cần lấy ngẫu nhiên một
nguyên tố cùng nhau với
là đã có khả năng chí ít là 50% để có
.
Vấn đề còn lại là tính có dễ không? Tính
là dễ nhưng còn ký hiệu Jacobi
? Định nghĩa của
dựa trên việc phân tích thành thừa số nguyên tố của
. Nhưng nếu mà ta biết phân tích thành thừa số nguyên tố của
thì đã xác định được
là hợp số hay không rồi! Rất may, ta có thể tính
dựa trên luật tương hỗ toàn phương một cách rất nhanh chóng mà không cần thông qua phân tích thành thừa số nguyên tố của
.
Các bạn có thể đọc thêm về luật tương hỗ toàn phương (bài 1, bài 2) trên blog của hòa thượng Thích Học Toán. Luật “tương hỗ toàn phương” như hòa thượng giải thích dành cho số nguyên tố, ở đây ta phải dùng một luật tương tự cho các số tự nhiên tổng quat. Bình loạn một chút về hai luật tương hỗ:
- Luật “tương hỗ toàn phương” nguyên thủy dành cho số nguyên tố thật đẹp, nó có ý nghĩa thế nào hòa thượng đã giải thích. Chỉ muốn nói thêm là trong suốt một thời gian dài, người ta đã tưởng thể loại số nguyên tố là rất kỳ bí và có tính độc lập nhau, tức là 2 kẻ khác nhau trong bọn chúng là chả có quan hệ dây mơ rễ má chi cả. Nhưng luật tương hỗ cho thấy không hẳn là thế, nó cho ta quan hệ họ hàng giữa hai số nguyên tố bất kỳ: nếu anh là thặng dư bậc hai của tôi thì tôi cũng xác định được ngay mình có phải là thặng dư bậc hai trong thế giới của anh hay không!
- Luật “tương hỗ toàn phương” áp dụng cho số không nguyên tố dĩ nhiên làm mất cái vẻ đẹp nguyên tố trên. Ấy vậy mà nó lại đem đến một ứng dụng bất ngờ trong việc tìm ra các … số nguyên tố lớn phục vụ các ứng dụng mật mã trong thực tế nhốn nháo ngày nay. Nó giúp ta có một thuật toán kiểm tra xem một số
bất kỳ có là nguyên tố hay không. Thuật toán này thực chất ý tưởng đã được mô tả phía trên : lấy
bất kỳ nguyên tố cùng nhau với
, nếu
thì
chắc chắn là hợp số, nếu không thì ít nhất 50% khả năng
là số nguyên tố. Thực hiện thao tác này 100 lần mà đều không có
nào thỏa mãn
thì có nghĩa
là số nguyên tố với sai số chỉ là
! Gần đây đã có một kết quả lý thuyết đẹp đưa ra thuật toán đơn định để kiểm tra tính nguyên tố trong thời gian đa thức (thú vị là chứng minh khá sơ cấp) nhưng trong thực tế thì người ta vẫn dùng các thuật toán xác suất vì nó hiệu quả hơn rất nhiều.
II. Điều kiện cần cho sự tồn tại của mã hóa, dưới cách nhìn của lý thuyết độ phức tạp tính toán
Ta sẽ nhìn mật mã bằng con mắt của lý thuyết độ phức tạp tính toán và giới hạn việc bàn luận cho mã hóa (Encryption) – mục tiêu trọng tâm của mật mã.
Mục đích của mã hóa là gì nhỉ? Thật đơn giản, tôi có thể mã hóa một bản rõ dễ dàng để: nếu anh có khóa thích hợp thì anh có thể mở được nó và kẻ địch (không có khoá) thì không thể giải được mã.
Tạm gác chuyện chiếc chìa khoá thần kỳ trong mã hóa (ừ, thế đấy, mã hóa phải có khóa, nhưng ta cứ tạm bỏ qua nó đã) và bỏ qua luôn việc anh có giải được mã hay không, ta có thể rút gọn câu trên: tôi có thể mã hóa một bản rõ dễ dàng để kẻ địch (tay không – không có ngoại lực trợ giúp) không thể giải được mã.
Ta giản lược yêu cầu như trên nhằm đưa ra một điều kiện cần để mã hoá tồn tại. Đó là phải có các “hàm xuôi dễ ngược khó”, tức là các hàm để, với một đầu vào
(có thể coi là bản mã – message), thì tính
(có thể coi là bản mã – ciphertext) là dễ, nhưng cho
thì việc tính ngược một
(có thể có nhiều
) để
thì là khó.
Vậy câu hỏi đặt ra là: Các hàm xuôi dễ ngược khó có liên quan gì tới bài toán trọng tâm “P vs. NP” của lý thuyết độ phức tạp?
Ta hãy giả thiết rằng là tồn tại các hàm xuôi dễ ngược khó.
Theo định nghĩa “dễ, khó” trong độ phức tạp thì tính được trong thời gian đa thức và việc tính
là không thực hiện được trong thời gian đa thức.
Khi đó ta định nghĩa một quan hệ như sau:
.
Dễ thấy là một NP-relation.
Như vậy, bài toán tìm kiếm thuộc lớp
. Mà bài toán
chính là việc tính ngược hàm
.
Theo giả thiết, việc tính là không thực hiện được trong thời gian đa thức. Từ đó ta có
không thể thuộc
, và suy ra
. Theo định lý phía trên, nó tương đương
.
Như vậy ta có kết luận đầu tiên:
Yêu cầu tối thiểu không thể ít hơn để ngành lý thuyết mã hóa tồn tại, đó là “
“. Nói cách khác, nếu ta chứng minh được “
” thì ngành lý thuyết mã hóa sụp đổ!
Kết luận này có nghĩa ta không thể hy vọng vào việc xây dựng mã hóa dựa trên các lớp có độ phức tạp cao hơn như để phòng trường hợp
. Bản chất sự tồn tại của mã hóa bắt buộc phải dựa trên giả thiết
. Tất nhiên sự sụp đổ chỉ là trong lý thuyết độ phức tạp, còn trong thực tế thì dù phá mã có thể trong thời gian đã thức nhưng bậc đa thức là 100 hay 1000 thì các hệ mã vẫn còn vững lắm
III. Một cái nhìn thoáng qua về điều kiện đủ cho sự tồn tại của mã hóa
Ta đã thấy lý thuyết mã hóa (đặt trong lý thuyết độ phức tạp) chỉ có nghĩa khi . Câu hỏi ngược lại là liệu nếu
thì ta có xây dựng được các sơ đồ mật mã hay không? Câu trả lời là … không biết (hay nói cách khác, đó là một câu hỏi mở). Điều đó tuy vậy không làm ta nhụt chí đi tìm kiểm các điều kiện đủ để xây dựng mã hóa.
Trước tiên ta thấy hàm “xuôi dễ ngược khó” chủ yếu nói về trường hợp tệ nhất (worst-case), nó chỉ yêu cầu tồn tại những để ta không tính ngược được
. Điều đó có thể hiểu như, có những bản mã mà ta không giải được. Tuy nhiên điều này không phản ánh được yêu cầu của mã hoá, nơi ta cần kẻ địch không thể giải mã được một bản mã bất kỳ. Với yêu cầu tối thiểu này của mã hoá, ta có điều kiện cần là sự tồn tại của các hàm một chiều (one-way function), đó là các hàm thoả mãn: cho
với một
được lấy ngẫu nhiên, khó có thể tính ngược được
(tức là xác suất kẻ địch tính ngược được
là rất nhỏ).
Câu hỏi trọng tâm của mã hoá là sự tồn tại của các hàm một chiều có là đủ để xây dựng các sơ đồ mã hoá?
Một cách tóm tắt, từ các hàm một chiều ta có thể xây dựng được các phép sinh dãy giả ngẫu nhiên rồi từ đó xây dựng được các sơ đồ mã hóa khóa bí mật. Đối với các sơ đồ mã hóa khóa công khai, ta sẽ phải dựa trên các hàm mạnh hơn các hàm một chiều. Đó là hoán vị cửa lật một chiều (trapdoor one-way permutation: bản chất như hàm một chiều nhưng có thêm một cửa lật, bình thường tính ngược khó nhưng có cửa lật sẽ giúp ta tính hàm ngược dễ).
Kết luận là :
- các hàm một chiều là cần và đủ để xây dựng mã hóa khóa bí mật.
- các hàm một chiều là cần và các hoán vị cửa lật một chiều là đủ để xây dựng mã hóa khóa công khai. Quan hệ thân thiết giữa các hàm một chiều và các hoán vị cửa lật một chiều hiện vẫn còn đang trong quá trình tìm hiểu nhau
Quan hệ giữa các hàm một chiều và lý thuyết độ phức tạp ra sao?
Sự tồn tại hàm một chiều hiển nhiên dẫn đến sự tồn tại các bài toán NP khó tính theo độ phức tạp trung bình (average-case complexity), từ đó dẫn tới sự tồn tại các bài toán NP khó (tức là tính theo độ phức tạp của trường hợp tệ nhất), có nghĩa là . Chiều ngược lại vẫn còn là câu hỏi mở. Do đó dù
vẫn chưa chắc đã tồn tại các bài toán bài toán NP khó tính theo độ phức tạp trung bình và dù tồn tại các bài toán bài toán NP khó tính theo độ phức tạp trung bình vẫn chưa chắc đã tồn tại các hàm một chiều!
Hy vọng khi có thời gian sẽ tiềp tục được trao đổi chi tiết hơn các kết quả trên cùng các bạn.
Chúc mọi người một năm học, năm dạy mới đầy lý thú!

12 Comments
Hay wa, e se xem sau!
Hello Hiệu, bài viết rất hay, nhiều thông tin. Tôi có vài góp ý lặt vặt
1. Thay vì nói “bài toán thực hiện được trong thời gian đa thức”, có lẽ nên nói “giải được trong thời gian đa thức”
2. Nên dùng KHONG hay NO một cách nhất quán
3. Chữ “sơ đồ mã hóa” chắc là Hiệu dịch từ “encryption scheme”? Thay “sơ đồ” bằng “phương pháp” hay “thuật toán” có lẽ dễ hiểu hơn.
Cảm ơn anh Hưng đã góp ý.
1. Đúng là phải nói bài toán giải được, còn khi nói tới thuật toán để giải bài toán thì mới dùng từ thực hiện được. RongChoi sẽ sửa lại các chỗ chưa chính xác.
2. Chỗ YES với NO là RongChoi copy-paste định nghĩa của anh Hưng bên bài PCP1 nên quên đổi sang CO với KHONG
3. Đúng là RongChoi lấy từ “encryption scheme”. Tuy vậy RongChoi vẫn muốn dịch là sơ đồ mã hoá bởi một sơ đồ mã hoá (encryption scheme) gồm 2 thuật toán: thuật toán mã hoá (encryption algorithm) và thuật toán giải mã (decryption algorithm).
RC
Theo ý kiến của em thì Encryption Scheme em thấy có thể dịch là “lược đồ mã hóa”, theo như em biết trong CNTT người ta (sách ở Việt Nam) hay dùng từ scheme/schema là “lược đồ” (nhất là trong CSDL). Ngẫm ra thấy lược đồ có vẽ “hay” hơn sơ đồ!
@RC huynh: Huynh co the noi ro them ve
khong a?
Bạn myheeu ngẫm nghĩ điều gì có thể nói ra không
tại sao lược đồ lại hay hơn sơ đồ nhỉ?
@Thinh:
Cũng như với lớp
, người ta tin rằng máy không đơn định mạnh hơn máy đơn định, nên giả thiết
có vẻ cũng hợp lý.
Với giả thiết này thì như trên ta nói, có thể xây dựng được bài toán tìm kiếm khó hơn quyết định. Chính xác thì là, xuất phát từ bất kỳ ngôn ngữ
nào thuộc
, ta có thể xây dựng được một ngôn ngữ
thuộc
sao cho bất kỳ bài toán tìm kiếm nào tương ứng với
cũng khó hơn bào toán quyết định
.
Ngôn ngữ
được xây dựng rất đơn giản, dùng kỹ thuật “downward separation” trong chứng minh nếu
kéo theo
như sau. Với mọi
thì cho tương ứng một từ
bằng cách nhét thêm một đống bít
vào cuối để độ dài tổng cộng là hàm mũ mũ của
(
). Tức là
. Khi đó hiển nhiên nếu
được quyết đinh bởi hàm mũ mũ theo độ dài của
thì có nghĩa là
được quyết đinh bởi hàm đa thức theo độ dài của
. Do vậy
kéo theo
.
Điểm nhấn là cách xây dựng trên cho ta một tính chất quan trọng và rất hiển nhiên về tính chất rất thưa của ngôn ngữ
: số từ có độ dài
thuộc ngôn ngữ
nhiều nhất chỉ là
.
Tính chất thưa này có ý nghĩa gì? Nó là rất quan trọng để chứng minh: nếu có một bài toán tìm kiếm tương ứng với
mà qui dẫn được về bài toán quyết định
thì kéo theo luôn
(trái với
thiết lập phía trên).
Ý tưởng để chứng minh điều này là gì? Giả sử ta có một thuật toán trong thời gian đa thức tìm kiếm lời giải cho
bằng cách truy cập thuật toán quyết định cho
(nói theo lối chính xác thì là: tồn tại một quan hệ NP-relation
sao cho
và bài toán tìm kiếm
qui dẫn được về
). Khi đó ta có thể loại toàn bộ việc truy cập thuật toán quyết định cho
bằng cách đoán tất cả câu trả lời cho các câu hỏi. Vì số từ có thể để hỏi (có dạng
, nếu không ta có câu trả lời ngay là không thuộc
) là rất thưa (hàm
), tập hợp tất cả các bộ trả lời có thể sẽ có số phần tử là chỉ đa thức! Như vậy ta có thuật toán trong thời gian đa thức tìm kiếm lời giải cho
bằng tay không, tức là
!
RC
@Rongchoi: Tại vì em tra từ điển thấy thế anh à, cuốn từ điển mà em dùng là cuốn của nhà giáo Nguyễn Lân và cuốn của Lê Khả Kế.
@RC huynh: Thks 4 detail reply. Congrats on becoming new blogger. Se tiep tuc thao lua^.n the^m trong tuong lai ga^`n.
@RC huynh:
Như vậy, kỹ thuật đệm tạo ra tính thưa, đến lượt mình nó cho ta phép qui dẫn từ tìm kiếm về quyết định.
“Quan hệ thân thiết giữa các hàm một chiều và các hoán vị cửa lật một chiều hiện vẫn còn đang trong quá trình tìm hiểu nhau”. Em nghĩ các primitive crypto building blocks này (OWF, PRNG, …) có rất nhiều tính chất thú vị, sao ta không tìm hiểu thêm về quan hệ của chúng, lần cuối có breakthroughs trong quan hệ này là gì (các recent results chẳng hạn).
Thịnh,
RC có dạy một cous về các thứ này, khi nào có thời gian sẽ trình bày dần dần. Thịnh muốn tìm hiểu có thể đọc các tài liệu sau:
1. The Foundations of Cryptography , Oded Goldreich.
http://www.wisdom.weizmann.ac.il/~oded/frag.html
2. Lecture Notes on Cryptography at the MIT, S. Goldwasser and M. Bellare.
http://cseweb.ucsd.edu/users/mihir/papers/gb.html
3. Introduction to Modern Cryptography, Mihir Bellare and Phillip Rogaway.
http://cseweb.ucsd.edu/users/mihir/cse207/classnotes.html
RC
@RC huynh:
1. Paragraph cuối của comment September 24, 2009 at 2:29 pm concise wa. Nhưng có lẽ phù hợp vì ta chỉ cần trường hợp riêng ở đây
2. Đệ sẽ cố gắng đọc các tài liệu đó. Cuốn HAC có lẽ phù hợp hơn với beginner.
TN
@RC huynh: Đệ đang đọc cuốn [GB]. Nhiều khái niệm mới chưa hiểu hết được. Một câu hỏi có phần “ngây ngô” là “provable security” và “proof theory” có liên quan gì đến nhau không?