Điều 5. TỔ CHỨC THỰC HIỆN Điều 5. TỔ CHỨC THỰC HIỆN Điều 5. TỔ CHỨC THỰC HIỆN Điều 5. TỔ CHỨC THỰC HIỆN
5.1. Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã - Ban Cơ yếu Chính phủ có trách nhiệm hướng dẫn, tổ chức triển khai quản lý kỹ thuật mật mã của thuật toán mã hóa dữ liệu theo Quy chuẩn này. 5.1. Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã - Ban Cơ yếu Chính phủ có trách nhiệm hướng dẫn, tổ chức triển khai quản lý kỹ thuật mật mã của Chữ ký số theo Quy chuẩn này. 5.1. Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã - Ban Cơ yếu Chính phủ có trách nhiệm hướng dẫn, tổ chức triển khai quản lý kỹ thuật mật mã của Quản lý khóa theo Quy chuẩn này. 5.1. Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã - Ban Cơ yếu Chính phủ có trách nhiệm hướng dẫn, tổ chức triển khai quản lý kỹ thuật mật mã của Quản lý khóa theo Quy chuẩn này.
5.2. Trong trường hợp các quy định nêu tại Quy chuẩn kỹ thuật quốc gia này có sự thay đổi, bổ sung hoặc được thay thế thì thực hiện theo quy định tại văn bản mới./. PHỤ LỤC A (Quy định) Mô tả DES A.1. Mở đầu Thuật toán DES là mã khối đối xứng có thể xử lí các khối dữ liệu 64 bit, sử dụng khóa bí mật độ dài 64 bit. Mỗi bit thứ tám của khóa mật mã thường được sử dụng để kiểm tra tính chẵn lẻ và được bỏ qua. A.2. Phép mã hóa DES Phép mã hóa được chỉ ra trên Hình A.1 Bản rõ 64-bit trước hết được biến đổi qua hoán vị ban đầu IP. Sau đó khối được chia thành hai nửa L0 và R0, mỗi nửa gồm 32 bit. Tiếp đó thực hiện 16 vòng biến đổi giống nhau được gọi là hàm f, trong đó dữ liệu được kết hợp với khóa. Trong mỗi vòng, nửa phải là đầu vào của hàm f được khóa hóa, hàm này nhận đầu vào 32 bit và khóa con 48 bit Ki và cho đầu ra 32-bit. Đầu ra này tiếp đó được XOR với nửa trái để tạo ra nửa trái mới đã được biến đổi. Tại phần cuối của mỗi vòng, trừ vòng cuối cùng, hai nửa trái và phải đổi chỗ cho nhau để tạo ra Li và Ri tương ứng. Sau khi thực hiện vòng cuối cùng, hai nửa trái và phải được ghép lại với nhau và khối 64-bit nhận được lại được biến đổi qua phép hoán vị cuối IP-1 là hoán vị nghịch đảo của hoán vị ban đầu IP. Đầu ra là bản mã 64 bit. Phép mã hóa được xác định như sau (P và C là dữ liệu, Ki là khóa). (1) IP(P) = L0 || R0 (2) Với i = 1,2…,16: Li = Ri-1 Ri = Li-1 Åf(Ri-1,Ki) (3) C = IP-1(R16 || L16) A.3. Phép giải mã DES Phép giải mã cũng giống như phép mã hóa. Sự khác nhau chỉ ở chỗ, các khóa con Ki được sử dụng theo thứ tự ngược lại. A.4. Các hàm DES A.4.1. Phép hoán vị ban đầu IP Phép hóa vị ban đầu IP được chỉ ra tại Bảng A.1. Hoán vị này nhận đầu vào 64-bit và cho đầu ra 64-bit, theo đó bit thứ nhất được hoán vị thành bit thứ 58, bit thứ hai thành bit thứ 50.v.v, bit cuối cùng thành bit thứ 7. Bảng A.1 - Hoán vị khởi tạo Hình A.1 - Thủ tục mã hóa A.4.2. Hoán vị nghịch đảo IP-1 Hoán vị nghịch đảo IP-1 được chỉ ra trên Bảng A.2, nhận đầu vào 64-bit và cho đầu ra 64- bit. Đầu ra của Thuật toán nhận bit thứ 40 của khối đầu ra trước đó làm bit thứ nhất, bit thứ 8 làm bit thứ hai.v.v và bit thứ 25 của khối đầu ra trước đó làm bit cuối cùng. Bảng A.2 - Hoán vị nghịch đảo IP-1 A.4.3. Hàm f Hàm f được chỉ ra trên Hình A.2 Hàm f nhận đầu vào 32 bit R và mở rộng thành R' có độ dài 48-bit bằng cách sử dụng phép hoán vị mở rộng E. Sau đó 48-bit R' được XOR với khóa con 48-bit K, thu được dữ liệu 48- bit, dữ liệu này được viết thành 8 khối, mỗi khối 6-bit, bằng cách chọn các bit đầu vào của nó theo một thứ tự được qui định trên bảng. Các hàm được chọn duy nhất đó được gọi là các S - box, S1, S2,…,S8 nhận đầu vào là các khối 6-bit ri và cho đầu ra là các khối 4-bit Si(ri). Hàm hoán vị P cho đầu ra 32-bit R'''' từ đầu vào 32-bit R'''' bằng cách hoán vị các bit của khối đầu vào. R'''' là đầu ra của hàm f. Hàm f do đó được xác định như sau (P và C là dữ liệu, Ki là khóa ) Hình A.2 - Tính f(R,K) A.4.4. Hoán vị mở rộng E Hoán vị mở rộng E được chỉ ra trên Bảng A.3. Hoán vị E nhận đầu vào 32- bit và cho đầu ra 48-bit. Ba bit đầu tiên của E là các bit ở các vị trí 32, 1 và 2, hai bit cuối ở các vị trí 32 và 1. Bảng A.3 - Hoán vị mở rộng E A.4.5. Hoán vị P Hoán vị P được chỉ ra trên Bảng A.4. Hoán vị P nhận đầu vào 32-bit và cho đầu ra 32-bit. Đầu ra P(L) của hàm P được xác định bởi Bảng A.4, thu được từ đầu vào L bằng cách lấy bit thứ 16 của L làm bit thứ nhất của P(L), bit thứ bảy làm bit thứ hai của P(L),v.v và bit thứ 25 của L làm bit thứ 32 của P(L). Bảng A.4 - Hoán vị P A.4.6. S-box S-box được chỉ ra trên Bảng A.5. Mỗi S-box có 6- bit đầu vào và 4-bit đầu ra. Nếu S1 là hàm được xác định trên bảng và B là khối 6-bit, thì S1(B) được xác định như sau: các bit đầu tiên và cuối cùng của B được biểu diễn theo cơ số 2 là một số nằm trong khoảng từ 0 đến 3. Giả sử số đó là i. Bốn bit giữa của B được biểu diễn theo cơ số 2 là số nằm trong khoảng từ 0 đến 15. Giả sử số đó là j. Trên bảng đó là số nằm trên hàng thứ i và cột thứ j. Đó là số nằm trong khoảng từ 0 đến 15, và được biểu diễn duy nhất bởi khối 4-bit. Khối này là đầu ra S1(B) của S1 ứng với đầu vào B. Ví dụ, với đầu vào 011011, hàng được biểu diễn bởi 01 là hàng 1, cột được xác định bởi 1101 là cột 13. Nằm trên giao của hàng 1 và cột 13 là số 5, do đó đầu ra là 0101. Bảng A.5 - Các S-box A.5. Lược đồ tạo khóa DES Phần lược đồ khóa DES được chỉ ra trên Hình A.3. Lược đồ này nhận khóa 64-bit khóa KEY và cho ra 16 khóa con 48-bit K1, K2,……, K16. Trong đó Kn, với 1 ≤ n ≤ 16 là khối 48-bit trong bước (2) của thuật toán. Bởi vậy để mô tả KS chỉ cần mô tả việc tính toán của Kn từ KEY với n = 1, 2..., 16. Việc tính toán này được mô tả trên Hình A.3. Do đó để xác định đầy đủ KS, chỉ cần mô tả hai lựa chọn hoán vị, cũng giống như lược đồ chuyển dịch sang trái. Một bit trong byte 8-bit của KEY có thể được khởi động để phát hiện lỗi trong tạo khóa, phân phối và lưu trữ khóa. Các bit 8,16,..., 64 được sử dụng để bảo đảm là mỗi byte có tính chất lẻ. Lựa chọn hoán vị 1 được xác định bởi Bảng A.6 Bảng A.6 - Hoán vị khóa PC-1 Bảng trên được chia thành hai phần, phần thứ nhất xác định cách chọn các bit trong C0, phần thứ hai xác định cách chọn các bit trong D0. Các bit của KEY được đánh số từ 1 đến 64. Các bit trong C0 tương ứng là 57, 49, 41,..., 44 và 36 của KEY, còn các bit trong D0 là các bit 63, 55, 47,..,12 và 4 của KEY. Với C0 và D0 đã xác định, có thể xác định được Cn và Dn từ Cn-1 và Dn-1, tương ứng với n = 1, 2,..., 16. Điều này đạt được bằng cách tuân thủ vào lược đồ phép dịch sang trái các khối riêng lẻ sau: Số lần lặp 1 2 3 4 5 6 7 8 Số lần dịch trái 1 1 2 2 2 2 2 2 Số lần lặp 9 10 11 12 13 14 15 16 Số lần dịch trái 1 2 2 2 2 2 2 1 Bảng A.7 - Số các bit khóa được dịch chuyển của mỗi vòng Ví dụ, C3 và D3 thu được từ C2 và D2 tương ứng bằng hai dịch chuyển sang trái, và C16 và D16 thu được từ C15 và D15 tương ứng bằng một lần dịch sang trái. Trong tất cả các trường hợp, việc dịch một lần sang trái được hiểu là dịch các bit sang trái một vị trí sao cho sau một lần dịch các bit ở 28 vị trí là các bit trước đó ở vị trí 2, 3,..., 28, 1. Việc chọn hoán vị 2 được xác định trên Bảng A.8 Bảng A.8 - Hoán vị nén PC-2 Bởi vậy bit thứ nhất của Kn là bit thứ 14 của CnDn, bit thứ hai là bit thứ 17.v.v, bit thứ 47 là bit thứ 29, bit thứ 48 là bit thứ 32. Hình A.3 - Tính toán lược đồ khóa PHỤ LỤC B (Quy định) Các phép biến đổi của AES B.1. Các phép biến đổi AES B.1.1. Các phép biến đổi xác định cho AES Thuật toán AES sử dụng các phép biến đổi SubBytes(), SubBytes-1() ShiftRows(), ShiftRows-1(), MixColumns(), MixColumns-1(), AddRoundKey(), được mô tả dưới đây. B.1.2. Phép biến đổi SubBytes() Phép biến đổi SubBytes() thực hiện thay thế mỗi byte Trạng thái si,j bởi giá trị mới s'ij, bằng cách sử dụng bảng thay thế (S-box) khả nghịch. Hình B.1 minh họa tác động của phép biến đổi SubBytes() lên bảng Trạng thái Hình B.1: SubBytes() áp dụng S-box cho từng byte của Trạng thái. S-box được sử dụng trong phép biến đổi SubBytes() và được trình bày theo hệ Hexa trên Bảng B.1 Bảng B.1: Các S-box của AES Ví dụ, nếu s1,1 = {53} thì giá trị thay thế là giá trị nằm trên giao của hàng có chỉ số ‘5’ và cột có chỉ số ‘3’ của Bảng 5, điều này cho kết quả là s’1,1 có giá trị {ed}. B.1.3. Phép biến đổi SubBytes-1() SubBytes-1() là phép biến đổi nghịch đảo của phép biến đổi SubBytes(), trong đó S-box nghịch đảo được áp dụng cho từng byte của Trạng thái. Điều này đạt được bằng cách áp dụng phép biến đổi nghịch đảo được mô tả tại Điều 5.2.4.2 S-box nghịch đảo được sử dụng trong phép biến đổi SubBytes-1() được mô tả trong Bảng B.2. Bảng B.2: S-box nghịch đảo AES B.1.4. Phép biến đổi ShiftRows() Trong phép biến đổi ShiftRows(), các byte ở ba dòng cuối của Trạng thái được dịch vòng lên một số lượng bytes khác nhau (offsets). Hàng thứ nhất, hàng 0 được giữ nguyên (không dịch chuyển). Cụ thể, phép biến đổi ShiftRows() được thực hiện như sau: Theo đó các byte dịch sẽ chuyển sang trái (nghĩa là các giá trị thấp hơn của c trong một hàng cho trước), trong khi các byte phía trái ngoài cùng dịch vòng sang các vị trí phía phải ngoài cùng của hàng (tức là những giá trị cao hơn của c trong hàng cho trước). Hình B.2 mô tả phép biến đổi ShiftRows(), trong đó các byte được dịch vòng sang trái. B.1.5. Phép biến đổi ShiftRows-1() ShiftRows-1() là phép nghịch đảo của phép biến đổi ShiftRows(). Các bytes trong ba dòng cuối của Trạng thái được dịch vòng lên một số lượng bytes khác nhau. Dòng thứ nhất, dòng 0 không dịch chuyển. Ba dòng dưới cùng được dịch vòng lên 4 - r bytes, ở đây r là số thứ tự vòng. Cụ thể, phép biến đổi ShiftRows-1() được thực hiện như sau: Hình B.3. mô tả phép biến đổi ShiftRows-1() Hình B.2: ShiftRows() dịch vòng ba dòng cuối của Trạng thái Hình B.3: ShiftRows-1() dịch vòng ba dòng cuối của Trạng thái. B.1.6. Phép biến đổi MixColumns() Phép biến đổi MixColumns() thao tác trên Trạng thái, thay mỗi cột bằng cột khác. Các cột của Trạng thái được xem như những đa thức trên trường GF(28) và được nhân modulo x4 + 1 với đa thức cố định a(x) cho trước, a(x) = {03}x3 + {01}x2 + {01}x + {02}. Phép nhân này có thể viết dưới dạng phép nhân ma trận: Kết quả của phép nhân trên là bốn byte trong cột được thay thế như sau: Toán tử Å trong các biểu thức trên biểu thì phép cộng trong trường GF(28), với phép cộng bit XOR. Phép nhân được thực hiện theo modulo của đa thức bất khả qui của trường. Trong trường hợp thuật toán AES đó là đa thức x9 + x4 + x3 + x + 1. Hình B.4 mô tả phép biến đổi MixColumns(). Hình B.4 - MixColumns() thao tác trên Trạng thái, thay cột bằng cột khác B.1.7. Phép biến đổi MixColumns-1() MixColumns-1() là phép biến đổi nghịch đảo của phép biến đổi MixColumns(). MixColumns-1() thao tác trên Trạng thái, thay mỗi cột bằng cột khác. Phép biến đổi này có thể biểu diễn dưới dạng phép nhân ma trận, ở đấy mỗi byte được coi như một phần tử của trường hữu hạn GF(28): Kết quả của phép nhân là bốn byte trong mỗi cột được thay thế như sau: B.1.8. Phép biến đổi AddRoundKey() Trong phép biến đổi AddRoundKey(), khóa vòng được cộng vào Trạng thái bằng phép cộng bit đơn giản XOR. Mỗi khóa vòng gồm bốn từ (128 bit) lấy từ lược đồ khóa (được mô tả tại 5.2.5). Bốn từ này được cộng vào cột Trạng thái như sau: Hoạt động của phép biến đổi AddRoundKey(), được minh họa trên Hình B.5. Địa chỉ byte trong các từ của lược đồ khóa được mô tả trong Điều 2.2.2.2. Hình B.5: AddRoundKey() cộng bit XOR từng cột của Trạng thái với mỗi từ lấy từ lược đồ khóa QCVN 5 : 2016/BQP QUY CHUẨN KỸ THUẬT QUỐC GIA VỀ CHỮ KÝ SỐ SỬ DỤNG TRONG LĨNH VỰC NGÂN HÀNG National technical regulation on digital signature used in banking MỤC LỤC Lời nói đầu 5.2. Trong trường hợp các quy định nêu tại Quy chuẩn kỹ thuật quốc gia này có sự thay đổi, bổ sung hoặc được thay thế thì thực hiện theo quy định tại văn bản mới./. QCVN 6 : 2016/BQP QUY CHUẨN KỸ THUẬT QUỐC GIA VỀ QUẢN LÝ KHÓA SỬ DỤNG TRONG LĨNH VỰC NGÂN HÀNG National technical regulation on key management used in banking MỤC LỤC Lời nói đầu 5.2. Trong trường hợp các quy định nêu tại Quy chuẩn kỹ thuật quốc gia này có sự thay đổi, bổ sung hoặc được thay thế thì thực hiện theo quy định tại văn bản mới./. 5.2. Trong trường hợp các quy định nêu tại Quy chuẩn kỹ thuật quốc gia này có sự thay đổi, bổ sung hoặc được thay thế thì thực hiện theo quy định tại văn bản mới./.
1. QUY ĐỊNH CHUNG 1. QUY ĐỊNH CHUNG
1.1. Phạm vi điều chỉnh 1.1. Phạm vi điều chỉnh
1.2. Đối tượng áp dụng 1.2. Đối tượng áp dụng
1.3. Tài liệu viện dẫn 1.3. Tài liệu viện dẫn
1.4. Giải thích từ ngữ 1.4. Giải thích từ ngữ
1.5. Các ký hiệu 1.5. Các ký hiệu
2. QUY ĐỊNH KỸ THUẬT 2. QUY ĐỊNH KỸ THUẬT
2.1. Chữ ký số 2.1.1. Quy định kỹ thuật 2.1.2. Chữ ký số RSA-PSS 2.1.3. Chữ ký số ECDSA 2.1.4. Chữ ký số DSA 2.1.5. Chữ ký số RSASSA-PKCS1-v1_5 2.1. Các yêu cầu đối với giao thức thỏa thuận và vận chuyển khóa
2.2. Hàm băm 2.2. Giao thức thỏa thuận khóa sử dụng kỹ thuật mật mã phi đối xứng trên trường hữu hạn
3. QUY ĐỊNH VỀ QUẢN LÝ 3. QUY ĐỊNH VỀ QUẢN LÝ
4. TRÁCH NHIỆM CỦA TỔ CHỨC, CÁ NHÂN 4. TRÁCH NHIỆM CỦA TỔ CHỨC, CÁ NHÂN
5. TỔ CHỨC THỰC HIỆN Lời nói đầu QCVN 5 : 2016/BQP do Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã - Ban Cơ yếu Chính phủ biên soạn, Ban Cơ yếu Chính phủ trình duyệt, Bộ Khoa học và Công nghệ thẩm định và được ban hành theo Thông tư số 161/2016/TT-BQP ngày 21 tháng 10 năm 2016 của Bộ trưởng Bộ Quốc phòng. QUY CHUẨN KỸ THUẬT QUỐC GIA VỀ CHỮ KÝ SỐ SỬ DỤNG TRONG LĨNH VỰC NGÂN HÀNG National technical regulation on digital signature used in banking 5. TỔ CHỨC THỰC HIỆN Lời nói đầu QCVN 6 : 2016/BQP do Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã - Ban Cơ yếu Chính phủ biên soạn, Ban Cơ yếu Chính phủ trình duyệt, Bộ Khoa học và Công nghệ thẩm định và được ban hành theo Thông tư số 161/2016/TT-BQP ngày 21 tháng 10 năm 2016 của Bộ trưởng Bộ Quốc phòng. QUY CHUẨN KỸ THUẬT QUỐC GIA VỀ QUẢN LÝ KHÓA SỬ DỤNG TRONG LĨNH VỰC NGÂN HÀNG National technical regulation on key management used in banking
2.3. Giao thức thỏa thuận khóa sử dụng mật mã trên đường cong elliptic 2.3.1. Giao thức DH 2.3.2. Thỏa thuận khóa MQV
2.4. Hàm dẫn xuất khóa KDF 2.4.1. Hàm dẫn khóa 1 2.4.2. Hàm dẫn xuất khóa 2
2.5. Giao thức vận chuyển khóa bí mật
2.6. Giao thức vận chuyển khóa công khai 2.6.1. Giao thức vận chuyển khóa công khai không sử dụng bên thứ ba tin cậy 2.6.2. Giao thức vận chuyển khóa công khai sử dụng bên thứ ba tin cậy
2.7. Quy định kỹ thuật cho các tham số 2.7.1. Quy định về nguồn ngẫu nhiên 2.7.2. Quy định đối với tham số RSA 2.7.3. Hệ mật dựa trên Logarit rời rạc DL 2.7.4. Hệ mật ECC 2.7.5. Độ an toàn theo bit quy đổi giữa RSA, DL và ECC