Trong trường hợp bảng mã một lần (OTP), lược đồ mã hóa có thể từ chối đơn giản nhất có thể sử dụng một Tin nhắn mồi nhử và Chìa khóa mồi mà tạo ra một Bản mã chung điều đó sẽ giống nhau Bản mã chung sẽ được XORed với tin nhắn thực sự, dẫn đến xác định Chìa khóa thực (với điều kiện là độ dài của thông báo thực ít nhất bằng độ dài của thông báo giải mã và các khóa kết quả và bản mã để tránh nhu cầu đệm).
- Hạn chế sẽ coi các bit văn bản gốc là khóa riêng, theo nghĩa
tạo khóa an toàn (Chìa khóa thực), vì nó hoàn toàn bắt nguồn từ một
"văn bản thuần túy" ở đây được gọi là Thực
Thông điệp.
Do đó, tính bảo mật của khóa thực theo bit sẽ phụ thuộc vào
tính ngẫu nhiên và độ dài (và mọi bảo mật kết quả hoặc kế thừa) của thông điệp thực
theo bit (vì vậy tin nhắn cần được xử lý theo nghĩa đen và nghĩa bóng như một khóa riêng để bảo mật toàn bộ hệ thống để tin nhắn thực được an toàn, vì nó không được "bảo mật" bằng khóa riêng (đúng hơn là khóa riêng được tạo ra từ tin nhắn).Dưới đây là một ví dụ:
pl= phím mồi
k1= tin nhắn mồi
c1 = bản mã phổ quát
p2= khóa thực
k2= tin nhắn thực
p1âk1 =c1
c1âk2 = k1
*Thông báo giải mã (độ dài n) â Khóa giải mã (độ dài n) = Bản mã phổ dụng (độ dài n)
*Bản mã phổ quát (độ dài n) â Thông điệp thực (độ dài n) = Khóa thực (độ dài n)
Ý kiến: Một phương pháp mã hóa như vậy để có thể từ chối hợp lý có thể hoạt động (bí mật hoàn hảo và an toàn lượng tử) nếu bản thân thông báo đủ ngẫu nhiên và với điều kiện là độ dài tính bằng bit của nó không khả thi để đoán hoặc xung đột với (tức là thông báo thực có thể là thông báo riêng tư ví dụ như chính khóa được tạo bởi CSPRNG) và dài 128 bit. Mặt khác, một thông báo thực ngắn hoặc có thể dự đoán được, sẽ tạo ra một khóa thực không an toàn.
Các giả định bảo mật quan trọng: đối với một thông báo thực đủ an toàn (văn bản gốc), chẳng hạn như số nguyên 256 bit do CSPRNG tạo, khóa thực kết quả được tính sau khi thực hiện XOR đối với bản mã Universal, trong đó căn bậc hai của [không gian nội dung * không gian khóa] = không gian bản mã (bao gồm các bản sao là 2^512 do tính giao hoán của XOR), trong đó sẽ có ít nhất gấp nhiều lần (2^256) các thông báo và khóa khác, sẽ tạo ra cùng một bản mã chung. Do đó, không có cách nào để biết thông báo hoặc khóa nào là thông báo đang được đề cập vì tất cả chúng đều có vẻ hợp lệ mà không cần biết trước về khóa thực, nếu thông báo (được coi là trình tạo khóa) đủ an toàn.Giới hạn/phạm vi này được điều chỉnh bởi số phương trình XOR riêng biệt tồn tại (không hoán vị) cho bất kỳ phạm vi số nguyên thực tùy ý nào (tức là n=256) theo trình tự sau A028401.
Mã Python mẫu để tính toán XOR riêng biệt:
Initial_bits= int(input("nhập số bit"))
Phạm vi_số_ban_đầu= 2**Số_bit_ban_đầu
Unique_XOR_triplets=((Initial_number_range+1)*(Initial_number_range+2))//6
Total_triplet_input_terms =((Dải_số_ban_đầu//2)+1)*(Dải_số_đầu_tiên)+(Dải_số_ban_đầu//2)+1
Repeat_Groups=(Total_triplet_input_terms)-((Initial_number_range**2)//2)-Initial_number_range
Checksum_repeat_group=(Initial_number_range//2)+1
print('1: Initial_bits, cái này sẽ trở thành số mũ của 2 lũy thừa này:',Initial_bits)
print('2: Số_dải_ban_đầu, hai số được nâng lên thành số bit ban đầu bằng:',Số_dải_ban_đầu)
print('3: Unique_XOR_triplets, ba thuật ngữ đầu vào được tính là một:',Unique_XOR_triplets)
print('4: Total_triplet_input_terms (tức là A XOR B = C sẽ là ba số hạng đầu vào):',Total_triplet_input_terms)
print('5: Repeat_Groups, mỗi số trong nhóm lặp lại số này nhiều lần, và thêm số này nhiều lần bằng 0:',Repeat_Groups)
Mã Python với sơ đồ mã hóa từ chối hợp lý bằng cách sử dụng các chuỗi 56 bit không an toàn làm ví dụ:
P1 = 0B01101000011001010110110001101100011011110000000000000000
p1=bin(p1)
k1= 0b10011001100110011001100110011001100110011001100110011000 #key1 DUMMY KEY Ví dụ 56-bit: 0b1001100110011001100110011001100110011001010001010010101
k1=bin(k1)
c1= int(p1,2)^int(k1,2) #ciphertext (được tính toán XÁC ĐỊNH 56-bit bắt nguồn từ XOR'ing thông điệp giả với khóa giả): "0b11110001111111001111010111110101111101101001100110011000"
c1=bin(c1)
p2= 0b01101100011001010110000101110110011010010110111001100111 #plaintext2 TIN NHẮN THỰC SỰ Ví dụ 8 bit ASCII cho "rời khỏi" : 0b01101100011001010110000101110110011011001011
p2=bin(p2)
k2= int(c1,2)^int(p2,2) #key2 REAL KEY ((DETERMINISTIC được tính) 56-bit bắt nguồn từ XOR'ing Ciphertext với Real message: 0b100111011001100110010100100000111001111111111011111111111
k2=bin(k2)
print('P1 TIN NHẮN GIẢ là:',p1)
print('K1 DUMMY KEY là:',k1)
print('c1 UNIVERSAL CIPHERTEXT là:',c1)
print('P2 TIN NHẮN THỰC SỰ là:',p2)
print('k2 REAL KEY is:',k2) ## "Khóa" này mang tính xác định do đó chỉ mạnh bằng tính ngẫu nhiên của thông báo
print('tin nhắn thực p2: ', (p2),
'là sự thật',(int(p2,2))== int(k2,2)^int(c1,2))
print('as c1 ',c1,'xor p2', p2, 'equals',bin(int(k2,2)), 'là truely')
in((int(k2,2)==(int(c1,2)^(int(p2,2)))))
print('và bằng = ',bin(int(c1,2)^(int(p2,2))))