You are on page 1of 32

Nhập môn ATTT

Câu 1: Phân tích ý nghĩa của Luật Kirchoff để thấy tại sao mật mã hiện đại không chấp nhận quan điểm
cần che giấu thuật toán mật mã.

Luật Kirchoff, còn được gọi là Nguyên lý Kirchoff, là một nguyên tắc trong lĩnh vực điện tử và mạch điện.
Nó được đặt theo tên nhà khoa học người Đức Gustav Kirchoff, người đã đưa ra nó vào những năm
1840. Luật Kirchoff bao gồm hai phần chính: Luật dòng Kirchoff và Luật áp Kirchoff.

Luật dòng Kirchoff (hay còn gọi là nguyên tắc bảo toàn dòng) khẳng định rằng tổng dòng đi qua một
điểm giao của mạch phải bằng không. Điều này có nghĩa là tổng dòng đi vào một nút của mạch bằng
tổng dòng đi ra khỏi nút đó. Luật dòng Kirchoff thể hiện nguyên tắc bảo toàn dòng điện.

Luật áp Kirchoff (hay còn gọi là nguyên tắc bảo toàn áp) khẳng định rằng tổng điện áp trên một vòng
mạch đóng khép phải bằng tổng điện áp của các nguồn và tổng điện áp của các thành phần trong vòng
mạch. Điều này thể hiện nguyên tắc bảo toàn năng lượng.

Bây giờ, liên quan đến mật mã hiện đại, ý nghĩa của Luật Kirchoff liên quan đến việc che giấu thuật toán
mật mã. Mật mã hiện đại dựa trên sự bảo mật của khóa (key) hơn là sự bảo mật của thuật toán mật mã.
Điều này được gọi là nguyên tắc bảo mật Kerckhoffs, cũng có liên quan đến nguyên lý bảo mật mở.

Nguyên tắc bảo mật Kerckhoffs được sáng tác bởi Auguste Kerckhoffs, một nhà khoa học và mật mã học
người Hà Lan vào thế kỷ 19. Ông đã đề xuất rằng mật mã nên chỉ dựa trên bí mật của khóa, trong khi
thuật toán mật mã nên công khai và được chấp nhận rộng rãi. Ý tưởng chính của nguyên tắc bảo mật
Kerckhoffs là mật mã không nên dựa vào việc giữ thuật toán mật mã bí mật, mà nên dựa vào việc giữ bí
mật của khóa.

Lý do chính cho việc mật mã hiện đại không chấp nhận quan điểm cần che giấu thuật toán mật mã là vấn
đề an ninh. Nếu một thuật toán mật mã chỉ được bảo vệ bằng việc giữ nó bí mật, khi thông tin về thuật
toán bị tiết lộ (như thông qua rò rỉ, tấn công mạng hoặc phân tích ngược), hệ thống mật mã sẽ trở nên
yếu và dễ bị tấn công.

Thay vào đó, bằng cách chấp nhận nguyên tắc bảo mật Kerckhoffs, mật mã hiện đại tập trung vào việc
giữ bí mật của khóa. Khi một thuật toán mật mã công khai và rộng rãi được sử dụng, các chuyên gia
trong lĩnh vực mật mã có thể xem xét và đánh giá nó, tìm ra các lỗ hổng và nâng cấp an ninh. Việc công
khai thuật toán cũng đảm bảo rằng các chuyên gia độc lập có thể đánh giá sự bảo mật của nó.

Tóm lại, mật mã hiện đại không chấp nhận quan điểm cần che giấu thuật toán mật mã vì nguyên tắc bảo
mật Kerckhoffs đã được chứng minh là an toàn hơn. Việc chú trọng vào bí mật của khóa hơn là sự bảo
mật của thuật toán mật mã đảm bảo rằng hệ thống mật mã có thể chịu được sự kiểm tra và đánh giá từ
cộng đồng mật mã học và không dễ bị tấn công khi thông tin về thuật toán bị tiết lộ.

Câu 2: Phân tích một số ưu điểm/nhược điểm trong nguyên lý của hệ mật mã khóa đối xứng (SKC) và
mật mã khóa công khai (PKC).
Hệ mật mã khóa đối xứng (Symmetric Key Cryptography - SKC) và mật mã khóa công khai (Public Key
Cryptography - PKC) là hai phương pháp quan trọng trong lĩnh vực mật mã. Dưới đây là phân tích về một
số ưu điểm và nhược điểm của cả hai nguyên lý này:

Ưu điểm của SKC:

Tốc độ xử lý cao: SKC thường được thực hiện bằng các thuật toán đơn giản và nhanh chóng, vì chỉ có
một khóa được sử dụng cho cả quá trình mã hóa và giải mã. Do đó, SKC thích hợp cho việc mã hóa và
giải mã hàng loạt thông tin nhanh chóng.

Hiệu suất cao: Vì chỉ có một khóa duy nhất được sử dụng trong SKC, kích thước khóa nhỏ hơn so với
PKC, dẫn đến việc tiết kiệm không gian lưu trữ và tài nguyên tính toán.

Độ tin cậy cao: SKC đã được sử dụng trong nhiều năm và đã được kiểm tra và đánh giá rộng rãi bởi cộng
đồng mật mã học. Do đó, có nhiều thuật toán SKC có độ tin cậy cao và kháng lại nhiều loại tấn công mật
mã phổ biến.

Nhược điểm của SKC:

Quản lý khóa phức tạp: Mỗi cặp người giao tiếp cần chia sẻ cùng một khóa bí mật, và việc quản lý các
khóa này có thể trở nên phức tạp đối với các hệ thống lớn với nhiều người dùng.

Kênh truyền an toàn: SKC yêu cầu một kênh truyền an toàn để chia sẻ khóa bí mật giữa người gửi và
người nhận. Nếu kênh truyền không an toàn, khóa có thể bị tấn công và dẫn đến việc lộ thông tin.

Ưu điểm của PKC:

Quản lý khóa dễ dàng: PKC sử dụng cặp khóa, gồm khóa công khai và khóa bí mật, và chỉ cần quản lý
khóa công khai. Khóa công khai có thể được chia sẻ công khai và không cần phải bảo mật, điều này giúp
quản lý khóa dễ dàng hơn.

Chứng thực và xác nhận danh tính: PKC cung cấp khả năng chứng thực và xác nhận danh tính thông qua
việc sử dụng chữ ký điện tử. Điều này rất hữu ích trong việc xác thực người dùng và đảm bảo tính toàn
vẹn của dữ liệu.

Bảo mật truyền thông: PKC giải quyết vấn đề về kênh truyền an toàn trong SKC bằng cách sử dụng các
khóa công khai. Người gửi có thể mã hóa thông điệp bằng khóa công khai của người nhận, và chỉ người
nhận có thể giải mã thông điệp bằng khóa bí mật tương ứng.

Nhược điểm của PKC:

Tốn tài nguyên tính toán: PKC sử dụng các thuật toán phức tạp hơn và đòi hỏi tài nguyên tính toán cao
hơn so với SKC. Việc mã hóa và giải mã trong PKC thường chậm hơn và tốn nhiều thời gian hơn.
Dễ bị tấn công brute force: So với SKC, PKC có độ dài khóa dài hơn và dễ bị tấn công brute force (tấn
công bằng cách thử tất cả các khóa có thể). Điều này đòi hỏi sử dụng khóa dài hơn để đảm bảo độ an
toàn.

Tóm lại, SKC và PKC đều có ưu điểm và nhược điểm riêng. Tùy thuộc vào yêu cầu cụ thể và môi trường
sử dụng, một phương pháp mật mã có thể được chọn để đáp ứng các yêu cầu an ninh và hiệu suất tối
ưu.

Câu 3: Tính hỗn loạn (confusion) và tính khuếch tán (diffusion) là gì? Nguyên lý để tạo ra chúng.

Tính hỗn loạn (confusion) và tính khuếch tán (diffusion) là hai khái niệm quan trọng trong lĩnh vực mật
mã. Đây là hai nguyên tắc cơ bản trong thiết kế thuật toán mật mã để đảm bảo tính an toàn và khả năng
chống lại các phương pháp tấn công.

Tính hỗn loạn (confusion):

Tính hỗn loạn liên quan đến việc tạo ra sự phụ thuộc không rõ ràng giữa khóa và đầu vào để làm cho các
liên kết giữa chúng trở nên phức tạp và khó khăn để bị tấn công. Điều này đảm bảo rằng một sự thay đổi
nhỏ trong đầu vào hoặc khóa sẽ gây ra một sự thay đổi lớn trong kết quả đầu ra.

Nguyên lý để tạo ra tính hỗn loạn là sử dụng phép toán phi tuyến và phi đảo để tạo ra sự rối loạn trong
quá trình mã hóa. Các phép toán như XOR, phép trộn (substitution), và phép trộn bit (bit permutation)
được sử dụng để làm cho mối quan hệ giữa khóa và đầu vào trở nên phức tạp và không dễ dàng bị phân
tích ngược.

Tính khuếch tán (diffusion):

Tính khuếch tán liên quan đến việc đảm bảo rằng mỗi bit đầu vào của mật mã sẽ ảnh hưởng đến nhiều
bit đầu ra, tạo ra sự phân tán thông tin trong quá trình mã hóa. Điều này làm cho bất kỳ sự thay đổi nhỏ
nào trong đầu vào đều có tác động rộng rãi đến các bit đầu ra.

Nguyên lý để tạo ra tính khuếch tán là sử dụng các phép toán trộn và hoán vị (permutation) để làm cho
thông tin lan truyền và lan rộng trong quá trình mã hóa. Việc sử dụng các phép toán như phép trộn bit,
hoán vị bit (bit permutation), hoán vị vị trí (permutation), và hoán vị trường hợp (substitution-
permutation) đảm bảo rằng các bit đầu vào sẽ được lan truyền đều và phân tán trong toàn bộ quá trình
mã hóa.

Tổ hợp của tính hỗn loạn và tính khuếch tán trong một thuật toán mật mã đóng vai trò quan trọng trong
việc tạo ra sự phức tạp và khó khăn cho bất kỳ sự tấn công mật mã nào. Kết hợp cả hai nguyên tắc này
giúp đảm bảo tính an toàn và độ tin cậy của thuật toán mật mã.
Câu 4: Hãy vẽ sơ đồ mã hóa/giải mã cho các chế độ mật mã khối ECB, CBC, CFB, CTR.

Câu 5: Hãy nêu nguyên lý xây dựng hệ mật mã khóa đối xứng PKC

Hệ mật mã khóa công khai là một loại mật mã trong đó cặp khóa bao gồm khóa công khai và khóa bí mật
được sử dụng. Khóa công khai được công khai và sử dụng để mã hóa dữ liệu, trong khi khóa bí mật chỉ
dành riêng cho chủ sở hữu và được sử dụng để giải mã dữ liệu đã được mã hóa.

Nguyên lý xây dựng hệ mật mã khóa công khai thường dựa trên một trong hai vấn đề toán học phức
tạp:

Vấn đề số nguyên tố:

Chọn hai số nguyên tố lớn ngẫu nhiên p và q.

Tính n = p * q, được gọi là khóa công khai.

Tính hàm Euler (φ(n)) của n: φ(n) = (p - 1)(q - 1).

Chọn một số nguyên e thỏa mãn 1 < e < φ(n) và gcd(e, φ(n)) = 1, e là khóa công khai.

Tìm một số d thỏa mãn (d * e) % φ(n) = 1, d là khóa bí mật.

Vấn đề logarith rời rạc:

Chọn một đường cong elliptic E trên trường hữu hạn.

Chọn một điểm P thuộc E với cấp (order) n.

Chọn một số nguyên k ngẫu nhiên, k là khóa bí mật.

Tính khóa công khai là Q = kP.

Dùng k và Q để mã hóa dữ liệu và dùng P và khóa bí mật để giải mã.

Cả hai nguyên lý trên dựa trên việc tìm hiểu các vấn đề toán học khó nhằn, như tìm hiểu các số nguyên
tố lớn hoặc logarith rời rạc trên đường cong elliptic. Sự phức tạp của các vấn đề này làm cho việc tính
toán ngược trở lại hoặc tìm ra khóa bí mật từ khóa công khai trở nên khó khăn, đảm bảo tính bảo mật
của hệ mật mã khóa công khai.

Câu 6: Tìm hiểu thuật toán GCD mở rộng tìm nghịch đảo theo mô-đun đồng dư.

Thuật toán GCD mở rộng (Extended Euclidean Algorithm) được sử dụng để tìm nghịch đảo của một số
modulo nào đó. Nghịch đảo modulo của một số a trong mô-đun m là số b sao cho (a * b) % m = 1. Thuật
toán GCD mở rộng cung cấp một phương pháp hiệu quả để tìm nghịch đảo modulo. Dưới đây là mô tả
của thuật toán GCD mở rộng:

Đầu vào: Số a và mô-đun m.

Khởi tạo ba biến:

Biến s1 = 1, s2 = 0 (đại diện cho hệ số của a và m, tương ứng).

Biến t1 = 0, t2 = 1 (đại diện cho hệ số của nghịch đảo và m, tương ứng).

Biến r1 = a, r2 = m (đại diện cho hai số ban đầu).

Lặp cho đến khi r2 = 0:

Tính thương của r1 cho r2: q = r1 // r2 (phép chia lấy phần nguyên).

Cập nhật biến: r = r1 - q * r2, s = s1 - q * s2, t = t1 - q * t2.

Cập nhật các biến: r1 = r2, r2 = r, s1 = s2, s2 = s, t1 = t2, t2 = t.

Nếu r1 = 1, tức là a và m là hai số nguyên tố cùng nhau, nghịch đảo của a modulo m là s1 (hoặc s2, với
điều kiện là s1 không âm).

Nếu r1 ≠ 1, tức là a và m không là hai số nguyên tố cùng nhau, không tồn tại nghịch đảo của a modulo m.

Trả về nghịch đảo của a modulo m, nếu tồn tại.

Thuật toán GCD mở rộng sử dụng thuật toán Euclid thông thường để tìm ước số chung lớn nhất (GCD)
và cập nhật các hệ số tương ứng. Quá trình này tiếp tục cho đến khi ước số chung lớn nhất là 1, điều này
chỉ ra rằng a và m là hai số nguyên tố cùng nhau. Kết quả là một cặp hệ số (s, t) cung cấp nghịch đảo của
a modulo m.

Câu 7: Tìm hiểu giải thuật nhân nhanh lũy thừa theo mô-đun đồng dư

Giải thuật nhân nhanh lũy thừa theo mô-đun đồng dư (Fast Modular Exponentiation) là một phương
pháp hiệu quả để tính toán lũy thừa của một số nguyên modulo một số nguyên nào đó. Phương pháp
này giảm thiểu số lượng phép nhân và chia lấy phần dư trong quá trình tính toán. Dưới đây là mô tả của
giải thuật nhân nhanh lũy thừa:
Đầu vào: Số cần tính lũy thừa gọi là a, số mũ gọi là b và mô-đun gọi là m.

Khởi tạo biến kết quả res = 1.

Chuyển đổi số mũ b sang dạng nhị phân.

Duyệt qua từng bit của số mũ từ trái sang phải:

Nếu bit hiện tại là 1, cập nhật kết quả: res = (res * a) % m.

Thực hiện phép nhân: a = (a * a) % m.

Kết quả cuối cùng là res.

Giải thuật nhân nhanh lũy thừa hoạt động dựa trên tính chất căn bậc hai của số mũ. Bằng cách chuyển
đổi số mũ sang dạng nhị phân, ta có thể tính toán lũy thừa bằng cách nhân liên tiếp các bình phương của
a và thực hiện phép nhân với a khi bit tương ứng là 1. Việc sử dụng phép chia lấy phần dư (modulo) sau
mỗi phép nhân giúp duy trì giá trị nhỏ hơn và tránh tràn số (overflow).

Ví dụ:

Giả sử chúng ta muốn tính toán a^b % m với a = 2, b = 13 và m = 7.

Chuyển đổi số mũ b = 13 thành dạng nhị phân: 1101.

Duyệt qua các bit từ trái sang phải:

Bit 1: res = (res * a) % m = (1 * 2) % 7 = 2.

Bit 0: không có phép nhân.

Bit 1: res = (res * a) % m = (2 * 2) % 7 = 4.

Bit 1: res = (res * a) % m = (4 * 2) % 7 = 1.

Kết quả cuối cùng là res = 1, tức là 2^13 % 7 = 1.


Giải thuật nhân nhanh lũy thừa giúp tối ưu hóa quá trình tính toán lũy thừa modulo và đặc biệt hữu ích
trong các ứng dụng liên quan đến mật mã, bảo mật và tính toán số lớn.

Câu 8: TÌm hiểu thuật toán RSA và xây dựng căp khóa bất đối xứng (KU, KR)

Dưới đây là mô tả của thuật toán RSA và cách xây dựng cặp khóa bất đối xứng (KU, KR):

Xây dựng khóa:

Bước 1: Chọn hai số nguyên tố lớn ngẫu nhiên p và q.

Bước 2: Tính n = p * q, được gọi là module của khóa công khai và khóa bí mật.

Bước 3: Tính hàm Euler (φ(n)) của n: φ(n) = (p - 1)(q - 1).

Bước 4: Chọn một số nguyên e thỏa mãn 1 < e < φ(n) và gcd(e, φ(n)) = 1. Số e được chọn là khóa công
khai.

Bước 5: Tìm một số d thỏa mãn (d * e) % φ(n) = 1. Số d được chọn là khóa bí mật.

Mã hóa và giải mã:

Mã hóa: Để mã hóa một tin nhắn, ta sử dụng khóa công khai (e, n). Mỗi ký tự trong tin nhắn được
chuyển đổi thành một số nguyên tương ứng theo bảng mã ASCII. Mã hóa của mỗi ký tự được tính bằng
cách sử dụng công thức: c = (m^e) % n, trong đó m là số nguyên tương ứng với ký tự, và c là mã hóa của
ký tự đó.

Giải mã: Để giải mã một mã hóa, ta sử dụng khóa bí mật (d, n). Mỗi mã hóa của ký tự được giải mã bằng
cách sử dụng công thức: m = (c^d) % n, trong đó c là mã hóa của ký tự, và m là số nguyên tương ứng với
ký tự đã được giải mã.

Cặp khóa bất đối xứng (KU, KR) trong thuật toán RSA gồm:

KU = (e, n): Khóa công khai, được sử dụng để mã hóa thông điệp.

KR = (d, n): Khóa bí mật, được sử dụng để giải mã thông điệp.

Khóa công khai (e, n) có thể được chia sẻ rộng rãi và công khai cho mọi người. Trong khi đó, khóa bí mật
(d, n) được bảo mật và chỉ được biết đến bởi người nhận tin nhắn.
Quá trình mã hóa và giải mã trong thuật toán RSA dựa trên tính chất số học của lũy thừa modulo và khó
khăn trong việc phân tích nguyên tố của số n lớn. Bằng cách chọn p và q là hai số nguyên tố lớn, việc
phân tích n thành các thừa số nguyên tố trở nên khó khăn. Do đó, thuật toán RSA cung cấp tính bảo mật
cao và được sử dụng rộng rãi trong các ứng dụng mật mã và bảo mật.

Câu 9: Trong pha thiết lập tham số thuật toán RSA, tại sao ta phải chon 2 số nguyên tố p và q có độ lớn
xấp xỉ nhau (cùng độ dài)?

Tránh hiện tượng "Factoring Attack": Một trong những tấn công mạnh nhất đối với hệ thống RSA là tấn
công phân tích nguyên tố, trong đó kẻ tấn công cố gắng phân tích số nguyên tố n thành các thừa số
nguyên tố p và q. Nếu p và q có độ dài xấp xỉ nhau, tấn công phân tích nguyên tố trở nên khó khăn hơn,
vì sự khác biệt độ lớn giữa hai số nguyên tố sẽ làm cho quá trình phân tích trở nên phức tạp hơn.

Đảm bảo tính bảo mật trước tấn công "Fermat's Factorization Method": Tấn công phân tích nguyên tố
bằng phương pháp Fermat (Fermat's Factorization Method) được sử dụng để tìm các thừa số nguyên tố
của một số n lớn. Kỹ thuật này hiệu quả hơn khi p và q có độ lớn gần nhau, do đó việc chọn p và q có độ
dài xấp xỉ nhau giúp ngăn chặn tấn công này.

Đảm bảo tính đồng đều của quá trình tính toán: Khi thực hiện các phép tính lũy thừa và tính toán
modulo trong thuật toán RSA, sự đồng đều về độ dài của p và q là quan trọng. Nếu p và q có độ lớn khác
biệt quá nhiều, việc tính toán sẽ không cân đối và có thể tạo ra lỗ hổng bảo mật.

Vì những lý do trên, việc chọn hai số nguyên tố p và q có độ lớn xấp xỉ nhau (cùng độ dài) trong pha thiết
lập tham số của thuật toán RSA là quan trọng để đảm bảo tính bảo mật và hiệu quả của hệ thống mật
mã RSA.

Câu 10: Cho p = 11, q = 17 trong hệ RSA. Chọn một số ngẫu nhiên M trong khoảng từ 5-20. Thực hiện các
công việc sau:

a) Xây dựng cặp khóa bất đối xứng (KU, KR) dựa trên thuật toán GCD mở rộng.
b) Tính bản mã của bản tin M
c) Nếu sử dụng hệ này làm chữ ký, xác định chữ ký cho M nói trên.
d) Nếu muốn gửi bản tin M vừa có tính xác thực, vừa có tính mật cần thực hiện như thế nào (Vẽ sơ
đồ minh họa)

Để xây dựng cặp khóa bất đối xứng (KU, KR) dựa trên thuật toán GCD mở rộng với p = 11 và q = 17, ta
thực hiện các bước sau:
Tính n = p * q = 11 * 17 = 187.

Tính φ(n) = (p - 1) * (q - 1) = 10 * 16 = 160.

Chọn một số nguyên e thỏa mãn 1 < e < φ(n) và gcd(e, φ(n)) = 1. Trong trường hợp này, chúng ta chọn e
= 7.

Tìm số nguyên d thỏa mãn (d * e) % φ(n) = 1. Để tính d, ta có thể sử dụng thuật toán GCD mở rộng.

Giải thuật GCD mở rộng:

Bước 1: Khởi tạo a = φ(n) = 160, b = e = 7, x1 = 0, x2 = 1, y1 = 1, y2 = 0.

Bước 2: Lặp cho đến khi b = 0:

Tính q = a // b (phép chia lấy phần nguyên).

Cập nhật (a, b) = (b, a - q * b).

Cập nhật (x1, x2) = (x2, x1 - q * x2).

Cập nhật (y1, y2) = (y2, y1 - q * y2).

Bước 3: Kết quả là d = y1.

Áp dụng thuật toán GCD mở rộng với a = 160 và b = 7:

Bước 1: a = 160, b = 7, x1 = 0, x2 = 1, y1 = 1, y2 = 0.

Bước 2:

Lần lặp 1: q = 160 // 7 = 22, (a, b) = (7, 160 - 22 * 7) = (7, 6), (x1, x2) = (1, 0 - 22 * 1) = (-22, 1), (y1, y2) =
(0, 1 - 22 * 0) = (0, 1).

Lần lặp 2: q = 7 // 6 = 1, (a, b) = (6, 7 - 1 * 6) = (6, 1), (x1, x2) = (-22, 1 - 1 * -22) = (-22, 23), (y1, y2) = (0, 1
- 1 * 0) = (0, 1).

Lần lặp 3: q = 6 // 1 = 6, (a, b) = (1, 6 - 6 * 1) = (1, 0), (x1, x2) = (23, -22 - 6 * 23) = (23, -155), (y1, y2) = (1,
0 - 6 * 1) = (1, -6).

Bước 3: Kết quả là d = y1 = 1.

Vậy cặp khóa bất đối xứng (KU, KR) là (7, 187) cho khóa công khai và (1, 187) cho khóa bí mật.

Tiếp theo, để mã hóa bản tin M, ta sử dụng khóa công khai (KU) và áp dụng công thức mã hóa: c = (M^e)
% n.
Ví dụ, cho M = 10, ta tính:

c = (10^7) % 187 = 70.

Chữ ký số cho M được xác định bằng cách sử dụng khóa bí mật (KR) và công thức: s = (M^d) % n.

Với M = 10, ta tính:

s = (10^1) % 187 = 10.

Để gửi bản tin M vừa có tính xác thực, vừa có tính mật, ta có thể sử dụng chữ ký số. Sơ đồ minh họa cho
quá trình này như sau:

Câu 11: Biết rằng hàm φ (n) có nhân tính, có nghĩa là φ (m*n) = φ (m) * φ (n) với mọi m và n nguyên mà
gcd(m,n)=1. Hãy chứng minh rằng φ (n)= (p-1)* (q-1) khi n= p*q với p, q là số nguyên tố

Để chứng minh rằng (n) = (p - 1) * (q - 1) khi n = p * q với p, q là số nguyên tố, ta sẽ sử dụng tính chất của
hàm (n) có nhân tính.

Giả sử p và q là hai số nguyên tố khác nhau, và n = p * q.

Đầu tiên, chúng ta xác minh rằng gcd(p, q) = 1. Điều này suy ra từ việc p và q là hai số nguyên tố khác
nhau.

Tiếp theo, chúng ta xem xét một số nguyên mà gcd(m, n) = 1, tức là m và n là nguyên tố cùng nhau. Ta
cần chứng minh rằng (m * n) = (m) * (n).

Theo định nghĩa, (m * n) = m^(n) mod (n), và (m) = m^(φ(n)) mod (n), với φ(n) là hàm Euler của n.

Vì p và q là hai số nguyên tố khác nhau, nên φ(n) = φ(p * q) = φ(p) * φ(q) = (p - 1) * (q - 1). Đây là kết quả
của định lý Euler.

Áp dụng tính chất của hàm (n) có nhân tính, ta có:

(m * n) = m^(n) mod (n) = m^(p * q) mod (p * q)


(m) = m^(φ(n)) mod (n) = m^((p - 1) * (q - 1)) mod (p * q)

Để chứng minh rằng (m * n) = (m) * (n), ta cần chứng minh rằng m^(p * q) mod (p * q) = m^((p - 1) * (q -
1)) mod (p * q).

Ta sẽ chứng minh bằng cách chứng minh rằng m^(p * q) ≡ m^((p - 1) * (q - 1)) (mod p) và m^(p * q) ≡
m^((p - 1) * (q - 1)) (mod q).

Xét mod p:

Theo Định lý Fermat nhỏ, với a là một số nguyên không chia hết cho p, ta có a^(p - 1) ≡ 1 (mod p).

Áp dụng định lý Fermat nhỏ cho m, ta có m^(p - 1) ≡ 1 (mod p).

Vì gcd(m, p) = 1 (do m và p là cặp số nguyên tố cùng nhau), ta có thể nhân cả hai vế của đẳng thức trên
với m để được:

m^(p - 1) * m ≡ 1 * m (mod p)

m^p ≡ m (mod p)

Tương tự, áp dụng định lý Fermat nhỏ cho m và q, ta có:

m^q ≡ m (mod q)

Như vậy, m^(p * q) ≡ m^((p - 1) * (q - 1)) (mod p) và m^(p * q) ≡ m^((p - 1) * (q - 1)) (mod q).

Vì p và q là các số nguyên tố khác nhau, theo định lý Hồi quy nhỏ (Chinese Remainder Theorem), ta có:

m^(p * q) ≡ m^((p - 1) * (q - 1)) (mod p * q)

Do đó, ta có (m * n) = (m) * (n), và với n = p * q, ta có (n) = (p - 1) * (q - 1).

Vậy, chúng ta đã chứng minh rằng (n) = (p - 1) * (q - 1) khi n = p * q với p, q là số nguyên tố.

Câu 12: Chứng tỏ rằng thuật toán RSA vẫn đúng, nghĩa là (Xe)d=X (mod n) ngay cả khi gcd(X,n)≠1
Để chứng minh rằng thuật toán RSA vẫn đúng, tức là (X^e) ≡ X (mod n) ngay cả khi gcd(X, n) ≠ 1, ta sẽ
xem xét hai trường hợp: gcd(X, n) = 1 và gcd(X, n) ≠ 1.

Trường hợp 1: gcd(X, n) = 1

Trong trường hợp này, X và n là nguyên tố cùng nhau, và theo định lý Euler, ta có X^(φ(n)) ≡ 1 (mod n),
trong đó φ(n) là hàm Euler của n.

Áp dụng khóa công khai (e, n) để mã hóa X, ta có X^e ≡ X^(k * φ(n) + 1) ≡ (X^(φ(n)))^k * X ≡ 1^k * X ≡ X
(mod n).

Do đó, trong trường hợp gcd(X, n) = 1, thuật toán RSA vẫn đúng.

Trường hợp 2: gcd(X, n) ≠ 1

Trong trường hợp này, X và n không phải là các số nguyên tố cùng nhau. Tuy nhiên, chúng ta vẫn có thể
chứng minh rằng thuật toán RSA vẫn đúng.

Xét p là một ước số nguyên tố của n sao cho p|X, tức là p chia hết cho X. Khi đó, X ≡ 0 (mod p) và X ≡ X
(mod q), với q = n/p.

Áp dụng khóa công khai (e, n) để mã hóa X, ta có X^e ≡ 0^e ≡ 0 (mod p) và X^e ≡ X (mod q).

Sử dụng định lý Hồi quy nhỏ (Chinese Remainder Theorem), ta có hệ thức:

X^e ≡ X (mod n)

Vậy, ngay cả khi gcd(X, n) ≠ 1, thuật toán RSA vẫn đúng và cho ra kết quả X^e ≡ X (mod n).

Tổng kết, thuật toán RSA vẫn đúng, nghĩa là (X^e) ≡ X (mod n), ngay cả khi gcd(X, n) ≠ 1.

Câu 13: Hàm băm là gì? Hãy nêu các yêu cầu cần thiết khi xây dựng một hàm băm

Hàm băm (hash function) là một phép toán mà nó chuyển đổi dữ liệu đầu vào (thường là một chuỗi dữ
liệu có độ dài không đổi) thành một giá trị đầu ra duy nhất, gọi là băm (hash). Mục đích chính của hàm
băm là tạo ra một tóm tắt (digest) duy nhất của dữ liệu đầu vào, giúp xác định và định danh dữ liệu một
cách nhanh chóng và hiệu quả.

Các yêu cầu cần thiết khi xây dựng một hàm băm bao gồm:

Độc lập ngẫu nhiên (pre-image resistance): Hàm băm nên có khả năng chống lại việc tìm ra dữ liệu đầu
vào ban đầu (pre-image) từ giá trị băm. Nghĩa là, không thể tìm ra dữ liệu gốc từ một giá trị băm đã biết.

Đụng độ (collision resistance): Hàm băm nên có khả năng chống lại việc tìm ra hai dữ liệu khác nhau
nhưng có cùng giá trị băm (đụng độ). Nghĩa là, rất khó để tìm ra hai dữ liệu khác nhau mà cho ra cùng
một giá trị băm.

Tính đẳng cấu (computational efficiency): Hàm băm nên được tính toán một cách hiệu quả và nhanh
chóng với dữ liệu đầu vào bất kỳ. Quá trình tính băm không nên tốn quá nhiều thời gian và tài nguyên
tính toán.

Phân phối đều (avalanche effect): Một thay đổi nhỏ trong dữ liệu đầu vào phải tạo ra sự thay đổi lớn và
ngẫu nhiên trong giá trị băm. Điều này đảm bảo rằng một thay đổi nhỏ trong dữ liệu sẽ ảnh hưởng đến
toàn bộ giá trị băm, tránh tình trạng dữ liệu tương tự cho ra giá trị băm tương tự.

Bảo mật (security): Hàm băm nên đảm bảo tính bảo mật, tức là khó khăn để tìm ra dữ liệu ban đầu hoặc
tạo ra giá trị băm giả mạo.

Các yêu cầu trên đảm bảo tính toàn vẹn của dữ liệu và định danh dữ liệu một cách hiệu quả trong các
ứng dụng như bảo mật thông tin, xác thực, và kiểm tra tính toàn vẹn dữ liệu.

Câu 14: Hãy chỉ ra ít nhất 3 ứng dụng của hàm băm trong thực tế.

Có nhiều ứng dụng của hàm băm trong thực tế. Dưới đây là ba ứng dụng phổ biến của hàm băm:

Xác thực mật khẩu: Hàm băm được sử dụng để lưu trữ mật khẩu một cách an toàn. Thay vì lưu trữ mật
khẩu gốc, ta lưu trữ giá trị băm của mật khẩu. Khi người dùng nhập mật khẩu, hệ thống sẽ tính giá trị
băm của mật khẩu đó và so sánh với giá trị băm đã lưu trữ. Điều này giúp ngăn chặn việc rò rỉ mật khẩu
trong trường hợp dữ liệu bị xâm nhập.
Xác thực tệp dữ liệu: Hàm băm được sử dụng để xác minh tính toàn vẹn của tệp dữ liệu. Một giá trị băm
(hash) của tệp được tính toán và gắn vào tệp dữ liệu. Khi tệp được truyền đi hoặc lưu trữ, giá trị băm
này được sử dụng để kiểm tra xem tệp có bị thay đổi hay không. Nếu giá trị băm tính toán của tệp sau
khi nhận được khác với giá trị băm ban đầu, điều đó cho thấy tệp đã bị sửa đổi.

Xác thực thông điệp: Hàm băm được sử dụng để xác thực tính toàn vẹn và nguồn gốc của thông điệp.
Khi gửi thông điệp, một giá trị băm (hash) của nội dung thông điệp được tính toán và ký vào thông điệp.
Người nhận có thể sử dụng khóa công khai của người gửi để xác minh tính toàn vẹn của thông điệp bằng
cách so sánh giá trị băm tính toán với giá trị băm đã ký. Nếu hai giá trị băm khớp nhau, điều đó cho thấy
thông điệp không bị thay đổi trong quá trình truyền.

Các ứng dụng khác của hàm băm bao gồm xác thực chứng chỉ số, xác thực danh tính, kiểm tra tính toàn
vẹn của dữ liệu trong hệ thống tệp phân tán, và tạo chữ ký số, để chỉ ra một số.

Câu 15: Phân tích sự khác biệt giữa chữ ký truyền thống và chữ ký điện tử.

Chữ ký truyền thống và chữ ký điện tử là hai phương pháp xác thực và xác nhận tính toàn vẹn của thông
tin, nhưng có sự khác biệt quan trọng về cách thức và ứng dụng. Dưới đây là phân tích sự khác biệt giữa
chữ ký truyền thống và chữ ký điện tử:

Đặc điểm:

Chữ ký truyền thống: Là hình thức chữ ký được thực hiện trên giấy hoặc bề mặt vật lý bằng việc viết tay
và thường đi kèm với tên, chữ ký và ngày tháng.

Chữ ký điện tử: Là phiên bản điện tử của chữ ký, được tạo ra và xác thực bằng các thuật toán và công
nghệ mã hóa điện tử.

Phương pháp xác thực:

Chữ ký truyền thống: Dựa trên việc so sánh chữ ký thật với chữ ký được lưu trữ hoặc xác minh bằng
cách so sánh với chữ ký mẫu đã được xác nhận trước đó.

Chữ ký điện tử: Dựa trên việc sử dụng các khóa công khai và riêng tư để tạo ra và xác thực chữ ký. Chữ
ký điện tử được tạo ra bằng cách mã hóa số liệu bằng khóa riêng tư, và sau đó có thể được xác minh
bằng cách giải mã bằng khóa công khai tương ứng.

Độ tin cậy:
Chữ ký truyền thống: Độ tin cậy của chữ ký truyền thống phụ thuộc vào kiểm soát bảo mật và an ninh
của vật chứa chữ ký. Chữ ký truyền thống có thể bị giả mạo hoặc thay đổi một cách dễ dàng nếu không
có các biện pháp bảo vệ phù hợp.

Chữ ký điện tử: Với sử dụng các thuật toán và công nghệ mã hóa điện tử, chữ ký điện tử được xem là có
độ tin cậy cao hơn. Các thuật toán mã hóa và hệ thống khóa công khai/riêng tư giúp đảm bảo tính toàn
vẹn và xác thực của chữ ký điện tử.

Ứng dụng:

Chữ ký truyền thống: Thường được sử dụng trong các tài liệu vật lý như hợp đồng, văn bản pháp lý, thư
từ, hóa đơn và các tài liệu liên quan đến thế chấp và giao dịch tài chính.

Chữ ký điện tử: Thường được sử dụng trong các giao dịch điện tử, email, tài liệu điện tử, chứng chỉ số,
giao dịch tài chính trực tuyến và các ứng dụng liên quan đến an ninh thông tin và xác thực trực tuyến.

Tóm lại, chữ ký truyền thống và chữ ký điện tử đều có vai trò quan trọng trong xác thực và xác nhận tính
toàn vẹn của thông tin. Tuy nhiên, chữ ký điện tử sử dụng công nghệ mã hóa điện tử và có độ tin cậy cao
hơn trong việc ngăn chặn việc giả mạo và thay đổi thông tin.

Câu 16: Tác sao nói chữ ký điện tử có hai công dụng: vừa xác thực văn bản vừa xác thực danh tính ngƣời

Chữ ký điện tử có hai công dụng chính: xác thực văn bản và xác thực danh tính người ký. Dưới đây là lý
do vì sao chữ ký điện tử có khả năng thực hiện cả hai công dụng này:

Xác thực văn bản: Chữ ký điện tử được sử dụng để xác thực tính toàn vẹn và không bị thay đổi của văn
bản. Khi một văn bản được ký bằng chữ ký điện tử, một giá trị băm (hash) được tính toán từ nội dung
của văn bản. Sau đó, giá trị băm này được mã hóa bằng khóa riêng tư của người ký, tạo thành chữ ký
điện tử. Khi người nhận nhận được văn bản và chữ ký điện tử, họ có thể sử dụng khóa công khai của
người ký để giải mã chữ ký và tính toán lại giá trị băm từ nội dung của văn bản. Nếu hai giá trị băm khớp
nhau, điều đó cho thấy văn bản không bị thay đổi trong quá trình truyền.

Xác thực danh tính người ký: Chữ ký điện tử cũng được sử dụng để xác thực danh tính của người ký. Khi
một chữ ký điện tử được tạo ra, nó được liên kết với khóa công khai của người ký. Khóa công khai này
có thể được xác nhận là thuộc về một cá nhân hoặc tổ chức cụ thể thông qua quá trình xác minh và
chứng thực. Khi người nhận nhận được chữ ký điện tử, họ có thể sử dụng khóa công khai để xác minh
nguồn gốc của chữ ký. Nếu chữ ký được tạo bởi khóa riêng tư tương ứng với khóa công khai đã được
xác minh, điều đó cho thấy người ký là ai.
Như vậy, chữ ký điện tử kết hợp cả xác thực văn bản và xác thực danh tính người ký, giúp đảm bảo tính
toàn vẹn của thông tin và xác định nguồn gốc của thông tin.

Câu 17: Xây dựng sơ đồ ký số và xác nhận chữ ký dựa trên thuật toán RSA và hàm băm

Dưới đây là sơ đồ ký số và xác nhận chữ ký dựa trên thuật toán RSA và hàm băm:

Xây dựng sơ đồ ký số:

Bước 1: Tạo khóa RSA:

Chọn hai số nguyên tố lớn p và q.

Tính n = p * q.

Tính φ(n) = (p - 1) * (q - 1).

Chọn số nguyên e sao cho 1 < e < φ(n) và gcd(e, φ(n)) = 1.

Tìm số nguyên d sao cho (d * e) mod φ(n) = 1.

Cặp khóa công khai là (e, n).

Cặp khóa riêng tư là (d, n).

Bước 2: Ký số văn bản:

Bước 2.1: Hàm băm:

Áp dụng hàm băm (ví dụ: SHA-256) để tính giá trị băm (hash) của văn bản cần ký, kết quả là M.

Bước 2.2: Tạo chữ ký điện tử:

Tính toán chữ ký điện tử C = M^d mod n, với d là khóa riêng tư.

Chữ ký điện tử C là kết quả của quá trình ký số.

Xác nhận chữ ký:

Bước 1: Nhận văn bản đã được ký và chữ ký điện tử C.


Bước 2: Xác minh chữ ký:

Bước 2.1: Tính giá trị băm:

Áp dụng cùng hàm băm (ví dụ: SHA-256) để tính giá trị băm (hash) của văn bản đã nhận, kết quả là M'.

Bước 2.2: Giải mã chữ ký điện tử:

Tính toán M'' = C^e mod n, với e là khóa công khai.

Nếu M'' = M', chữ ký được xác nhận là hợp lệ.

Lưu ý rằng sơ đồ này chỉ mô tả cách thức hoạt động chung của việc ký số và xác nhận chữ ký dựa trên
thuật toán RSA và hàm băm. Trong thực tế, việc triển khai có thể bao gồm các bước bổ sung như
padding và kiểm tra thời gian thực hiện để tăng tính bảo mật và hiệu suất.

Câu 18: Tấn công phát lại là gì? Hãy đề xuất ít nhất 2 cách để chống lại tấn công phát lại.

Tấn công phát lại (replay attack) là một hình thức tấn công trong đó kẻ tấn công ghi lại và tái sử dụng
thông tin truyền qua mạng hoặc giao thức để thực hiện các hành động xâm nhập hoặc gian lận. Tấn công
phát lại có thể xảy ra khi thông tin truyền qua mạng không được bảo vệ đủ mạnh để ngăn chặn kẻ tấn
công ghi lại và tái sử dụng các gói tin hoặc yêu cầu trước đó.

Để chống lại tấn công phát lại, có thể thực hiện các biện pháp sau:

Sử dụng mã hóa và xác thực:

Sử dụng mã hóa: Sử dụng mã hóa dữ liệu trước khi truyền qua mạng để đảm bảo tính toàn vẹn và bảo
mật của thông tin. Khi thông tin được mã hóa, kẻ tấn công không thể đọc hoặc sử dụng lại nội dung gói
tin.

Sử dụng xác thực: Sử dụng cơ chế xác thực như chữ ký điện tử hoặc mã xác thực (authentication code)
để đảm bảo rằng thông tin gửi đi không bị thay đổi và chỉ có người đích thực mới có thể xác thực được.

Sử dụng phiên và hạn chế thời gian:


Sử dụng phiên (session): Tạo một phiên làm việc duy nhất giữa người gửi và người nhận trong quá trình
truyền thông tin. Mỗi phiên sẽ có một mã phiên (session ID) duy nhất, ngăn chặn kẻ tấn công sử dụng lại
thông tin từ phiên trước.

Hạn chế thời gian: Đặt thời gian hết hạn (timeout) cho thông tin gửi đi. Sau khi thời gian hết hạn, thông
tin trở nên vô hiệu và không thể sử dụng lại. Điều này giúp giảm khả năng kẻ tấn công sử dụng lại thông
tin đã ghi lại.

Lưu ý rằng việc chống lại tấn công phát lại đòi hỏi sự kết hợp của nhiều biện pháp bảo mật, bao gồm mã
hóa, xác thực và quản lý phiên để đảm bảo tính toàn vẹn và bảo mật của thông tin truyền qua mạng.

Câu 19: Tìm hiểu cơ chế xác lập và trao đổi khóa bí mật trong SKC

Xác lập khóa trước:

Trong phương pháp này, các bên tham gia trước đó đã trao đổi khóa trước khi truyền thông tin. Điều
này có thể được thực hiện thông qua giao tiếp trực tiếp hoặc sử dụng các kênh an toàn như giao thức
bảo mật SSL/TLS.

Hợp đồng khóa Diffie-Hellman (Diffie-Hellman Key Exchange):

Phương pháp Diffie-Hellman cho phép hai bên thiết lập một khóa chung dựa trên một khóa bí mật
chung trước đó và một phần khóa công khai.

Các bước thực hiện:

Bước 1: Chọn và công khai các thông số Diffie-Hellman, bao gồm một số nguyên tố lớn p và một số
nguyên g.

Bước 2: Mỗi bên chọn một số ngẫu nhiên là số bí mật của mình, ví dụ a cho bên A và b cho bên B.

Bước 3: Bên A tính A = g^a mod p và gửi A cho bên B. Bên B tính B = g^b mod p và gửi B cho bên A.

Bước 4: Bên A tính khóa chung K = B^a mod p. Bên B tính khóa chung K = A^b mod p. Bây giờ bên A và
bên B đều có cùng một khóa chung K.

Giao thức trao đổi khóa Quá trình ma trận khóa (Key Matrix Exchange Protocol):

Phương pháp này sử dụng một ma trận khóa chung giữa hai bên. Ban đầu, hai bên thống nhất về kích
thước và nội dung của ma trận khóa.

Các bước thực hiện:

Bước 1: Mỗi bên tạo ra một ma trận khóa ngẫu nhiên có kích thước và nội dung thống nhất.

Bước 2: Hai bên trao đổi ma trận khóa của mình.


Bước 3: Mỗi bên kết hợp ma trận khóa của mình với ma trận khóa nhận được từ bên kia. Kết quả là một
ma trận khóa chung.

Câu 20: Tìm hiểu về giao thức Needham-Schroeder (3 bước, 5 bước), chỉ ra các vấn đề bảo mật còn tồn
tại và đề xuất giải pháp khắc phục.

Giao thức Needham-Schroeder là một giao thức trao đổi khóa bí mật được sử dụng để xác thực và trao
đổi thông tin giữa các thực thể trong một mạng máy tính. Giao thức này có thể được triển khai theo hai
phiên bản: 3 bước và 5 bước.

Giao thức Needham-Schroeder 3 bước:

Bước 1: A gửi yêu cầu xác thực (nonce A) đến S.

Bước 2: S trả lời A bằng thông tin chứa (nonce A, nonce S, K_AB, {K_AB, B}KS).

Bước 3: A gửi thông tin chứa (nonce S) đến B.

Giao thức Needham-Schroeder 5 bước:

Bước 1: A gửi yêu cầu xác thực (nonce A) đến S.

Bước 2: S trả lời A bằng thông tin chứa (nonce A, nonce S, K_AB, {K_AB, A, B, nonce S}K_BS).

Bước 3: A gửi thông tin chứa (nonce S, B) đến B.

Bước 4: B trả lời A bằng thông tin chứa (nonce B, nonce S, K_AB, {K_AB, A, B, nonce S}K_BS).

Bước 5: A gửi thông tin chứa (nonce B) đến B.

Tuy nhiên, cả hai phiên bản của giao thức Needham-Schroeder đều mắc phải các vấn đề bảo mật sau:

Tấn công giả mạo (Impersonation attack): Một kẻ tấn công có thể giả mạo một thực thể và tham gia vào
giao thức với các thực thể khác.

Tấn công phát lại (Replay attack): Kẻ tấn công có thể ghi lại và tái sử dụng thông tin truyền qua mạng để
thực hiện các hành động xâm nhập hoặc gian lận.

Tấn công từ chối dịch vụ (Denial of Service attack): Kẻ tấn công có thể tạo ra các yêu cầu xác thực giả
mạo hoặc gửi nhiều yêu cầu xác thực đồng thời, gây quá tải hệ thống và làm ngắt kết nối giữa các thực
thể.
Để khắc phục các vấn đề bảo mật trên, có thể áp dụng các giải pháp sau:

Sử dụng chứng chỉ số (certificates): Sử dụng chứng chỉ số để xác thực danh tính của các thực thể và ngăn
chặn tấn công giả mạo.

Sử dụng bước tạo khóa phiên mới (Fresh key generation step): Thay vì sử dụng khóa bí mật cố định, tạo
khóa phiên mới cho mỗi phiên truyền thông để ngăn chặn tấn công phát lại.

Sử dụng giao thức truyền thông an toàn (Secure communication protocols): Sử dụng giao thức truyền
thông như SSL/TLS để bảo vệ thông tin truyền qua mạng, đảm bảo tính toàn vẹn, bảo mật và xác thực.

Sử dụng hàm băm an toàn (Secure hashing functions): Sử dụng hàm băm an toàn để kiểm tra tính toàn
vẹn của thông tin truyền và đảm bảo rằng thông điệp không bị thay đổi trong quá trình truyền.

Sử dụng giao thức bảo mật tiên tiến hơn: Có thể sử dụng các giao thức bảo mật như Kerberos, OAuth,
hoặc giao thức X.509 để đảm bảo tính bảo mật và xác thực trong việc trao đổi khóa bí mật.

Các giải pháp trên giúp cải thiện tính bảo mật của giao thức Needham-Schroeder và ngăn chặn các tấn
công từ chối dịch vụ, tấn công phát lại và tấn công giả mạo.

Câu 21: Tìm hiểu cơ chế sử dụng PKC để trao đổi khóa bí mật

Cơ chế sử dụng PKC (Public Key Cryptography) để trao đổi khóa bí mật là một phương pháp trong mật
mã học mà mỗi thực thể trong quá trình trao đổi sử dụng một cặp khóa bất đối xứng, gồm khóa công
khai (public key) và khóa bí mật (private key). Trong quá trình trao đổi, khóa công khai được chia sẻ và
sử dụng để mã hóa thông điệp, trong khi khóa bí mật chỉ được giữ bởi người nhận và được sử dụng để
giải mã thông điệp.

Quá trình trao đổi khóa bí mật sử dụng PKC có thể được thực hiện như sau:

Khởi tạo cặp khóa bất đối xứng: Mỗi thực thể tham gia quá trình trao đổi tạo ra cặp khóa bất đối xứng
gồm khóa công khai và khóa bí mật. Khóa công khai được chia sẻ với các thực thể khác trong mạng.
Yêu cầu trao đổi khóa: Một thực thể muốn trao đổi khóa bí mật với thực thể khác gửi yêu cầu tới thực
thể đó, chứa thông tin như khóa công khai của nó.

Tạo khóa chung: Thực thể nhận yêu cầu sử dụng khóa công khai của người gửi để mã hóa một khóa
chung. Khóa chung này được gửi lại cho thực thể yêu cầu.

Giải mã khóa chung: Thực thể yêu cầu sử dụng khóa bí mật của mình để giải mã khóa chung mà nó nhận
được từ thực thể khác.

Sử dụng khóa chung: Cả hai thực thể bây giờ đều có khóa chung và có thể sử dụng nó để mã hóa và giải
mã thông điệp bí mật.

Lợi ích chính của việc sử dụng PKC trong việc trao đổi khóa bí mật là sự thuận tiện và tính bảo mật cao.
Khóa bí mật không cần được chia sẻ qua kênh bảo mật, chỉ khóa công khai được chia sẻ mà không tiết lộ
khóa bí mật. Điều này giúp ngăn chặn tấn công nghe trộm và tấn công giả mạo trong quá trình trao đổi
khóa bí mật.

Tuy nhiên, việc sử dụng PKC cũng có một số thách thức và yêu cầu đặc biệt như quản lý khóa công khai,
đảm bảo tính toàn vẹn của khóa công khai và xác thực danh tính của thực thể sở hữu khóa công khai.

Câu 22: Tìm hiểu về giao thức thống nhất khóa Diffie-Healman

Giao thức thống nhất khóa Diffie-Hellman (Diffie-Hellman key exchange protocol) là một giao thức mật
mã được sử dụng để thiết lập một khóa bí mật chung giữa hai bên thông qua một kênh không an toàn.
Giao thức này đã được phát triển bởi Whitfield Diffie và Martin Hellman vào năm 1976 và được coi là
một trong những bước đột phá quan trọng trong lĩnh vực mật mã.

Giao thức Diffie-Hellman cho phép hai bên, gọi là Alice và Bob, tạo ra một khóa bí mật chung mà người
thứ ba, gọi là người nghe trộm (eavesdropper), không thể dễ dàng tìm hiểu được. Giao thức này dựa
trên việc tính toán phép mũ modular trong toán học.

Dưới đây là quy trình cơ bản của giao thức Diffie-Hellman:

Alice và Bob đồng ý chọn một số nguyên tố lớn chung p và một số nguyên g. Cả hai số này đều được
công khai.
Alice chọn một số ngẫu nhiên là a và tính toán A = g^a mod p. Alice gửi giá trị A cho Bob thông qua kênh
không an toàn.

Bob cũng chọn một số ngẫu nhiên là b và tính toán B = g^b mod p. Bob gửi giá trị B cho Alice thông qua
kênh không an toàn.

Alice tính toán khóa chung K = B^a mod p.

Bob tính toán khóa chung K = A^b mod p.

Kết quả là cả Alice và Bob sẽ có cùng một khóa chung K mà người nghe trộm không thể tính toán được
nếu họ chỉ biết A, B, g, và p. Mặc dù các giá trị A và B được truyền qua kênh không an toàn, người nghe
trộm sẽ gặp khó khăn trong việc tính toán khóa chung K nếu không biết giá trị a hoặc b.

Giao thức Diffie-Hellman không đảm bảo tính toàn vẹn và chống lại các cuộc tấn công như Man-in-the-
Middle (MITM). Do đó, nó thường được kết hợp với các thuật toán mật mã khác để cung cấp tính toàn
vẹn và xác thực dữ liệu.

Giao thức Diffie-Hellman đã được áp dụng rộng rãi trong việc thiết lập kết nối mật mã trong các hệ
thống mạng và giao thức bảo mật như TLS/SSL. Nó cũng được sử dụng trong việc trao đổi khóa mật mã
trong các ứng dụng mã hóa dữ liệu và truyền tin an toàn.

Câu 20: TÌm hiểu các khái niệm và thành phần trong một hệ thống xác thực. Tìm hiểu các kỹ thuật xác
thực phổ biến:

- Xác thực dựa trên mật khẩu


- Xác thực dựa trên kỹ thuật thách thức – đáp ứng
- Xác thực dựa trên kỹ thuật sinh trắc học
- Xác thực dựa trên địa điểm.

Lấy ví dụ minh họa trong thực tế và mô tả quá trình thực hiện các bước xác thực.

Trong một hệ thống xác thực, có các khái niệm và thành phần quan trọng để xác định và xác thực người
dùng. Dưới đây là các khái niệm và thành phần chính trong một hệ thống xác thực:
Người dùng (User): Là người sử dụng hệ thống hoặc dịch vụ cần được xác thực.

Định danh (Identity): Đại diện cho thông tin nhận dạng duy nhất của người dùng trong hệ thống, chẳng
hạn như tên đăng nhập, địa chỉ email, số điện thoại, v.v.

Phương thức xác thực (Authentication method): Là phương pháp được sử dụng để xác thực người dùng
và chứng minh rằng họ là chủ sở hữu của định danh.

Thẻ thông tin xác thực (Authentication credentials): Đại diện cho thông tin bí mật hoặc dữ liệu xác thực
được sử dụng để xác minh danh tính của người dùng, ví dụ như mật khẩu, mã PIN, chứng chỉ số, v.v.

Có nhiều kỹ thuật xác thực phổ biến được sử dụng trong các hệ thống thực tế. Dưới đây là một số ví dụ:

Xác thực dựa trên mật khẩu: Phương pháp này yêu cầu người dùng nhập một mật khẩu bí mật mà chỉ
người dùng biết để xác thực. Mật khẩu được so sánh với một phiên bản đã được mã hóa trước đó trong
cơ sở dữ liệu. Ví dụ: khi đăng nhập vào tài khoản email, người dùng cung cấp một định danh (địa chỉ
email) và mật khẩu.

Xác thực dựa trên kỹ thuật thách thức - đáp ứng: Phương pháp này yêu cầu người dùng cung cấp một
phản ứng hoặc phản hồi đúng đắn cho một thách thức hoặc câu hỏi được tạo ra bởi hệ thống. Ví dụ:
Một hệ thống ngân hàng có thể yêu cầu khách hàng cung cấp một mã OTP (One-Time Password) được
gửi đến điện thoại di động của họ để xác thực giao dịch.

Xác thực dựa trên kỹ thuật sinh trắc học: Phương pháp này sử dụng các đặc điểm sinh trắc học duy nhất
của người dùng, chẳng hạn như dấu vân tay, mống mắt, hoặc giọng nói, để xác thực. Ví dụ: Một điện
thoại di động có thể sử dụng quét vân tay để xác thực người dùng và mở khóa thiết bị.

Xác thực dựa trên địa điểm: Phương pháp này xác thực người dùng dựa trên vị trí vật lý của họ, thông
qua các công nghệ như hệ thống định vị toàn cầu (GPS) hoặc địa chỉ IP. Ví dụ: Một hệ thống ngân hàng
có thể chặn truy cập từ một quốc gia không được ủy quyền.

Quá trình thực hiện các bước xác thực có thể khác nhau tùy thuộc vào phương thức và công nghệ được
sử dụng. Tuy nhiên, một quá trình xác thực cơ bản thường bao gồm các bước sau:
Người dùng cung cấp thông tin đăng nhập hoặc định danh cho hệ thống.

Hệ thống xác thực thông tin đăng nhập hoặc định danh này và yêu cầu người dùng cung cấp các thông
tin xác thực bổ sung (ví dụ: mật khẩu, mã PIN, mã OTP).

Người dùng cung cấp thông tin xác thực bổ sung và hệ thống kiểm tra tính hợp lệ của thông tin này.

Nếu thông tin xác thực hợp lệ, hệ thống cho phép người dùng truy cập vào tài nguyên hoặc dịch vụ yêu
cầu.

Câu 21: Bài tập về tấn công mật khẩu.

Mật khẩu được tạo bởi các ký tự từ bảng chữ cái có kích thước 96. Giả thiết một kẻ tấn công có công cụ
cho phép thử 104 mật khẩu trong một giây. Người thế kế hệ thống muốn đảm bảo kẻ địch không thể có
cơ hội trên 50% trong tấn công vét cạn không gian mật khẩu trong vòng một năm. Hỏi độ dài mật khẩu
cần quy định tối thiểu là bao nhiêu?

Để tính toán độ dài mật khẩu cần quy định tối thiểu, ta có thể sử dụng khái niệm về entropy (độ mất cân
đối thông tin) để đo lường sức mạnh của mật khẩu.

Entropy của mật khẩu có thể tính bằng công thức sau:

Entropy = log2(N^L)

Trong đó:

N là số lượng ký tự có thể sử dụng trong mật khẩu (96 ký tự theo giả thiết).

L là độ dài mật khẩu.

Để đảm bảo kẻ tấn công không có cơ hội trên 50% trong vòng một năm (365 ngày), ta sẽ tính số lần tấn
công tối đa mà kẻ tấn công có thể thực hiện trong một năm và so sánh với số lượng mật khẩu có thể
thử.

Số lần tấn công tối đa trong một năm = Số mật khẩu tối đa có thể thử trong một giây * 60 giây/phút * 60
phút/giờ * 24 giờ/ngày * 365 ngày/năm
Sau đó, ta so sánh số lần tấn công tối đa với số lượng mật khẩu có thể thử:

Số lần tấn công tối đa trong một năm >= Số lượng mật khẩu có thể thử

Ta có thể giải phương trình này để tìm độ dài mật khẩu cần quy định tối thiểu. Trong trường hợp này, ta
sẽ giả định rằng kẻ tấn công có cơ hội chính xác 50% để đoán đúng mật khẩu sau khi thử hết không gian
mật khẩu.

Độ dài mật khẩu cần quy định tối thiểu = log(N, 2) * (Số lần tấn công tối đa trong một năm / 0.5)

Substituting the given values:

Độ dài mật khẩu cần quy định tối thiểu = log(96, 2) * (104 mật khẩu/giây * 60 giây/phút * 60 phút/giờ *
24 giờ/ngày * 365 ngày/năm / 0.5)

Sau khi tính toán, ta sẽ có kết quả độ dài mật khẩu cần quy định tối thiểu.

Câu 22: Tìm hiểu về giao thức keberos và ứng dụng trong hệ thống Active Directory.

Giao thức Kerberos là một giao thức xác thực mạng được phát triển bởi Massachusetts Institute of
Technology (MIT) và được sử dụng rộng rãi trong các hệ thống mạng để cung cấp xác thực an toàn và
quản lý phiên cho người dùng.

Giao thức Kerberos hoạt động dựa trên mô hình yêu cầu phản hồi (Request-Response), trong đó có sự
tham gia của ba thực thể chính: client (người dùng), server (máy chủ) và Kerberos authentication server
(AS) hoặc Key Distribution Center (KDC). Quá trình xác thực Kerberos bao gồm các bước sau:

Người dùng cố gắng truy cập vào một dịch vụ hoặc tài nguyên trên máy chủ.

Máy khách (client) tạo yêu cầu xác thực và gửi nó đến Kerberos AS.
Kerberos AS xác thực máy khách và cung cấp cho nó một "ticket trước" (TGT) và một khóa phiên được
gọi là "session key".

Máy khách tiếp tục gửi yêu cầu xác thực và TGT đến Kerberos Ticket Granting Server (TGS).

TGS xác minh TGT và cung cấp cho máy khách một "ticket dịch vụ" (service ticket) được mã hóa bằng
session key.

Máy khách gửi ticket dịch vụ cho máy chủ dịch vụ.

Máy chủ dịch vụ sử dụng session key để xác minh ticket dịch vụ và cho phép máy khách truy cập vào
dịch vụ hoặc tài nguyên.

Quá trình trên xảy ra mà không yêu cầu người dùng cung cấp lại mật khẩu trong mỗi yêu cầu truy cập
dịch vụ khác nhau. Thay vào đó, Kerberos sử dụng các ticket mã hóa để đại diện cho danh tính xác thực
của người dùng trong quá trình truy cập các dịch vụ.

Khi nói đến ứng dụng của giao thức Kerberos trong hệ thống Active Directory (AD), Active Directory là
một dịch vụ quản lý thư mục được sử dụng trong môi trường Windows. Nó cung cấp các tính năng như
quản lý người dùng, nhóm, chính sách an ninh, quản lý tài nguyên, và xác thực người dùng.

Trong hệ thống Active Directory, Kerberos được sử dụng như một giao thức xác thực chính. Khi người
dùng đăng nhập vào mạng hoặc truy cập các tài nguyên trong môi trường Active Directory, quá trình xác
thực Kerberos được thực hiện để cung cấp tính năng đơn sign-on (SSO) và xác thực an toàn.

Active Directory sử dụng cơ chế Kerberos để tạo và quản lý các ticket xác thực và session key để xác định
và bảo vệ danh tính người dùng. Kerberos cung cấp tính năng bảo mật mạnh mẽ trong việc xác thực và
truyền thông an toàn giữa người dùng và các dịch vụ trong môi trường Active Directory.

Câu 23: Tìm hiểu về giao thức PGP và ứng dụng bảo mật trong email
Giao thức PGP (Pretty Good Privacy) là một giao thức mã hóa mạnh mẽ được sử dụng để bảo vệ tính
bảo mật của email và truyền thông điện tử khác. PGP được phát triển bởi Philip Zimmermann vào những
năm 1990 và đã trở thành một tiêu chuẩn trong lĩnh vực bảo mật email.

PGP sử dụng mã hóa đối xứng và mã hóa khóa công khai để đảm bảo tính bảo mật và xác thực của
email. Quá trình mã hóa và giải mã trong PGP bao gồm các bước sau:

Khóa công khai (Public key): Mỗi người dùng trong hệ thống PGP có một cặp khóa, gồm khóa công khai
và khóa bí mật. Khóa công khai được chia sẻ với những người khác, trong khi khóa bí mật được giữ bí
mật.

Mã hóa: Khi người dùng muốn gửi một email bảo mật, họ sẽ sử dụng khóa công khai của người nhận để
mã hóa nội dung email. Quá trình mã hóa này đảm bảo rằng chỉ người nhận có thể giải mã email bằng
khóa bí mật của mình.

Ký số (Digital signature): Người gửi có thể sử dụng khóa bí mật của mình để tạo chữ ký số cho email.
Chữ ký số này xác minh tính toàn vẹn và xác thực của email. Người nhận sau đó có thể sử dụng khóa
công khai của người gửi để xác minh chữ ký số.

Giải mã: Người nhận sử dụng khóa bí mật của mình để giải mã nội dung email và đọc nó.

Ứng dụng bảo mật trong email sử dụng PGP giúp bảo vệ dữ liệu và thông tin cá nhân trong quá trình
truyền thông. Điều này có ý nghĩa quan trọng trong việc đảm bảo tính bảo mật và riêng tư của email
trong môi trường truyền thông mạng công cộng.

Các ứng dụng email thông thường hỗ trợ tích hợp PGP, cho phép người dùng tạo và quản lý cặp khóa,
mã hóa và giải mã email, và tạo chữ ký số. Một số ứng dụng phổ biến cho email bảo mật PGP bao gồm
GnuPG (GNU Privacy Guard), Symantec Encryption Desktop, Mailvelope, Enigmail (phụ thuộc vào Mozilla
Thunderbird), và ProtonMail.

Việc sử dụng PGP trong email cung cấp một lớp bảo mật mạnh mẽ, giúp ngăn chặn việc đọc trộm, thay
đổi hoặc giả mạo nội dung email. Nó cung cấp khả năng xác thực người gửi và đảm bảo tính toàn vẹn
của email, giúp người dùng truyền thông điện tử một cách an toàn và bảo mật hơn.
Câu 24: Tìm hiểu về giao thức SSL/TLS và ứng dụng để bảo mật cho dịch vụ Web.

Giao thức SSL (Secure Sockets Layer) và TLS (Transport Layer Security) là các giao thức mật mã hóa được
sử dụng để bảo vệ tính bảo mật và quyền riêng tư trong truyền thông qua mạng. SSL đã được phát triển
ban đầu bởi Netscape và sau đó được tiếp tục phát triển thành TLS, phiên bản tiếp theo.

Giao thức SSL/TLS hoạt động ở tầng Transport Layer (tầng 4) trong mô hình OSI. Nó cung cấp một kênh
bảo mật và mật mã hóa giữa máy khách và máy chủ, cho phép truyền thông an toàn qua mạng công
cộng như Internet.

Quá trình hoạt động của SSL/TLS bao gồm các bước sau:

Giao tiếp bắt đầu: Máy khách gửi yêu cầu kết nối bảo mật tới máy chủ và yêu cầu một phiên SSL/TLS.

Giao thức bắt tay (Handshake protocol): Máy chủ gửi chứng chỉ kỹ thuật số của mình cho máy khách để
xác minh danh tính. Máy khách kiểm tra chứng chỉ và tạo một khóa phiên (session key) bí mật được sử
dụng cho việc mã hóa dữ liệu.

Thiết lập kết nối an toàn: Khi khóa phiên được tạo, giao thức SSL/TLS sử dụng các thuật toán mã hóa để
bảo vệ dữ liệu truyền qua mạng. Dữ liệu được mã hóa tại máy khách và giải mã tại máy chủ.

Hoàn tất kết nối: Sau khi quá trình mã hóa và giải mã hoàn tất, máy chủ và máy khách tiếp tục gửi và
nhận dữ liệu an toàn qua kết nối bảo mật.

Ứng dụng của SSL/TLS trong bảo mật dịch vụ web là rất quan trọng. Khi được triển khai cho dịch vụ web,
SSL/TLS bảo vệ thông tin nhạy cảm và dữ liệu cá nhân của người dùng khi truyền qua mạng. Các ứng
dụng cụ thể của SSL/TLS trong bảo mật dịch vụ web bao gồm:

Mã hóa dữ liệu: SSL/TLS sử dụng mã hóa để bảo vệ dữ liệu truyền từ máy khách đến máy chủ và ngược
lại. Điều này đảm bảo rằng thông tin nhạy cảm như mật khẩu, thông tin tài khoản và dữ liệu khác không
thể bị đánh cắp hoặc hiển thị bởi bên thứ ba.

Xác thực máy chủ: SSL/TLS sử dụng chứng chỉ số để xác minh danh tính của máy chủ. Điều này đảm bảo
rằng người dùng kết nối đến máy chủ chính xác và không bị tấn công từ các máy chủ giả mạo.
Bảo vệ quyền riêng tư: SSL/TLS giúp bảo vệ quyền riêng tư của người dùng bằng cách ẩn danh IP và
thông tin cá nhân trong quá trình truyền thông.

Xác thực hai bước: SSL/TLS cung cấp khả năng triển khai xác thực hai bước (2FA) trong dịch vụ web.
Người dùng có thể sử dụng chứng chỉ số, thẻ thông minh hoặc các phương pháp xác thực khác để xác
thực danh tính trước khi truy cập vào dịch vụ web được bảo mật bằng SSL/TLS.

Qua đó, SSL/TLS đóng vai trò quan trọng trong việc bảo mật dịch vụ web bằng cách tạo một kênh truyền
thông an toàn và mật mã hóa giữa máy khách và máy chủ, đảm bảo tính toàn vẹn, bảo mật và quyền
riêng tư của dữ liệu truyền qua mạng.

Câu 25: Tìm hiểu về mã độc mã hóa tống tiền (Ransomeware) và đề xuất một số giải pháp phòng
chống/giảm thiểu ảnh hưởng của nó tới cá nhân/tổ chức.

Mã độc mã hóa tống tiền (Ransomware) là một loại phần mềm độc hại có mục tiêu mã hóa dữ liệu trên
hệ thống máy tính của nạn nhân và yêu cầu một khoản tiền chuộc để giải mã dữ liệu. Ransomware đã
trở thành một trong những mối đe dọa nghiêm trọng nhất trong lĩnh vực bảo mật thông tin, ảnh hưởng
đến cả cá nhân và tổ chức.

Dưới đây là một số giải pháp phòng chống/giảm thiểu ảnh hưởng của Ransomware tới cá nhân/tổ chức:

Sao lưu và phục hồi dữ liệu: Thực hiện sao lưu định kỳ dữ liệu quan trọng và kiểm tra tính hoạt động của
quy trình phục hồi. Điều này giúp đảm bảo rằng dữ liệu có thể được khôi phục nhanh chóng nếu xảy ra
tấn công Ransomware.

Cập nhật và vá lỗ hổng: Đảm bảo hệ thống và các phần mềm đang chạy trên nó được cập nhật đầy đủ và
vá các lỗ hổng bảo mật. Ransomware thường tận dụng các lỗ hổng này để xâm nhập vào hệ thống.

Sử dụng phần mềm bảo mật và chống malware: Sử dụng các giải pháp phần mềm bảo mật chống
malware, bao gồm cả phần mềm chống Ransomware. Đảm bảo phần mềm này được cập nhật đều đặn
để bảo vệ khỏi các biến thể mới của Ransomware.
Cảnh giác với email và tệp đính kèm: Tránh mở các email hoặc tệp đính kèm không rõ nguồn gốc hoặc có
dấu hiệu đáng ngờ. Ransomware thường được phân phối thông qua các email mạo danh hoặc tệp đính
kèm bị nhiễm độc.

Giáo dục và nhận thức người dùng: Đào tạo người dùng về cách phát hiện và tránh các mối đe dọa bảo
mật, bao gồm cách xử lý email đáng ngờ, tệp đính kèm và liên kết không an toàn.

Giám sát và phát hiện sớm: Thiết lập hệ thống giám sát mạnh mẽ để phát hiện sớm các hoạt động đáng
ngờ hoặc các biểu hiện của Ransomware. Điều này giúp phản ứng nhanh chóng và ngăn chặn sự lan rộng
của Ransomware.

Tạo ra các lớp bảo vệ: Sử dụng các biện pháp bảo vệ lớp múlti-layered để giảm thiểu rủi ro Ransomware,
bao gồm tường lửa, phần mềm chống virus, giám sát mạng, và các biện pháp bảo vệ nâng cao khác.

Quản lý quyền truy cập: Hạn chế quyền truy cập dữ liệu đối với người dùng và các ứng dụng. Chỉ cung
cấp quyền truy cập cần thiết cho công việc của từng người dùng để giảm thiểu khả năng lây lan của
Ransomware trong mạng nội bộ.

Kiểm tra tính toàn vẹn và khôi phục hệ thống: Thực hiện kiểm tra định kỳ tính toàn vẹn của hệ thống,
phát hiện sớm bất thường và khôi phục hệ thống từ các bản sao dự phòng khi cần thiết.

Tạo một kế hoạch ứng phó khẩn cấp: Xây dựng một kế hoạch ứng phó chi tiết để giải quyết một cuộc tấn
công Ransomware. Kế hoạch này bao gồm các bước cần thiết để ngừng sự lan truyền của Ransomware,
khôi phục dữ liệu và hệ thống, và thông báo cho cơ quan bảo mật liên quan.

Tuyệt đối không trả tiền chuộc cho kẻ tống tiền, vì không có đảm bảo rằng dữ liệu sẽ được phục hồi
hoàn toàn. Thay vào đó, hãy tìm cách liên hệ với cơ quan bảo mật và cung cấp thông tin chi tiết về cuộc
tấn công để có sự hỗ trợ và tư vấn phù hợp.

Câu 26: Bài tập về giao thức mật mã

Với mỗi sinh viên, trước hết em hãy xác đinh cho mình giá trị X = (MSSV mod 2)

Y= (<Hàng chục của MSSV> mod 2). Ví dụ: MSSV 201432456 ➔ X=0, Y=1

Trong một giờ học về ATTT, thầy Lâm giới thiệu 1 giao thức đơn giản cơ bản PRT_AU (xem dưới đây) và
yêu cầu sinh viên bàn luận nhóm để phân tích mục đích & phê bình ưu-nhược; từ đó thử thiết kế một
giao thức làm tốt hơn hoặc có lợi ích hơn về một phương diện nào đó. Kết quả cuối giờ có 4 sinh viên
loại khá-giỏi là An, Bình, Chi, Dũng đã đưa ra các phiên bản mới dưới đây.

PRT_AU: (thầy Lâm nêu đầu giờ)

1) A→S: IDA

2) S→A: Password Request

3) A→S: H(PWA)||T

PROT_00: (của An) PROT_01: (của Chi)

1) A→S: IDA A→S: IDA || H(PWA||T) || T

2) S→A: R

3) A→S: H(PWA||R)

PROT_10: (của Bình) PROT_11: (của Dũng)


1) A→S: IDA 1) A→S: IDA

2) S→A: R 2) S→A: R

3) A→S: H(PWA||R) 3) A→S: {R+1}pA

4) S→A: {ks}pA 4) S→A: {ks}pA where pA= H(PWA)

Trong đó một số ký hiệu sử dụng ở trên có ý nghĩa như sau:


IDA – là ID (danh tính) của A; R là 1 số ngẫu nhiên; T là một nhãn thời gian (Timestamp) tại thời điểm hiện
thời (có thể sử dụng computer clock)
PWA là chuỗi ký tự mật khẩu của A; pA là giá trị băm của mật khẩu của A, tức là pA =H(PWA) và với H là
một hàm băm xác định công bố trước.
Câu hỏi:
1. Phân tích rõ mục đích của PRT_AU và từ đó so sánh với PROT_0X để thấy rõ ưu nhược điểm
2. Phân tích chỉ rõ sự khác biệt và tính năng mới của PROT_1Y so với hai giao thức ở câu trên (1)
3. Thầy Lâm sau đó trình bày một phiên bản nâng cao khác và thách thức lớp phân tích và tìm ra vấn đề
còn tồn tại.
1) A→S: IDA || IDB || r1
2) S→A: {IDA || IDB || r1 || ks || {IDA || ks || r1} pB } pA
3) A→B: {IDA || ks || r1} pB
4) B→A: {r2} ks
5) A→B: {r1 + r2} ks
Sinh viên Đạt đã trả lời tốt câu hỏi của thầy, phân tích đúng vấn đề tồn tại và tìm ra giải pháp khắc phục
thành công, trong đó chỉ cần thực hiện 1 sửa đổi ở bước 5 mà thôi.
Em hãy phân tích mục đích của giao thức và thử đoán xem vấn đề tồn tại mà Đạt chỉ ra? Nếu có thể hãy
chỉ ra giải pháp khắc phục cũng như ý tưởng giải quyết của Đạt.

You might also like