Tiêu chuẩn Quốc gia TCVN 7635:2007 áp dụng cho các chữ ký số sử dụng trong hoạt động giao dịch điện tử của mọi tổ chức, công dân Việt Nam và tổ chức, công dân nước ngoài có quan hệ kinh tế - xã hội với tổ chức, công dân Việt Nam.
TIÊU CHUẨN QUỐC GIA TCVN 7635 : 2007 KỸ THUẬT MẬT MÃ - CHỮ KÝ SỐ Cryptography technique - Digital signature Lời nói đầu TCVN 7635:2007 Tiểu Ban kỹ thuật tiêu chuẩn TCVN/JTC 1/SC 27 “Các kỹ thuật mật mã” biên soạn sở dự thảo đề nghị Ban yếu Chính phủ, Tổng cục Tiêu chuẩn Đo lường Chất lượng đề nghị, Bộ Khoa học Công nghệ công bố Lời giới thiệu Trong giao dịch giấy tờ truyền thống chữ ký tay phương tiện để xác thực nguồn gốc nội dung văn Chữ ký tay có khả chống chối bỏ, nghĩa người gửi sau ký vào văn khơng thể chối bỏ chữ ký văn sau ký khơng thể thay đổi nội dung Đối với văn điện tử chữ ký tay khơng đảm bảo tính nói trên, chữ ký số điện tử (gọi tắt chữ ký số) sử dụng để thay vai trò chữ ký tay Chữ ký số biểu diễn dạng chuỗi số nhị phân Nó tạo sở sử dụng tập hợp quy tắc tập hợp tham số để xác định danh tính người gửi (người ký) kiểm tra tính tồn vẹn liệu Phương tiện để thực chữ ký số kỹ thuật mật mã Mỗi chữ ký số thể lược đồ xác định gọi lược đồ chữ ký số Lược đồ bao gồm ba thành tố: thuật toán chữ ký số, thuật toán hàm băm thuật toán tạo số giả ngẫu nhiên Thuật toán chữ ký số gồm thuật toán ký thuật toán kiểm tra Người gửi sử dụng thuật tốn ký khóa bí mật để tạo chữ ký số, người nhận (người kiểm tra) sử dụng thuật tốn kiểm tra khóa cơng khai tương ứng để kiểm tra đồng thời tính chân thực thơng điệp liệu tính chân thực chữ ký số người gửi tạo Mỗi người sở hữu cặp khóa bao gồm khóa cơng khai (giả thiết cơng bố cách cơng khai) khóa bí mật (được giữ bí mật tuyệt đối) Bất kỳ kiểm tra chữ ký số người cách sử dụng khóa cơng khai người Quá trình tạo chữ ký số thực người sở hữu khóa bí mật Thuật tốn hàm băm biến đổi toán học dùng để thu gọn văn ban đầu (còn gọi thơng điệp liệu) nhằm tạo tóm lược thơng điệp Bản tóm lược đầu vào thuật toán tạo chữ ký số Chữ ký số đính kèm với thơng điệp liệu ký Trong trình kiểm tra chữ ký số, thuật toán hàm băm áp dụng q trình tạo chữ ký Thuật tốn tạo số giả ngẫu nhiên dùng để tạo số giả ngẫu nhiên (độc lập, đồng xác suất) làm tham số lược đồ chữ ký số (xem Hình 1) Tiêu chuẩn quy định thuật tốn Thuật tốn chữ ký số mơ tả Tiêu chuẩn xây dựng dựa tài liệu: Tiêu chuẩn mật mã RSA: PKC#1 v2.1: RSA Cryptography Standard, ban hành ngày 14 tháng năm 2002 Thuật toán hàm băm mô tả Tiêu chuẩn xây dựng dựa tài liệu: Tiêu chuẩn hàm băm an toàn (Mỹ): FIPS 180-2: Secure Hash Standard, ban hành ngày tháng năm 2001 Hình - Mơ tả q trình tạo kiểm tra chữ ký số KỸ THUẬT MẬT MÃ - CHỮ KÝ SỐ Cryptography technique - Digital signature Phạm vi áp dụng Tiêu chuẩn áp dụng cho chữ ký số sử dụng hoạt động giao dịch điện tử tổ chức, công dân Việt Nam tổ chức, cơng dân nước ngồi có quan hệ kinh tế - xã hội với tổ chức, công dân Việt Nam Tài liệu viện dẫn FIPS 197: Advanced Encryption Standard (Tiêu chuẩn Mã hóa tiên tiến Mỹ), ban hành ngày 26 tháng 11 năm 2001 Thuật ngữ định nghĩa, thuật ngữ viết tắt 3.1 Thuật ngữ định nghĩa Tiêu chuẩn sử dụng thuật ngữ định nghĩa sau đây: 3.1.1 Thông điệp liệu (data message) Dữ liệu ký Trong q trình kiểm tra chữ ký liệu ký Trong tiêu chuẩn này, thông điệp liệu thường gọi tắt thông điệp 3.1.2 Chữ ký số (digital signature) Một chuỗi số, kết phép biến đổi mật mã thông điệp liệu nhằm cung cấp phương tiện để kiểm tra tính xác thực nguồn gốc thơng điệp liệu, tính tồn vẹn liệu tính chối bỏ người ký 3.1.3 Hàm băm (hash function) Một thuật tốn chuyển đổi thơng điệp biểu diễn dạng bit có độ dài thành chuỗi bit có độ dài cố định Chuỗi bit có độ dài cố định gọi “giá trị băm”, “mã băm”, hay đơn giản “tóm lược” thơng điệp đầu vào Các thuật tốn băm mật mã thiết kế cho thỏa mãn tính chất sau: tính chiều hay tính kháng tiền ảnh: Khơng thể tìm thời gian cho phép thơng điệp có giá trị băm cho trước tính kháng tiền ảnh thứ hai: Cho trước thơng điệp M1, khơng thể tìm thời gian cho phép thông điệp M2 khác M1 cho giá trị băm M1 M2 nhau: tính kháng xung đột: Khơng thể tìm hai chuỗi bit khác có giá trị băm 3.1.4 Quá trình tạo chữ ký số (digital signature generation) Q trình sử dụng thuật tốn chữ ký số khóa bí mật để tạo chữ ký số cho thơng điệp 3.1.5 Q trình kiểm tra chữ ký số (digital signature verification) Q trình dùng thuật tốn chữ ký số khóa cơng khai để kiểm tra chữ ký số thông điệp 3.1.6 Bộ tạo số giả ngẫu nhiên (pseudorandom number generator) Thiết bị hay thuật toán dùng để tạo dãy số giả ngẫu nhiên xuất cách độc lập thống kê đồng xác suất 3.2 Từ viết tắt ASE Tiêu chuẩn mã hóa tiên tiến (Advanced Encryption Standard) EM SA Phương pháp định dạng sử dụng thuật toán chữ ký số kèm phụ lục (Encoding Method for Signatures with Appendix) FIPS Tiêu chuẩn xử lý thông tin Liên bang Mỹ (Federal Information Processing Standard) ban hành Viện Tiêu chuẩn Công nghệ Quốc gia Mỹ (National Institute of Standard and Technology-NIST) GCD Ước số chung lớn (Greatest Common Divisor) hexa Biểu diễn theo hệ số 16 I2OSP Hàm sở chuyển đổi từ dạng số nguyên sang chuỗi octet (Integer-to-Octet-String Primitive) LCM Bội số chung nhỏ (Least Common Multiplier) MGF Hàm tạo mặt nạ (Mask generation function) octet Bộ bit (còn hiểu byte), xem ký tự hệ đếm số 256 biểu diễn dạng cặp chữ số hệ đếm số 16 (hexa) OS2IP Hàm sở chuyển đổi từ chuỗi octet sang số ngun (Octet-String-to-IntegerPrimitive) PKCS Tiêu chuẩn mật mã khóa cơng khai (Puplic Key Cryptography Standard) Phòng thí nghiệm RSA (Mỹ) ban hành PSS Lược đồ ký xác suất (Probabilistic Signature Scheme) RSA Tên hệ mã ba nhà toán học Rivest, Shamir Adleman sáng tạo RSAVP Phép toán sở phục vụ cho kiểm tra chữ ký RSA RSASP Phép toán ký RSA sở RSASSA Lược đồ ký RSA kèm phụ lục (RSA Signature Scheme with Appendix) SHA Thuật tốn băm an tồn (Secure Hash Algorithm) Word Từ (32 bit) Khái quát 4.1 Tiêu chuẩn quy định thành phần cần thiết cho lược đồ chữ ký số Thành phần thứ thuật tốn chữ ký số RSA-PSS mơ tả Phần Thành phần thứ thuật toán hàm băm SHA-256 mô tả Phần thành phần cuối thuật toán số giả ngẫu nhiên dùng AES-128 mô tả Phần Những tiêu chuẩn tham số sử dụng thuật toán chữ ký số RSA-PSS đề cập tới Phần 4.2 Chữ ký số dạng chữ ký điện tử sử dụng để xác minh người ký thơng điệp tính ngun vẹn 4.3 Thuật toán chữ ký số thuật toán cho phép người ký tạo chữ ký số liệu cho phép người kiểm tra xác minh tính xác thực chữ ký Mỗi người có cặp khóa bao gồm khóa bí mật khóa cơng khai Khóa bí mật sử dụng q trình tạo chữ ký khóa cơng khai sử dụng q trình kiểm tra chữ ký Trong trình tạo kiểm tra chữ ký, thông điệp M (dạng liệu) thu gọn nhờ áp dụng thuật toán băm an tồn (SHA-256) Một người khơng biết khóa bí mật người ký thơng điệp khơng thể tạo chữ ký Như vậy, chữ ký khơng thể bị giả mạo Khi sử dụng khóa cơng khai người ký, kiểm tra tính chân thực chữ ký số thơng điệp ký 4.4 Khi khóa cơng khai sử dụng để kiểm tra chữ ký không tương ứng với khóa bí mật dùng việc tạo chữ ký khơng thể kết luận tính chân thực chữ ký Một chế cần thiết lập để gắn kết khóa cơng khai với danh tính người giữ khóa bí mật tương ứng Cơ chế đạt nhờ chứng thực bên thứ ba tin cậy Những nội dung dịch vụ chứng thực không thuộc phạm vi tiêu chuẩn Thuật toán chữ ký số RSA-PSS Các ký hiệu Ký hiệu phép đồng dư, ví dụ: a chia cho c b (mod c) có nghĩa a b có số dư c Biểu diễn mã dạng số nguyên khoảng từ đến n-1 C Bản mã dạng chuỗi Octet d Số mũ bí mật RSA dP Nghịch đảo e theo môđun p-1 (e·dP mod (p-1)) dQ Nghịch đảo e theo môđun q-1 (e·dQ mod (q-1)) e Số mũ công khai RSA EM Thông điệp định dạng (theo EM SA), chuỗi octet (encoded message) GCD(.,.) Ước chung lớn số nguyên không âm emBits Độ dài dự kiến theo bit EM emLen Độ dài dự kiến theo octet EM hLen Độ dài đầu hàm băm theo octet k Độ dài môđun RSA (số n) theo octet K Khóa bí mật RSA LCM(., ,.) Bội số chung nhỏ danh sách số nguyên không âm m Biểu diễn thông điệp dạng số nguyên khoảng từ đến n-1 M Thông điệp dạng chuỗi octet mask Mặt nạ, đầu hàm MGF dạng chuỗi octet maskLen Độ dài dự kiến chuỗi mặt nạ theo octet MGF Hàm tạo mặt nạ mgfSeed Mầm tạo mặt nạ, chuỗi octet mLen Độ dài thông điệp M theo octet n Mơđun RSA (n, e) Khóa công khai RSA p, q Hai nhân tử nguyên tố môđun RSA (n = p·q) qlnv Là số nguyên dương nghịch đảo q theo môđun p, tức q · qlnv s Biểu diễn chữ ký dạng số nguyên n-1 S Chữ ký, dạng chuỗi octet sLen Độ dài phần phụ thêm EM SA-PSS theo octet x Số nguyên không âm X Biểu diễn x dạng chuỗi octet xLen Độ dài chủ định chuỗi octet X thu từ x (n) || mod p LCM(p-1, q-1) Toán tử nối 5.2 Thuật tốn RSA 5.2.1 Khóa cơng khai RSA Khóa cơng khai RSA bao gồm thành phần: n Môđun RSA, số nguyên dương e Số mũ công khai RSA, số nguyên dương n tích hai số nguyên tố lẻ khác p q, e số nguyên n-1 thỏa mãn điều kiện GCD(e, (n) = với (n) = LCM(p-1, q-1) Sau qui ước p lớn q 5.2.2 Khóa bí mật RSA Khóa bí mật RSA có hai dạng biểu diễn: 5.2.2.1 Dạng biểu diễn thứ gồm cặp (n, d) với: n Môđun RSA, số nguyên dương d Số mũ bí mật RSA, số nguyên dương Số mũ bí mật d số nguyên dương nhỏ (n) thỏa mãn e·d (mod (n)) 5.2.2.2 Dạng biểu diễn thứ hai (p, q, dP, dQ, qlnv), p Nhân tử thứ nhất, số nguyên dương q Nhân tử thứ hai, số nguyên dương dP Là số nguyên dương cho e · dP mod (p-1) dQ Là số nguyên dương cho e · dQ mod (q-1) qlnv Số nguyên dương nghịch đảo q theo môđun p, tức q · qlnv mod p 5.3 Các hàm sở chuyển đổi liệu 5.3.1 Hàm sở chuyển đổi liệu số nguyên sang dạng chuỗi octet I2OSP (x, xLen) Chức năng: Chuyển số nguyên không âm x thành chuỗi octet có độ dài xLen Đầu vào: x Số nguyên không âm cần chuyển đổi Đầu ra: X Chuỗi octet tương ứng có độ dài xLen Thông báo lỗi: “số nguyên lớn” Các bước: x ≥ 256xLen, cho thông báo lỗi “số nguyên lớn” dừng viết số nguyên x gồm xLen chữ số với số 256: x = xxLen-1·256xLen-1 + xxLen-2·256xLen-2 + … + x1·256 + x0 với ≤ xi < 256 (chú ý hay nhiều chữ số đầu x nhỏ 256 xLen-1) cho octet Xi giá trị nguyên xxLen-i với ≤ i ≤ xLen Cho chuỗi octet X = X1 X2… XxLen 5.3.2 Hàm sở chuyển đổi từ dạng chuỗi octet dạng số nguyên OS2IP (X) Chức năng: Chuyển chuỗi octet thành số nguyên không âm Đầu vào: X Chuỗi octet cần chuyển đổi Đầu ra: x Số nguyên không âm tương ứng Các bước: cho X1X2…XxLen octet X từ octet với octet cuối cùng, xxLen-i giá trị nguyên octet Xi với ≤ i ≤ xLen; cho x = xxLen-1·256xLen-1 + xxLen-2·256xLen-2 + … + x1·256 + x0; xuất x 5.4 Các phép toán mật mã sở 5.4.1 Phép toán sở RSASP RSASP (K, m) Đầu vào: K Khóa bí mật RSA, với K có hai dạng sau: - cặp (n, d); - năm (p, q, dP, dQ, qlnv); m Biểu diễn thông điệp, dạng số nguyên n-1 Đầu ra: s Biểu diễn chữ ký, số nguyên n-1 Thông báo lỗi: “biểu diễn thơng điệp ngồi miền hợp lệ” Giả thiết: K khóa bí mật RSA hợp lệ Các bước: biểu diễn thông điệp m không nằm n-1, cho thông báo lỗi “biểu diễn thơng điệp ngồi miền hợp lệ” dừng lại; biểu diễn chữ ký tính sau: a dạng thứ (n, d) K sử dụng s = md mod n; b dạng thứ hai (p, q, dP, dQ, qlnv) K sử dụng tiến hành sau: i Lấy s1 = mdP mod p s2 = mdQ mod q ii Đặt h = (s1 - s2)·qlnv mod p iii Đặt s = s2 + q·h c xuất s 5.4.2 Phép toán sở RSAVP RSAVP ((n, e), s) Đầu vào: (n, e) Khóa cơng khai RSA s Biểu diễn chữ ký, số nguyên n-1 Đầu ra: m Biểu diễn thông điệp, số nguyên n-1 Thông báo lỗi: “biểu diễn chữ ký miền hợp lệ” Giả thiết: Khóa cơng khai RSA (n, e) hợp lệ Các bước: biểu diễn chữ ký s không nằm n-1, cho “biểu diễn chữ ký miền hợp lệ” dừng lại; đặt m = se mod n; xuất m 5.5 Lược đồ chữ ký RSA kèm phụ lục theo PSS Các thao tác tạo chữ ký số áp dụng thao tác định khuôn dạng vào thơng điệp trước chuyển thành biểu diễn thơng điệp dạng số ngun Phép tốn sở RSASP áp dụng vào biểu diễn thông điệp để tạo chữ ký số Đảo ngược trình này, thao tác kiểm tra chữ ký áp dụng phép toán sở RSAVP vào chữ ký để khôi phục biểu diễn thông điệp, sau chuyển thành thơng điệp định dạng dạng chuỗi octet Thao tác kiểm tra áp dụng vào thông điệp ban đầu thông điệp định dạng để xác định xem chúng có tương ứng với hay không 5.5.1 Thao tác tạo chữ ký RSASSA-PSS-SIGN(K, M) Đầu vào: K Khóa bí mật RSA người ký M Thông điệp ký, chuỗi octet Đầu ra: S Chữ ký, chuỗi octet có độ dài k, với k độ dài môđun RSA theo octet Thông báo lỗi: “văn dài”, “lỗi định dạng” Các bước: mã hóa EMSA-PSS: Áp dụng thao tác EMSA-PSS-ENCODE (được giới thiệu phần sau) vào văn M để tạo thông điệp định dạng EM có độ dài (modBits-1)/8 octet cho độ dài bit số nguyên OS2IP (EM) nhiều modBits-1, với modBits độ dài theo bit số n (mođun RSA): EM = EMSA-PSS-ENCODE (M, modBits-1) Chú ý độ dài octet EM k - modBits-1 chia hết cho k modBits-1 không chia hết cho Nếu hàm EMSA-PSS-ENCODE cho thông báo lỗi “văn q dài” RSASSA-PSS-SIGN cho thơng báo lỗi “văn dài” dừng lại Nếu EMSA-PSS-ENCODE cho thơng báo “lỗi định dạng” RSASSA-PSS-SIGN cho thông báo “lỗi định dạng” dừng lại Chữ ký RSA: a chuyển thông điệp định dạng (chuỗi octet) EM thành biểu diễn thông điệp dạng số nguyên m; m = OS2IP (EM) b áp dụng phép tốn sở RSASP với K khóa bí mật RSA biểu diễn thơng điệp m để tạo biểu diễn chữ ký số nguyên s: s = RSASP(K, m); c chuyển chữ ký s dạng số nguyên thành chữ ký S dạng chuỗi octet có độ dài k: S = I2OSP (s, k) xuất chữ ký S 5.5.2 Thao tác kiểm tra chữ ký RSASSA-PSS-VERIFY((n, e), M, S) Đầu vào: Đầu ra: (n, e) Khóa cơng khai RSA người ký M Thơng điệp mà chữ ký cần kiểm tra, chuỗi octet S Chữ ký kiểm tra, chuỗi octet có độ dài k, với k độ dài theo octet số n, môđun RSA “chữ ký hợp lệ” “chữ ký không hợp lệ” Các bước: kiểm tra độ dài: Nếu độ dài chữ ký S không k octet, cho thông báo lỗi “chữ ký không hợp lệ” dừng; kiểm tra chữ ký RS; a chuyển chữ ký S thành biểu diễn chữ ký dạng số nguyên s; s = OS2IP (S) b áp dụng phép toán sở RSAVP với khóa cơng khai RSA (n, e) biểu diễn chữ ký s để tạo m số nguyên biểu diễn thông điệp; m = RSAVP ((n, e), s) c chuyển biểu diễn thông điệp m thành thông điệp định dạng EM có độ dài emLen = (modBits-1/8 octet, với modBits độ dài theo bit số n (mođun RSA): EM = I2OSP (m, emLen) Chú ý emLen k-1 modBits-1 chia hết cho k modBits-1 không chia hết cho Nếu I2OSP cho thông báo lỗi “số ngun q lớn” RSASSA-PSS-VERIFY cho thơng báo lỗi “chữ ký không hợp lệ” dừng lại kiểm tra EMSA-PSS: Áp dụng thao tác kiểm tra EMSA-PSS-VERIFY (sẽ mô tả phần 5.6 đây) vào thông điệp M thông điệp định dạng EM để xác định xem chúng có tương ứng với hay không; Result = EMSA-PSS-VERIFY (M, EM, modBits-1) kết (Result) “phù hợp” cho “chữ ký hợp lệ” Ngược lại cho “chữ ký không hợp lệ” 5.6 Phương pháp định dạng cho chữ ký kèm phụ lục theo PSS (EMSA-PSS) 5.6.1 Thao tác định dạng Phương pháp định dạng tham số hóa cách chọn: - hàm băm (cố định với khóa RSA cho); - hàm tạo mặt nạ (cố định với khóa RSA cho) và; - độ dài phần phụ thêm (có thể thay đổi với khóa RSA cho) Các hàm băm hàm tạo mặt nạ đề xuất mô tả phần 5.6.3 Hình minh họa thao tác định dạng Hình - Minh họa thao tác định dạng Cơng thức để tính EM: ((PD2||r) MGF(h(PD1||h(M)||r))) || h(PD1||h(M)||r)) || 0xbc EMSA-PSS-ENCODE (M, emBits) Lựa chọn: Đầu vào: h Hàm băm (độ dài đầu theo octet hLen) MGF Hàm tạo mặt nạ sLen Đô dài chủ định phần phụ thêm theo octet M Văn để mã hóa, chuỗi octet emBits độ dài tối đa theo bit số nguyên OS2IP (EM), 8hLen + 8sLen + Đầu ra: EM Văn mã, chuỗi octet có độ dài emLen = emBits/8 Thông báo lỗi: “lỗi định dạng”; “văn dài” Các bước: độ dài M lớn giới hạn đầu vào cho hàm băm (264-1 SHA-256 cho thơng báo lỗi “văn dài” dừng; lấy mHash = h(M), chuỗi octet dài hLen; emLen < hLen + sLen + 2, cho thông báo “lỗi định dạng” dừng; tạo chuỗi octet ngẫu nhiên salt có độ dài sLen; sLen = salt khơng có; đặt M’ = (0x)00 00 00 00 00 00 00 00 || mHash ||salt; lấy H = Hash(M’), chuỗi octet dài hLen; lấy PS chuỗi octet dài emLen - hLen - sLen - 2; Lấy DB = PS || 0x01 || salt; DB chuỗi octet dài emLen-hLen - 1; lấy maskedDB = DB dbMask; 10 đặt 8emLen-emBits bit bên trái octet bên trái maskedDB 0; 11 lấy EM = maskedDB ||H || 0xbc; 12 xuất EM 5.6.2 Thao tác kiểm tra EMSA-PSS-VERIFY(M, EM, emBits) Lựa chọn: Đầu vào: h Hàm băm (độ dài đầu theo octet hLen) MGF Hàm tạo mặt nạ sLen Đô dài dự kiến phần thêm theo octet M Thông điệp cần kiểm tra chữ ký, chuỗi octet EM Thông điệp định dạng, chuỗi octet có độ dài emLen = emBits/8 emBits Độ dài tối đa theo bit số nguyên OS2IP (EM), tối thiểu 8hLen + 8sLen + Đầu ra: Các bước: “phù hợp” “không phù hợp” 1 độ dài M lớn giới hạn đầu vào hàm băm (264 - octet SHA-256, đưa thơng báo “khơng phù hợp” dừng; đặt mHash = h(M), chuỗi octet có độ dài hLen; emBits < 8hLen+8sLen+9, đưa thông báo “không phù hợp” dừng; octet bên phải EM không chứa giá trị bc, đưa thông báo “không phù hợp” dừng; đặt maskedDB emLen-hLen-1 octet bên trái EM, H hLen octet tiếp theo; 8emLen-emBits bit bên trái octet bên trái maskedDB tất 0, đưa thông báo “không phù hợp” dừng; đặt dbMask = MGF(H, emLen-hLen-1); đặt DB = maskedDB dbMask; thiết lập 8emLen-emBits bit bên trái DB 0; 10 emLen-hLen-sLen-2 octet bên trái DB octet vị trí thử emLen-hLen-sLen-1 không 0x01, đưa thông báo “không phù hợp” dừng; 11 đặt salt sLen octet cuối DB; 12 đặt M’ = 00 00 00 00 00 00 00 00 || mHash || salt M’ chuỗi octet có độ dài 8+hLen+sLen với octet khởi đầu; 13 đặt H’ = h(M’), chuỗi octet có độ dài hLen; 14 H = H’, đưa thông báo “phù hợp” Ngược lại, đưa thông báo “không phù hợp” 5.6.3 Hàm tạo mặt nạ MGF dựa vào hàm băm MGF(mgfSeed, maskLen) Lựa chọn h Hàm băm (độ dài đầu theo octet hLen) Đầu vào: mgfSeed Mầm dùng để tạo mặt nạ, chuỗi octet maskLen Độ dài chủ ý theo octet mặt nạ, nhiều 232hLen Đầu ra: mask Mặt nạ, chuỗi octet có độ dài maskLen Thông báo lỗi: “mặt nạ dài” Các bước: maskLen > 232 hLen, cho thông báo lỗi “mặt nạ dài” dừng; lấy T chuỗi octet rỗng; với counter chạy từ tới maskLen/hLen -1, thực bước a chuyển counter thành chuỗi octet C có độ dài octet; C = I2OSP (counter, 4) b nối hàm mgfSeed với C, tính hàm băm chuỗi Sau nối chuỗi octet T với giá trị băm vừa thu T = T || h(mgfSeed || C) xuất maskLen octet T chuỗi octet mask Hàm băm SHA-256 6.1 Một số khái niệm thuật ngữ 6.1.1 Biến, tham số a, b, c,…, h Các biến làm việc, biến từ 32 bit sử dụng để tính tốn giá trị băm H(i) H(i) Giá trị băm thứ i H(0) giá trị băm khởi tạo H(N) giá trị băm cuối sử dụng để xác định tóm lược văn Hj(i) Từ thứ j giá trị băm thứ i, H0(i) từ bên trái giá trị băm thứ i Kt Hằng số sử dụng cho vòng lặp thứ t trình băm k Số lượng bit bổ sung cho thông điệp bước bổ sung liệu l Độ dài thông điệp (ký hiệu M) theo đơn vị bit m Số lượng bit khối thông điệp (M(i)) M M Thông điệp cần băm (i) Khối thông điệp thứ l Mj(i) Từ thứ j khối thông điệp thứ i M0(i) từ ngồi bên trái khối thơng điệp thứ l n Số lượng bit quay vòng dịch xử lý từ N Số khối thông điệp sau bổ sung T Biến tạm thời lưu trữ (32 bit) trình tính tốn Wt Từ (32 bit) thứ t chuỗi thơng điệp 6.1.2 Các ký hiệu tính tốn ^ Phép AND bit v Phép OR bit Phép XOR bit Phép bù bit + Phép cộng mođun 232 >n có nghĩa dịch x n bit sang phải (loại bỏ n bit bên phải) bổ sung n bit vào bên trái 6.1.3 Chuỗi bit số nguyên ● chữ số hexa phần tử thuộc tập {0, 1,… 9, a,… f}; ● từ chuỗi 32 bit biểu diễn dãy số hexa (8 chữ số hexa) Để chuyển đổi chuỗi bit thành dạng chuỗi hexa chuyển đổi bit thành số hexa tương ứng; ● số nguyên lớn nhỏ 264 biểu diễn từ (nếu nhỏ 232) cặp từ (nếu lớn 232) Chúng ta dùng hai từ, để biểu diễn độ dài thông điệp theo bit; ● SHA-256, khối thơng điệp gồm 512 bit, biểu diễn dạng 16 từ (32 bit) 6.1.4 Các phép tính với từ ● phép tính logic bit với từ: , , , ; ● cộng hai từ môđun 232; ● phép dịch phải SHRn(x), với x từ (32 bit) n số nguyên ≤ n < 32, định nghĩa sau; SHRn(x) = x >> n ● phép dịch vòng phải ROTRn(x), với x từ (32 bit) n số nguyên ≤ n < 32, định nghĩa sau ROTRn(x) = (x >> n) V (x