Tải bản đầy đủ (.pdf) (5 trang)

Một giải pháp xây dựng hệ mật khóa đối xứng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (891.76 KB, 5 trang )

MỘT GIẢI PHÁP XÂY DỰNG

HỆ MẬT KHÓA ĐỐI XỨNG
@ Lưu Hồng Dũng1, Nguyễn Ánh Việt2
1

Học viện Kỹ Thuật Quân sự; 2 Bộ Tư Lệnh Tác chiến không gian mạng

Bài viết đề xuất giải pháp xây dựng thuật toán mật mã khóa đối xứng từ việc phát triển hệ
mã sử dụng khóa một lần OTP (One-Time Pad). Ưu điểm của thuật tốn xây dựng theo giải
pháp mới đề xuất là tính an toàn và hiệu quả thực hiện được kế thừa mật mã OTP. Đồng thời
việc thiết lập, quản lý - phân phối và sử dụng khóa của thuật tốn đề xuất dựa trên các hệ
mã khóa đối xứng đang được ứng dụng trong thực tế (DES, AES…).
GIỚI THIỆU

- Loại trừ các dạng tấn công đã biết đối với các hệ
mật khóa đối xứng trong thực tế;
- Tích hợp hiệu quả trên các thiết bị có kích thước
nhỏ, dung lượng nhớ và năng lực tính tốn hạn chế.
Giải pháp để xây dựng thuật toán mật mã với các
yêu cầu đặt ra được đề xuất dựa trên việc phát triển
hệ mã sử dụng OTP có độ an tồn và hiệu quả thực
hiện cao [1-5]. OTP được Gilbert Vernam đề xuất
vào năm 1917 và được Joseph Mauborgne tiếp tục
hồn thiện sau đó. Ngun tắc căn bản của OTP là
sử dụng một khóa mật chia sẻ trước có độ dài bằng
với độ dài của bản tin cần mã hóa (bản rõ), các bit
của bản mã nhận được từ việc cộng loại trừ (XOR)

Lý thuyết của Claude E. Shannon [6] đã chỉ ra
OTP là một loại mật mã có độ mật hồn thiện (perfect


secrecy). Hiện tại, OTP vẫn được xem là loại mật mã
an toàn tuyệt đối, không thể phá vỡ. Điều đặc biệt là
ngay cả tấn cơng vét cạn (brute force) bằng máy tính
lượng tử đối với loại mã này cũng trở nên vô nghĩa, nếu
có thể đáp ứng được các điều kiện về khóa như sau:
- Khóa có tính chất ngẫu nhiên;
- Mỗi khóa chỉ được dùng để mã hóa duy nhất
một bản tin;
- Kích thước của khóa phải bằng hoặc lớn hơn
kích thước của bản rõ;
- Khóa phải được giữ bí mật hồn tồn.
Tuy có độ an tồn và tốc độ mã hóa cao, cũng như
khả năng cài đặt dễ dàng trên các thiết bị có năng lực
tính tốn và tài ngun hạn chế, nhưng với các yêu
cầu về khóa đã chỉ ra, thì loại mã này khó triển khai
trong thực tế.

Số 5 (057) 2020 l Tạp chí AN TỒN THƠNG TIN

21

GIẢI PHÁP - CƠNG NGHỆ

Việc xây dựng các thuật tốn mật mã hiệu năng
cao cho mục đích thiết kế, chế tạo các thiết bị bảo
mật thông tin phục vụ lĩnh vực an ninh - quốc phòng
và kinh tế - xã hội trong điều kiện hiện nay có ý
nghĩa thực tiễn hết sức to lớn. Với mục tiêu đặt ra,
thuật toán được xây dựng nhằm đáp ứng các yêu cầu:


trực tiếp các bit của bản rõ với các bit tương ứng của
khóa mật.


Nguyên nhân đầu tiên là việc tạo khóa phải thực
sự ngẫu nhiên, nhằm loại trừ các nguy cơ mất an
toàn bao gồm: a) từ một khóa đã biết, kẻ tấn cơng
có thể tìm (suy ra) được các khóa đã được sử dụng
trước đó hay các khóa sẽ được sử dụng trong tương
lai; b) chuỗi bit khóa tồn tại chu kỳ lặp lại, từ đó tạo
ra mối liên quan giữa bản rõ và bản mã, kẻ tấn cơng
có thể tận dụng mối liên quan này để phá mã, tương
tự như với mã hóa đa bảng Vigenère [7]. Tuy nhiên,
đây là một yêu cầu không dễ thực hiện về mặt kỹ
thuật trong các ứng dụng.
Trong [8], trên cơ sở các nghiên cứu đã được
cơng bố trước đó, các tác giả đề xuất thuật tốn mã
hóa phát triển dựa trên ngun lý của mật mã OTP
trong đó sử dụng hàm băm (Hash Function) để sinh
dịng khóa, thuật tốn có tính hiệu quả thực hiện cao,
dễ cài đặt trên cả phần cứng và phần mềm.
Trong bài báo này, nhóm tác giả đề xuất một giải
pháp nhằm cho phép tạo ra các biến thể của mật mã
OTP, thừa kế được một số ưu điểm của OTP, song
việc thiết lập, quản lý – phân phối và sử dụng khóa
là đồng nhất với các hệ mã khóa đối xứng đang sử
dụng trong thực tế. Ngoài ra, xác thực nguồn gốc và
tính tồn vẹn của bản tin được mã hóa cũng là một
tính năng bổ sung quan trọng cho các thuật toán xây
dựng theo giải pháp này. Điểm khác của giải pháp đề

xuất ở đây so với thuật tốn trong [8] là chuỗi khóa
được tạo ra chủ yếu bằng các thuật tốn sinh số ngẫu
nhiên có kết hợp với hàm băm mà khơng hồn tồn
bởi hàm băm như trong [8], điều đó cho phép nâng
cao tốc độ thực hiện thuật tốn mã hóa nhất là khi sử
dụng thuật toán sinh số ngẫu nhiên dạng thanh ghi
dịch hồi tiếp tuyến tính – LFSR (Linear Feedback
Shift Registers) [9] kiểu Shrinking Generator [10].
GIẢI PHÁP XÂY DỰNG THUẬT TỐN MẬT
MÃ KHĨA ĐỐI XỨNG HIỆU NĂNG CAO
Nguyên tắc xây dựng thuật toán mật mã theo giải
pháp đề xuất
Mã hóa và giải mã theo khối với OTP
Bản rõ P được mã hóa dưới dạng n khối dữ liệu
Pi có kích thước m bit:
P = {P1,P2,…,Pi,…,Pn}, |Pi| = m bit, i = 1...n
Khóa sử dụng một lần KOT cũng bao gồm n khóa

22

con Ki có kích thước tương ứng với kích thước của
khối dữ liệu:
KOT = {K1,K2,...,Ki,...,Kn}, |Ki| = m bit, i = 1...n
Thuật toán mã hóa là phép XOR các bit của khối
bản rõ Pi với các bit tương ứng của khóa con Ki :
Ci = Pi ⊕ Ki, i = 1...n
Do đó, bản mã C cũng bao gồm n khối dữ liệu Ci
có kích thước m bit:
C = {C1,C2,…,Ci,…,Cn}, |Ci| = m bit, i = 1...n
Tương tự, thuật toán giải mã cũng là phép XOR

các bit của khối bản mã Ci với các bit tương ứng của
khóa con Ki:
Pi = Ci ⊕ Ki, i = 1...n
Chú ý, trường hợp chia bản tin P thành n khối
khơng chẵn thì bù thêm 1 số bit để khối cuối cùng đủ
m bit, việc bù thêm này được thực hiện tương tự như
ở các hệ mã khối khác (DES, AES,…).
Sử dụng 2 khóa khác nhau để mã hóa/giải mã bản tin
Khóa bí mật K để mã hóa/giải mã cho một bản tin
P bao gồm khóa sử dụng một lần KOT và khóa bí mật
chia sẻ trước giữa 2 đối tượng gửi (mã hóa) và nhận
(giải mã) – KS. Trong đó, khóa sử dụng một lần KOT
được dùng để mã hóa các khối dữ liệu của bản rõ ở
bên gửi và giải mã các khối bản mã ở phía bên nhận.
Khóa bí mật chia sẻ KS được bên gửi sử dụng để
tạo ra “mầm khóa” C0 tương ứng với mỗi bản tin cần
mã hóa nhờ hàm băm F1: C0 = F1(P, KS). Thành phần
C0 này được gửi như một khối của bản mã sang cho
bên nhận. Dễ thấy rằng, giá trị C0 là khác nhau với
các bản tin cần mã hóa khác nhau và có tính chất
ngẫu nhiên vì được tạo ra từ hàm băm F1.
Tiếp đến, hai bên gửi và nhận đều tạo khóa con
đầu tiên K1 từ KS và C0 nhờ hàm F1 như sau:
K1 = F1(C0, KS)
Phía gửi tin, các khóa Ki được sinh bởi cùng một
thuật tốn F2 từ khóa con đứng trước Ki-1 và khối dữ
liệu tương ứng Pi-1:
Ki = F2(Pi-1, Ki-1), i = 2...n
Ở đây, F2 là hàm sinh số ngẫu nhiên – RNG
(Random Number Generator), như phân tích ở phần


Số 5 (057) 2020 l Tạp chí AN TỒN THƠNG TIN


sau (mục Mức độ an toàn) cho thấy F2 hoàn tồn
có thể là các hàm sinh số giả ngẫu nhiên – PRNG
(PseudoRandom Number Generator) mà không nhất
thiết phải thực sự là RNG.
Phía nhận tin, sau khi tạo: K1 = F1(C0,KS) sẽ giải
mã khối đầu tiên: P1 = C1 K1. Từ đây, các khóa con
tiếp theo sẽ được tạo ra theo cùng một quy tắc với
phía bên gửi:
Ki = F2(Pi-1, Ki-1), i = 2...n
Với mỗi khóa con Ki được tạo ra thì việc giải mã
các khối mã tiếp theo sẽ được thực hiện:
Pi = Ci

Input: C = {C0,C1,C2,…,Ci,…,Cn}, KS
Output: M = {M1,M2,…,Mi,…,Mn}, true/false.
[1]. K1 = F1(C0,KS)
[2]. M1 = C1 ⊕ K1
[3]. M[1] = M1
[4]. for i = 2 to n do:
begin
Ki = F2(Mi-1,Ki-1)
Mi = Ci ⊕ Ki

Ki, i = 2...n

M[i] = Mi


Như vậy ở giải pháp đề xuất, khóa bí mật K sẽ
bao gồm hai thành phần có chức năng phân biệt: K
= {KS, KOT}. Trong đó: KS là khóa bí mật chia sẻ giữa
các đối tượng tham gia trao đổi thơng tin mật, khóa
này được sử dụng để tạo ra khóa KOT tương ứng với
mỗi bản tin. Cịn KOT là khóa sử dụng một lần cho
việc mã hóa và giải mã bản tin.
Thuật tốn bên người gửi
Thuật tốn sinh khóa và mã hóa bao gồm các
bước thực hiện được mơ tả như sau:
Input: P = {P1,P2,…,Pi,…,Pn}, KS
Output: C = {C0,C1,C2,…,Ci,…,Cn}
[1]. C0 = F1(P,KS)
[2]. K1 = F1(C0,KS)
K1

[4]. C[0] = C0, C[1] = C1
[5]. for i = 2 to n do
begin

end
[5]. M0 = F1(M,KS)
[6]. if (M0 = C0) then return {M,true}
else return {M,false}
Ghi chú:
- Nếu kết quả trả về là {M,true} thì bản tin được
xác thực về nguồn gốc và tính tồn vẹn. Ngược lại,
kết quả trả về là {M,false} thì M là bản tin giả mạo
hoặc C đã bị thay đổi trong quá trình truyền tin.

- Nếu bản mã được truyền chính xác từ bên gửi
sang bên nhận thì khối dữ liệu C0 của bên nhận
cũng chính là C0 của bên gửi. Mặt khác, do bên
nhận và bên gửi có cùng thuật tốn sinh khóa với
dữ liệu vào C0 và khóa bí mật chia sẻ KS như nhau,
nên khóa mã hóa và khóa giải mã sử dụng một lần
KOT sẽ hồn tồn giống nhau. Vì thế bản tin sau giải
mã cũng chính là bản rõ trước khi mã hóa. Nên điều
kiện M0 = C0 được thỏa mãn hoàn toàn.

Ki = F2(Pi-1, Ki-1)

MỘT SỐ ĐÁNH GIÁ VỀ GIẢI PHÁP XÂY DỰNG
THUẬT TOÁN MẬT MÃ ĐƯỢC ĐỀ XUẤT

Ci = Pi

Mức độ an toàn

Ki

C[i] = Ci

Mức độ an tồn của thuật tốn mật mã khóa đối
xứng xây dựng theo giải pháp đề xuất có thể đánh giá
qua khả năng chống lại một số dạng tấn cơng như sau:

end
[6]. return C
Ghi chú:

- Phép tốn ⊕ là phép cộng modulo 2 (XOR) hai
chuỗi bit.
Thuật toán bên người nhận

- Tấn cơng khóa bí mật chia sẻ: Tấn cơng khóa bí
mật chia sẻ có thể thực hiện dựa vào cách tạo giá trị
C0: C0 = F1(P,KS) hoặc tính giá trị của khóa con K1:
K1 = F1(C0,KS).

Số 5 (057) 2020 l Tạp chí AN TỒN THƠNG TIN

23

GIẢI PHÁP - CƠNG NGHỆ

[3]. C1 = P1

Thuật tốn sinh khóa, giải mã và xác thực bao
gồm các bước thực hiện như sau:


Với việc tạo C0 và K1 như trên thì kích thước LK
của khóa bí mật chia sẻ hồn tồn có thể chọn tùy
biến trong khoảng: Lmin≤LK≤2L-LP. Trong đó, Lmin là
kích thước tối thiểu đủ để bảo đảm ngưỡng an toàn
(≥ 80 bit); LP là kích thước bản rõ và L là kích thước
lớn nhất của dữ liệu đầu vào hàm băm F1. Khi đó, dữ
liệu đầu vào hàm F1 là sự ghép nối tiếp xâu bit của KS
với P trong trường hợp tạo giá trị C0, hoặc là sự ghép
nối tiếp xâu bit của KS với C0 trong trường hợp tạo

khóa con K1. Từ đây có thể thấy rằng, khóa bí mật
chia sẻ trước giữa bên gửi và nhận hồn tồn có thể
được giữ bí mật khơng chỉ về giá trị mà cịn bí mật
cả về kích thước khóa.
Dễ thấy rằng, với đặc tính một chiều của hàm
băm, hơn nữa với kích thước của KS cũng là một
tham số bí mật, thì việc tìm được KS từ C0, P và K1 là
hồn tồn khơng khả thi.
- Tấn cơng vét cạn khi chỉ có bản mã: Nếu KOT là
một chuỗi bit thực sự ngẫu nhiên thì giữa bản rõ và
bản mã được tạo ra sẽ khơng có bất kỳ mối quan hệ
nào. Tấn cơng vét cạn có thể giải một bản mã thành
bất kỳ bản tin nào có cùng độ dài (với bản mã) và đối
với kẻ tấn cơng thì tất cả các bản tin có nghĩa sau giải
mã đều có khả năng là bản tin được mã hóa. Nghĩa
là, sẽ khơng có bất kỳ thơng tin nào trong bản mã cho
phép kẻ tấn công lựa chọn đúng bản rõ trong số các
bản tin có nghĩa sau giải mã bằng tấn cơng vét cạn.
Ngồi ra, nếu KOT thực sự ngẫu nhiên thì từ một khóa
đã biết, kẻ tấn cơng khơng thể tìm (suy) ra các khóa
khác đã được tạo ra trước hay sau đó.
Theo giải pháp đề xuất, khóa sử dụng một
lần KOT là một tập các khóa con Ki được tạo bởi
hàm băm F1 và hàm sinh số ngẫu nhiên F2 theo 2
nguyên tắc: Thứ nhất, mỗi khóa con Ki được sinh
ra từ khóa con đứng trước nó là Ki-1 và khối dữ liệu
tương ứng Pi-1 bởi F2; Thứ hai, riêng khóa con đầu
tiên K1 được tạo ra bởi “mầm khóa” C0 và khóa bí
mật chia sẻ KS bởi hàm băm F1. Như vậy, KOT thực
chất là một chuỗi bit được tạo ra bởi việc ghép nối

tiếp n chuỗi (bit) con Ki, mà các chuỗi con Ki này
chính là đoạn m bit đầu tiên của n chuỗi bit cơ sở
được tạo bởi F1 hoặc F2 với các giá trị khởi tạo
hay các “mầm” khác nhau. Nói cách khác, chuỗi
bit KOT được tạo ra từ n chuỗi bit cơ sở khác nhau,
bằng cách lấy ra từ mỗi chuỗi bit cơ sở 1 chuỗi

24

con (m bit đầu tiên) rồi ghép nối tiếp n chuỗi con
này với nhau.
Nếu các chuỗi bit cơ sở được tạo ra bởi các hàm
băm và hàm sinh số giả ngẫu nhiên có chu kỳ lặp lại
lớn và kích thước của các chuỗi con Ki được chọn
nhỏ hơn chu kỳ lặp lại của chuỗi bit cơ sở thì các
chuỗi con này thực sự có tính ngẫu nhiên theo nghĩa:
a) không tồn tại chu kỳ lặp lại; b) từ một số bit cho
trước khơng thể tính được bit tiếp theo, là điều hồn
tồn có thể khẳng định. Mặt khác, do các chuỗi con
Ki được tạo theo: Ki = F2(Pi-1, Ki-1), nên một trong
các điều kiện để các Ki tạo thành chuỗi giá trị lặp lại
là các Pi cũng phải tạo thành chuỗi lặp lại, mà trên
thực tế điều này lại khó xảy ra.
Do đó, với giải pháp đề xuất KOT đã đáp ứng được
yêu cầu về tính ngẫu nhiên của khóa theo nghĩa: a)
từ một khóa đã biết, kẻ tấn cơng khơng thể tìm được
các khóa đã được tạo ra trước hoặc sau đó; b) chuỗi
bit khóa khơng tồn tại chu kỳ lặp lại, nên sẽ không
tạo ra mối liên quan giữa bản rõ và bản mã. Từ đó,
thuật tốn được xây dựng theo giải pháp đề xuất

hồn tồn có thể kháng lại tấn công vét cạn.
- Tấn công giả mạo: OTP khơng cung cấp tính
năng xác thực cho bản tin được mã hóa, vì vậy kẻ
tấn cơng có thể chặn bản mã được gửi đi và gửi cho
bên nhận một bản tin giả mạo có cùng kích thước với
bản tin thật. Trường hợp giải mã ra một bản rõ vơ
nghĩa, người nhận có thể suy đốn về một sự giả mạo
đã được thực hiện hoặc do lỗi truyền tin gây ra. Tuy
nhiên, nếu giải mã ra một bản tin có nghĩa, thì chính
người nhận cũng khơng có cách nào để khẳng định
được rằng đây là bản tin thật hay bản tin giả mạo.
Với giải pháp đề xuất, bằng việc tạo “mầm khóa”
C0 từ khóa bí mật chia sẻ KS và bản rõ nhờ hàm băm
F1 ở phía bên gửi: C0 = F1(P,KS), bên nhận hồn tồn
có khả năng nhận thức chính xác nguồn gốc cũng
như tính tồn vẹn của bản tin sau giải mã qua việc
tính: M0 = F1(M,KS) và kiểm tra điều kiện: M0 = C0.
Hiệu quả thực hiện
Có thể nâng cao hiệu quả thuật tốn xây dựng
theo giải pháp đề xuất nếu khóa KOT được tạo ra
trước các khi các thủ tục mã hóa và giải mã được
thực hiện. Khi đó, các thuật tốn sinh khóa, mã hóa
và giải mã được mơ tả như sau:

Số 5 (057) 2020 l Tạp chí AN TỒN THƠNG TIN


+ Thuật tốn sinh khóa:

dạng tấn cơng đối với các hệ mã khối, đây là một ưu

điểm rất quan trọng được kế thừa từ OTP. Ngồi ra,
do có cơ chế xác thực nguồn gốc và tính tồn vẹn
của bản tin được mã hóa, các thuật tốn này cịn có
khả năng chống lại các dạng tấn công giả mạo trong
thực tế. Những ưu điểm khác của các thuật toán này
là tốc độ và hiệu quả thực hiện có thể so sánh với hệ
mã OTP, song khóa mật chia sẻ có thể sử dụng nhiều
lần như các hệ mã khóa đối xứng khác. Đây là những
đặc tính rất quan trọng mang lại khả năng cho các
thuật tốn mới có thể ứng dụng được trong việc thiết
kế, chế tạo các thiết bị bảo mật thông tin.

Input: P = {P1,P2,…,Pi,…,Pn}, KS
Output: KOT = {K1,K2,…,Ki,…,Kn}, C0
[1]. C0 = F1(P,KS)
[2]. KOT[1] = F1(C0,KS)
[3]. for i = 2 to n do
begin
KOT[i] = F2(KOT[i-1])
end
[4]. return {KOT,C0}
+ Thuật toán mã hóa:
Input: P = {P1,P2,…,Pi,…,Pn}, C0,
KOT = {K1,K2,…,Ki,…,Kn}
Output: C = {C0,C1,C2,…,Ci,…,Cn}
[1]. C[0] = C0
[2]. for i = 1 to n do
begin
C[i] = P[i] ⊕ KOT[i]
end

[3]. return C

TÀI LIỆU THAM KHẢO
1. SharadPatil, Ajay Kumar (2010). Effective Secure
Encryption Scheme (One Time Pad) using Complement
Approach. International Journal of Computer Science &
Communication, Vol.1,No.1,January-June 2010, pp.229-233.
2. Raman Kumar, Roma Jindal, Abhinav Gupta,
SagarBhalla, HarshitArora (2011). A Secure
Authentication System - Using Enhanced One Time Pad
Technique. IJCSNS International Journal of Computer
Science and Network Security, Vol.11 No.2.

+ Thuật toán giải mã và xác thực:
Input: C = {C0,C1,C2,…,Ci,…,Cn},
KOT = {K1,K2,…,Ki,…,Kn},KS
Output: M = {M1,M2,…,Mi,…,Mn}, true/false.
[1]. for i = 1 to n do:
begin
M[i] = C[i] ⊕ KOT[i]
end
[2]. M0 = F1(M,KS)
[3]. if (M0 = C0) then return {M,true}
else return {M,false}

3. SharadPatil, ManojDevare, Ajay Kumar (2007). Modified
One Time Pad Data Security Scheme: Random Key
Generation Approach. International Journal of Computer
Science and Security (IJCSS), Volume (3): Issue(2).
4. N.J.Croft and M.S.Olivier (2005). “Using an

approximated One-Time Pad to Secure ShortMessaging
service(SMS)”. SATNAC 2005 Proceedings.

6. Shannon C.E. (1949). Communication Theory of Secrecy
Systems. Bell System Technical Journal, Vol.28-4, pp.656-715.

Có thể thấy rằng, hiệu quả thực hiện của thuật
toán được đề xuất khi đó đạt xấp xỉ hiệu quả thực
hiện của mật mã OTP. Tuy nhiên, do:
KOT[i] = F2(KOT[i-1])
Nên sẽ tiềm tàng khả năng tồn tại chu kỳ lặp lại
trong chuỗi KOT.
KẾT LUẬN
Bài báo đề xuất giải pháp xây dựng thuật toán
mật mã khóa đối xứng từ việc phát triển mật mã sử
dụng khóa một lần OTP. Với giải pháp thiết kế khóa
mật từ 2 phân khóa tách biệt, các thuật tốn xây dựng
theo giải pháp ở đây có khả năng loại trừ một số

7. William Stallings (2005). Cryptography and Network
Security Principles and Practices. Prentice Hall.
8. Marcio Ricardo Rosemberg, Daniel Schwabe, Marcus Poggi,
A Hybrid Block and Stream Cipher Encryption Scheme
Based on Collision Resistant Hash Functions. Monografias
em Ciờncia da Computaỗóo n 13/17, ISSN: 0103-9741.
9. Menezes A., Van Oorschot P. and Vanstone S. (1996).
Handbook of Applied Cryptography. Boca Raton,
Florida: CRC Press.
10.  D. Coppersmith, H. Krawczyk, and Y. Mansour
(1994), “The shrinking generator,” in CRYPTO ’93:

Proceedings of the 13th annual international cryptology
conference on Advances in cryptology, (New York, NY,
USA), pp. 22-39, Springer-Verlag New York, Inc.

Số 5 (057) 2020 l Tạp chí AN TỒN THƠNG TIN

25

GIẢI PHÁP - CÔNG NGHỆ

5. Jeff Connelly (1978). A Practical Implementation of a
One-time Pad Cryptosystem. CPE 456.



×