Professional Documents
Culture Documents
Chương 2
Chương 2
𝑎1 , 𝑎2 … . 𝑎𝑝−1 % p sẽ đủ số dư từ 1….p-1
• Bước 1: A và B thống nhất chọn số nguyên tố 𝑝 và giá trị 𝛼 là căn nguyên thủy của p
→ Công bố công khai (𝛼, 𝑝). Sau đó hai bên A và B sẽ lựa chọn các khóa bí mật (𝑋𝐴 , 𝑋𝐵 ) cho mình
và thiết lập các giá trị có thể gọi là khóa công khai tương ứng (𝑌𝐴 , 𝑌𝐵 )
• Bước 2: A chọn một số ngẫu nhiên bí mật 𝑋𝐴 (1 ≤ 𝑋𝐴 ≤ 𝑝) và tính giá trị công khai 𝑌𝐴 =
𝛼 𝑋𝐴 𝑚𝑜𝑑 𝑝 và gửi cho B
• Bước 3: B chọn một số ngẫu nhiên bí mật 𝑋𝐵 (1 ≤ 𝑋𝐵 ≤ 𝑝) và tính giá trị công khai 𝑌𝐵 =
𝛼 𝑋𝐵 𝑚𝑜𝑑 𝑝 và gửi cho A
𝑋
• Bước 4: A nhận được 𝑌𝐵 và tính 𝐾 = 𝑌𝐵 𝐴 𝑚𝑜𝑑 𝑝 thì sẽ thu được khóa bí mật chung K.
𝑋
• Bước 5: B nhận được 𝑌𝐴 và tính 𝐾 = 𝑌𝐴 𝐵 𝑚𝑜𝑑 𝑝 thì sẽ thu được khóa bí mật chung K.
- Nhận xét:
• Phương thức trao đổi Diffie–Hellman bản thân nó không cung cấp khả năng xác thực cho các bên
giao tiếp, và vì vậy trở nên không an toàn đối với hình thức tấn công người đứng giữa.
• Eve có thể thiết lập hai giao thức trao đổi, một với Alice và một với Bob, giúp cho Eve có thể giả
dạng Alice đối với Bob và ngược lại một cách hiệu quả, từ đó có thể giải mã, rồi mã hóa lại thông
điệp chuyển giữa Alice và Bob mà không bị phát hiện.
→ Nếu Alice gửi message cho Bob (sử dụng K1), Malory sẽ có thể giải mã sau đó mã hóa lại bằng
K2
→ Bob nhận và giải mã như bình thường mà không biết có thằng man in the middle
• Lưu ý rằng để không bị phát hiện, Eve phải luôn luôn đứng giữa để chuyển tiếp thông điệp (đã mã
hóa lại) bất cứ khi nào Alice và Bob gửi. Nếu Eve ngưng chuyển tiếp, Alice và Bob sẽ phát hiện ra
sự hiện diện của Eve và biết được rằng thông tin trao đổi riêng tư giữa hai người đã bị can thiệp
và lộ ra với một người ngoài nào đó bất hợp pháp
(Vì nếu không đứng giữa nữa, Bob sẽ không giải mã được → phát hiện)
➔ Để chứng thực được mình là chính mình và mình có đủ thẩm quyền được phép làm gì đó, ta phải trình
cho người gác xem một vật sở hữu gắn liền với mình.
- Trong thế giới mạng, thông qua những protocol đặc biệt mà mình không cần cho người gác xem một vật
sở hữu gắn liền với mình (coi như là bí mật) mà vẫn chứng minh được.
➔ Điều này là cần thiết người gác chỉ có nghĩa vụ kiểm tra xem ta có thẩm quyền để ra vào một địa điểm
nào đó hay không nhưng chính người gác chưa chắc có quyền đó. (người gác sus)
- Giao thức ZKP này cho phép:
• Completeness (Tính trọn vẹn): người mà biết thông tin mật chắc chắn chứng minh được bí mật
của mình.
• Soundness (Tính đúng đắn): Nếu có người mạo danh thì sẽ thất bại với xác suất rất cao.
1. Ví dụ
- Hang của alibaba
• Prover (P) cần chứng minh cho Verifier (V) là biết mật khẩu mở cửa mà không cần nói cụ thể mật
khẩu là gì.
• (P) đi vào vào hang và đi theo hướng A, B tùy ý. (V) đi vào và yêu cầu: “hãy xuất hiện ở B”
o Nếu (P) đi vào đường B thì chỉ cần quay đầu là xong
o Nếu (P) đi vào đường A thì A cần phải biết mật khẩu
• Nếu (P) xuất hiện ở đầu B thật thì có xác suất là 50% là (P) biết mật khẩu
→ (V) chỉ cần kiểm tra rất nhiều lần thì xác suất ăn may của (P) của sẽ là cực kì nhỏ và có thể
chắc chắn rằng (P) biết mật khẩu thực sự.
• Completeness: Nếu (P) biết mật khẩu cửa thì chắc chắn chứng minh được mình có mật khẩu
• Soundness: Nếu (P) mạo danh thì xác suất (P) thất bại là rất cao (do (V) thử rất nhiều lần mà)
• Zero-Knowledge: (V) không hề biết mật khẩu thực sự là gì
→ Nếu bí mật bị nghe lén sang bên không đáng tin cậy thì sẽ có nguy cơ bị giả danh
→ Sử dụng ZK, ở đây tìm hiểu về giao thức xác thực Fiat – Shamir
+) One-time setup
Alice Bob
{s, v, n, r, x}
Chọn r (random)
Gửi 𝑥 = 𝑟 2 𝑚𝑜𝑑 𝑛
{x, v, n}
Như vậy Bob có thể kiểm tra được Alice mà không biết đến s (bí mật của Alice)
Eve Bob
{v, n, r}
Chọn r (random)
Gửi 𝑥 = 𝑟 2 𝑚𝑜𝑑 𝑛
{x, v, n}
Nếu có một kẻ mạo danh Alice, chỉ làm giao thức ĐÚNG một lần, thì khả năng thành công của kẻ Eve này
là 50%
→ Nếu Bob challenge n lần xác suất vượt qua của Eve chỉ là (1/2)n (xác suất rất thấp) (soundness)
→ Còn nếu Alice (người thực sự biết s) thì CHẮC CHẮN chứng minh được cho Bob. (completeness)
→ Bob cũng có thể xác thực được Alice mà không biết chút nào về s. (chọn số e như nào đi nữa)
➔ ZKP.
+) Nếu E đoán biết trước được e nó có thể đảm bảo thành công 100% ko?
→ Có
Giả sử mà đoán được cái e mà B sẽ chọn (e = 0 hoặc 1). Eve chỉ có {v, n, r, e} trong tay và cần trả lại cho Bob
𝑦 = 𝑟𝑠 𝑒 𝑚𝑜𝑑 𝑛
→ Nếu biết trước e = 1 thì Eve sẽ tạo x ngay bước đầu sao cho 𝑥 = 𝑟 2 /𝑣 𝑚𝑜𝑑 𝑛
→ sau khi nhận e = 1 thì Eve sẽ gửi 𝑦 = 𝑟%𝑛 như bình thường
→ Bob check (*) 𝑦 2 = (𝑥𝑣 % 𝑛) hay không tức là 𝑦 2 = 𝑟 2 %𝑛 hay không (mà cái này luôn đúng)
4. Fake ZKP
- Có một giao thức thoạt nhìn là ZKP
- Alice là chủ nhân của một khóa công khai, và muốn chứng minh mình là chủ nhân mà không để lộ thông
tin thông qua giao thức dưới đây
- Giải thích:
• Nếu như V không phải là người trung thực thì có thể lợi dụng giao thức để biết dược điều không
được phép (vi phạm V không được biết tí gì của P)
• Nếu Alice đã từng giao tiếp, V nghe trộm lấy vài đoạn mật mã → gửi cho Alice 𝐶 = 𝑃𝐴 (𝑀) (mà
không hề biết full mà chỉ do nghe trộm...)
→ bên kia response lại đoạn M’ → lộ M’ cho thằng V.
→ Victor không tài nào mà biết được M’ nếu không thực sự biết message M (thay vì là ăn cắp được C =
PA (M)).
5. Computational Assumptions
- ZKP giả sử người cần chứng minh có khả năng tính toán vô hạn.