You are on page 1of 6

Chương 2.

Cryptographic protocols (next)


I. Diffie-Hellman Key Exchange (121-122)
- Đó là giao thức:

• Khóa công khai


• Sử dụng để TRAO ĐỔI KHÓA (chứ không mã hóa hay giải mã) (trực tiếp, không qua người thứ ba
– khác với Needham Schroeder)
• Tính an toàn của thuật toán tỉ lệ tính khó của bài toán discrete logarithm problem (DLP – logarit
rời rạc)

(Logarit rời rạc là phép tính kiểu này)

Biết 3𝑘 ≡ 13 (𝑚𝑜𝑑 17) hãy tìm k

- a là căn nguyên thủy của số nguyên tố p nếu

𝑎1 , 𝑎2 … . 𝑎𝑝−1 % p sẽ đủ số dư từ 1….p-1

Ví dụ 2,3 đều là căn nguyên thủy của 19

- Thuật toán Diffie-Hellman (5 bước):

• 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:

• Kẻ thù sẽ nghe trộm được 𝑌𝐴 , 𝑌𝐵 , cộng với a, p có công khai


→ Để tìm được K nó phải biết được 𝑋𝐴 , 𝑋𝐵 (công thức ở bước 4) → Độ an toàn của hệ thống quyết
định bởi tính khó của bài toán tính logarit rời rạc.

- Điểm yếu : man in the middle attack

• 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.

- Cụ thể: cho (a, p) công khai

1. Alice, Bob chọn private number là 𝑋𝐴 và 𝑋𝐵 . Malory sẽ chọn 2 số là 𝑋𝐶 và 𝑋𝐷


2. Alice → Bob 𝑌𝐴 = 𝑎 𝑋𝐴 𝑚𝑜𝑑 𝑝
3. Malory sẽ đánh cắp 𝑌𝐴 và sẽ gửi cho Bob 𝑌𝐶 = 𝑎 𝑋𝐶 𝑚𝑜𝑑 𝑝
4. (Tương tự chiều ngược lại Bob gửi cho Alice 𝑌𝐷 = 𝑎 𝑋𝐷 𝑚𝑜𝑑 𝑝)
5. Lúc này Alice và Bob sẽ tính ra K hoàn toàn khác nhau
𝑋
a. Alice: 𝐾1 = 𝑌𝐷 𝐴 𝑚𝑜𝑑 𝑝 = 𝑎 𝑋𝐷 𝑋𝐴 𝑚𝑜𝑑 𝑝
b. Bob: 𝐾2 = 𝑎 𝑋𝐵 𝑋𝐶 𝑚𝑜𝑑 𝑝

→ 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)

- Khắc phục chống lại MITM: (…)

II. Zero Knowledge Protocol (213-215)


0. Abstract
- Ở thế giới thực, muốn nhập cảnh → trình hộ chiếu; muốn vào ĐHBKHN → trình thẻ sinh viê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:

• Peggy trả lời được một số câu hỏi của Victor


• Victor KHÔNG THỂ BIẾT được một chút gì thông tin mật của Peggy
• Bí mật cần chứng minh có thể là mật khẩu, khóa riêng bí mật, …

- Tính chất của ZKP:

• 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ự.

- Kiểm tra lại tính chất của ZKP

• 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ì

2. Giao thức xác thực Fiat-Shamir


- Trong bài toán xác thực, Alice được định danh bằng một số bí mật mà chỉ có Alice biết (password)

→ Vấn đề: người xác thực phải đáng tin cậy

→ 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

*Giao thức Fiat – Shamir Identification:

+) One-time setup

- Trusted center công bố số 𝑛 = 𝑝𝑞 tuy nhiên giữ bí mật số 𝑝 và 𝑞.


- Alice chọn một số nguyên tố bí mật 𝑠 mà nguyên tố cùng nhau với 𝑛, tính 𝑣 = 𝑠 2 𝑚𝑜𝑑 𝑛 và
đăng ký số 𝑣 với trusted center như là khóa công khai.

→ Như vậy mỗi bên có

Alice Trusted Center


s (có thể hiểu là mật khẩu)
N (công khai)
V (khóa công khai của Alice)
V = s2 % n
+) Khi A muốn chứng minh với B là mình có s thì bắt đầu giao thức.

Alice Bob
{s, v, n, r, x}

Chọn r (random)
Gửi 𝑥 = 𝑟 2 𝑚𝑜𝑑 𝑛
{x, v, n}

Bob nhận được x.


Tung đồng xu cho e = 0 hoặc e = 1
Gửi e cho A và bắt A phải trả lời 𝑦 = 𝑟𝑠 𝑒 𝑚𝑜𝑑 𝑛
{s, v, n, r, e, x}

Alice tính toán và gửi Bob 𝑦 = 𝑟𝑠 𝑒 𝑚𝑜𝑑 𝑛


{x, v, n, y, e}
Bob nhận y
Kiểm tra 𝑦 2 = (𝑥𝑣 𝑒 𝑚𝑜𝑑 𝑛) hay không (*)

Như vậy Bob có thể kiểm tra được Alice mà không biết đến s (bí mật của Alice)

+) Chứng minh đoạn (*) (optional thích đọc thì đọc)


B sẽ kiểm tra nếu 𝑦 2 = (𝑥𝑣 𝑒 𝑚𝑜𝑑 𝑛) hay không.

• Nếu 𝑒 = 0 thì 𝑦 2 = (𝑥 𝑚𝑜𝑑 𝑛) = (𝑟 2 𝑚𝑜𝑑 𝑛) (chuẩn vì 𝑦 = (𝑟𝑠 𝑒 𝑚𝑜𝑑 𝑛) = (𝑟 𝑚𝑜𝑑 𝑛) mà)


• Nếu 𝑒 = 1 thì 𝑦 2 = (𝑥𝑣 𝑚𝑜𝑑 𝑛) = (𝑟 2 𝑣 𝑚𝑜𝑑 𝑛) = (𝑟 2 𝑠 2 𝑚𝑜𝑑 𝑛)
(chuẩn luôn, vì 𝑦 = (𝑟𝑠 𝑚𝑜𝑑 𝑛) nên 𝑦 2 = (𝑟 2 𝑠 2 𝑚𝑜𝑑 𝑛) mà)

+) Chứng minh là ZKP

Eve Bob
{v, n, r}

Chọn r (random)
Gửi 𝑥 = 𝑟 2 𝑚𝑜𝑑 𝑛
{x, v, n}

Bob nhận được x.


Tung đồng xu cho e = 0 hoặc e = 1
Gửi e cho A và bắt A phải trả lời 𝑦 = 𝑟𝑠 𝑒 𝑚𝑜𝑑 𝑛
{v, n, r, e}

Nếu e = 0 thì chỉ cần gửi 𝑦 = 𝑟 𝑚𝑜𝑑 𝑛 là


qua được challenge
Nếu e = 1 thì không gửi được và sẽ bị lộ

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)

→ Nếu biết trước e = 0 thì Eve sẽ trả lời 𝑦 = 𝑟%𝑛 là xong

→ Eve chắc chắn giả mạo thành công


3. Bit Commitment và Zero Knowledge
(tự đọc, ông đ nói)

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

• Alice khẳng định mình là Alice


• Victor chọn một message ngẫu nhiên M và gửi bản mật 𝐶 = 𝑃𝐴 (𝑀) cho Peggy. (khóa công khai
của Alice)
• Peggy giải mã C sử dụng 𝑆𝐴 (khóa bí mật của mình) và gửi kết quả 𝑀′ cho Victor
• Nếu 𝑀′ = 𝑀 thì Victor chấp nhận cho Peggy

➔ Tại sao nó không phải ZKP?

- 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.

→ không phải zero knowledge (V có thể biết M!!)

*Sai rồi, cùng sửa nhé!

• Alice khẳng định mình là Alice


• Victor chọn một message random M và gửi C = PA (M) cho Alice
• Alice giải mã (sử dụng SA) và thu được M’ và gửi commitment commitpk (r, M’)
• Victor gửi Alice message M
• Alice kiểm tra M = M’ hay không? Nếu không (Alice biết thằng Victor này không tốt đẹp gì) thì
Alice ngừng ngay.
(Lúc này ngừng mà Victor không thể biết được M’ do không có khóa để mở cái commit kia)
• Nếu có, Alice gửi nội dung commit cho Victor (𝑟, 𝑀′ )
• Victor chấp nhận Alice khi và chỉ khi M’ = M và khi khóa lại cái commit kia thì nó giống commit
trên.

→ 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.

(Nếu khả năng tính toán có hạn → zero knowledge argument)

You might also like