Xem mẫu

  1. Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021) Kết hợp thuật toán mật mã Hill và mã OTP trong mã hóa và giải mã thông điệp Vũ Ngọc Phan1 và Nguyễn Đức Toàn2 1 Trường Đại học Tài nguyên và Môi trường Hà Nội Email: vnphan@hunre.edu.vn 2 Học viện Phụ nữ Việt Nam Email: ductoanndt9@gmail.com Abstract: Mọi thuật toán mã cổ điển đều là mã khoá đối xứng, vì Trong bài báo này chúng tôi đề xuất kết hợp phương pháp ở đó thông tin về khóa được chia sẻ giữa người gửi và mã hóa Hill và mã OTP để mã hóa và giải mã thông điệp dựa người nhận. Mã đối xứng là kiểu duy nhất trước khi phát trên ngôn ngữ lập trình Python. Thuật toán mã hóa Hill là minh ra khoá mã công khai (còn được gọi là mã không thuật toán dễ dàng, tuy nhiên cái khó khăn là chọn khóa làm đối xứng) vào những năm 1970. Hiện nay các mã đối sao cho thỏa mãn khóa có tính khả nghịch. Mã OTP là mã khóa chỉ dùng 1 lần, chính vì thế trong bài báo này chúng tôi xứng và công khai tiếp tục phát triển và hoàn thiện. Mã đề xuất dùng mã OTP làm khóa cho thuật toán mã hóa Hill. công khai ra đời hỗ trợ mã đối xứng, không thay thế nó, Trong phần thực nghiệm chúng tôi chọn khóa có kích thước do đó mã đối xứng đến nay vẫn được sử dụng rộng rãi. 2x2 và 3x3. Do đó khóa nhận được là có tính ngẫu nhiên. Định nghĩa một số khái niệm cơ bản về mã hóa. Keywords- Python, Hill, OTP, mã hóa, giải mã. Một hệ mật mã là một bộ 5 (P,C,K,E,D) thoả mãn các I. GIỚI THIỆU điều kiện sau [1]: P (Plaintext) là một tập hợp hữu hạn các bản rõ và được Với sự phát triển nhanh chóng của công nghệ gọi là không gian bản rõ. thông tin, bảo mật thông tin ngày càng trở nên quan C (Ciphertext) là tập các hữu hạn các bản mã và được trọng. Trước đây, người ta thường dùng phương pháp gọi là không gian các bản mã. mật mã (cryptography) để bảo mật thông tin. Tuy nhiên, K (Key) là tập hữu hạn các khoá hay còn gọi là không khi sử dụng phương pháp này, đối tượng cần gian khoá. Đối với mỗi phần tử k của K được gọi là bảo mật được chuyển thành dạng mật mã khó hiểu nên một khoá (Key). Số lượng của không gian khoá phải gây sự chú ý nhiều hơn. Điều này làm cho những kẻ đủ lớn để không có đủ thời gian thử mọi khoá; xấu luôn tìm cách giải mã để hiểu được nội dung của E (Encrytion) là tập hợp các qui tắc mã hóa có thể. đối tượng được bảo vệ đó. Nhằm tránh gây sự chú ý, D (Decrytion) là tập hợp các qui tắc giải mã có thể. một phương pháp bảo mật khác được đề xuất và sử Đối với mỗi 𝑘 ∈ 𝐾 có một quy tắc mã 𝑒𝑘: 𝑃 → C và dụng rộng rãi là giấu tin mật. Thông tin cần bảo vệ một quy tắc giải mã tương ứng dk ∈ D. được ẩn giấu trong một đối tượng mang tin, thường là Mỗi ek: P → C và dk: C → P là những hàm mà: ảnh, video, âm thanh, văn bản,… Kỹ thuật này có ưu 𝑑𝑘(𝑒𝑘(𝑥)) = 𝑥 với mỗi x ∈ P. điểm là thông tin không chỉ được bảo vệ mà còn che Chúng ta đã biết một thông tin thường được tổ chức giấu được sự tồn tại của nó. dưới dạng bản rõ. Người gửi sẽ làm nhiệm vụ mã hoá bản rõ, kết quả thu được gọi là bản mã. Bản mã này Mật mã đối xứng sử dụng cùng một khóa cho việc mã được gửi đi trên một đường truyền tới người nhận, sau hóa và giải mã. Có thể nói mã đối xứng là mã một khoá khi nhận được bản mã người nhận giải mã nó để tìm hay mã khóa riêng hay mã khoá thỏa thuận. Ở đây hiểu nội dung. người gửi và người nhận chia sẻ khoá chung K, mà họ Thuật toán dùng khi sử dụng định nghĩa hệ mật mã: có thể trao đổi bí mật với nhau. Ta xét hai hàm ngược 𝑒𝑘(𝐶) = 𝑃, 𝑑𝑘(𝑃) = 𝐶 nhau: E là hàm biến đổi bản rõ thành bản mã và D là Một mã đối xứng có các đặc trưng là cách xử lý thông hàm biến đổi bản mã trở về bản rõ. Giả sử X là văn bản tin của thuật toán mã, giải mã, tác động của khóa vào cần mã hóa và Y là dạng văn bản đã được thay đổi qua bản mã, độ dài của khóa. Mối liên hệ giữa bản rõ, khóa việc mã hóa. Khi đó ta ký hiệu: và bản mã càng phức tạp càng tốt, nếu tốc độ tính toán Y = EK (X) là chấp nhận được [3]. Cụ thể hai yêu cầu để sử dụng an toàn mã khoá đối xứng là: X = DK (Y) +) Thuật toán mã hoá mạnh. Có cơ sở toán học vững chắc đảm bảo rằng mặc dù công khai thuật toán, mọi ISBN 978-604-80-5958-3 221
  2. Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021) người đều biết, nhưng việc thám mã là rất khó khăn và Trong đó, 𝑑𝑒𝑡𝐾 −1 là nghịch đảo của 𝑑𝑒𝑡(𝐾) theo phức tạp nếu không biết khóa. modulo 26: +) Khoá mật chỉ có người gửi và người nhận biết. Có 𝑑𝑒𝑡𝐾 ∗ det(𝐾)−1 ≡ 1(𝑚𝑜𝑑26) kênh an toàn để phân phối khoá giữa các người sử dụng chia sẻ khóa. Mối liên hệ giữa khóa và bản mã là không Chúng ta tìm được nghịch đảo của 𝑑𝑒𝑡(𝐾) bằng cách nhận biết được. lặp các giá trị từ 0 tới 25, nhân với 𝑑𝑒𝑡(𝐾) và lấy dư Phần còn lại của bài báo được tổ chức như sau: trong phép chia 26, giá trị thoả mãn chia 26 dư 1 chính là phần II, chúng tôi miêu tả thuật toán. Trong phần III, det(𝐾)−1 chúng tôi xây dựng demo IV cung cấp các kết quả mô 2.2 Mã OTP phỏng và phân tích lý thuyết và đánh giá hiệu năng của hệ thống. Cuối cùng, chúng tôi kết luận bài báo trong Hệ mật mã với khóa sử dụng một lần OTP (One Time phần IV. Pad) là một hệ mật mã dòng, đã được chứng minh có độ an toàn hoàn hảo. Đặc điểm nổi bật của hệ mật này là II. THUẬT TOÁN HILL VÀ MÃ OTP mỗi khóa chỉ sử dụng đúng một lần và không bao giờ được dùng lại. Nhưng nhược điểm cơ bản của hệ mật 2.1 Thuật toán Hill này là độ dài của khóa phải bằng đúng độ dài của bản rõ Mã hoá Hill phát minh bởi Lester S. Hill năm 1929, là và một yêu cầu rất khắt khe nữa là các khóa phải được mật mã cổ điển cho phép mã hoá hai, hoặc ba, hoặc sinh thực sự ngẫu nhiên. Đây là một điều kiện rất khó nhiều hơn các ký tự (theo lý thuyết) tại cùng thời điểm. thực hiện ngay cả các chuỗi ngẫu nhiên được sinh tự Mã hoá Hill sử dụng hai lý thuyết toán học cực kì quan động bằng máy tính cũng mới chỉ là giả ngẫu nhiên vì trọng trong ngành mật mã là Đại số tuyến tính và Số học chúng phụ thuộc vào một cái nhân (seed) cho trước[4]. mô-đun [8]. Lược đồ này gồm ba qui trình sau: Để thuật tiện cho quá trình mã hoá, quy ước mỗi chữ cái Bước 1 Mã hóa: trong bảng chữ cái tương ứng với một giá trị theo thứ tự Chia bản rõ thành các khối có kích thước bằng 256 bit. tăng dần. Vì thuật toán Hill thực hiện việc mã hoá theo Nếu không chẵn thì phải chèn thêm cho đủ một khối. khối block gồm m ký tự tại cùng một thời điểm. Băm bản rõ bằng một hàm băm với giá trị băm có kích Bước 1: Mã hóa thước bằng 256 bit. Giá trị băm này được chọn làm khóa Cho biết khoá K và thông điệp P, mã hoá Hill thực hiện OTP khởi đầu, gọi là K1 . Sau đó, K1 sẽ được XOR với phép nhân ma trận giữa K và P để mã hoá thông điệp tạo khối bản rõ thứ nhất để tạo ra khối bản mã thứ nhất. Các bản mã C. khóa OTP tiếp theo, K i (i >= 2) sẽ được sinh ra bằng 𝐾 ⋅ 𝑃 ≡ 𝐶(𝑚𝑜𝑑26) cách mã hóa khối bản rõ thứ i − 1 bằng hệ mật AES256 Để mã hoá một thông điệp, chúng ta cần tạo một với khóa K i−1 . Các khóa mới được sinh ra lại được khoá K. Khoá này là bí mật và chỉ giữa những người XOR với khối bản rõ tương ứng để tạo ra các khối bản trao đổi thông tin với nhau biết được. Khoá phải đảm mã tiếp theo. Ghép tất cả các khối bản mã để thu được bảo 2 tính chất: bản mã.  K có độ dài là m x m (bình phương độ dài khối Bước 2 Ký bản rõ và gửi bản mã: block m) Khóa K1 được mã hóa bằng khóa bí mật của người gửi.  K là ma trận khả nghịch theo modulo 26 Sau đó, lại được mã hóa bằng khóa công khai của người nhận. Gửi cho bên nhận thông tin đã mã hóa này và bản 𝐾 ⋅ 𝐾 −1 ≡ 1 (𝑚𝑜𝑑26) mã. 𝐾 −1 là ma trận nghịch đảo của K trên vành Z26 Bước 3 Xác thực và giải mã: Người nhận sử dụng khóa Trong thuật toán này mã khoá hợp lệ là khoá có độ dài bí mật của mình và khóa công khai của người gửi để 2x2 hoặc 3x3 và khả nghịch theo modulo 26. giải mã ra khóa K1 . Chia bản mã thành các khối có kích Thỏa mãn: Khóa phải có độ dài là số chính phương. [7] thước 256 bit sau đó làm tương tự như quá trình mã hóa để thu được bản rõ. Bước 2: Giải mã Lược đồ trên, đã lấy giá trị băm của bản rõ làm khóa Cho biết khoá 𝐾 và bản mã 𝐶, mã hoá Hill thực hiện OTP. Vì các bản rõ là những văn bản bất kỳ nên giá trị phép nhân ma trận nghịch đảo 𝐾 −1 và bản mã 𝐶 để tạo băm của chúng là các chuỗi bit ngẫu nhiên và gần như là thông điệp gốc 𝑃. duy nhất đối với mỗi bản rõ. Việc chọn giá trị băm làm 𝐾 −1 ⋅ 𝐶 ≡ 𝑃(𝑚𝑜𝑑26) khóa OTP đã làm giảm đáng kể độ dài của khóa đối với Trước hết, để tìm ma trận nghịch đảo 𝐾 −1 , chúng ta đã những bản rõ có dung lượng lớn. Các khóa tiếp theo biết theo lý thuyết đại số tuyến tính: được sinh ra bằng thuật toán AES trên khối bản rõ tương 𝐾 −1 = 1𝑑𝑒𝑡(𝐾). 𝐾 ∗ ứng với khóa được sinh ra trước đó vẫn đảm bảo được tính OTP. Trong đó 𝑑𝑒𝑡(𝐾) là định thức ma trận K, và 𝐾 ∗ là ma Trong hệ mã với khóa sử dụng một lần OTP (One - trận liên hợp của 𝐾. Tuy nhiên đối với mã hoá Hill, _Time Pad) mỗi byte của bản rõ được mã hóa bằng một chúng ta đang cần tìm ma trận nghịch đảo 𝐾 −1 theo byte của luồng khóa và mỗi byte khóa chỉ được sử dụng modulo 26, công thức trở thành: đúng một lần và không bao giờ được sử dụng lại. Trong 𝐾 −1 = det(𝐾)−1 . 𝐾 ∗ (𝑚𝑜𝑑26) hệ mật mã này độ dài của khóa phải bằng đúng độ dài ISBN 978-604-80-5958-3 222
  3. Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021) của bản rõ và phải là một luồng được sinh ra thực sự ra lại được XOR với khối bản rõ tương ứng để tạo ra ngẫu nhiên, tức là mọi byte của khóa có thể nhận bất kỳ các khối bản mã tiếp theo. giá trị nào trong khoảng từ 0 đến 255 với xác suất như return matrix nhau và độc lập với giá trị của tất cả các byte khóa khác. [2] Trong hệ mã OTP, bản rõ được biểu diễn dưới dạng Bước 4: Tính ma trận nghịch đảo một chuỗi nhị phân, luồng khóa cũng là một chuỗi nhị phân có độ độ dài bằng độ dài bản rõ. et = np.linalg.det(matrix) Việc mã hóa bằng OTP thường được ký hiệu là: if math.gcd(int(round(det)), len(alphabet)) == 1: Ci = Pi  K i , (i = 1, 2, 3, . . . ) matrix = Matrix(matrix) return np.array(matrix.inv_mod(len(alphabet))) Trong đó Pi là ký tự thứ i của bản rõ, K i là byte thứ else: i của khóa được sử dụng để mã hóa bản rõ này và Ci là return None ký tự thứ i của bản mã kết quả,  là ký hiệu của phép cộng loại trừ (XOR), phép toán hay được dùng trong mã Bước 5: Giải mã hóa OTP nhưng vẫn có thể được thay bằng phép toán plaintext = "" khác. ciphervector = [0 for i in range (n)] Quá trình giải mã được làm tương tự như mã hóa : messagevector = [0 for i in range (n)] Pi = Ci  K i block = 0 Tuy nhiên, phương pháp One_Time_ Pad không có ý while block * n < len(_ciphertext): nghĩa sử dụng thực tế vì chiều dài khóa bằng chiều dài for i in range (n): bản tin, mỗi khóa chỉ sử dụng một lần, nên thay vì ciphervector[i] = char_to_int(_ciphertext[i + truyền khóa trên kênh an toàn thì có thể truyền trực tiếp block * n], alphabet) bản rõ mà không cần quan tâm đến vấn đề mã hóa nữa. print("Cipher vector: ") print(ciphervector) 2.3 Kết hợp thuật toán Hill và mã OTP for i in range (n): messagevector[i] = 0 Bước 1: Mã hóa for j in range (n): def int_matrix_to_str(matrix, alphabet): messagevector[i] += invkmatrix[i][j] * word = "" ciphervector[j] n = len(matrix) print(messagevector[i]) for i in range (n): plaintext += str(int_to_char(messagevector[i], for j in range (n): alphabet)) word += int_to_char(matrix[i][j], alphabet) block += 1 return word return plaintext Bước 2: Tạo ma trận có đảo ngược ngẫu nhiên def gen_random_inv_matrix(n, alphabet): 2.4 Đánh giá độ an toàn matrix = gen_random_matrix(n, alphabet) Khóa OTP đề xuất kết hợp với thuật toán Hill có khả while not is_invertible_matrix(matrix, alphabet): năng xác thực nguồn gốc và tính toàn vẹn của bản tin matrix = gen_random_matrix(n, alphabet) nhận được. Vì thế ngoài khả năng chống được các dạng return matrix tấn công đối với các hệ mã khối thông thường khác, Bước 3: Tạo khóa dùng mã OTP thuật toán còn có thể chống lại một số dạng tấn công giả if len(word)
  4. Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021) phần II. Việc sử dụng khóa OTP để mã hóa/giải mã bản tin, trong đó khóa k OTP được sử dụng tương tự như hệ mã OTP [6] cho phép loại trừ hầu hết các dạng tấn công đã được biết đến trong thực tế: thám mã vi sai, thám mã tuyến tính, tấn công bản mã có lựa chọn, tấn công bản rõ đã biết... Các phương pháp tấn công này hoàn toàn không có tác dụng với khóa OTP do k OTP chỉ sử dụng 1 lần cùng với bản tin được mã hóa, hơn nữa với kích thước 128 bit thì phương pháp vét cạn là không khả thi để tấn công các khóa con k i [2]. 3.1 Thực nghiệm với bản rõ với các kí tự chữ a đến z với các khóa ma trận 2x2 và 3x3 Hình 3 Chuyển đổi ma trận 2x2 Hình 1 Chuyển đổi ma trận 2x2 Hình 4 Chuyển đổi ma trận 3x3 với bản rõ z26 3.2 Thực nghiệm với bản rõ với các kí tự chữ và các số với các khóa ma trận 2x2 và 3x3 Hình 2 Chuyển đổi ma trận 3x3 3.2 Thực nghiệm với bản rõ với các kí tự chữ a đến z và các số từ 0 đến 9 với các khóa ma trận 2x2 và 3x3 ISBN 978-604-80-5958-3 224
  5. Hội nghị Quốc gia lần thứ 24 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2021) hội phát triển không ngừng. Để đáp ứng được các nhu cầu bảo mật và việc áp dụng các kỹ thuật mã hóa, các nhà khoa học đã nỗ lực nghiên cứu, đề xuất, cải tiến các thuật toán mã hóa để phù hợp với tình hình mới và giải quyết được những bài toán mới phát sinh trong thực tiễn. Trong bài báo này, chúng tôi đề xuất và tiến hành thực nghiệm thuật toán Hill kết hợp với mã OTP để mã hóa và giải mã thông điệp dựa trên ngôn ngữ lập trình Python. Đề xuất của bài báo nhằm giải quyết khó khăn trong việc chọn khóa có tính khả nghịch cho thuật toán mã hóa Hill. Đây là thuật toán dựa trên sự kết hợp của mã dòng và mã khối, sử dụng hàm băm SHA256 để sinh khóa OTP ban đầu. Thuật toán AES để sinh khóa OTP tiếp theo cho mỗi khối dữ liệu 256 bit. Thuật toán này sẽ tăng tốc độ mã hóa và giải mã, tăng tính bảo mật, giảm độ dài khóa bí mật, đồng thời thuật toán cònxác thực được nội dung của thông điệp và bảo mật được khóa ban đầu nhờ hệ mật khóa công khai RSA và thuật toán Hill. TÀI LIỆU THAM KHẢO Hình 5 Chuyển đổi ma trận 2x2 [1] Nguyễn Đức Toàn, Nguyễn Văn Tảo, (2016), “Thiết kế các bộ tạo dãy giả ngẫu nhiên có chu kỳ cực đại”, Tạp chí Khoa học và Công nghệ, Chuyên san Khoa học Tự nhiên Kỹ thuật – Đại học Thái Nguyên, ISSN 1859-2171, Tập 159, Số 14, tr 115 – 118. [2] Nguyễn Đức Toàn, Bùi Thế Hồng, Nguyễn Văn Tảo, Trần Mạnh Hường, (2016), “Mã hóa và xác thực thông điệp bằng thuật toán mật mã với khóa sử dụng một lần”, Kỷ yếu Hội nghị Khoa học Công nghệ Quốc gia lần thứ IX (FAIR’9), Nhà xuất bản Khoa học Tự nhiên và Công nghệ, ISBN 978-604-913-472- 2, tr 284 -289. [3] Nguyễn Đức Toàn, Nguyễn Văn Tảo, (2016), “Kết hợp phương thức xử lý mã OTP và mã khối để mã hóa và giải mã thông điệp”, Hội thảo toàn quốc về Điện tử, Truyền thông và Công nghệ thông tin REV/ECIT 2016, Nhà xuất bản Công thương, Chủ đề: 4-1, tr 191 – 196. [4] Ioannis Tsamardinos, Laura E. Brown,(2006), “The Max-Min Hill-Climbing Bayesian Network Structure Learning Algorithm”, Machine Learning volume 65, pages31–78. [5] N.J.Croft and M.S.Olivier (2005). “Using an approximated One-Time Pad to Secure ShortMessaging service(SMS)”. SATNAC 2005 Proceedings. [6]. 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,February 2011. [7] SharadPatil , Ajay Kumar (2010). "Effective Secure Encryption Scheme(One Time Pad) using Complement Approach". International Journal of Computer Science & Communication, Hình 6 Chuyển đổi ma trận 3x3 Vol.1,No.1,January-June 2010, pp.229-233. [8]. SharadPatil ,ManojDevare , Ajay Kumar (2007). "Modified One Time Pad Data Security Scheme: Random Key Generation IV. KẾT LUẬN Approach". International Journal of Computer Science and Sự phát triển vượt bậc của công nghệ thông tin và Security (IJCSS) ,Volume (3): Issue(2). truyền thông đã đem lại rất nhiều ứng dụng trong thực tế và thu được những kết quả hết sức to lớn thúc đẩy xã ISBN 978-604-80-5958-3 225
nguon tai.lieu . vn