Các bƣớc giải quyết bài toán nhƣ sau:
- Bên A Thủy vân số vào nội dung hợp đồng (chẳng hạn có thể Thủy vân vào từng dấu cách trong bản hợp đồng mỗi dấu cách chỉ giấu được 1 bit). Cụ thể:
Muốn giấu chữ P H E O vào các dấu cách trong bản hợp đồng thì trong mã nhị phân các chữ này sẽ tương ứng với mã sau:
01010000 P 01001000 H 01000101 E 01001111 O Hợp đồng Thủy vân số, Mã hóa AES, Chữ ký không thể phủ định Đảm bảo tính toàn vẹn thông tin hợp đồng trực tuyến Đảm bảo tính xác thực Chống chối bỏ hợp đồng giao dịch Đàm phán
- Bên A sẽ sử dụng hệ mã hóa AES để mã hóa hợp đồng và chuyển cho bên B. - Bên B giải mã hợp đồng (AES) và kiểm tra xem có phải là hợp đồng của bên A gửi không? (Kiểm tra bằng tách Thủy vân).
- Nếu bên B thấy hợp đồng hợp lý thì hai bên thỏa thuận ký kết.
- Ký hợp đồng bằng chữ ký không thể phủ định để chống chối bỏ hợp đồng giao dịch.
2.2.1. Bảo đảm tính toàn vẹn thông tin hợp đồng trực tuyến
Bài toán:
Trong thỏa thuận hợp đồng trực tuyến giữa A và B về cung cấp hay đặt mua một loại mặt hàng hay dịch vụ nào đó, giả sử rằng A là người soạn hợp đồng và gửi đến B xem xét và thỏa thuận hợp đồng, sau khi kiểm tra nội dung nếu B đồng ý với các điều khoản của hợp đồng thì B sẽ ký lên hợp đồng đó. Vấn đề đặt ra là liệu có một kẻ thứ ba trái phép nào đó đã xem trộm và sửa bản hợp đồng đó, nội dung bản hợp đồng mà B nhận được liệu có đúng với nội dung mà A đã soạn thảo hay không?
Khi B nhận được hợp đồng từ A, giả sử bản hợp đồng không bị sửa đổi trên đường truyền, B đồng ý với các điều khoản trong bản hợp đồng và ký chấp nhận hợp đồng, hay nếu B không đồng ý với tất cả các điều khoản trong hợp đồng thì B bổ sung một số điều khoản để thỏa thuận lại và gửi lại cho A. Trong quá trình bản hợp đồng đã được B gửi về A, liệu bản hợp đồng đó có đúng như bản hợp đồng mà B đã gửi hay đã bị sửa đổi, bị xâm phạm tính toàn vẹn thông tin của bản hợp đồng này.
Giải pháp:
Do vậy, để chống lại sự tấn công hay giả mạo thì cần phải làm thế nào cho văn bản khi được gửi đi sẽ “không được nhìn thấy” hoặc có xâm nhập được vào văn bản thì cũng không thể giả mạo. Xuất phát từ nhu cầu đó công nghệ mã hóa và chữ ký số ra đời để giải quyết bài toán bảo mật khi trao đổi thông tin.
Để đảm bảo tính toàn vẹn của bản hợp đồng trực tuyến trong khi chúng được truyền đi trên mạng trước hết ta cần một kênh truyền an toàn, với các phương pháp đảm bảo tính toàn vẹn trong giao dịch nói chung, một kỹ thuật đặc trưng quan trọng để đảm bảo tính toàn vẹn hợp đồng giao dịch là dùng chữ ký số và chứng chỉ điện tử.
Khi nội dung của bản hợp đồng bị thay đổi, thì chữ ký trên bản hợp đồng đó cũng phải thay đổi theo. Chữ ký điện tử nhằm đảm bảo tính toàn vẹn, duy nhất và không bị sửa đổi dữ liệu gốc bởi người khác. Chữ ký là bằng chứng xác thực người gửi chính là tác giả của thông điệp mà không phải là một ai khác. Không những thế, khi chữ ký điện tử được gắn với thông điệp điện tử thì đảm bảo rằng thông tin trên
đường chuyển đi sẽ không bị thay đổi. Mọi sự thay đổi dù nhỏ nhất sẽ đều bị phát hiện dễ dàng.
Cụ thể, để đảm bảo tính toàn vẹn thông tin hợp đồng trực tuyến thì tác giả đã sử dụng hệ mã hóa AES như sau:
Input (Đầu vào), Output (Đầu ra) của hệ mã hóa AES:
Đầu vào và đầu ra của chuẩn mã hóa tiên tiến (AES) đều là các dãy 128 bit, còn gọi là các khối (block), độ dài của mỗi khối này là số bit dữ liệu mà nó chứa. Khóa của chuẩn mã hóa tiên tiến là một dãy có độ dài 128, 192 hoặc 256 bit. Chuẩn mã hóa dữ liệu tiên tiến không làm việc với các giá trị đầu vào, đầu ra, khóa có các đô ̣dài khác (mặc dù thuật toán cơ sở của nó cho phép điều này). Các bit của đầu vào, đầu ra, khóa của hê ̣mã được đánh số từ 0.
Trạng thái (State):
Các trạng thái bên trong của AES được thực hiện trên một mảng hai chiều và các byte được gọi là trạng thái. Một trạng thái gồm có 4 hàng các byte trong đó mỗi hàng có Nb byte (Nb là kích thước của khối chia cho 32). Mảng trạng thái ký hiệu là s trong đó mỗi byte của mảng có hai chỉ số là hàng r và cột c (0<=r, c<=4).
Tại thời điểm bắt đầu input của thuật toán – mảng byte in0, in1,...in15 được copy vào mảng trạng thái theo quy tắc được minh họa bằng hình vẽ.
Bảng 3: Các trạng thái của AES
Trong đó các giá trị của mảng s và mảng output được tính như sau: s[r,c]=in[r+4c] với mọi 0<=r, c<4
out[r+4c]=s[c,r] với mọi 0<=r, c<4 Biểu diễn trạng thái
Bốn cột của mảng trạng thái của thuật toán tạo thành 4 word 32 bit w0, w1,...w3 được biểu diễn như sau:
w0 = s0,0 s1,0 s2,0 s3,0 w1 = s0,1 s1,1 s2,1 s3,1 w2 = s0,2 s1,2 s2,2 s3,2 w3 = s0,3 s1,3 s2,3 s3,3
Mã hóa và Giải mã AES:
Độ dài của input, output và các trạng thái (state) của chuẩn mã hóa cao cấp AES là 128 bit tương ứng vớ i giá tri ̣của Nb = 4 (là số lượng các word 32-bit và cũng là số cột của mỗi trạng thái). Khóa của AES có độ dài là 128, 192, 256 bit tương ứng với các giá trị của Nk là 4, 6, 8 và cũng là số cột của khóa mã hóa.
Tương ứng với độ dài của khóa sử dụng số vòng lặp của thuật toán Nr nhận các giá trị 10 (Nk = 4), 12 (Nk = 6) hoăc̣ 14 (Nk = 8). Chúng ta có thể minh họa qua bảng sau: Độ dài khóa (Nk từ) Độ dài khối (Nb từ) Số vòng (Nr) AES-128 4 4 10 AES-196 6 4 12 AES-256 8 4 14
Bảng 4: Độ dài khóa AES
Quá trình mã hóa và giải mã AES đều sử dụng một hàm lặp kết hợp của bốn hàm biến đổi sau:
- Biến đổi thay thế byte sử dụng một bảng thế (S-box)
- Số lần dịch của mỗi hàng dịch mảng trạng thái với là khác nhau
- Kết hợp dữ liệu của mỗi cột trong mảng trạng thái và cộng một khóa Round Key vào trạng thái z.
1. Thuật toán mã hóa AES
Thuật toán mã hóa AES [5] được thực hiện các công việc giống nhau dựa trên 4 hàm (lần lượt theo thứ tự SubBytes(), ShiftRows(), MixColumns(), AddRoundKey() trừ vòng cuối cùng bỏ qua việc thực hiện hàm MixColumns().