Lưu ý của biên tập viên: Bài viết này đến từLưu ý của biên tập viên: Bài viết này đến từPhòng thí nghiệm Ambi (ID: secbitlabs)
Một số lý thuyết rất thú vị, và chứng minh kiến thức bằng không là một trong số đó, sau một thời gian dài mò mẫm, tôi muốn viết một cái gì đó và thảo luận với mọi người. Bài viết này là bài thứ ba trong loạt bài "Khám phá các bằng chứng không có tri thức". Toàn văn khoảng 8.000 từ, với một vài công thức toán học.
Bài viết này đã được cập nhật lên Github
And what, Socrates, is the food of the soul? Surely, I said, knowledge is the food of the soul.
Bài viết này đã được cập nhật lên Github
— Platon
tiêu đề phụ
"Không có kiến thức" so với "Độ tin cậy"
Chúng ta có thể thấy ba thuộc tính này trong nhiều bài báo giới thiệu bằng chứng không kiến thức:
Tính đầy đủ - tính đầy đủ
Uy Tín - Uy Tín
Không kiến thức —— không kiến thức
Nhưng rất ít bài viết giải thích sâu về ý nghĩa và cái nhìn sâu sắc đằng sau tính năng này.hiện hữu"Series (2) Tìm hiểu về "Mô phỏng"
’ Trong bài viết, chúng tôi đã giới thiệu khái niệm “trình mô phỏng”. Nhiều bài giới thiệu tránh nói về "mô phỏng", nhưng "mô phỏng" có thể nói là cốt lõi của giao thức bảo mật, bởi vì nó là vũ khí quan trọng để xác định "bảo mật".
Rather than giving a list of the events that are not allowed to occur, it (the definition of zero-knowledge proof) gives a maximalist simulation condition.
— Boaz Barak
Thông thường, chúng tôi định nghĩa bảo mật theo cách mà trước tiên chúng tôi liệt kê một số sự kiện bảo mật và sau đó nêu rõ: Nếu một hệ thống được bảo mật, sẽ không có sự kiện bảo mật nào được liệt kê xảy ra.
Mượn lời của nhà mật mã học Boaz Barak, để tạm dịch, "zero-knowledge proof" không được định nghĩa bằng cách đưa ra một danh sách các sự kiện không được phép xảy ra, mà trực tiếp đưa ra những "điều kiện mô phỏng" khắc nghiệt nhất.
Cái gọi là "điều kiện mô phỏng" đề cập đến việc hiện thực hóa một "thế giới lý tưởng" thông qua phương pháp "mô phỏng", khiến nó không thể phân biệt được với "thế giới thực"; và vì không có tri thức trong thế giới lý tưởng nên có thể kết luận rằng thế giới thực thỏa mãn "Không kiến thức".
Chúng tôi tiếp tục phân tích ba thuộc tính của hệ thống tương tác tiếp theo (giao thức bảo mật): "tính đầy đủ", "độ tin cậy" và "không kiến thức".
Tính hợp lý: Alice không thể vượt qua xác minh của Bob nếu không biết.
Tính đầy đủ: Alice có thể vượt qua xác minh của Bob nếu cô ấy có kiến thức.
Không có kiến thức: Alice sẽ không tiết lộ bất kỳ thông tin nào về kiến thức trong quá trình tương tác.
Chúng ta có thể thấy rằng có một loại "đối xứng" giữa "độ tin cậy" và "sự đầy đủ". Độ tin cậy đảm bảo rằng Alice ác ý phải thất bại, trong khi tính đầy đủ đảm bảo rằng Alice trung thực phải thành công.
"Sự trọn vẹn" dễ chứng minh hơn, miễn là Alice trung thực và Bob trung thực, thì mọi người đều hạnh phúc. Điều này giống như viết một đoạn mã, đưa vào một trường hợp thử nghiệm và gọi nó là một ngày.
Hãy nghĩ xem "độ tin cậy" nên được định nghĩa như thế nào? Điều ngược lại của mệnh đề đúng đắn này là: (trong thế giới thực) nếu Alice có thể vượt qua sự xác minh của Bob, thì Alice phải có kiến thức. Hoặc: Alice biết rằng... "bí mật"!
Câu hỏi sau đây là làm thế nào để chứng minh rằng Alice biết một "bí mật"?
Điều này có vẻ cũng khó nhỉ? Nếu chúng ta cần chứng minh rằng một máy biết một "bí mật", cách dễ nhất là tìm "bí mật" trong đĩa cứng của máy hoặc trong bộ nhớ, nhưng điều này sẽ làm lộ bí mật. Nếu máy là một hộp đen thì sao? Hay Alice thì sao? Ta không có tài đọc tâm nên không đoán được bí mật trong lòng nàng.
Làm thế nào để xác định "Để biết"?
"Không kiến thức" đảm bảo rằng người xác minh Bob không có khả năng (máy tính) để "trích xuất" thông tin liên quan đến "kiến thức". "Kiến thức" không thể rút ra được không có nghĩa là nó không tồn tại. "Độ tin cậy" đảm bảo cho "sự tồn tại" của tri thức.
Đảm bảo "không kiến thức" chỉ có ý nghĩa nếu "kiến thức" tồn tại.
Bài viết này sẽ thảo luận về "Độ tin cậy" và "Điều cần biết".Để phân tích sâu hơn về "kiến thức", trước tiên chúng tôi giới thiệu một giao thức Schnorr hệ thống bằng chứng không kiến thức rất ngắn gọn và được sử dụng rộng rãi. Giao thức này đại diện cho một lớp lớn các giao thức bảo mật, được gọi là giao thức Σ-Δ và phần mở rộng giao thức Schnorr cũng là "』[1] Một trong những công nghệ cốt lõi.
tiêu đề phụ
Giao thức Schnorr nhỏ gọn
sk = a
PK = aG
Alice có một số bí mật, a. Chúng ta có thể coi số này là "khóa riêng tư" và sau đó "ánh xạ" nó tới một điểm a*G trên nhóm đường cong elip, được viết tắt là aG. Chúng tôi coi điểm này là "khóa công khai".
Hãy chú ý đến từ "ánh xạ", ở đây chúng tôi giới thiệu sơ lược về khái niệm "đồng cấu". Có một mối quan hệ ánh xạ đồng cấu giữa các trường hữu hạn nhóm đường cong elip. Ta dùng ký hiệu Zq để biểu diễn trường hữu hạn, trong đó số nguyên tố q chỉ độ lớn của trường hữu hạn, số nguyên tố này chỉ tập hợp các số nguyên từ 0, 1, 2, ..., q-1. Trên một đường cong elip, chúng ta đi qua một điểm cơ sở, G, để tạo ra một "nhóm tuần hoàn", được đánh dấu là 0G, G, 2G, ..., (q-1)G, chính xác là một tập hợp q điểm đường cong. Bất kỳ hai điểm đường cong nào cũng có thể thực hiện một "phép toán nhị phân đặc biệt", G + G = 2G, 2G + 3G = 5G, có vẻ như phép toán nhị phân này tương tự như "phép cộng", thỏa mãn quy luật giao hoán và kết hợp. Vì vậy, chúng tôi sử dụng biểu tượng + để đại diện cho nó. Lý do tại sao nhóm này được gọi là nhóm tuần hoàn vì phần tử cuối cùng (q-1)G của nhóm, cộng với G, bao bọc trở lại phần tử đầu tiên 0G của nhóm.
Với bất kỳ số nguyên r nào trên một trường hữu hạn, chúng ta có thể tìm thấy một điểm rG tương ứng trong nhóm tuần hoàn hoặc biểu thị r*G bằng phép nhân vô hướng. Nhưng phép tính ngược lại rất “khó nhằn”, đó là một “bài toán mật mã” - hay được gọi là bài toán logarit rời rạc [2].
Điều đó có nghĩa là, nếu một điểm R trên nhóm tuần hoàn của đường cong elip được đưa ra tùy ý, thì rất khó tính được số nguyên nào trong trường hữu hạn tương ứng với R. Nếu trường hữu hạn đủ lớn, chẳng hạn như 256 bit, chúng ta có thể được coi là tính toán ngược này là không thể.

Giao thức Schnorr sử dụng đầy đủ ánh xạ một chiều giữa các trường hữu hạn và các nhóm tuần hoàn, đồng thời nhận ra giao thức bảo mật bằng chứng không kiến thức đơn giản nhất: Alice chứng minh với Bob rằng cô ấy có khóa riêng sk tương ứng với PK.
Bước 1: Để đảm bảo không có kiến thức, Alice cần tạo một số ngẫu nhiên, r, được sử dụng để bảo vệ khóa riêng khỏi bị Bob trích xuất. Số ngẫu nhiên này cũng cần được ánh xạ vào nhóm đường cong elip, rG.
Bước 2: Bob muốn cung cấp một số ngẫu nhiên cho thử thách, hãy gọi nó là c.
Bước 3: Alice tính z = r + a * c theo số lần thử thách, đồng thời gửi z cho Bob, Bob kiểm tra theo công thức sau: z*G ?= R + c*PK = rG + c*(aG )
Bạn có thể thấy quy trình tính toán của Bob về việc kiểm tra z "đồng cấu" trong bước thứ ba. Nếu công thức này đúng, thì có thể chứng minh rằng Alice có khóa riêng a.
Nhưng tại sao?
Quá trình tính toán và xác minh của z rất thú vị và có một số kỹ thuật chính:
Đầu tiên Bob phải đưa ra một số thử thách "ngẫu nhiên", sau đó Bob kiểm tra z đồng dạng trên đường cong elip. Nếu chúng ta coi số thử thách c là một ẩn số, thì r+a*c=z có thể được coi là phương trình một chiều, trong đó r và a là các hệ số của phương trình. Xin lưu ý rằng với tiền đề c là ẩn số, nếu r + a*x = r' + a'*x được thiết lập, thì theo định lý Schwatz-Zippel [3], r=r' và a=a ' cả hai đều được thành lập. Điều đó có nghĩa là, với tiền đề là c chưa biết, Alice gần như không thể tìm được một cặp r', a' khác để tính z và đánh lừa Bob. Số thử thách ngẫu nhiên c này thực hiện các ràng buộc của r và a. Mặc dù Bob chọn một số ngẫu nhiên nhưng do không biết trước nên Alice phải sử dụng khóa riêng a để tính z. Chìa khóa ở đây: c phải là một số ngẫu nhiên.
Ngoài ra, số ngẫu nhiên r được tạo trong bước đầu tiên của giao thức đảm bảo tính bảo mật của a. Bởi vì tổng của bất kỳ bí mật nào khi được thêm vào một số ngẫu nhiên tuân theo "phân phối nhất quán" vẫn tuân theo "phân phối nhất quán".
tiêu đề phụ
Chứng minh kiến thức bằng không
Chúng ta hãy xem cách giao thức Schnorr chứng minh thuộc tính "không kiến thức" yếu hơn - "SHVZK":
Lưu ý: Những gì chúng tôi chứng minh ở đây chỉ là Trình xác minh Trung thực Đặc biệt Không có Kiến thức (SHVZK). SHVZK yêu cầu hành vi của Bob trong thỏa thuận không được vô lý, chẳng hạn như anh ta phải tuân theo thỏa thuận, bước thứ hai đi đến băng chuyền lấy một số ngẫu nhiên mới và sử dụng ngay. Theo nghĩa thông thường, "không kiến thức" không đưa ra bất kỳ yêu cầu nào đối với Bob, vì vậy chúng tôi nói rằng đây là một thuộc tính yếu hơn. Mặc dù giao thức Schnorr hiện tại không thể chứng minh hoàn toàn "không có kiến thức", nhưng nó có thể đạt được mục tiêu hoàn toàn không có kiến thức bằng cách thêm một số bước giao thức. Chi tiết sẽ không được mở rộng ở đây. Độc giả quan tâm vui lòng tham khảo [4]. Chúng ta sẽ thảo luận lại vấn đề này sau khi thảo luận về phép biến đổi Fiat-Shamir.
Đầu tiên, "trình mô phỏng" mô phỏng một "thế giới lý tưởng". Trong thế giới lý tưởng, một cuộc trò chuyện giữa Zlice và Bob được mô phỏng. Zlice không biết gì về giao thức Schnorr, sk và Bob có khóa công khai PK. Vui lòng xem hình bên dưới. Bob cần tạo ra một số ngẫu nhiên c trong bước thứ hai của giao thức Schnorr. Có một yêu cầu bổ sung ở đây, đó là Bob chỉ có thể "trung thực" lấy một số ngẫu nhiên từ một "số ngẫu nhiên" bên ngoài băng chuyền" , mỗi số ngẫu nhiên phải là số ngẫu nhiên được phân phối một lần trong phạm vi 2^k được tạo bằng cách tung "đồng xu" trước k lần. Bob không thể tạo số ngẫu nhiên theo bất kỳ cách nào khác, đó là lý do tại sao chúng tôi yêu cầu Bob phải trung thực.
Đây là cách Zlice có thể đánh lừa Bob:

Lời mở đầu: Lưu ý rằng Zlice không biết gì về sk, tại thời điểm này, băng chuyền số ngẫu nhiên của Bob đã được đặt trước một số số ngẫu nhiên.


Bước 2: Zlice tạo lại một số ngẫu nhiên z, sau đó tính toán R'=z*G - c*PK và gửi R' cho Bob.
Bước 3: Lúc này Bob sẽ lấy c từ băng chuyền lấy số ngẫu nhiên, và gửi c cho Zlice. Xin lưu ý rằng c này chính xác là c được tạo bởi Zlice trong bước đầu tiên.
Bước 4: Zlice gửi số ngẫu nhiên z được tạo trong bước thứ ba cho Bob và Bob thực hiện xác minh theo công thức xác minh của giao thức Schnorr.Bạn có thể kiểm tra xem công thức này đã được thiết lập hoàn hảo chưa.
Bạn có thể so sánh giao thức Schnorr trong "thế giới thực". Ở cả hai thế giới, Bob đều có thể vượt qua quá trình xác minh.
Nhưng sự khác biệt là:
Trong "thế giới lý tưởng", Zlice không có sk; trong khi ở "thế giới thực", Alice có sk
Trong "thế giới lý tưởng", z là một số ngẫu nhiên và sk không liên quan; trong khi ở "thế giới thực", z được tính với sk
Trong "thế giới lý tưởng", Zlice sử dụng siêu năng lực để thay thế các số ngẫu nhiên của Bob; trong "thế giới thực", Alice không thể nhìn thấy băng chuyền số ngẫu nhiên của Bob và không thể thay đổi các số trên băng chuyền
Q
Ở đây, hãy suy nghĩ về nó:
(Hai phút sau...)
Câu trả lời là không.
Nếu Alice biết trước số ngẫu nhiên, thì Alice (trong thế giới thực) có thể đánh lừa Bob như Zlice giả lập đã làm.
tiêu đề phụ
Trình mô phỏng gặp gỡ
Thực ra, hai tính chất “đáng tin cậy” và “không biết” cũng có một sự đối xứng ở một chiều không gian khác. Độ tin cậy đảm bảo rằng Alice độc hại phải thất bại và không có kiến thức đảm bảo rằng Bob độc hại sẽ không bao giờ thành công. Thật thú vị, sự đối xứng này sẽ được phản ánh trong "thế giới lý tưởng" mô phỏng.
Hãy phân tích định nghĩa về độ tin cậy: Sự thiếu hiểu biết của Alice khiến việc xác minh của Bob không thành công. Mệnh đề ngược lại của nó là: Xác minh thành công của Bob dẫn đến Alice phải có tri thức.
Chúng tôi quay lại trình giả lập để kiểm tra kiến thức của Alice trong một "thế giới lý tưởng" nơi có thể sử dụng siêu năng lực.
Một lần nữa, hãy tưởng tượng rằng trong vũ trụ song song, có hai thế giới, một thế giới được gọi là "thế giới lý tưởng" và thế giới kia được gọi là "thế giới thực". Điều thú vị về thế giới lý tưởng là nó được mô phỏng bởi một "trình giả lập" và trình giả lập có thể đưa các NPC có siêu năng lực vào thế giới lý tưởng. Lần này, hai hình đại diện của Alice được đưa vào "thế giới lý tưởng" và "thế giới thực" cùng một lúc.
Giả sử "bạn" đóng vai Bob, và bạn muốn biết liệu Alice mà bạn đang nói chuyện có thực sự "đáng tin cậy" hay không. Vì vậy, đưa bạn vào "thế giới lý tưởng", với sự trợ giúp của một NPC có siêu năng lực, bạn có thể "khai thác" kiến thức về Alice ở phía đối diện.
Cái gì... cái gì? Không phải chúng ta vừa chứng minh: Các giao thức là không có kiến thức sao? Không có kiến thức có nghĩa là Bob không thể trích xuất bất kỳ mảnh "kiến thức" nào. Đánh bảng đen ở đây, "không kiến thức" là dành cho "thế giới thực". Những gì chúng ta đang thảo luận bây giờ là "thế giới lý tưởng" kỳ diệu.
Nhắc lại, trong "thế giới lý tưởng", bạn có thể sử dụng một NPC có siêu năng lực để trích xuất kiến thức của Alice, để đảm bảo rằng Alice trong "thế giới thực" không thể gian lận. Hãy tưởng tượng một Alice gian lận, cô ấy phải không có kiến thức và không có kiến thức thì NPC không thể trích xuất bất cứ thứ gì trong "thế giới lý tưởng".
Tuy nhiên, trong "thế giới thực", bạn không thể sử dụng NPC và tất nhiên bạn không thể nhìn thấy kiến thức của Alice và điều đó sẽ không mâu thuẫn với bản chất của "không kiến thức". Bởi vì các sự kiện trong hai thế giới là "không thể phân biệt", chúng ta có thể kết luận rằng trong "thế giới thực", Alice phải có kiến thức.
Sắp xếp các ý tưởng: làm thế nào để chứng minh rằng Alice không thể gian lận trong một phiên tương tác? Chúng ta cần xác định một "thuật toán mô phỏng" cho phiên tương tác này, thuật toán này có thể mô phỏng một "thế giới lý tưởng", trong đó có một vai trò đặc biệt gọi là "Người trích xuất", là NPC mà chúng ta đã đề cập trước đó, nó có thể vượt qua "Siêu năng lực" để "trích xuất" kiến thức của Alice, nhưng làm cho bên kia "không biết".Lưu ý, siêu năng lực là điều cần thiết! Đây là trong "Series (2) Tìm hiểu về "Mô phỏng"
』Người ta đã giải thích rằng nếu trình giả lập có khả năng gian lận mà không có siêu năng lực, thì điều đó tương đương với việc chứng minh rằng giao thức là "không đáng tin cậy" (Unsoudness). Tương tự, nếu "người trích xuất" có khả năng trích xuất thông tin mà không cần siêu năng lực, thì điều đó tương đương với việc chứng minh rằng giao thức không phải là kiến thức không (Not-zero-knowledge).
Điều này phụ thuộc vào bằng chứng của hệ thống tương tác cụ thể.Hãy bắt đầu với giao thức Schnorr mà chúng ta vừa nói đến.
tiêu đề phụ
Bằng chứng kiến thức: "Bằng chứng kiến thức"
Hãy chứng minh "độ tin cậy" của giao thức Schnorr và xem cách siêu NPC này trích xuất khóa riêng của Alice trong "thế giới lý tưởng". Và “siêu năng lực” này vẫn “ngược dòng thời gian”.
Bước 1: Alice chọn một số ngẫu nhiên r, tính R=r*G, và gửi R cho "máy trích xuất"


Bước 4: Sau khi trình giải nén thấy rằng không có vấn đề gì với z, nó sẽ kích hoạt siêu năng lực của mình và đảo ngược thời gian trước bước thứ hai
Bước 5: Người trích xuất gửi lại một số thử thách c' ngẫu nhiên khác cho Alice, lúc này Alice quay lại bước 2 và sẽ có cảm giác deja vu nhưng cô không thể nhận thức được thời gian quay ngược lại
Bước 6: Alice tính lại z' và gửi nó tới bộ trích xuất để kiểm tra
Bước 7: Bây giờ trình trích xuất có z và z', nó có thể tính toán trực tiếp khóa riêng a do Alice sở hữu và đạt được "khai thác tri thức"
Tại thời điểm này, "độ tin cậy" về cơ bản đã được chứng minh. Bạn có cảm thấy một chút về sự "đối xứng" của độ tin cậy và trí thông minh bằng không?
Lưu ý: Không phải tất cả độ tin cậy nhất thiết phải có sự hiện diện của thuật toán trích xuất. Một hệ thống bằng chứng sử dụng trình trích xuất để chứng minh độ tin cậy được gọi là "Bằng chứng về kiến thức".
tiêu đề phụ
Phiên dịch các cuộc tấn công chữ ký ECDSA
Lược đồ chữ ký ECDSA có thể được nhìn thấy ở mọi nơi trong hệ thống chuỗi khối cũng là một hệ thống bằng chứng không kiến thức đơn giản. Lược đồ chữ ký số đường cong elip ECDSA rất gần với giao thức Schnorr, và sơ đồ chữ ký dựa trên giao thức Schnorr đã được xuất bản trong "Journal of Cryptography" [5] vào năm 1991. Năm 1991, khi Viện Tiêu chuẩn Quốc gia (NIST) chọn thuật toán chữ ký số, sơ đồ chữ ký Schnorr thanh lịch đã thực sự được cấp bằng sáng chế, vì vậy NIST đã đề xuất một sơ đồ chữ ký khác DSA (Thuật toán Chữ ký số), và sau đó sơ đồ này hỗ trợ đường cong hình elip là sau đó được gọi là ECDSA. Khi Satoshi Nakamoto nghĩ ra Bitcoin, anh ấy đã chọn ECDSA làm thuật toán chữ ký, nhưng đường cong không chọn đường cong elip theo khuyến nghị của tiêu chuẩn NIST - secp256-r1, mà là secp256-k1. Vì những tin đồn trong sông hồ, NIST có thể đã can thiệp vào việc lựa chọn các tham số đường cong elip, khiến một số tổ chức sử dụng các phương pháp không xác định để giải các bài toán logarit rời rạc, và do đó có khả năng có siêu năng lực trong "thế giới thực". Nhiều người nghi ngờ rằng có lẽ Satoshi Nakamoto cũng đã cân nhắc điều này khi ông thiết kế Bitcoin hồi đó, cố tình chọn một đường cong như secp256-k1 có vẻ kém an toàn hơn một chút.
Hãy phân tách chữ ký ECDSA và xác định sơ đồ xác thực tương tự như ECDSA theo cách tương tác.Xem hình bên dưới để biết tương tác.
Bước 1: Alice vẫn chọn một số ngẫu nhiên k, và ánh xạ k vào đường cong elip để được điểm K, sau đó gửi cho Bob
Bước 2: Bob cần tạo hai số ngẫu nhiên, c và e và đưa chúng cho Alice
Bước 3: Alice tính s và gửi cho Bob, Bob kiểm tra xem quá trình tính s có đúng không
Lưu ý: Đối với những độc giả đã quen thuộc với lược đồ chữ ký ECDSA, đây là giải thích ngắn gọn. Giá trị c do Bob tạo ra tương ứng với Giá trị băm Hash(m) của thông báo đã ký và e được tạo bởi hàm chuyển đổi F(K) . Trong số đó, F(.) Có được bằng cách lấy tọa độ x của điểm trên đường cong elip và đi qua (mod q)[6].
Trên thế giới có câu nói rằng sơ đồ chữ ký ECDSA có rủi ro bảo mật nghiêm trọng, nếu sử dụng cùng một số ngẫu nhiên trong hai chữ ký, khóa riêng của người ký sẽ bị lộ. Trên thực tế, sơ đồ chữ ký Schnorr cũng gặp vấn đề tương tự.
Khi các kỹ sư của Sony PlayStation 3 gọi chức năng thư viện ECDSA, họ đã chuyển một hằng số vào vị trí tham số mà lẽ ra phải nhập một số ngẫu nhiên. Các tin tặc quen thuộc với mật mã đã phát hiện ra cửa hậu nghiêm trọng này. Vào tháng 1 năm 2011, cậu bé phép thuật Geohot đã công khai khóa riêng chính của Sony PS3, điều đó có nghĩa là bất kỳ người dùng nào cũng có thể dễ dàng có được quyền root của bảng điều khiển trò chơi. Sony đã rất tức giận sau đó... (bạn có thể tìm kiếm câu chuyện tiếp theo trên mạng)
k = (c - c')/(s - s')a = (k * s - c)/e
Nếu Alice sử dụng cùng một K trong hai lần tương tác, thì Bob có thể nhận được s và s' bằng cách gửi hai c và c' khác nhau, sau đó tính khóa riêng a theo công thức sau:
Vậy chúng ta nên nhìn thế nào về “cửa sau an ninh” này? Mọi người thử nghĩ xem, cửa hậu bảo mật này gần giống hệt như bằng chứng về độ tin cậy của giao thức Schnorr mà chúng ta đã chứng minh trước đó! Thuật toán này chính xác là thuật toán "trình trích xuất" trong bằng chứng "độ tin cậy" của giao thức xác thực ECDSA. Chỉ là ở phần chứng minh độ tin cậy, để Alice có thể sử dụng cùng một số k ngẫu nhiên để xác thực hai lần, “người trích xuất” cần sử dụng siêu năng lực “đảo ngược thời gian”.
Nhưng trong hệ thống Sony PS3, số ngẫu nhiên được một kỹ sư vô danh viết thành một giá trị cố định, tương đương với việc trực tiếp trao cho tin tặc "siêu năng lực", và đây là ở "thế giới thực". Nói cách khác, tin tặc có thể thực hiện "trình trích xuất" mà không cần "quay ngược thời gian".
Xin nhắc lại, đây không chỉ là vấn đề về các số ngẫu nhiên không lặp lại. Thay vào đó, số ngẫu nhiên phải là số ngẫu nhiên được bảo mật bằng mật mã.
1: z1 = r1 + c1*a2: z2 = r2 + c2*a
Thử tưởng tượng nếu số ngẫu nhiên r được tạo ra bởi một trình tạo số giả ngẫu nhiên sử dụng nguyên lý “đồng dạng tuyến tính” thì mặc dù giá trị của r luôn thay đổi nhưng vẫn không ngăn được việc “khai thác tri thức”. Giả sử rằng thuật toán đồng dư tuyến tính là r2= d*r1 + e (mod m), quay lại bước thứ ba của giao thức Schnorr:
Nếu kẻ tấn công yêu cầu Alice ký hai chữ ký liên tiếp thì sau khi thay r2 vào r1 sẽ có hai phương trình tuyến tính giải hai ẩn số (r1, a), z1, z2, c1, c2, d, e cho kẻ tấn công sau đã biết và hệ phương trình này chỉ cần kiến thức toán THCS là có thể giải được.
Xin lưu ý rằng đây không phải là "lỗi thiết kế" của giao thức Schnorr (hoặc giao thức ECDSA), mà ngược lại, đây là một thiết kế tinh vi hơn của giao thức Schnorr, đảm bảo độ tin cậy của giao thức về nguyên tắc. Các kỹ thuật tương tự thường xuyên xuất hiện trong các giao thức mật mã để đạt được "sự ngắn gọn" trong nháy mắt. Nhưng phải nói rằng nếu cơ chế bên trong của giao thức không rõ ràng, đặc biệt là sự khác biệt giữa "thế giới lý tưởng" và "thế giới thực", người dùng có thể dễ dàng đưa ra nhiều "lỗ hổng bảo mật" lạ mắt.
Chúng ta cần biết những gì với tư cách là những lập trình viên có trách nhiệm, những người có thể viết phần mềm an toàn và đáng tin cậy? Tất nhiên, tốt nhất là hiểu kỹ cơ chế thiết kế của các giao thức bảo mật, nhưng trong hầu hết các trường hợp, điều này là không thực tế. Nói chung, chúng tôi sử dụng các công cụ mật mã khác nhau làm "hộp đen", nhưng điều này có thể là chưa đủ. Chúng tôi nên hiểu rõ hơn:
"định nghĩa an toàn" là gì?
Chính xác thì "siêu năng lực" trong "thế giới lý tưởng" là gì?
tiêu đề phụ
Hố não: Có phải chúng ta đang sống trong thế giới giả lập?

Khi tôi đọc "giả lập" lần đầu tiên, điều đầu tiên tôi nghĩ đến là bộ phim "Ma trận". “Thế giới thực” mà chúng ta đang sống có thể là một “thế giới lý tưởng” được mô phỏng bởi một trình giả lập nào đó, mọi thứ chúng ta nhìn thấy, nghe thấy và cảm nhận đều là “mô phỏng”. Trong "thế giới thực", chúng ta sống trong một ma trận. Tuy nhiên, chúng tôi không nhận thức được điều này.
Ngay từ thời Xuân Thu và Chiến Quốc, Trang Tử cũng đã suy nghĩ về những vấn đề tương tự:
Ngày xưa Trang Chu nằm mơ thấy mình hóa bướm, bướm bay rất sống động. Tự giới thiệu đến Zhizhi và! Tôi không biết Chu Diệp. Nếu bạn đột nhiên cảm thấy nó, thì bạn sẽ cảm thấy như một tuần. Tôi không biết Zhou Zhimeng có phải là Hu Die không? Giấc mơ của Butterfly là Zhou Yu? Zhou và Hu Die phải có sự khác biệt của riêng họ. Điều này được gọi là vật chất hóa.
—— "Trang tử bình đẳng vật"
Giải thích theo cách của người thường: Một hôm Trang Tử ngủ say mơ thấy mình biến thành một con bướm đang bay lượn nhẹ nhàng, khi tỉnh dậy thì thấy mình vẫn là Trang Tử, trong giấc mơ con bướm không biết mình là Trang Tử. Cho nên Trang Tử tự hỏi trong mộng mình biến thành bướm hay bướm biến thành Trang Tử trong mộng? Nếu giấc mơ là thật,...
"Bộ não trong thùng" là một ý tưởng do nhà triết học người Mỹ Gilbert Harman đề xuất: bộ não của một người có thể được đặt trong một thùng chứa, sau đó được cắm bằng dây và bằng cách mô phỏng các đầu vào tín hiệu điện khác nhau, bộ não nghĩ rằng nó đang sống trong thùng. thế giới thực. trên thế giới.
Ý tưởng này xuất phát từ cuốn “Những suy ngẫm triết học đầu tiên” [7] của triết gia Descartes, trong đó ông lập luận rằng chúng ta nên nghi ngờ mọi thứ và cần kiểm tra lần lượt tất cả kiến thức của con người, toán học, hình học và thế giới nhận thức. Tuy nhiên, anh ấy phát hiện ra rằng ngoài "Tôi nghĩ, do đó tôi tồn tại", mọi kiến thức có thể không đáng tin cậy, bởi vì bộ não của chúng ta có khả năng bị đánh lừa bởi một Ác ma có "siêu năng lực".
Năm 2003, Nick Bostrom, giáo sư triết học tại Đại học Oxford, đã viết một bài báo trang trọng "Có phải chúng ta đang sống trong một thế giới mô phỏng máy tính?" "[số 8]. Hãy xem xét ít nhất một trong ba sự thật sau đây là đúng:
Nền văn minh nhân loại đã hoàn toàn tuyệt chủng.
Nền văn minh của nhân loại đã đạt đến trình độ công nghệ có thể mô phỏng hoàn toàn thế giới thực, nhưng không biết vì lý do gì, không ai sẵn sàng tạo ra một thế giới mô phỏng mới để đóng vai Chúa.
Nền văn minh nhân loại hiện tại của chúng ta sống trong một thế giới giả lập.
Doanh nhân ở Thung lũng Silicon, Elon Musk, cho biết trong một cuộc phỏng vấn công khai rằng xác suất "chúng ta sống trong thế giới thực cơ bản" chỉ là "một phần tỷ". Có nghĩa là, anh ấy tin rằng chúng ta đang sống trong một trò chơi máy tính (thế giới giả lập), và bên ngoài thế giới giả lập, có một lập trình viên phát triển và điều khiển thế giới này, và mỗi chúng ta đều là một nhân vật trò chơi (NPC).
Sau khi cảm thấy mệt mỏi với việc bẻ khóa iPhone và chế độ lái tự động, cậu bé phép thuật Geohot đã có bài phát biểu với tiêu đề "Bẻ khóa mô phỏng" tại hội nghị "South by Southwest" vào tháng 3 năm nay [9]. Anh ấy tin rằng chúng ta đang sống trong một thế giới giả lập, và những người được gọi là các vị thần là những lập trình viên còn sống và đang hoạt động ở thế giới bên ngoài. Họ đã lập trình để tạo ra "thế giới thực" của chúng ta. Tất nhiên, họ có thể đã bắt đầu nhiều hơn một bản sao của thế giới. Tuy nhiên, họ cũng có thể sống trong một "thế giới mô phỏng" bên ngoài.
Nếu chúng ta sống trong một thế giới giả lập, có lẽ chúng ta có thể tìm thấy một cửa sau ở đâu đó trên trái đất - "Cửa bẫy mô phỏng", để có được siêu năng lực của "mô phỏng" và trích xuất "kiến thức bí mật" đáng kinh ngạc.
Nếu thế giới của chúng ta thực sự được mô phỏng bởi một chương trình, thì chương trình này có thể có lỗi, nếu có lỗi, có lẽ chúng ta có thể sử dụng lỗi này để thoát khỏi nhà tù, nhảy ra khỏi "thế giới lý tưởng" và đến thế giới bên ngoài. Hãy nói về Chúa nông dân mã.
Đây co phải la một tro đua? Sau đây là đoạn trích từ một đoạn trên Zhihu [10]:
Nếu thế giới là ảo, ví dụ nào có thể chứng minh điều đó?
1. Tại sao ở vĩ mô thì phong phú và nhiều màu sắc, còn các hạt cơ bản ở vi mô thì lại hoàn toàn giống nhau? Điều này hoàn toàn giống với hình ảnh, nhưng các pixel hoàn toàn giống nhau
2. Tại sao tốc độ ánh sáng lại có giới hạn trên? Do tốc độ hoạt động của máy bị hạn chế
3. Tại sao lại có hằng số Planck? Do độ chính xác hạn chế của dữ liệu máy
4. Tại sao các hạt vi mô đều là đám mây xác suất? Đây là một nhiễu loạn ngẫu nhiên được thêm vào để tránh hệ thống bị mắc kẹt trong một vòng lặp
5. Tại sao lại có Nguyên lý loại trừ Pauli? Có vẻ như tổ chức dữ liệu được hệ thống áp dụng là một mảng đa chiều
6. Tại sao máy tính lượng tử chạy nhanh đến mức có thể thử mọi khả năng trong tích tắc? Bởi vì điều này về cơ bản gọi giao diện của máy chủ
7. Tại sao lại có hiện tượng vướng víu lượng tử? Đây thực sự là hai con trỏ tham chiếu đến cùng một đối tượng
9. Tại sao thời gian lại có điểm bắt đầu? Hệ thống có thời gian khởi động
còn tiếp
còn tiếp
Thiết kế một giao thức mật mã giống như đi trên dây, nếu bạn muốn đạt được "không kiến thức" và "độ tin cậy" đồng thời, điều đó có nghĩa là bạn phải làm cho nội dung của giao thức hoàn toàn ngẫu nhiên và đảm bảo rằng "kiến thức" có thể tham gia trong sự tương tác của giao thức. Nếu giao thức không được thiết kế phù hợp hoặc triển khai chính xác, nó sẽ dẫn đến sự sụp đổ của bảo mật hệ thống. Ví dụ, kiến thức bằng không có thể bị phá hủy, khiến "kiến thức" vô tình bị rò rỉ; hoặc độ tin cậy có thể bị phá hủy để bất kỳ ai cũng có thể giả mạo bằng chứng. Hơn nữa, loại bảo mật này nghiêm trọng hơn nhiều so với các lỗ hổng cơ chế cơ bản của mã truyền thống và khó bị phát hiện hơn. Đối với một đối số toán học nghiêm ngặt, điều này có vẻ cần thiết.
If you would be a real seeker after truth, it is necessary that at least once in your life you doubt, as far as possible, all things.
Có phải thế giới của chúng ta thực sự được mô phỏng bởi một "Nền văn minh ba thể"? Không thể loại trừ khả năng này, có lẽ, chúng ta cần nghiêm túc xem xét lại những ám ảnh khác nhau của mình. Nhưng cái gì cơ? Ít nhất "suy nghĩ" của tôi là có thật.
Nếu bạn là một người thực sự tìm kiếm sự thật, ít nhất một lần trong đời, hãy đặt câu hỏi về mọi thứ bạn có thể.
