TCVN11367-2:2016

Tiêu chuẩn quốc gia TCVN 11367-2:2016 (ISO/IEC 18033-2:2006) về Công nghệ thông tin – Các kỹ thuật an toàn – Thuật toán mật mã – Phần 2: Mật mã phi đối xứng TIÊU CHUẨN QUỐC GIA TCVN 11367-2:2016 ISO/IEC 18033-2:2006 CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - THUẬT TOÁN MẬT MÃ - PHẦN 2: MẬT MÃ PHI ĐỐI XỨNG In f ormation technology - Security techniques - Encryption algorithms - Part 2: Asymmetr i c ciphers Lời nói đầu TCVN 11367-2:2016 hoàn toàn tương đương với ISO/IEC 18033-2:2006. TCVN 11367-2:2016 do Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã biên soạn, Ban Cơ yếu Chính phủ đề nghị, Tổng cục Tiêu chu ẩ n Đo lường Chất lượng th ẩ m định, Bộ Khoa học và Công nghệ công bố. Bộ tiêu chuẩn TCVN 11367 Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã gồm 04 phần: - TCVN 11367-1:2016 (ISO/IEC 18033-1:2015) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 1: Tổng quan. - TCVN 11367-2:2016 (ISO/IEC 18033-2:2006) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật m ã - Phần 2: Mật mã phi đối xứng. - TCVN 11367-3:2016 (ISO/IEC 18033-3:2010) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 3: Mã khối. - TCVN 11367-4:2016 (ISO/IEC 18033-4:2011) Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật m ã - Phần 4: Mã dòng. Giới thiệu T ổ chức tiêu chuẩn h ó a qu ố c tế (ISO) và Ủy ban kỹ thuật điện quốc tế (IEC) hướng tới thực tế việc tuân th ủ tiêu c huẩ n này có thể liên quan tới việc sử dụng các bằng sáng chế ISO và IEC không liên quan đến các bằng chứng , tính hợp lệ và phạm vi áp dụng của các bản quyền sáng chế này. Người sở hữu b ả n quyền sáng chế phải tự đảm bảo ISO và IEC rằng họ sẵn sàng đàm phán giấy phép theo các điều khoản và không phân biệt một cách hợp lý và các điều kiện với người yêu cầu trên toàn thế giới. Trong khía cạnh này, tuyên bố của người sáng chế phải được đăng k ý với ISO và IEC. Thông tin c ó th ể tìm được từ: ISO/IEC JTC 1/SC 27 Standing Document 8 (SDH) “Patent In f ormation'' T à i liệu hiện hành 8 ( SD8) được công bố c ô ng khai tại: http://www.ni.din.de/sc27 Chú ý rằng khả năng một số yếu tố của tiêu chuẩn này có thể là đối tượng của bản quyền sáng chế khác với những điều đã xác định ở trên. ISO và IEC sẽ không chịu trách nhiệm xác định bất kỳ hoặc tất cả các bản quyền sáng chế như vậy. CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - THUẬT TOÁN MẬT MÃ - PH Ầ N 2: MẬT MÃ PHI Đ Ố I XỨNG In f ormation technology - Security techniques - Encryption algorithms - Part 2: Asymmetr i c ciphers 1. Phạm vi áp dụng Tiêu chuẩn này đặc tả một số mật mã phi đối xứng . Các đặc tả này quy định các giao diện chức năng và các phương pháp đúng đắn sử dụng các mật mã loại này nói chung, cũng như chính xác hóa chức năng và đ ị nh dạng bản mã cho một số mật mã phi đối xứng (mặc dù có thể chọn các hệ thống phù hợp và các định dạng khác để lưu trữ và truyền b ả n mã). Phụ lục A cung cấp cú pháp ASN.1 cho các định danh đối tượng, các khóa công khai, và các cấu trúc tham số liên kết với thuật toán được đặc tả tr ong phần này của ISO/IEC 18033. Tuy nhiên, các đặc tả này không quy định các giao thức thu được một cách tin cậy khóa công khai, để chứng minh việc s ở hữu khóa mật, hay để xác nhận khóa công khai hoặc khóa mật; xem ISO/IEC 117700-3 hướng dẫn các vấn đề quản lý khóa. Các mật mã phi đối xứng được đặc t ả trong tiêu chuẩn này (c ủ a bộ TCVN 11367 (ISO/IEC 18033)) được ch ỉ ra tại Điều 7.6. CH Ú TH Í CH Một cách vắn tắt, mật m ã phi đối xứng gồm: - ECIES-HC; PSEC-HC; ACE-HC: Hệ mật lai ghép tổng quát dựa trên mật mã Elgamal; - RSA-HC: Mật mã lai ghép dựa trên biến đổi RSA; - RSAES: L ượ c đ ồ đệm OAEP dựa tr ê n bi ế n đổi RSA; - HIME(R): Lược đồ dựa trên tính khó của b à i toán phân tích số. 2. Tài liệu viện dẫn Các tài liệu viện d ẫn sau rất cần thiết cho việc áp dụng tiêu chuẩn này. Đối với các tài liệu viện dẫn ghi năm công bố thì áp dụng phiên bản được nêu. Đối với các tài liệu viện dẫn không ghi năm công bố th ì áp dụng phiên bản mới nhất, bao gồm cả các sửa đổi, bổ sung (nếu có). ISO/IEC 9797-1:1999, In f ormation technology - Secur i ty techniques - Message Authentication Codes (MACs) - Part 1: Machanisms using a block cipher ISO/IEC 9797-2:2002, Information technology - Security techniques - Message Authentication Codes (MACs) - Part 2: Machanisms using a dedicated hash f unctions ISO/IEC 10118-2:2000, Information technology - Security techniques - Hash functions - Part 2: hash functions using an n-block ciph e r ISO/IEC 10118-3:2004, Information technology - Security techniques - Hash functions - Part 3: dedicated hash functions ISO/IEC 18033-3:2005, Information technology - Security techniques - Encryption algorithms - Part 3: blocks ciphers 3. Định nghĩa Trong tiêu chuẩn này áp dụng các thuật ngữ và định nghĩa dưới đây: CH Ú TH Í CH Trong tiêu chuẩn này, ở những nơi phù hợp các tham chiếu tiếp theo được đưa ra trong các Điều mà chứa những định nghĩa và/hoặc soạn th ả o chi tiết hơn. 3.1. Mật mã phi đối xứng (asymmetric cipher) Hệ thống dựa vào các kỹ thuật mật mã phi đối xứng, ở đó phép biến đ ổ i khóa công khai được sử dụng để mã hóa và phép biến đ ổ i khóa riêng dùng đ ể gi ả i mã. [ISO/IEC 9798-1:2010, 3.2] CHÚ TH Í CH Xem Điều 7. 3.2. Kỹ thuật mật mã phi đối xứng (asymmetric cryptigraphic technique) Kỹ thuật mật mã phi đối xứng sử dụng hai phép biến đổi liên quan đến nhau, phép biến đổi công khai (được xác định bởi khóa công khai) và biến đổi mật (được xác định bởi khóa mật). Cả hai phép biến đổi này có tính chất là cho biết phép biến đổi công khai, về mặt tính toán không thể có khả năng xác đ ị nh được phép biến đổi bí mật. [ISO/IEC 11770-1:1996] 3.3. Cặp khóa phi đối xứng (asymmetric key pair) Cặp khóa liên quan với nhau, khóa công khai và khóa bí mật, ở đây khóa công khai xác định phép biến đổi công khai, khóa bí mật xác định phép biến đổi bí mật [ISO/IEC 9798-1:1977] CHÚ THÍCH Xem Điều 7, 8.1. 3.4. Bit (bít) Một trong hai ký hiệu ‘0’ và ‘1' CHÚ THÍCH Xem Điều 5.2.1. 3.5. Xâu bit (bit string) Dãy các bit CHÚ THÍCH Xem Điều 5.2.1. 3.6. Khối (block) Xâu bit có độ dài xác định [ISO/IEC 18033-1] CHÚ THÍCH Trong phần này của ISO/IEC 18033, khối được giới hạn là xâu bộ tám (được minh họa một cách tự nhi ê n như những x â u b i t). 3.7. Mã khối (block cipher) Mã đối xứng với t í nh chất là thuật toán mã hóa thao tác trên các khối của bản rõ, nghĩa là trên xâu bit có độ dài xác định, kết quả cho ra khối bản mã [ISO/IEC 18033-1] CHÚ THÍCH 1 Xem Điều 6.4. CHÚ THÍCH 2 Trong ph ầ n này của ISO/IEC 18033, các khối của bản r õ / bản mã chỉ giới hạn là các xâu bộ tám ( được minh họa một cách tự nhiên như những xâu b it ). 3.8. Mật mã (cipher) Kỹ thuật mật mã dùng để bảo mật dữ liệu, bao gồm từ ba quá trình thành phần: thuật toán mã hóa, thuật toán giải mã, phương pháp tạo khóa [ISO/IEC 18033-1] 3.9. Bản mã (cipher text) Dữ liệu được biến đổi để che giấu nội dung thông tin trong đó [ISO/IEC 10116:1997] 3.10. Nhóm cụ thể (concrete group) Sự mô tả dưới dạng tường minh nhóm abel hữu hạn, cùng với các thuật toán để thực thi các phép toán trên nhóm và mã hóa, giải mã các phần tử nhóm dưới dạng xâu octet CHÚ THÍCH Xem Điều 10.1. 3.11 . Hàm băm mật mã (cryptographic hash function) Hàm ánh xạ các xâu bộ tám có độ dài bất k ỳ vào xâu bộ tám có độ dài cố định, sao cho bằng tính toán không thể t ì m ra mối quan hệ giữa đầu vào và đầu ra, và sao cho, cho trước một phần đầu ra, nhưng không cho trước đầu vào, bằng tính toán không thể đoán được bất kỳ bit nào của phần đầu ra c ò n lại. Yêu cầu chính xác về độ an toàn phụ thuộc vào ứng dụng. CHÚ THÍCH Xem Điều 6.1. 3.12 . Cơ chế bọc dữ liệu (data encapsulation mechanism) Cơ chế mật mã dựa trên kỹ thuật mật mã đối xứng, bảo vệ tính bí mật và tính toàn vẹn của dữ liệu CHÚ THÍCH Xem Điều 8.2. 3.13 . Giải mã (decryption) Ngược với phép mã hóa tương ứng [ISO/IEC 11770-1:1996] 3.14 . Thuật toán giải mã (decryption algorithm) Quá trình biến đổi bản mã thành bản rõ [ISO/IEC 18033-1] 3.15 . Mã hóa (encryption) Phép biến đổi khả nghịch dữ liệu bằng thuật toán mật mã để tạo ra bản mã, nghĩa là che giấu nội dung thông tin của dữ liệu [ISO/IEC 9797-1] 3.16 . Trường hữu hạn cho d ưới dạng tường minh ( explicitly given f inite field) Trường hữu hạn được biểu diễn dưới dạng tường minh, theo thuật ngữ các đặc trưng của n ó và một bảng phép nhân l à m cơ sở trên một trường nguyên tố CHÚ THÍCH Xem điều 5.3. 3.17 . Thuật toán mã hóa (encryption algorithm) Quá trình biến đổi bản rõ thành bản mã [ISO/IEC 18033-1] 3.18 . Tùy chọn mã hóa (encryption option) Tùy chọn sao cho có thể được chuyền đến thuật toán mã hóa của hệ mật phi đối xứng, hoặc của cơ chế bọc khóa, để ki ể m soát việc định dạng bản mã đầu ra CHÚ THÍCH Xem điều 7.8.1. 3.19 . Trường (field) Khái niệm toán học của trường, tức là một tập hợp các phần tử cùng với các phép toán hai ngôi l à phép cộng và phép nhân trên tập đó, sao cho thỏa mãn các tiên đề về trường 3 . 20 . Nhóm abel hữu hạn (f inite abelian group) Nhóm với tính chất là tập hợp cơ sở gồm hữu hạn phần tử và phép toán hai ngôi cơ sở trên đó có tính giao hoán 3.21. Trường hữu hạn ( f inite group) Trường với tập hợp cơ sở của nó là hữu hạn 3.22 . Nh ó m (group) Khái niệm toán học về nhóm, tức tập hợp các phần tử với phép toán nhị phân trên tập đó thỏa mãn các tiên đề thông thường về nhóm 3.23 . Hệ mật lai ghép (hybird cipher) Mật mã phi đối xứng kết hợp cả kỹ thuật mật mã phi đối xứng và đối xứng 3.24 . Khóa (key) Dãy các ký hiệu điều khiển hoạt động của phép biến đổi mật mã (ví dụ, phép mã hóa, giải mã) [ISO/IEC 11770-1:1996] 3.25 . Hàm dẫn xuất khóa (key derivation function) Hàm ánh xạ xâu bộ tám c ó độ d ài bất kỳ thành xâu bộ tám có độ dài xác định, sao cho bằng tính toán không thể tìm ra mối quan hệ giữa đầu vào và đầu ra và sao cho nếu biết một phần đầu ra, nhưng không biết đầu vào, hoàn toàn không có khả năng bằng tính toán, đoán được bất k ỳ bit nào của phần đầu ra còn lại. CHÚ THÍCH Xem Điều 6.2. 3.26 . Cơ chế bọc khóa (key encapsulation mechanism) Tương tự mật mã phi đối xứng, nhưng thuật toán mã hóa nhận đầu vào là khóa công khai, tạo ra khóa bí mật và mã hóa khóa bí mật đ ó CHÚ THÍCH Xem Điều 8.1. 3.27 . Thuật toán tạo khóa (key generation algorithm) Phương pháp tạo cặp khóa phi đối xứng CHÚ THÍCH Xem Điều 7, 8.1. 3.28 . Nhãn (label) Xâu bộ tám là đầu vào của cả thuật toán mã hóa và giải mã trong hệ mật phi đối xứng, và đầu vào của cơ chế đ ó ng gói dữ liệu. Nhãn là thông tin công khai được gắn vào bản mã theo một cách không thể thay đổi được CHÚ THÍCH Xem Điều 7, 8.2. 3.29 . Độ dài (length) Độ dài của xâu các chữ số hay biểu diễn một số nguyên Cụ thể: (1) Độ dài của xâu bit là số bit của xâu CHÚ THÍCH Xem Điều 5.2.1. (2) Độ dài của xâu bộ tám l à số lượng octet của xâu CHÚ THÍCH Xem Điều 5.2.2. (3) Độ dài của s ố nguyên không âm n là số bit trong biểu diễn nh ị phân của n, nghĩa là dlog 2 (n +1). CHÚ THÍCH Xem Điều 5.2.4. (4) Độ dài octet của số nguyên không âm n là số lượng chữ số trong biểu diễn của n theo cơ số 256, tức dlog 256 (n +1). CHÚ THÍCH Xem Điều 5.2.4. 3.30 . Mã xác thực thông báo (message authentication code) (MAC) Xâu bit là đầu ra của thuật toán MAC [ ISO/IEC 9797-1] CHÚ THÍCH 1 Xem Điều 6.3. CHÚ THÍCH 2 Trong phần này của ISO/IEC 18033, MAC được hạn chế là xâu bộ tám (được minh họa một cách tự nhiên như một xâu bit). 3.31 . Thuật toán MAC (MAC algorithm) Thuật toán tính hàm là ánh xạ các xâu bit và khóa b í mật vào các xâu bit có độ dài cố định, thỏa mãn hai tính chất sau: - Với khóa và xâu đầu vào bất kỳ, có thể tính hàm một cách hiệu quả; - Với khóa cố định bất kỳ và không biết trước khóa, bằng tính toán không có khả năng t í nh được giá trị hàm tại bất kỳ xâu đầu vào mới nào và không biết trước khóa không thể tính được giá trị hàm tạ i b ấ t kỳ xâu đầu vào mới nào, thậm chí cho biết tập hợp các xâu đầu vào và giá trị tương ứng của hàm, trong đó giá tr ị của đầu vào th ứ i c ó thể chọn sau khi quan sát i -1 giá trị đầu vào của hàm. [ISO/IEC 9797-1] CHÚ THÍCH 1 Xem Điều 6.3. CHÚ THÍCH 2 Trong phần này của ISO/IEC 18033, xâu đầu và đ ầ u ra ch ỉ hạn ch ế là những xâu bộ tám (được minh họa một cách tự nh iê n nh ư những xâu bit). 3.32. Bộ tám (octet) Xâu bit có độ dài bằng 8 CHÚ THÍCH Xem Điều 5.2.2. 3.33. Xâu bộ tám (octet str i ng) Dãy các octet CHÚ THÍCH Xem Điều 5.2.2. CHÚ THÍCH Khi cần, xâu bộ tám có thể được minh h ọ a như một xâu bit bằng cách ghép tất cả c á c octet thành phần. 3.34 . Bản rõ (pla i ntext) Thông tin chưa được mã hóa [ISO/IEC 10116:1997] 3.35 . Tập hợp phi tiền tố (pre f ix free set) Tập hợp S các x â u bi t/ octet sao cho không tồn tại các xâu x ≠ y Î S sao cho x là tiền tố của y 3.36 . Hàm nguyên thủy [nguyên thủy] (primitive) Hàm dùng để b iến đổi lẫn nhau giữa các dạng dữ liệu 3.37 . Khóa b í mật (private key) Khóa thuộc cặp khóa phi đối xứng của thực thể chỉ được sử dụng bởi thực thể [ISO/IEC 11770-1:1996] CHÚ THÍCH xem Điều 7 , 8.1. 3.38 . Khóa công khai (public key) Khóa thuộc cặp khóa phi đối xứng có thể được công khai [ISO/IEC 11770-1:1996] CH Ú TH Í CH Xem Điều 7, 8.1. 3.39 . Khóa bí mật ( secret key) Khóa được sử dụng trong kỹ thuật mật mã đối xứng bởi một tập hợp xác định các thực thể [ ISO/IEC 11770-3:1999] 3.40 . Mật mã đối xứng (symmetric cipher) Mật mã dựa trên kỹ thuật mật mã đối xứng, sử dụng cùng một khóa bí mật cho cả thuật toán mã hóa và giải mã [ISO/IEC 18033-1] 3.41. Các tham số hệ thống (system parameters) Sự lựa chọn tham số là chọn một lược đồ hoặc một hàm mật mã cụ thể từ một họ các lược đồ hoặc các hàm mật mã 4. Ký hiệu và khái niệm Trong tiêu chuẩn này áp dụng các ký hiệu và khái niệm dưới đây. CHÚ THÍCH Trong tiêu chuẩn này, ở những nơi phù hợp các tham chiếu tiếp theo được đưa ra trong các điều mà ch ứ a những định nghĩa và/hoặc soạn thảo chi tiết hơn. Số nguyên lớn nhất nhỏ hơn hoặc bằng số thực x . V í dụ: , và S ố nguyên nhỏ nhất lớn hơn hoặc bằng số thực x . Ví dụ: và [a..b] Khoảng các số nguyên tử a đến b, tính cả a và b [a..b) Khoảng số nguyên tử a đến b, tính cả a nhưng không tính b |X| Là lực lượng của X, nếu X là tập hợp hữu hạn; là tập hợp phần tử cơ sở nếu X l à nhóm abel hoặc trường hữu hạn; l à giá trị tuyệt đối nếu X l à số thực; l à độ dài của xâu bit hoặc xâu bộ tám nếu X l à xâu bit hay xâu bộ tám CHÚ TH ÍC H Xem Điều 5.2.1 , 5.2.2. x Å y Phép cộng XOR, nếu x và y l à xâu bi t/ octet có cùng độ dài CHÚ THÍCH Xem Điều 5.2.1, 5.2.2. x 1 ,…, x l > Xâu bit/octet độ dài l , ở đó x 1 , x 2 , ….,x l là bit/octet CHÚ THÍCH Xem Điều 5.2.1, 5.2.2. x||y Phép ghép hai xâu bit/octet x và y, kết quả được xâu với phần đầu là x , phần kế sau là y CHÚ THÍCH Xem Điều 5.2.1 và 5.2.2. gcd(a,b) Ước số chung lớn nhất của hai số nguyên a và b , nghĩa l à số nguyên dương lớn nhất chia hết cho cả a và b (hoặc 0 nếu a = b = 0) a|b Quan hệ giữa các số nguyên a và b sao cho a chia hết b, tức tồn tại số c để b = ac a = b (mod n ) Quan hệ giữa hai số nguyên a và b sao cho a và b đồng dư theo modulo n , nghĩa l à n | a - b ., trong đó n là s ố nguyên khác 0 a mod n Số nguyên duy nh ấ t r Î [0, ,…n) sao cho r = a (mod n ) a - 1 mod n S ố nguyên duy nhất b b Î [0, …, n ) sao cho ab = 1 (mod n ), trong đó a là số nguyên, n số nguyên dương F * Nhóm nhân các đơn vị của F, trong đó F là trường hữu hạn 0 F Phần tử đồng nhất theo phép cộng (phần tử 0) của trường F . 1 F Phần tử đồng nhất theo phép nhân của trường F . BS2 I P Nguyên thủy biến đổi xâu bit thành số nguyên CHÚ THÍCH Xem Điều 5.2.5. EC2 O SP Nguyên thủy biến đổi đường cong elliptic thành xâu bộ tám (xem Điều 5 . 4.3) FE2 O SP Nguyên th ủ y biến đổi phần tử trường thành xâu bộ tám (xem Điều 5.3.1.) FE2IP Nguyên thủy biến đổi phần tử trường thành số nguyên (xem Điều 5.3.1.) I 2BSP Nguyên thủy biến đổi s ố nguyên thành xâu bit (xem Điều 5.2.5.) I 2 O SP Nguyên thủy biến đổi số nguyên thành xâu bộ tám (xem Điều 5.2.5.) O S2ECP Nguyên thủy biến đổi xâu bộ tám thành đường cong elliptic (xem Điều 5 4.3) OS2FEP Nguyên thủy biến đ ổ i xâu bộ tám thành phần tử trường (xem Điều 5.3.1.) O S2 I P Nguyên thủy biến đổi xâu bộ tám thành số nguyên (xem Điều 5.2.5.) Oct(m) Bộ tám có giá trị nguyên bằng m (xem Điều 5.2.4.) £(n) Độ dài của số nguyên n tính bằng octet (xem Điều 5.2.5.) 5. Cơ sở toán học Điều này mô tả cơ sở toán học được sử dụng trong phần này của ISO/IEC 18033, bao gồm việc trình bày các đối tượng toán học và các nguyên thủy cho biến đổi các dạng dữ liệu. 5.1 . Hàm và thuật toán biến đổi Để tiện cho tr ì nh bày, các hàm và các hàm ngẫu nhiên (tức những hàm mà giá trị của n ó không chỉ phụ thuộc vào giá trị đầu vào, mà c ò n vào việc chọn giá trị ngẫu nhiên b ổ trợ), thường được xác định ở dạng thuật toán. Ngoại trừ những trường hợp sẽ được nói rõ, người thực thi có thể chọn để khai thác bất kỳ thuật toán tương đương nào (nghĩa là, chọn thuật toán dẫn đến cùng một hàm hoặc hàm ngẫu nhiên). Ngoài ra trong trường hợp hàm ngẫu nhiên, khi mà thuật toán mô tả hàm chỉ ra giá tr ị ngẫu nhiên, người thực thi c ó thể sử dụng bộ tạo ngẫu nhiên tương ứng để sinh ra giá tr ị đó (xem ISO/IEC 18031 với hướng d ẫn chi tiết hơn về vấn đề này). Trong mô t ả hàm bằng ngôn ngữ thuật toán, quy ước sau đây được chấp nhận. Một thuật toán có thể tính toán cho ra được giá trị, hoặc ngược lại, có thể thất bại (tức không tính được giá tr ị ). Theo quy ước, nếu thuật toán thất bại , thì trừ khi có ghi chú thêm, một thuật toán khác, sử dụng thuật toán này như một chương tr ì nh con, cũng s ẽ thất bại. CHÚ THÍCH Như vậy khái niệm thất bạ i cũng tương tự nh ư khái niệm “ đưa ra ngoại lệ “ (thro w ing an except i on) trong nhiều ngôn ngữ lập trình. Tuy nhiên điều này cũng có thể coi như thuật toán trả về một giá trị đặc biệt, khác với tất cả các giá trị khác được thuật toán đưa ra khi n ó không thất bại . Với cách cắt nghĩa như vậy v ề thất bạ i , thuật toán vẫn được coi là m ô tả hàm. Chi tiết v ề việc, làm th ế nào đ ể thực thi hiệu quả khi thuật toán thất bại, không trình bày ở đây. Tuy nhiên, trong các thực thi thông thư ờ ng, thuật toán có th ể trả v ề một số dạng “ mã lỗi “ cho môi trư ờ ng thực thi của n ó và như vậy nó ch ỉ ra nguyên nhân thất bại. Cũng c ầ n lưu ý rằng trong một số trư ờ ng hợp, v ì l ý d o b ả o m ậ t, trong khi thực thi c ầ n quan tâm để kh ô ng đ ể lộ lý do chính xác của một số dạng lỗi nh ấ t định. 5.2 . X â u bit và xâu bộ tám 5.2.1 . Bit và xâu bit B i t là một trong hai ký hiệu ‘0’ và ‘1’. Xâu bit là một dãy bit. Cho các bit x 1 ,…,x l , <> 1 ,…,x l > l à ký hiệu xâu bit độ dài l , gồm các bit xếp theo thứ tự đã cho. Với xâu bit x = <> 1 ,…,x l > , độ dài l của x được ký hiệu là |x| , v à nếu l > 0 th ì x 1 được gọi là bit đầu , x l được gọi là bit cu ố i của x . Với hai xâu bít x và y, x || y ký hiệu kết quả ghép x và y, b ở i vậy nếu x = <> 1 ,…,x l >, y = <> 1 ,…,y m > thì x || y = <> 1 ,…,x l ,y 1 ,…,y m > Nếu x và y l à hai xâu bit có cùng độ dài l , thì x Å y ký hiệu phép cộng bit XOR của x và y. Xâu bit có độ dài bằng 0 được gọi là xâu bit rỗng. CHÚ THÍCH Kh ô ng có một toán t ử nào được đ ị nh nghĩa dành riêng cho xâu bit, nên nếu x là xâu bit, thì x i không nh ấ t thi ế t ký hiệu một bit cụ th ể của x . 5.2.2 . Bộ tám (octet) và xâu bộ tám (octet) Bộ tám là xâu bit có độ dài bằng 8. Xâu bộ tám là dãy các bộ tám. Cho các octet x 1 ,…,x l , thì x 1 ,…,x l > là ký hiệu xâu bộ tám độ dài l gồm các bộ tám x 1 ,…,x l theo thứ tự đã cho. Cho xâu bộ tám x = x 1 ,…,x l > , độ dài l của x được ký hiệu là |x| , nếu / > 0 thì x 1 được gọi là bộ tám đ ầ u , x l được g ọ i là bộ tám cuối của x . Với hai xâu bộ tám x và y, x| | y là ký hiệu kết quả ghép x và y, bởi vậy nếu x = x 1 ,…,x l >, y = <> 1 ,…,y l > th ì x||y = x 1 ,…,x l ,y 1 ,…,y m > N ế u x và y là hai xâu bộ tám có cùng độ dài, thì x Å y ký hiệu phép cộng bit XOR của x và y. Xâu bộ tám có độ dài bằng 0 được gọi l à x â u bộ tám rỗng. CHÚ THÍCH 1 Không c ó toán t ử nào được xác định dành ri ê ng cho tập các xâu octet. Do đó nếu x là xâu bộ t ám, thi x i không nhất thiết k ý hiệu một bộ tám cụ thể của x . CHÚ THÍCH 2 Để ý rằng, v ì bộ tám là xâu bit có độ dài bằng 8, nên nếu x và y là các bộ tám , th ì x||y có độ dài bằng 16 , nếu x > và y > mỗi x â u có độ d à i bằng 1 th ì x > II <> > = x,y > là x â u bộ tám độ dài bằng 2. 5.2.3 . Chuyển đổi giữa xâu bit và xâu bộ tám Các nguy ê n thủy OS2BSP và BS2 O SP chuyển đổi giữa c á c xâu bit và xâu bộ tám được định nghĩ a như sau: Hàm OS2BSP(x): đầu vào là x â u bộ tám x = x 1 ,…,x l > và đầu ra là xâu bit y = x 1 ||x 2 …||x l . Hàm BS2 O SP(y) : đầu vào là xâu bit y với độ dài là bội số của 8, đầu ra là xâu bộ tám duy nhất X sao cho y = OS2BSP(x). 5.2.4 . Chuyển đổi giữa xâu b i t và số nguyên Các nguyên thủy BS2IP và I2BSP thực hiện chuyển đổi giữa xâu bit và số nguyên được định nghĩa như sau. Hàm BS2IP (x) ánh xạ xâu bit x vào giá trị nguyên x ' , như sau. Nếu x = <> l-1 ,…,x 0 > , ở đây x 0 ,… x l-1 là các bit, khi đó giá trị x' b ằ ng Hàm I2BSP(m, l) nhận đ ầ u vào là hai số nguyên không âm m và l , đầu ra là xâu bit duy nhất x độ dài l sao cho BS2 I P(x) = m , nếu tồn tại X như vậy. Ngược lại, hàm thất bạ i . Độ dài tính bằng bit của số nguyên không â m n là số bit trong biểu diễn nhị phân của nó, t ức Để tiện k ý hiệu, đặt Oct(m) = I2BSP(m, 8). CHÚ THÍCH Lưu ý rằng l2BSP(m,l) thất bại khi và ch ỉ khi độ dài của m t í nh bằng bít lớn hơn l . 5.2.5 . Chuyển đổ i giữa xâu bộ tám và số nguyên Các phép biến đổi nguyên thủy OS2 I P và I2 O SP chuyển đ ổ i giữa xâu bộ tám v à số nguyên được xác định như sau. Hàm OS2IP(x) : đầu vào là xâu bộ tám, đầu ra là số nguyên BS2 I P( O S2BSP(x)). Hàm I 2 O SP(m,l) : đầu vào là hai số nguyên không âm m, l , đầu ra là xâu bộ tám (octet) duy nhất x , độ dài l , th ỏ a m ã n hệ thức OS2 I P(x) = m , nếu số nguyên x như vậy tồn tại. Ngược lại, hàm thất bại. Độ dài tính bằng octet của số nguyên không âm n là số chữ số trong biểu diễn cơ số 256, nghĩa là ; đại lượng này được ký hiệu là £(n). CHÚ THÍCH Chú ý rằng I 2 O SP(m, l ) th ấ t bại kh i và ch ỉ khi độ dài của m t í nh bằng bộ tám (octet) lớn hơn l . 5.3 . Trường hữu hạn Điều này mô tả một cấu trúc rất khái quát để mô tả các trường hữu hạn đặc biệt. Trường hữu hạn được xác định b ằ ng cách này được gọi là trường hữu hạn đ ược cho dưới dạng tường minh, và được xác định bở i dữ liệu hiện. Với trường hữu hạn F c ó lực lượng q = p e , ở đây p là số nguyên tố và e ≥ 1 , dữ liệu hiện của F bao gồm p và e , cùng với “bảng nhân” l à ma trận T = ( T ij ) 1≤i,j≤e , tron g đó mỗi T ij là bộ e phần tử ( e -tuple) từ tập hợp [0 ,…, p ). Tập hợp các phần tử của tr ư ờng F là tập hợp t ấ t cả các bộ e phần tử trên [0 ,…, p ). Đầu vào của T được coi như các phần tử của F . Phép cộng trong F được định nghĩa như sau: Nếu a = (a 1 ,…, a e ) Î F và b = ( b 1 ,…,b e ) Î F , Khi đ ó a + b = c , với c = ( c 1 ,…,c e ) và c i = ( a i + b i ) mod p (1 ≤ i ≤ e). Phép nhân vô hướng trong F ( nhân một phần tử của F với một số thuộc [0 ,…, p )) như sau: Nếu a = (a 1 ,…, a e ) Î F và d Î [0…p ) , Khi đó d.a = c với c = ( c 1 ,…,c e ) và c i = ( d.a i ) mod p (1 ≤ i ≤ e). Phép nhân trên trường F được xác định thông qua bảng nhân T, như sau: Nếu a = (a 1 ,…, a e ) Î F và b = ( b 1 ,…,b e ) Î F , th ì , Trong công thức trên cách t í ch (a i b j mod p)T i j được xác định theo quy tắc tích vô hướng đã nêu trên, và chúng được cộng lại theo quy tắc phép cộng trong F . Giả thiết là bảng nhân xác định một cấu trúc đại số thỏa mãn các tiên đề thông thường của trường; nói riêng, tồn tại các phần tử đồng nhất đối với phép cộng và phép nhân (tức phần tử trung hòa và đơn v ị ), mỗi phần tử của trường c ó phần tử nghịch đảo đối với phép cộng (phần tử đối) và phần t ử nghịch đảo đối với phép nhân. Nhận thấy rằng phần tử đồng nhất đối với phép cộng của F , ký hiệu là 0 F , chính là bộ e phần tử gồm các phần tử 0 và phần tử đồng nh ấ t đối với phép nhân được ký hiệu l à 1 F , là bộ e phần tử khác không với định dạng chính xác của 1 F phụ thuộc v à o T . CHÚ THÍCH 1 Trư ờ ng F là không gian véc tơ c ó số chi ề u là e , xác định trên trường nguyên tố F ’ , có lực lượng bằng p , với phép n h ân vô hướng đã được định nghĩa trên đây. Số nguyên tố p được gọi là đặc số của trường F. Với 1 ≤ i ≤ e, ký hiệu q i l à bộ e -phần tử (e-tuple) trên F' sao cho thành phần thứ i của n ó l à 1 v à tất cả thành phần c ò n lại bằng 0. Các phần tử q 1 ,. ., q e t ạo thành cơ sở của không gian véc tơ F tr ê n F ' . Lưu ý rằng với mọi 1 ≤ i, j ≤ e , ta c ó q i q j = T ij . CHÚ THÍCH 2 V ới e > 1, có hai kiểu cơ sở cùng được sử dụng trong thực thi các phép toán số học trên trường hữu hạn: - q 1 ,… q e được g ọ i là cơ sở đa thức cho F trên F ' n ế u tồn tại q thuộc F sao cho q i = q e-1 v ớ i mọi 1 ≤ i ≤ e. Rõ ràng ta c ó 1 F = q e . - q 1 ,… q e được gọi cơ s ở chuẩn tắc cho F trên F ' nếu tồn tại q thuộc F sao cho v ớ i mọi 1 ≤ i ≤ e. Rõ ràng trong trường hợp n à y, ta c ó với c Î [1,..,p) ; Nếu p = 2, khi đó chỉ có một lựa chọn duy nhất cho c l à 1; hơn nữa luôn luôn có thể chọn cơ sở chuẩn tắc với c = 1. CHÚ THÍCH 3 Đ ị nh nghĩa trường hữu hạn dưới dạng tư ờ ng minh được trích dẫn từ [ 23]. 5.3.1. Chuyển đ ổi giữa xâu bộ tám và số nguyên/tr ườ ng hữu hạn Các phép bi ế n đổi nguyên thủy OS2FE P F và FE2 O SP F giữa xâu bộ tám và các phần tử của trường hữu hạn được cho dưới dạng tường minh F , cũng như phép biến đổi nguyên thủy FE2IP F chuyển đổi các phần tử của F thành số nguyên, được định nghĩa như sau. Hàm FE2IP F ánh xạ phần tử a Î F vào giá trị nguyên a ' , như sau. Nếu lực lượng của F là q = p e , ở đây p là số nguyên tố và e ≥ 1 , khi đó phần tử a của trường F là bộ e phần tử ( a 1 ,… a e ) , a i Î [0,…,p), 1 ≤ i ≤ e và giá trị a' được xác định theo công thức: Hàm FE2 O SP F ( a ) nhận đầu vào là phần tử a của trường, đầu ra là xâu bộ tám I 2 O SP(a',l), a' = FE2 O SP F ( a ) và l là độ dài t í nh bằng bộ tám của |F| - 1 , ngh ĩ a là . Như vậy đầu ra của FE2 O SP F ( a ) luôn là xâu bộ tám c ó độ dài chính xác bằng . Hàm OS2FEP F (x) nhận đầu vào là xâu bộ tám x , đầu ra (duy nhất) là phần t ử trường a Î F sao cho FE2 O SP F (a) = x , nếu tồn tại a như thế, và ngược lạ i thì thất bại. Lưu ý rằng OS2FEP F (x) thất bại khi và chỉ khi hoặc x không có độ dài đúng b ằ ng , hoặc OS2 I P(x) ≥ | F |. 5.4 . Đường cong elliptic Đường cong elliptic trên trường hữu hạn dạng tường minh là tập hợp các đi ể m P = (x, y), ở đây x và y là các phần tử của trường F , thỏa mãn phương trình xác định, với "điểm tại vô cùng" được ký hiệu là . Trong phần này của tiêu chuẩn ISO/IEC-18033, đường cong elliptic E được xác định bởi hai phần tử của trường a,b Î F , các phần tử này được gọi là các hệ số của E . Giả sử P l à đặc trưng của trường F . Nếu p > 3 th ì a và b thỏa mãn điều kiện 4a 3 + 27b 2 ¹ 0 F , và mỗi điểm P = (x,y) trên E (khác phần tử ) thỏa mãn phương trình y 2 = x 3 + ax + b. Nếu p = 2, thì a và b th ỏ a mãn điều kiện b ¹ 0 F , và mỗi điểm P = (x,y) trên E (khác phần tử ) thỏa mãn ph ươ ng trình y 2 + xy = x 3 + ax 2 + b. Nếu p = 3 , thì a và b thỏa mãn điều kiện a ¹ 0 F và b ¹ 0 F , và mỗi điểm P = (x,y) trên E (khác phần tử ) thỏa mãn phương trình y 3 = x 3 + ax 2 + b. Các điểm nằm tr ê n đường cong elliptic tạo thành nh ó m abel, với phần tử không của E là phần tử trung hòa. Tồn tại những thuật toán hiệu quả để thực thi các phép toán nh ó m của đường cong ell i ptic, tuy nhiên việc thực thi các thuật toán này nằm ngo à i phạm vi của phần này của ISO/IEC 18033. CHÚ THÍCH Xem ISO/IEC 15946-1, cũng như [9], đ ể biết thêm thông tin v ề cách thực thi hiệu quả phép toán nh ó m tr ê n đường cong ellipt i c. 5.4.1. Các điểm nén của đường cong elliptic Gi ả sử E là đường cong elliptic trên trường hữu hạn dạng tư ờ ng minh F , ở đây F có đặc trưng bằng p . Điểm P ¹ có thể được biểu diễn dưới dạng nén, không n é n và hoặc lai ghép. Nếu P = ( x,y) , th ì (x,y) là dạng không nén của P . Giả sử P = (x, y ) là điểm trên đường cong elliptic E . Dạng nén của P là cặp (x,ỹ) , ở đ â y ỹ Î {0,1} được xác định như sau: - Nếu p ¹ 2 và y = 0 F , th ì ỹ = 0 . - Nếu p ¹ 2 và y ¹ 0 F , th ì ỹ = (( y' / p f ) mod p) mod 2, ở đây y' = FE2 I P F ( y ) và f là số nguyên không âm lớn nhất sao cho p f |y' . - Nếu p = 2 và x = 0 F th ì ỹ = 0. - Nếu p = 2 và x ¹ 0 F thì ỹ = mod 2 , ở đây z = y/x và z' = FE2IP F (y) v à f là số nguyên không âm nh ỏ nhất thỏa mã điều kiện 2 f chia h ế t FE2 I P F ( 1 F ). Dạng lai ghép của P = (x,y) là bộ ba (x,ỹ,y) với ỹ được xác đ ị nh như ở Điều trước. 5.4.2. Các thuật toán giải nén điểm Tồn tại các thuật toán hiệu quả giải nén đi ể m, t ứ c l à tính ỹ từ (x, ỹ). Dưới đây sẽ mô t ả vắn tắt các thuật toán đó. - Giả sử p ¹ 2 và (x,ỹ) là dạng nén của (x,y). Điểm (x,y) th ỏ a m ã n phương trình y 2 = f(x) với f( x) là đa thức trên F . N ế u f(x) = 0 F , thì chỉ có một khả năng chọn y , chính là y = 0 F . Ngược lại, nếu f(x) ¹ 0 thì có hai khả năng chọn y , các khả năng này chỉ khác nhau về dấu, việc chọn đúng được xác định bởi ỹ . Có hai thuật toán tính căn bậc hai trên trường hữu hạn được biết đến nhiều, và do đó hai lựa chọn y dễ dàng tính được. - Giả sử p = 2 và (x,ỹ) là dạng nén của (x,y). Các điểm (x,y) thỏa mãn phương trình y 2 + xy = x 3 + ax 2 + b. Nếu x = 0 F , khi đó y 2 = b, từ đây y được tính toán dễ dàng và duy nhất. Ngược lại nếu x ¹ 0 F khi đó đặt z = y/x, ta c ó z 2 + z = g(x) ở đây g ( x) = (x + a + bx - 2 ). Giá trị của y được xác định một cách duy nhất và dễ d àng tính ra được từ các giá trị z và x , do đó chỉ cần tính z . Để tính z , ta lưu ý rằng với x cố định, nếu z là một trong các nghiệm của phương trình z 2 + z = g (x ) , khi đó có đúng một nghiệm khác, chính l à z + 1 F . Dễ dàng t í nh được hai giá trị ứng cử viên của z và dễ thấy rằng việc chọn đúng z được xác định bởi ỹ . 5.4.3. Chuyển đổi giữa xâu bộ tám và đường cong elliptic Các nguyên thủy EC2 O SP E và OS2ECP E chuyển đổi giữa các điểm trên đường cong elliptic và xâu bộ tám được xác định như sau. Giả sử E là đường cong elliptic trên trường hữu hạn được cho ở dạng hiện F . Hàm EC2 O SP E (P , fmt) nhận đầu vào là điểm P trên E và bộ định dạng fmt là một trong các giá trị ký hiệu được nén, không được nén, hoặc lai ghép. Đầu ra là xâu bộ tám EP , được tính như sau: - Nếu P = thì EP = . - Nếu P = (x,y) ¹ với dạng nén (x,ỹ), khi đó EP = , ở đây, - H là bộ tám đơn có dạng Oct(4U + C .(2 + ỹ)), trong đó, - U = 1 nếu fmt hoặc là dạng không nén hoặc d ạng lai ghép, ngược lại U = 0; - C = 1 nếu f m t hoặc dạng nén hoặc dạng lai ghép, ngược lại C = 0; - X là xâu bộ tám FE2 O SP F (x) : - Y l à xâu bộ tám FE2 O SP F (y) , nếu fmt hoặc dạng không nén hoặc dạng lai ghép; ngược lại y là xâu bộ tám rỗng. CHÚ THÍCH Nếu (biến) đ ị nh dạng fmt không ở dạng nén, thi không cần t í nh gi á trị ỹ . Hàm OS2ECP E (EP) nhận đầu vào là xâu bộ tám EP . Nếu tồn tại điểm P trên đường cong elliptic E và (biến) định dạng fmt th ỏ a mãn EC2 O SP E (P, fmt) = EP , khi đ ó đầu ra của hàm l à P (ở dạng không nén), ngược lại - hàm thất bại. Lưu ý rằng điểm P , nếu tồn tại, được xác đ ị nh duy nhất và do đó hàm OS2ECP E (EP) đã được xác đ ị nh rõ. 6. Các biến đổi mật mã Điều này mô tả một số phép biến đổi mật mã sẽ được tham chiếu ở các Điều tiếp theo. Các dạng biến đổi đó là: hàm băm mật mã, hàm dẫn xuất khóa, mã xác th ự c thông b á o, mã khối, và mã đối xứng . Với mỗi dạng biến đổi sẽ đưa ra các đặc trưng đầu ra/đầu vào ngắn gọn, tiếp đó sẽ đặc t ả các thực thi cụ thể các phép biến đổi này, chúng được phép sử dụng trong phần này của ISO/IEC18003. 6.1. Các hàm băm mật mã Hàm băm mật mã là hàm ánh xạ các xâu bộ tám c ó độ dài thay đổi vào xâu bộ tám có độ dài cố định. Chính xác hơn, hàm băm ( hash function) mật mã xác định - số nguyên dương Hash.Len ký hiệu độ dài đầu ra của hàm băm, - số nguyên dương Hash.MaxInputLen ký hiệu độ dài lớn nh ấ t của đầu v à o hàm băm, - và hàm Hash.eva l k ý hiệu b ả n thân hàm băm, ánh xạ xâu bộ tám có độ dài lớn nhất Hash.MaxInputLen vào xâu bộ tám độ dài Hash.Len. Việc gọi hàm Hash.eval thất bại khi và ch ỉ khi độ dài đầu ra vượt quá giá trị Hash.MaxInputLen. 6.1.1. Các hàm băm mật mã cho phép Với mục đ í ch của phần này của ISO/IEC 18033, các hàm băm mật mã là những hàm được mô t ả trong ISO/IEC 10118-2 và ISO/IEC 10118-3 với những quy định sau đây: - Hàm băm trong ISO/IEC 10118 ánh xạ xâu bit vào xâu bit, trong khi đó trong ISO/IEC 18033 hàm băm ánh xạ xâu bộ tám vào xâu bộ tám. Do đó hàm băm trong ISO/IEC 10118-2 và ISO/IEC 10118-3 được phép áp dụng vào phần này của tiêu chuẩn ISO/IEC 18033, chỉ khi độ dài tính bằng bit của đầu ra là bội số của 8, trong trường hợp này ánh xạ giữa các xâu bộ tám và xâu bit b ị tác động b ở i các hàm OS2BSP và BS2 O SP . - Ngược lại, nếu như hàm băm trong ISO/IEC 10118 kh ô ng xác định đối với đầu vào vượt quá độ dài cho trước, thì hàm băm trong phần này của ISO/IEC 18033 được xác định là thất b ạ i đối với những đầu vào như vậy. 6.2. Hàm d ẫ n xu ấ t khóa Hàm dẫn xuất khóa là hàm KDF(x, l ), nhận đầu vào là xâu bộ tám x và số nguyên l ≥ 0 , và đầu ra là xâu bộ tám độ dài l . Xâu x có độ dài bất kỳ, mặc dù trong khi thực thi có thể xác định độ dài cực đại (r ấ t lớn) cho x là k í ch thước cực đại cho l và thất bại n ế u các giới hạn này bị vượt qua. CHÚ THÍCH Trong một số tài liệu và tiêu chuẩn khác, thuật ngữ “ hàm tạo mặt nạ “ ("mask generation f unction") được sử dụng thay cho "hàm dẫn xuất khóa". 6.2.1. Hàm dẫn xuất khóa được phép Các hàm dẫn xuất khóa được phép trong phần này của ISO/IEC 18033 là KDF1 được mô tả phía dưới, ở Điều 6.2.2 và KDF2 được mô tả ở Điều 6.2.3. 6.2.2. KDF1 6.2.2.1. Các tham s ố hệ th ố ng KDF1 là họ các hàm dẫn xuất khóa được tham số hóa bởi các tham số hệ thống sau đây: - Hash : hàm băm mật mã được mô t ả ở Điều 6.1. 6.2.2.2. Đặc tả Với xâu bộ tám x và số nguyên không âm l , KDF 1 (x, l) được xác định cho l bộ tám đầu tiên của xâu Hash.eval (x||I2 O SP(0,4) | | . .. | | Hash.ev al(x||I 2 O SP(k -1,4), ở đây CHÚ THÍCH Hàm này sẽ thất bại khi và ch ỉ khi k > 2 32 hoặc khi |x|+ 4 >Hash.Max I put Le n . 6.2.3. KD F 2 6.2.3.1. Các tham số hệ thống KDF2 là hộ các hàm dẫn xuất khóa, được tham số bởi các tham số hệ thống sau: - Hash: hàm băm mật mã được mô tả tại Điều 6.1. 6.2.3.2. Đặc tả Với xâu bộ tám x và số nguyên không âm l , KDF2 ( x,l) được xác định như là bộ tám đầu tiên của xâu Hash.ev a l (x|| I 2 O S P ( 1 ,4)||...|| H as h .ev al( x||I2 O SP(k,4)) . ở đây CHÚ THÍCH 1 Hàm này sẽ thất bại khi và ch ỉ khi k > 2 3 2 hoặc |x | +4> H as h .MaxlnputLen. CHÚ THÍCH 2 KDF2 cũng giống như KDF1 , tr ừ việc tính từ 1 đến k thay v ì từ 0 đến k -1. 6.3. Các thuật toán MAC Thuật toán xác thực thông báo MA là lược đồ xác đ ị nh hai số nguyên dương MA.Key L en, MA. MACLen, cùng hàm MA.eva l (k ' ,T) , hàm này nhận khóa mật k’ l à xâu bộ tám độ dài bằng MA.KeyLen, và xâu bộ tám tùy ý T làm đầu vào và tính đầu ra là xâu bộ tám MAC độ dài MA.MACLen . Việc thực thi có thể hạn chế giá trị cực đại cho độ dài của T và MA. e val (k', T) sẽ thất bại nếu giới hạn này bị vượt qua. CHÚ THÍCH Tham khảo Phụ lục B.1 xem thảo luận về các tính chất bảo mật mong muốn của các thuật toán MAC. 6.3.1. Các thuật toán MAC được phép Với mục đích của phần này của ISO/IEC 18033, các thuật toán MAC được phép được mô tả trong ISO/IEC 9797-1 và ISO/IEC 9797-2, với các quy định sau: - Đối với các t huật toán MAC được mô tả trong ISO/IEC 9797-1 và ISO/IEC 9797-2, đầu ra là các xâu bit, khóa bí mật và đầu ra là những xâu có độ dài cố định. B ở i vậy, một thuật toán trong ISO/IEC 9797-1 hoặc ISO/IEC 9797-2 được phép áp dụng trong phần này của ISO/IEC 18033 chỉ khi độ dài tính bằng bit của MAC và khóa mật l à bội số của 8, trong trường hợp này ánh xạ giữa các xâu bộ tám và các xâu bit bị ảnh hưởng bởi OS2BSP và BS2 O SP . - Nếu các thuật t oán trong ISO/IEC 9797-1 và ISO/IEC 9797-2 không xác định đối với đầu vào vượt quá độ dài cho trước, thì thuật toán MAC trong phần này của ISO/IEC 18033, được xác định l à thất bại đối với những đầu vào như vậy. 6.4. Mã khối Mã khối BC đặc tả như sau: - số nguyên dương BC.KeyLen , là độ dài của khóa mật tính bằng octet, - số nguyên dương BC. BlockLen , là độ dài tính bằng octet của khối bản mã hoặc bản rõ, - hàm BC.Encrypt(k,b) , nhận đầu vào là khóa bí mật k , v ới k là xâu bộ tám, độ dài BC.KeyLen và khối b ả n rõ b là xâu bộ tám độ dài BC.BlockLen , và đầu ra là khối mã b ' với b' là xâu bộ tám độ dài BC.BlockLen , và - hàm BC.Decrypt(k,b ' ) , nhận đầu vào là khóa b í mật là xâu bộ tám, độ dài BC.KeyLen , và khối bản mã b' là xâu bộ tám độ dài BC.BlockLen , và đầu ra là khối bản rõ là xâu bộ tám, độ dài BC.BlockLen. Với khóa b í mật cố đ ị nh bất kỳ k , hàm b →BC.Encrypt(k,b) tác động như một phép hoán vị trên tập các xâu bộ tám độ dài BC.BlockLen , và hàm b'→BC.Decrypt(k,b) t ác động như một phép hoán vị nghịch đảo. CHÚ THÍCH Xem thảo luận trong Phụ lục B.2 về tính chất b ả o m ậ t mong muốn của mã khối. 6.4.1. Mã khối được ph é p Trong phần này của ISO/IEC 18033, mã khối được phép là những mã khối được mô tả trong ISO/IEC 18033-3, với các quy định sau: - Trong I SO/IEC 18033-3, các khối bản rõ/bản mã và khóa bí mật là những xâu bit c ó độ dài cố định, còn trong phần này của ISO/IEC 18033, chúng là những xâu bộ tám có độ dài cố định. B ở i vậy, mã khối trong I SO/IEC 18033-3 được phép áp dụng trong phần này của ISO/IEC 18033 chỉ khi độ dài t í nh bằng bit của các kh ố i bản rõ/bản mã và của khóa bí mật là bội số của 8, trong trường hợp này ánh xạ giữa các xâu bộ tám và xâu b ị tác động bởi các hàm O S2 O SP và BS2 O SP. 6.5. Mã đố i xứng Mã đối xứng SC xác định độ dài khóa SC. KeyLen , cùng với các thuật toán mã hóa, giải mã: - Thuật toán mã hóa SC.Encrypt (k ,M) nhận đầu vào là khóa bí mật k , khóa nà y là xâu bộ tám độ dài SC.KeyLen và b ả n rõ M là xâu bộ tám độ d à i bất kỳ, đầu ra là bản mã c là xâu bộ tám. Thuật toán mật mã có thể thất bại , nếu độ dài của M vượt quá một giá trị lớn nào đó, được xác định b ở i quá trình thực thi. - Thuật toán giải mã SC.Decrypt(k,c) nhận đầu vào là khóa bí mật k, kh óa này là xâu bộ tám độ dài SC.KeyLen , và b ả n mã c là xâu bộ tám độ dài bất kỳ, đầu ra là bản rõ M là xâu bộ tám. Th u ật toán giải mã có thể thất bại trong một số tình huống nào đó. Các thuật toán mã hóa và giải mã là tất đ ị nh. Đồng thời, đối với tất cả khóa bí mật k và t ấ t c ả bản rõ M, nếu M không vượt quá giới hạn độ dài của thuật toán mã hóa và nếu c = SC.Encryt(k,M), thì SC.Decrypt (k, c) không thất bại và SC.Decrypt (k,c) = M. CHÚ THÍCH Xem thảo luận trong p hụ l ụ c B .3 về các tính chất bảo mật mong muốn của mã đối xứng. 6.5.1. Mật mã đố i xứng được phép Mật mã đối x ứ ng được phép sử dụng trong phần này của ISO/ I EC 18033 là: - SC 1 , được mô tả tại Điều 6.5.2, và - SC2 , được mô tả tại Điều 6.5.3. 6.5.2. SC1 Mã khối đối xứng này đạt được bằng cách sử dụng mã khối ở chế độ CBC (cipher block chaining - xem I SO/IEC 10116), cùng với lược đồ đệm (padding) cụ thể, đ ể bổ sung bản rõ sao cho độ dài của chúng là bội số của kích thước khối của mã khối cơ s ở . 6.5.2.1. Các tham số hệ thống SC 1 là họ mã khối đối xứng được tham số hóa bằng các tham số hệ thống sau đây: - BC : mã khối, được mô tả trong Điều 6.4. Nói một cách chặt chẽ, cần hạn chế sao cho BC.BlockLen < 256.="" và="" hạn="" chế="" này="" luôn="" được="" đáp="" ứng="" trên="" thực=""> 6.5.2.2. Đặc tả SC 1 .Ke y Len = BC.KeyLen. Hàm SC 1 .Encrypt (K, M) làm việc như sau: a) Đặt PadLen = BC.BlockLen - (|M| m od BC.Block L en). b) Giả sử P 1 = Oct(padLen). c) Giả sử P 2 là xâu bộ tám được h ì nh thành bằng cách lặp lại octet P 1 với tổng số lần lặp bằng PadLen (bởi vậy | P 2 | = padLen ). d) Gi ả sử M ’ = M || P 2 . e) Tạo cú pháp cho M’ : M' = , ở đây với 1 ≤ i ≤ l , là xâu bộ tám độ dài BC.BlockLen. f) Giả sử c 0 l à xâu bộ tám, bao gồm các bản sao BC.BlockLen của octet 0ct(0) và với 1 ≤ i ≤ l , đặt c i = BC. Encrypt(k, Å c i-1 ). g) Giả sử c = c 1 c l . h) Đưa ra c. Hàm SC 1 . Decrypt(k,c) làm việc như sau: a) Nếu |c| không phải là bội s ố khác không của BC.BlockLen, hàm sẽ thất bại. b) Tạo cú pháp cho c, c = c 1 c l với 1 ≤ i ≤ l là xâu bộ tám độ dài BC.BlockLen , đồng thời giả sử c 0 là xâu bộ tám bao gồm các bản sao BC. BlockLen của O ct(0). c) Với 1 ≤ i <> l , đặt = BC.Decrypt(k,c i ) Å c i-1 . d) Giả sử P 1 là octet cuối cùng của , và giả sử padLen = BS2IP ( P 1 ). e) Nếu padLen Ï [1.. BC.B l ockLen] thì sẽ thất bại . f) Kiểm tra nếu bộ tám cuối cùng padLen của bằng hay không; nếu không bằng thì thất bại. g) Gi ả sử M ’’ l là xâu bộ tám bao gồm từ những octet đầu tiên BC.BlockLen - padlen của . h) Đặt M - i) Đưa ra M. 6.5.3. SC2 6.5.3.1. Các tham số hệ thống SC2 là họ các mã đối xứng, được tham số hóa bởi các tham số hệ thống sau đây: - KD F Hàm dẫn xuất khóa được mô t ả tại Điều 6.2; - KeyLen : số nguyên dương. 6.5.3.2. Đặc tả Giá trị của SC2. KeyLen bằng giá trị của tham số hệ thống KeyLen . Hàm SC2.Encrypt(k,M) làm việc n hư sau; a) Đặt mask = KDF(k,|M|). b) Đặt c = mask Å M. c) Đưa ra c Hàm SC2.Decrypt(k,c) làm việc như sau: d) Đặt mask = KDF(k, |c|). e) Đặt M = mask Å c. f) Đưa ra M. 7. Mật mã phi đối xứng Mật mã phi đối xứng AC bao gồm từ ba thuật toán: - Thuật toán tạo khóa AC.KeyGen () , với đầu ra là cặp khóa công khai/khóa bí mật ( PK, pk). Cấu trúc của PK và pk phụ thuộc vào mật mã cụ thể. - Thuật toán mã hóa AC.Encrypt (PK,L,M,opt), nhận đầu vào l à khóa công khai, nhãn L , bản r õ M và tùy chọn opt , đầu ra là b ả n mã C . Lưu ý rằng L, M và C là các xâu bộ tám. Xem thêm Điều 7.2 phía dưới về nhãn . Xem Điều 7.4 để bi ế t thêm về tùy chọn mật mã. Thuật toán mã hóa có thể thất bại, nếu độ dài L hoặc M vượt quá giới hạn trong thực th i . - Thuật toán giải mã AC.Decrypt(pk,L,C), nhận đầu vào là khóa riêng pk , nh ã n L , bản mã C và đầu ra là bản rõ M. Thuật toán giải mã có thể th ấ t bại trong một số tình huống nào đấy. Nh ì n chung, các thuật toán tạo khóa, m ã h ó a là các thuật toán xác suất, còn thuật toán giải mã là thuật toán tất định. CH Ú TH Í CH 1 Mục đ í ch của tất cả mật mã phí đối xứng trong phần n à y của ISO/IEC18033 l à cung c ấ p độ an toàn thích hợp chống lại kiểu tấn công chọn bản mã thích hợp (được định nghĩa trong [30], và điều này tương đương với khái niệm “ khả năng không b ị uốn" (“non-ma l leability"), được định nghĩa trong [17]). Khái niệm an toàn này nh ì n chung được cộng đồng nghiên cứu mật mã đánh giá nh ư một h ì nh thức an t oàn phù hợp mà mật mã phi đối xứng cần cung cấp. Đ ị nh nghĩa hình thức của khái niệm an toàn này được trình bày tại phụ lục B.4, và đ ã được điều ch ỉ nh phù hợp với b ả n r õ có độ dài thay đổi và vai trò của nh ã n; đồng thời cũng đ ị nh nghĩa một khái niệm yếu hơn một ít về t í nh an toàn, được gọi là “ dễ bị uốn nhẹ" (benign malleability). Khái niệm "dễ b ị uốn thích hợp", nếu không phải với tất c ả , th ì cũng với đại đa số ứng dụng của mật mã phi đối xứng, và một số mật mã phi đối xứng trong phần này của ISO/IEC 18033 ch ỉ đạt được m ứ c an toàn này. CHÚ THÍCH 2 Yêu c ầ u cơ bản của bất k ỳ mật m ã phi đối xứng là t í nh đúng đắn: V ới b ấ t k ỳ cặp khóa c ô ng khai/khóa riêng (PK, pk), với cặp bất kỳ nhãn/bản rõ ( L ,M) sao cho độ dài L, M không vượt quá giới hạn do t hực thi quyết định, bất k ỳ sự mã hóa bản rõ M với nhãn L v à PK được giải mã bằng nhãn L và pk đ ể nhận được bản rõ. CHÚ THÍCH 3 Một v í dụ mật mã phi đối xứng ch ứ ng t ỏ y ê u cầu tr ê n đây về tính đúng đắn không phải luôn luôn t hỏa mãn l à mật mã dựa tr ê n RSA với n = pq, p và q là hai số nguyên tố. Thuật toán tạo khóa có thể s ử dụng các thuật toán xác suất để ki ể m tra liệu p v à q có phải là các số nguyên tố không, và thuật toán này có th ể đưa ra kết qu ả sai với x á c suất kh ô ng đáng kể. Nếu x ả y ra điều đó, thì thuật toán giải mã có thể không phải là thuật toán nghịch đảo của thuật toán mã hóa. 7.1. Độ d ài bản r õ Một điều quan trọng cần chú ý là, bản rõ có thể có độ dài thay đổi và bất kỳ, mặc d ù khi thực thi có thể áp đặt một giới hạn trên (thường là rất lớn) cho độ dài này. Tuy vậy, có hai dạng mật mã phi đối xứng suy biến, được định nghĩa như sau: - Mật mã phi đối xứng AC độ dài bản rõ cố định ch ỉ mã hóa những bản rõ có độ dài ( tính bằng số bộ tám) bằng một giá trị cố đ ị nh AC.MsgLen. - Mật mã phi đối xứng AC độ dài bản rõ bị giới hạn chỉ mã hóa những bản rõ c ó độ dài (tính bằng bộ tám) nhỏ hơn hoặc bằng một giá trị cố định AC.MaxMsgLen(PK). Ở đây độ dài cực đại của bản rõ có thể phụ thuộc vào khóa công khai của bản mã. CHÚ THÍCH Ngoại tr ừ mật mã phi đối x ứ ng độ dài bản rõ cố định và đ ộ dài bản rõ bị giới hạn, phép mã hóa bản rõ nói chung không che giấu được độ dài bản rõ. Bởi vậy khi áp dụng mật m ã phi đối xứng, cần thiết phải đảm bảo, có thể b ằ ng cách sử dụng lược đồ đệm bản rõ, để không một thông tin nhạy cảm nào được mã hóa ở dạng ẩn có độ dài b ằ ng độ d à i bản rõ. 7.2. Sử dụng nhãn Nhãn là xâu bộ tám mà giá trị của nó đượ c sử dụng bởi các thuật toán mã hóa và gi ả i mã. Nhãn có thể chứa d ữ liệu công khai được che giấu khỏi ngữ cảnh và không cần thiết được mã hóa, nhưng n ó lại phải liên quan đến bản mã. Nhãn là xâu bộ tám có nhiều ý nghĩa đối với các ứng dụng sử dụng mật mã phi đối xứng và độc lập với quá trình thực thi mật mã phi đối xứng. Nhãn có thể tùy ý, có độ dài thay đổi, mặc dù với mật mã cụ thể c ó th ể chọn giới hạn tr ê n (rất lớn) cho độ dài của nó. Dạng suy biến của mật mã phi đối xứng được định nghĩa như sau: - Mật mã phi đối xứng với độ dài nhãn cố định là mật mã với các thuật toán mã hóa và giải mã chỉ chấp nhận nhãn c ó độ dài (tính bằng bộ tám) bằng một giá trị cố định AC.LabelLen. CHÚ THÍCH 1 Khái niệm an toàn t ruyền th ố ng ch ố ng lại tấn công chọn bản mã, được m ở rộng trong phụ lục B.4, sao cho bằng trực giác, đối với mật mã phi đối xứng, thuật toán mã hóa cần gắn nh ã n vào bản mã theo một kiểu phù hợp "không có kh ả năng uốn ”. CHÚ THÍCH 2 Ví dụ, có những giao thức trao đ ổ i khóa, t rong đó một phía, chẳng hạn A mã hóa khóa phiên bằng khóa công khai của phía thứ hai, chẳng hạn B . Đ ể giao thức được an toàn, định d anh của phía A (hoặc khóa c ô ng khai hoặc chứng thư số) phải “ không c ó kh ả năng bị uốn “ đối với b ả n m ã . Một cách để thực hiện điều này là, đơn giản ch ỉ cần gắn định danh v à o bản rõ. Tuy vậy, điều này làm cho bản mã tr ở nên dài không c ầ n thiết, v ì thường th ì A đ ã bi ết định danh của B theo ngữ cảnh cụ th ể của giao thức. Việc thực thi t ố t cơ ch ế dán nhãn sẽ mang lại cùng hiệu quả, mà không c ầ n tăng k í ch thước bản mã. 7.3. Định d ạng bản m ã Mật mã phi đối xứng được đề xuất trong phần này của ISO/IEC 18033 mô tả chính xác cách định dạng bản mã như một xâu bộ tám. Tuy vậy, việc thực thi có thể tiến hành độc lập với lưu trữ và/hoặc truyền bản bản mã trong định dạng đ ã lựa chọn để thay thế, nếu như điều đó là thuận tiện. Hơn nữa, quá trình mã hóa bản rõ và biến đổi bản mã thu được theo định dạng đã chọn, có thể suy biến thành một quá trình đơn tương đương v ề chức năng. Tương tự như thế quá trình bi ế n đổi từ định dạng đã chọn và giải mã bản mã có thể suy biến thành một quá trình đơn, tương đương về chức năng. Như vậy, trong hệ thống cho trước, bản mã nhất thiết không được xuất hiện ở dạng đ ã quy định ở đây. CHÚ THÍCH B ê n cạnh việc tăng cư ờ ng t í nh liên tác, việc quy định định dạng của bản mã là c ầ n thiết để đưa ra các mệnh đề có ý nghĩa và l ậ p lu ậ n cứ cho tính an toàn của mật mã ph i đối xứng ch ố ng lại các tấn công chọn bản m ã phù hợp. 7.4. Lựa chọn mật mã Một s ố mật mã phi đối xứng cho phép một s ố dạng tùy chọn cụ thể ở dạng lược đồ đ ể chuyển sang thuật toán mật mã, điều này cắt nghĩa v ì sao biến tùy chọn mật mã b ổ sung opt lại được cho phép trong giao diện trừu t ượng cho mật mã phi đối xứng. Một số mật mã phi đối xứng được trình bày ở đây, một cách tự nhiên có thể xem như không chứa bất kỳ tùy chọn mật mã, trong những trường hợp như thế mật mã được coi là không có tùy chọn. Hệ thống có th ể cung cấp giá trị “mặc định” của biến opt. Tuy vậy, vấn đề này nằm ngoài phạm vi của phần này. CHÚ THÍCH Trong các mật mã phi đối xứng được mô tả trong phần này của ISO/IEC 18033 , c hỉ có mật mã dựa trên đường cong elliptic là sử dụng ch ế độ tùy chọn mật mã, chế độ này được sử dụng nh ằ m chỉ d ẫ n định dạng mong muốn để mã hóa các điểm tr ê n đường cong elliptic. 7.5. Phương pháp vận hành mật mã phi đối xứng Thông thường, thuật toán tạo khóa do một bên thực hiện, đ ó là ch ủ nhân của cặp khóa, hoặc là b ê n được tin cậy được chủ nhân ủy thác. Khóa công khai được tạo ra cho tất cả các bên, những người muốn g ử i thông báo được mã hóa đến cho chủ nhân, nhưng khóa riêng thì không được tiết lộ cho bất kỳ bên n à o trừ chủ nhân của nó. Về cơ chế và các giao thức tạo khóa c ô ng khai cho các bên khác nằm ngoài phạm vi của phần này. Về vấn đề này xem hướng dẫn tại ISO/IEC 11770. Mỗi một mật mã phi đối xứng được trình b ày ở ph ầ n này của ISO/IEC 18033 là thành phần của họ các mật mã phi đối xứng, ở đấy mật m ã cụ thể được chọn t ừ họ mật mã bằng cách chọn giá trị cụ thể của các tham số hệ thống, các tham số này xác định họ các mật mã. Đối với mỗi mật mã cụ thể được chọn từ họ mật mã, các giá trị cụ thể được chọn trước khi tạo khóa. Tùy v à o các quy ước được sử dụng đ ể mã hóa khóa công khai, một số lựa chọn của tham số hệ thống có thể được nhúng vào quá trình mã hóa khóa công khai. Những tham số hệ thống này sẽ được cố định suốt cả thời gian sống của khóa công khai. CHÚ THÍCH Ví dụ, nếu mã phi đối xứng có thể được tham số hóa theo thuật ngữ của hàm băm mật mã, th ì việc chọn hàm hash nên được cố định và nói chung tại một điểm nào đó trước khi tạo cặp kh ó a công khai/khóa riêng, và các thuật toán m ã hóa, giải mã nên sử dụng để chọn hàm băm suốt thời gian sống của khóa công khai. B ỏ qua nguyên tắc này không ch ỉ làm chệch việc thực thi, mà còn làm mất ý nghĩa của việc phân tích t í nh an toàn của mật mã, và c ó thể trong một số trường hợp, đ ẩ y việc thực thi vào những rủi ro nghiêm trọng. 7.6. Mật mã ph i đối xứng được phép Người dùng muốn khai thác mật mã phi đối xứng trong phần này của ISO/ I EC 18033 sẽ chọn một trong số các mật mã sau đây: - Mật mã kết hợp vạn năng, được chọn từ họ HC các mật mã lai ghép, được mô tả tại Điều 8.3; - Mã phi đối xứng với độ dài bản mã giới hạn từ họ RSAES các mật mã, được mô tả tại Điều 11.4; - Mã phi đối xứng với độ dài bản rõ bị giới hạn thuộc họ HIME(R) được mô tả tại Điều 12.3. CHÚ THÍCH Vì HC, RSAES v à HIME là họ mật mã được tham số hóa bởi các tham số hệ thống khác nhau, người dùng sẽ phải chọn các giá trị cụ thể của các tham số hệ thống t ừ tập các tham số hệ thống được phép, được xác đ ị nh trong các Đ iề u tương ứng, trong đ ó mỗi họ mật mã được mô tả. 8 . Mật mã lai ghép tổng quát Khi thiết kế mật mã phi đối xứng hiệu quả, một cách tiếp cận hữu ích là thiết kế mật mã lai ghép, ở đó có thể sử dụng kỹ thuật mật mã phi đối xứng để mã hóa khóa bí mật, khóa bí mật n à y sau đó được sử dụng để mã thông bá o, sử dụng kỹ thuật mật mã đối xứng. Điều n à y mô tả một dạng mật mã lai đặc biệt, được gọi là mật mã lai ghép tổng quát . Mật mã lai ghép tổng quát được xây dựng từ hai “khối kiến tạo" mức thấp hơn: cơ chế bọc khóa và cơ chế bọc dữ liệu . Điều 8.3 đặc tả chi tiết họ HC các mật mã lai ghép tổng quát. 8.1. C ơ chế bọc khóa Cơ chế bọc khóa KEM bao gồm ba thuật toán: - Thuật toán tạo khóa KEM.KeyGen () , v ới đầu ra là cặp khóa công khai/khóa riêng (PK , pk). C ấu trúc của PK và pk phụ thuộc vào lược đồ cụ thể. - Thuật toán mã hóa KEM.Encrypt(PK,opt), nhận đầu vào là khóa công khai PK và tùy chọn mật mã opt , đầu ra là cặp khóa mậ t/ bản mã (K, C 0 ). K và C 0 là các xâu bộ tám. Vai trò của opt ở đây cũng tương tự như trong mật mã phi đối xứng (xem Điều 7.4). - Thuật toán giải mã KEM.Decrypt (pk,C 0 ) với đầu vào là khóa riêng pk và bản mã C 0 , đầu ra là khóa bí mật K, K và C 0 là các xâu bộ tám. Thuật toán giải mã có thể thất bại trong một số bối cảnh nhất định. Cơ chế bọc khóa cũng xác định một số nguyên dương KEM.KeyLen - độ d ài khóa bí mật l à đầu ra của KEM.Encrypt và KEM.Decrypt. CHÚ THÍCH Cơ chế bọc khóa cần th ỏ a mãn tính đ ú ng đắn, tương tự tính đúng đắn của mật mã phi đối xứng: với bất k ỳ cặp khóa c ô ng khai/khóa riêng (PK,pk), b ấ t kỳ đầu ra (K, C 0 ) của thuật toán mã hóa với đầu vào (PK , opt) , b ả n mã C 0 c ó thể được giải mã nhờ pk để thu được K . Yêu c ầ u này c ó thể được giảm nh ẹ , bởi vậy n ó i chung ch ỉ nó ch ỉ giữ một ph ầ n không đáng k ể cặp khóa công khai/bí mật. 8.1.1. Tính ch ấ t phi tiền tố Ngoài ra, cơ chế bọc khóa c ò n phải th ỏ a mãn tính chất sau đây. Tập hợp tất cả các đầu ra - các bản mã có thể - của thuật toán mã hóa là tập con của tập ứng cử viên các xâu bộ tám (có thể phụ thuộc vào khóa công khai), sao cho tập ứng cử viên này là phi tiền tố và các phần tử của tập này dễ dàng được nhận dạng (hoặc cho trước khóa công khai hoặc khóa riêng). 8.1.2. Các cơ chế bọc khóa được phép Cơ chế bọc khóa được phép trong phần này của tiêu chuẩn ISO/IEC 18033 gồm: - EC I ES - KEM (được m ô tả tại Điều 10.2), - PSEC - KEM (được mô tả tại Điều 10.3), - ACE - KEM (được mô tả tại Điều 10.4), và - RSA - KEM (được mô tả tại Điều 11.5). CHÚ THÍCH 1 Để thuận tiện, các mật mã lai ghép tổng quát tương ứng được xây dựng từ các cơ chế bọc khóa trên thông qua c ấ u trúc lai ghép t ổ ng quát tại Điều 8.3 tương ứng được gọ i là ECIES - HC, PSEC - HC , ACE - HC, và RSA - HC. CHÚ THÍCH 2 Nói một cách đạ i thể, cơ chế bọc khóa làm việc tương tự như mật mã phi đối xứng, ngoại tr ừ một điều là thuật toán mã hóa kh ô ng nh ậ n đầu v à o nào khác ngoài khóa c ô ng khai của người nhận: thay v ì nhận đầu vào là th ô ng báo và tạo ra bản mã, thuật to á n mã h ó a tạo ra cặp khóa bí mật/bản mã (K, C 0 ) , ở đây K l à xâu b ộ tám c ó độ dài xác định và C 0 là mã hóa của K , như vậy thuật toán giải mã á p dụng vào C 0 và đưa ra K . CHÚ THÍCH 3 Luôn luôn c ó th ể sử dụng mật mã phi đối xứng (với độ dài bản rõ cố định hay độ dài bản rõ b ị giới hạn) để tạo ra xâu bộ tám ng ẫ u nh iê n K và sau đó mã hóa nó bằng khóa công khai của người nhận (và tùy chọn nào đó đ ể thu được C 0 ). Tuy nhiên, cũng có thể thiết kế cơ chế bọc khóa theo cách khác hiệu qu ả hơn. CHÚ THÍCH 4: Để xây dựng mật mã l ai ghép tổng quát an toàn chống l ạ i tấn công chọn bản mã phù hợp, tồn tại khái niệm an toàn tương ứng cho cơ chế bọc khóa. Điều này được thảo luận chi ti ế t tại Phụ lục B.5. 8.2. Các cơ chế bọc dữ liệu Cơ chế bọc dữ liệu DEM xác định độ dài khóa DEM.KeyLen , và các thuật toán mã hóa và giải mã. - Thuật toán mã hóa DEM.Encrypt(K,L,M) nhận đầu vào là khóa bí mật K, nhãn L và bản rõ M. Thuật toán cho đầu ra là bản mã C 1 . Ở đây K, L, M và C 1 là các xâu bộ tám, trong đó L và M c ó thể có độ dài tùy ý, còn K có độ dài DEM . KeyLen. Thuật toán mã hóa có thể bị thất bại , nếu độ dài L hoặc M vượt qua giới hạn (rất lớn) được xác định bởi quá trình thực thi. - Thuật toán giải mã DEM.Decrypt(K, L ,C 1 ) nhận đầu vào l à khóa bí mật K, nhãn L và bản mã C 1 cho đầu ra là bản rõ M. Thuật toán giải mã có thể thất bại trong một số bối cảnh nhất định. CHÚ THÍCH Các thuật toán mã hóa và giải mã nên là thuật toán tất định, thỏa mãn yêu cầu sau đây v ề tính đúng đắn: với mọi khóa bí mật, tất cả L vá t ấ t cả bản rõ, đều có độ dài L và M không vượt quá giới hạn được xác định bởi thực thi, DEM.Decr y pt(K, L ,DEM.Encrypt ( K,L,M)) = M. 8.2.1. Các dạng cơ chế bọc dữ liệu suy biến Có hai dạng cơ chế bọc dữ liệu suy biến được xác định như sau: - Cơ chế bọc d ữ liệu với độ dài nhãn cố định là cơ chế mà thuật toán mã hóa và giải mã chỉ chấp nhận nh ã n có độ dài bằng giá trị cố định DEM.LabelLen. - Cơ chế bọc dữ liệu với độ dài bản rõ cố định là cơ chế mã thuật toán mã hóa chỉ chấp nhận các bản rõ c ó độ dài bằng giá trị cố định DEM.MsgLen. 8.2.2. Cơ chế bọc dữ liệu được phép Cơ chế bọc dữ liệu trong phần n à y của tiêu chuẩn ISO/IEC 18033 được mô tả tại Điều 9. CHÚ THÍCH 1 Nói đại thể, cơ chế bọc dữ liệu cung c ấ p “ phong b ì số " , bảo vệ c ả t í nh b í mật lẫn tính toàn vẹn của dữ liệu sử dụng kỹ thuật mật mã đối xứng. Nó đồng thời gắn dữ liệu vào nhãn c ô ng khai. CHÚ THÍCH 2 Để xây d ựng mã lai ghép tổng quát, ch ố ng được tấn công chọn bản mã, tồn tại khái niệm tương ứng về an toàn cho cơ chế bọc dữ liệu. Đ i ều này được xem xét chi tiết tại Phụ lục B.6. 8.3 . HC 8.3.1. Các tham số hệ thống HC là họ mật mã phi đối xứng được tham số hóa như sau: - KEM : cơ chế bọc khóa được mô tả tại Điều 8.1; - DEM : cơ chế bọc khóa được mô tả tại Điều 8.2. Mọi sự kết hợp giữa KEM và DEM đều có thể sử dụng, n ế u đảm bảo điều kiện KEM.KeyLen = DEM.KeyLen. CHÚ THÍCH 1 Nếu DEM l à cơ chế bọc dữ liệu với độ dài nhãn cố định, tr ong đó độ dài nhãn bị hạn chế b ở i DEM.LabelLen , th ì HC là mã đối xứng với độ dài nhãn cố định và HC.LabelLen = DEM.KeyLen. CHÚ THÍCH 2 Nếu DEM là cơ chế bọc dữ liệu với độ dài bản rõ cố định, trong đ ó bản rõ có độ dài hạn chế bởi DEM.MsgLen, th ì HC l à mã đối xứng với độ dài bản rõ cố định và HC.MsgLen = DEM.MsgLen. CHÚ THÍCH 3 Với tất cả sự lựa chọn được phép của KEM , giá trị của KEM.KeyLen là tham số hệ thống có thể được chọn bằng DEM.KeyLen. Như vậy mọi sự kết hợp có thể của KEM và DEM có thể được thực hiện bằng cách chọn thích hợp các tham số hệ thống. 8.3.2. Tạo khóa Thuật toán tạo khóa, khóa công khai và khóa riêng cho HC cũng như cho KEM ; Tùy chọn mật mã của HC cũng như của KEM . Giả sử (PK, pk) là cặp khóa công khai/khóa riêng. 8.3.3. Mã hóa Thuật toán mã hóa HC.Encrypt nhận đầu vào là khóa công khai PK , nhãn L , bản rõ M và tùy chọn mật mã opt . Thuật toán này chạy như sau: a) T í nh (K,C 0 ) = KEM.Encrypt(PK,opt). b) T í nh C 1 = DEM.Encrypt(K,L,M). c) Tạo C = C 0 || C 1 . d) Đưa ra C . 8.3.4. Giả i mã Thuật toán giải mã HC.Decrypt nhận đầu vào là khóa riêng pk , nhãn L và bản mã C . Thuật toán chạy như sau: a) Sử dụng t í nh chất phi tiền tố của bản mã liên kết với KEM ( xem Điều 8.1.1), tạo cú pháp C, C = C 0 ||C 1 , ở đây C 0 và C 1 là các xâu bộ tám sao cho C 0 là phần tử của tập hợp ứng cử viên của các bản mã có thể liên kết với KEM. Bước này sẽ thất bại nếu C không được tạo cú pháp. b) Tính K = KEM.Decrypt(pk, C 0 ). c) Tính M = DEM.Decrypt (K, L, C 1 ). d) Đưa ra M. CHÚ THÍCH độ an toàn của HC được xem xét tại phụ lục B.7. Tại đây lưu ý rằng chừng nào KEM và DEM thỏa mãn các t í nh chất an toàn tương ứng, th ì HC sẽ là an to à n đối với t ấ n công chọn bản mã thích hợp. 9. Thiết kết các cơ chế bọc dữ liệu Điều khoản này đưa ra các cơ chế bọc dữ liệu, gồm: - DEM1 , được mô tả trong Điều 9.1, - DEM2, được mô tả trong Điều 9.2, và - DEM3 , được mô tả trong Điều 9.3. 9.1. DEM1 9.1.1. Các tham số hệ th ố ng DEM1 là họ các cơ chế bọc dữ liệu, được tham số hóa bằng các tham số hệ thống sau: - SC : mật mã đối xứng, được mô tả tại Điều 6.5; - MA : thuật toán MAC được mô t ả trong Điều 6.3. Giá trị của DEM 1 .KeyLen được xác định như sau: DEM 1 .KeyLen = SC.KeyLen + MA. KeyLen. 9.1.2. Mã hóa Thuật toán DEM 1 .Encrypt nhận đầu vào là khóa bí mật K , nhãn L , và bản rõ M . Thuật toán chạy như sau: a) Tạo cú pháp K, K = , ở đây k và k ' là các xâu bộ tám sao cho | k | = SC.KeyLen và | k ' | = MA.KeyLen. b) Tính c = SC.Encrypt(k,M). c) Giả sử T = d) Tính MAC = MA.eval(k ' ,T). e) Thiết lập C 1 = c || MAC. f) Đưa ra C 1 . 9.1.3. Giải mã Thuật toán DEM1.Decrypt nhận đầu vào là khóa bí mật K , nhãn L , và bản mã C 1 . Thuật toán chạy như sau: a) Tạo cú pháp K,K = ở đấy k và k' là các xâu bộ tám với | k | = SC.KeyLen và | k '| = MA.KeyLen. b) Nếu |C 1 | <> thì thất bại. c) Tạo cú pháp C 1 : C 1 = , ở đây c và MAC l à các xâu bộ tám với | MAC | = MA.MACLen. d ) Gi ả sử T = e) Tính MAC ' = MA.eval(k',T). f) Nếu MAC ¹ MAC ' thì thất bại. g) Tính M = SC.Decrypt(k,c). h) Đưa ra M. CHÚ THÍCH Việc xem xé t chi tiết tính an toàn của c ấ u trúc này được đưa ra trong Phụ lục B.6.1. Ở đây ch ỉ lưu ý là các SA và MA cơ sở được cung cấp t h ỏa m ã n các yêu cầu tương ứng, sau đó là cả DEM1 cũng thỏa m ã n các yêu c ầ u này. 9.2. DEM2 9.2.1. Các tham số hệ thống DEM2 là họ các cơ chế bọc dữ liệu với độ dài nhãn cố định, được tham số hóa bằng các tham số hệ thống sau đây: - SC : mã đối xứng được mô tả tại Điều 6.5; - MA : thuật toán MAC , được mô tả tại Điều 6.3; - LabelLen : số nguyên không âm. Giá trị DEM2.LabelLen được xác định là bằng giá trị của t ham số hệ thống LabelLen. Giá trị DEM2 . KeyLen được xác định bằng: DEM2.KeyLen = SC.KeyLen + MA.KeyLen. 9.2.2. Mã hóa Thuật toán DEM2.Encrypt nhận đầu vào là khóa bí mật K , nhãn L độ dài LabelLen , bản rõ M . Thuật toán chạy như sau: a) Tạo cú pháp K, K = ở đấy k và k' là các xâu bộ tám sao cho | k | = SC.KeyLen và | k '| = MA.KeyLen. b) Tính c = SC.Encrypt(k,M). c) Đặt T = . d) Tính MAC = MA.eval (k',T). e) Thiết lập C 1 = c || MAC. f) Đưa ra C 1 . 9.2.3. Giải mã Thuật toán DEM 2 .Decrypt nhận đầu vào là khóa bí mật K , nhãn L độ dài LabelLen và bản mã C 1 . Thuật toán chạy như sau: a) Tạo cú pháp K, K = ở đấy k và k’ là các xâu bộ tám sao cho | k | = SC.KeyLen và | k ' | = MA. KeyLen. b) N ế u | C 1 | <> thì th ấ t bại . c) Tạo cú pháp C 1 , C 1 = , ở đây c và MAC là các xâu bộ tám sao cho |M A C| = MA.MACLen. d) Giả sử T = c || L . e) Tính MAC ' = MA.eval (k ', T). f) Nếu MAC ' ¹ MAC th ì th ấ t bại. g) Tính M = SC.Decrypt (k,c ). h) Đưa ra M. CHÚ THÍCH 1 Việc xem xé t chi tiết t í nh a n toàn của thiết kế trên được trình bày trong Phụ lục B .6.1. Ở đây ch ỉ l ưu ý là các SC và MA thỏa m ã n các yêu cầu an toàn tương ứng, khi đó DEM2 cũng thỏa mãn các yêu cầu này. CHÚ THÍCH 2 DEM2 được cung c ấ p chủ yếu để so sánh v ớ i các tiêu chuẩn khác. 9.3. DEM3 9.3.1. Các tham số hệ thống DEM3 l à họ các cơ chế bọc dữ liệu với độ dài bản rõ c ố định, được tham số hóa bởi các tham số hệ thống sau đây: - MA : thuật toán MAC được mô tả ở Điều 6.3; - MsgLen : số nguyên dương. Giá trị của DEM3 . MsgLen được định nghĩa bằng giá trị của tham số hệ thống MsgLe n . Giá trị của DEM3 . KeyLen được xác định bằng, DEM 3 .KeyLen = MsgLen + MA.KeyLen. 9.3.2. Mã hóa Thuật toán DEM 3 .Encrypt nhận đầu vào là khóa bí mật K , nhãn L , bản rõ M với độ dài MsgLen . Thuật toán chạy như sau: a) Tạo cú pháp K, K = ở đấy k và k’ là các x â u bộ tám (octet) với | k | = MsgLen và | k '| = MA.KeyLen. b) Tính c = k Å M. c) Gi ả sử T = . d) Tính MAC = MA.eval (k ', T). e) Đặt C 1 = c || MAC. f) Đưa ra C 1 . 9.3.3. Giải mã Thuật toán DEM 3 .Decrypt nhận đầu vào là khóa bí mật K , nhãn L và bản mã C 1 . Thuật toán chạy như sau: a) Tạo cú pháp cho K, K = ở đấy k và k’ là các x â u bộ tám với |k| = MsgLen và | k '| = MA.KeyLen. b) Nếu C 1 ¹ MsgLen + MA.MACLen thì thất bại . c) Tạo cú pháp C 1 :C 1 = , ở đây c và MAC là các xâu bộ tám với |c| = Msglen và |MA C| = MA.MACLen. d) Đặt T = . e) Tính MAC ’ = MA.eva l (k ', T). f) Nếu MAC ¹ M A C' thì thất bại. g) T í nh M = k Å c . h) Đưa ra M CHÚ THÍCH 1 Việc xem xét chi tiết t í nh an toàn của thiết kế này được trình bà y ở Phụ lục B.6.1. Cần lưu ý ở đ â y là nếu SC và MA thỏa mã n các yêu cầu an toàn tương ứng thì DEM3 cũng thỏa mãn các yêu cầu đó. CHÚ THÍCH 2 DEM3 được cung cấp ch ủ y ế u để so sánh với các tiêu chuẩn khác. 10. Cơ chế bọc khóa dựa vào EIGamal Điều này m ô t ả một số cơ chế bọc khóa dựa trên bài toán logarit rời rạc: - EC I ES-KEM được mô tả trong Điều 10.2; - PSEC-KEM được mô tả trong Điều 10.3; - ACE-KEM được mô tả trong Điều 10.4. CHÚ THÍCH Tất cả các lược đồ trên đều là những biến thể của lược đ ồ mật mã góc EIGamal [18]. 10.1. Các nhóm cụ thể Mật mã EIGamal dựa tr ê n các phép toán số học trên nhóm hữu hạn. Để mô tả cơ chế bọc khóa dựa trên mật mã EIGamal, khái niệm nhóm được mô tả như một kiểu dữ liệu trừu tượng. Việc mô tả và phân tích các lược đồ dựa vào giao diện trừu tượng này, tuy nhiên trong phần này của tiêu chuẩn ISO/IEC 18033, chỉ cho phép sử dụng một số dạng nhóm nh ấ t định bằng cách cụ thể hóa kiểu dữ liệu trừu tượng này. Để tiện, khái niệm phép cộng luôn được sử dụng cho nhóm. Đồng thời các phần tử của nhóm sẽ được viết bằng chữ cái thư ờ ng, đậm nét và 0 ký hiệu phần tử đồng nhất của nhóm. Nhóm cụ thể G là bộ - là nhóm Abel hữu hạn. Chú ý rằng nhóm không nhất thiết là tuần hoàn. - là nhóm con tuần hoàn của - là phần tử sinh của - μ là bậc của , và v là chỉ số của trong , nghĩa là v = | |/ μ Ở đây đòi hỏi μ phải là số nguyên tố. Trong một số lược đồ mật mã, đòi h ỏ i thêm điều kiện gcd(μ,v) = 1. - ε (a, f mt) là hàm “mã hóa" ( encoding function), ánh xạ phần tử nhóm vào xâu bộ tám; biến thứ hai fmt là bộ định dạng, được sử dụng để chọn một trong số lượng nhỏ các định dạng có thể để mã hóa phần tử của nhóm. Các giá trị được phép của biến fmt phụ thuộc vào nhóm. Các yêu cầu sau phải được thỏa mãn: - Tập tất cả các đầu ra ε là tập phi tiền tố. - Phần tử trung h ò a được mã hóa (encoding) duy nhất, bởi vậy với tất cả các biến định dạng fmt , fmt’ ta c ó : ε(0, f mt ) = ε(0, f mt’ ). - Trừ phần tử trung hòa, hàm mã hóa là ánh xạ một-một, do đó với tất cả a và a’ và tất cả các biến định dạng fmt,fmt' , nếu (a,fmt) ¹ (a ' ,fmt ' ) và nếu a ¹ 0 hoặc a’ ¹ 0 , thì ε(a,fmt) ¹ ε(a ' ,fmt '). Xâu bộ tám x được gọi là mã hợp lệ (valid encoding) của phần tử nhóm , nếu x = ε(a,fmt ) với một bi ế n định d ạ ng fmt nào đó. - D(x) là hàm sao cho nó sẽ tr ả về nếu x không phải là mã hợp lệ của phần tử thuộc , ngược lại, hàm hoàn lại phần tử nhóm duy nhất , sao cho ε(a,fmt ) = x với một biến định dạng fmt nào đó. - ε ' (a ) là hàm "mã từng phần”, ánh xạ mỗi phần tử nhóm , vào xâu bộ tám. Điều này đòi hỏi tập hợp tất cả đầu ra của ε' là phi tiền tố. Xâu bộ tám x được gọi là mã từng phần hợp lệ (valid partial encoding) của phần tử nhóm a nếu x = ε ' (a ) . - D' (x) là hàm sao cho hoặc là thất bại nếu x không phải là mã cụ thể của phần tử thuộc ; ngược lại, nó sẽ tr ả về một tập hợp chứa tất cả các phần tử nhóm , sao cho ε ' (a ) = x . Giả thiết kích thước của tập hợp này bị giới hạn bởi một hằng số nh ỏ . Giả thiết có thể thực hiện hiệu quả các phép toán số học trong . Đồng thời, tất cả các thuật toán trên đây đều được thực thi hiệu qu ả . Hàm D' sẽ không được sử dụng bởi bất kỳ lược đồ nào, nhưng sự tồn tại của hàm này là cần cho việc phân tích tính an toàn các lược đồ đó. Gi ả sử có thể kiểm tra hiệu quả, liệu một phần tử của có nằm trong nhóm con hay không. Lưu ý rằng nếu tất cả các phần tử của , có bậc μ nằm trong , thì có thể kiểm tra bằng cách kiểm tra điều kiện μ.a = 0. Bởi vậy phép kiểm tra này có thể áp dụng được nếu bản thân là nhóm tuần hoàn và gcd (μ ,v) = 1. Với các nhóm cụ thể, có thể có các phép kiểm tra hiệu quả hơn về việc phần tử cho trước c ó thuộc nhóm con hay không. Tập hợp {ε( a 1 ,fmt 1 ),....,ε( a m ,fmt m ) } các mã hợp lệ được gọi là tập bền vững, nếu mã (encodings) của các phần tử nhóm không phải là phần tử trung hòa sử dụng cùng một biến định dạng fmt ; bởi vậy với mọi 1 ≤ i, j ≤ m , nếu a i ≠ 0, a j ≠ 0 thì fmt i = fmt j . Với những giả thiết như trên có thể kiểm tra một cách hiệu quả một tập hợp các mã hợp lệ cho trước có bền vững hay không. CHÚ THÍCH Các ứng dụng mật m ã khác nhau sẽ đưa ra các giả thiết khác nhau về t í nh kh ó giải của nhóm. Những giả thiết này được xem xét tại Phụ lục B.8. 10.1.1. Các nhóm cụ thể được phép Phần này của ISO/IEC 18033 chỉ cho phép hai họ nhóm cụ thể sau đây, được mô tả tại các Điều 10.1.2 va 10.1.3. 10.1.2. Nhóm con của các trường hữu hạn được cho dư ớ i dạng tường minh Giả sử F là trường hữu hạn dạng tường minh, được định nghĩa tại Điều 5.3 và F* là nhóm nhân các đơn vị của F . Gi ả sử là ký hiệu của F* v à là nh ó m con của F* có bậc nguy ê n tố, g là phần tử sinh của . Đặt μ = | | và v = (|F| - 1) /μ . Vì l à nhóm tuần hoàn, suy ra chứa tất cả các phần tử của có bậc chia hết μ, thậm chí khi gcd (μ, v) ≠ 1. Như vậy, luôn luôn có thể kiểm tra phần tử có thuộc hay không bằng cách kiểm tra hệ thức μ.a = 0. Tuy nhiên, còn có thể có những phép kiểm tra hiệu quả hơn, ví dụ nếu F là tr ư ờng hữu hạn nguyên tố và v = 2, th ì phép kiểm tra này có thể thực hiện bằng cách tính ký hiệu Jacobi. Ánh xạ mã hóa ε(encoding map) được thực thi bằng cách sử dụng hàm FE2 O SP F , bởi vậy t ấ t c ả các phần tử nhóm được mã hóa dưới dạng các xâu bộ tám có độ dài .Ch ỉ cho phép m ột định dạng. Ánh xạ được thực thi bằng cách sử dụng OS2FEP F và thất bại nếu OS2FEP F th ấ t bại hoặc đưa ra 0 F . Hàm ε ' cũng giống như ε và cũng giống như 10.1.3. Nhóm con của đường cong Elliptic Giả sử E là đường cong elliptic trên trường hữu hạn dạng tường minh F , được mô tả tại Điều 5.4. Ký hiệu l à nh ó m các đi ể m trên E , là nhóm con bậc nguyên tố của là phần tử sinh của ; giả sử μ là bậc của , v là ch ỉ số của nó trong . Ta thấy, nói chung không phải là nhóm tuần hoàn. Nếu gcd (μ,v) = 1 thì có thể kiểm tra phần tử có nằm trong hay không, bằng cách kiểm tra hệ thức μ.a = 0. Nếu gcd(μ, v) ≠ 1 khi đó yêu cầu phải có nhiều thông tin hơn về cấu trúc nhóm của E để xây dựng nên phép kiểm tra hiệu quả về việc phần tử thuộc có nằm trong hay không. Các ánh xạ m ã hóa/ giải mã ε và …… được thực thi bằng cách sử dụng các hàm EC2 O SP E và OS2ECP E . Như vậy mã hóa của điểm là xâu bộ tám có độ dài hoặc bằng 1 hoặc bằng , hoặc . Tập tất cả các biến định dạng được phép có thể được chọn là tập con không rỗng bất kỳ của tập {không n é n, nén, lai ghép } . Như vậy nhóm cụ thể được xác định nhờ sử dụng đường cong elliptic, có thể, nhưng không nhất thiết, cho phép sử dụng các định dạng đa mã hóa. Ánh xạ mã hóa cụ thể ε' được xác định như sau: Cho điểm P trên E , nếu P = th ì đ ầ u ra là FE2 O SP F (0 F ) và nếu P = ( x, y) ≠ ,ở đấy x,y Î F , th ì đầu ra là FE2 O SP F (x) . Như vậy đầu ra của ε ' là xâu bộ tám độ dài 10.2. ECIES-KEM Điều này mô tả cơ chế bọc khóa ECIES - KEM. CHÚ THÍCH ECIES - KEM dựa trên công trình của Adballa, Bellare và Rogaway [ 1,2]. 10.2.1. Các tham số hệ thống ECIES - KEM là họ các cơ chế bọc khóa, được tham số hóa bởi các tham số hệ thống sau đây: - G : nhóm cụ thể như mô tả trong Điều 10.1; - KDF : Hàm dẫn xuất khóa, như đã mô tả tại Điều 6.2; - CofactorMode : một trong hai giá trị 0 hoặc 1. - OldCofactorMode: một trong hai giá trị 0 hoặc 1. - CheckMode :mộ t trong hai giá trị 0 hoặc 1. - SingleHashMode: một trong hai giá trị 0 hoặc 1. - KeyLen : số nguyên. B ấ t kỳ một tổ hợp nào các tham số hệ thống đều cho phép, trừ các hạn chế sau: - Nhiều nhất một trong các tham số CofactorMode , OldCofactorMode và CheckMode có thể là 1. - Nếu v > 1 và CheckMode = 0, khi đó phải có gcd(μ, v) = 1. Giá trị ECIES - KEM.KeyLen được định nghĩa b ằ ng giá trị của tham số hệ thống Keylen . CHÚ THÍCH Các gi á trị của CofactorMode và CheckMode ch ỉ được sử dụng bởi thuật toán giải mã. 10.2.2. Tạo khóa Thuật toán tạo khóa ECIES - KEM.KeyGen không nhận đầu vào, và chạy như sau: a) Tạo số ngẫu nhiên x Î [1 ...μ). b) Tính h = x.g. c) Đưa ra khóa công khai đầu ra: - h : phần tử khác không của d) Đưa ra khóa riêng đầu ra: - x: số nguyên thuộc tập hợp [ 1 ,... ,μ ). 10.2.3. Mã hóa Thuật toán EC I ES - KEM.Encrypt nhận đầu vào là khóa c ô ng khai, gồm phần tử cùng với tùy chọn mật mã fmt xác định định dạng dùng để mã hóa các phần tử của nhóm. Thuật toán được thực hiện như sau: a) Tạo số ngẫu nhiên r Î [ 1 ,... ,μ ). b) Nếu OldCofactorMode = 1 th ì đặt r' = r.vmod μ , ngược lại th ì đặt r’ = r. c) Tính = r.g và = r'.h d) Đặt C 0 = ε{ ,fm t ). e) Nếu SingleHashMode = 1 thì Z là xâu bộ tám gồm toàn phần tử 0; ngược lại đặt Z = C 0 . f) Đặt PEH = ε' ( ). g) Đặt K = KDF ( Z || PEH , KeyLen). h) Đưa ra bản mã C 0 và khóa bí mật K . 10.2.4. Giải mã Thuật toán gi ả i mã EC I ES - KEM . Decrypt nhận đầu vào là khóa bí mật K , gồm phần tử r Î [1 ...μ ), và bản mã C 0 . Thuật toán thực hiện như sau: a) Đặt ; bước này sẽ thất bạ i nếu C 0 không phải là mã hợp lệ của phần tử thuộc b) Nếu CheckMode = 1, Kiểm tra nếu không thỏa m ã n th ì thất bại . c) Nếu Co f actorMode = 1 hoặc O l dCofactorMode = 1, đặt , nếu ngược lại th ì đặt d) Nếu Cofactor = 1, khi đó = v -1 x mo d μ , ngược lại đặt = x . e) Tính = . f) N ế u = 0 th ì th ấ t bại. g) Nếu SingleHashMode = 1 th ì cho Z là xâu bộ tám rỗng, ngược lại giả sử Z = C 0 . h) Đặt PEH = ε ’ ( ). i) Đặt K = KDF(Z || PEH, KeyLe n ). j) Đưa ra là khóa bí mật K CHÚ THÍCH Sử d ụng CofactorMode = 1 hoặc OldCofactorMode = 1 có thể mang lại lợi í ch đáng kể trong thực thi, nếu v thật sự nh ỏ . Ưu điểm của việc sử dụng CofactorMode = 1 là ở chỗ hành vi của thuật to á n m ã hóa không bị ảnh hư ở ng bởi giá trị của CofactorMode. CHÚ THÍCH 2 Khi sử dụng CofactorMode = 1, việc thực thi c ó th ể đơn giản là tính t rước v à lưu giá trị thay vì t í nh x . CH Ú THÍCH 3 Khi sử dụng S i ngleHashMode = 1, thậm ch í nếu G h ỗ trợ định dạng đa mã, giá trị của fmt được sử dụng trong khi mã h ó a không ảnh hưởng lên bất k ỳ tính toán nào, ngoại trừ định dạng cho bản mã cuối cùng. Như vậy, nếu bản mã cho trước C 0 là kết quả m ã hóa của phần tử nhóm , thì một bản mã khác C' 0 đồng thời cũng là kết qu ả m ã hóa (encoding) của cũng sẽ được giải mã bằng cách như với C 0 . CH Ú TH Í CH 4: Việc xem xét t í nh an toàn của lược đồ này được trình bày trong Phụ lục B.9. 10.3. PSEC-KEM Điều này mô tả cơ chế bọc khóa PSEC - KEM. CH Ú TH Í CH PSEC - KEM dựa trên công trình của Fujisaki và Okamoto [26]. 10.3.1. Các tham số hệ thống PSEC - KEM là họ các cơ chế bọc khóa, được tham số hóa bởi các tham số hệ thống sau đây: - G : nhóm cụ thể được mô tả ở Điều 10.1; - KDF : Hàm xuất khóa được mô tả ở Điều 6.2; - SeedLen : số nguyên d ương; - KeyLen : s ố nguyên dương. 10.3.2. Tạo khóa Thuật toán tạo PSEC - KEM.KeyGen không có đầu vào, thực hiện như sau: a) Tạo số ngẫu nhiên x Î [0...μ). b) T í nh h = x.g. c) Đưa ra khóa công khai: - h: phần tử của d) Đưa ra khóa bí mật: x: số nguyên thuộc tập hợp [0 , ... , μ). 10.3.3. Mã hóa Giả sử I 0 = I2 O SP (0,4) và I1 = I2O SP (1,4). Thuật toán mã hóa PSEC - KEM.Encrypt nhận đầ u vào là khóa công khai, gồm phần tử h Î , cùng với tùy chọn mật mã fmt , đưa ra đ ị nh dạng dùng đ ể mã hóa phần tử của nhóm. Thuật toán được thực hiện như sau: a) Tạo xâu bộ tám ngẫu nhiên seed độ dài SeedLen . b) Tính , là xâu bộ tám độ dài c) Tạo cú pháp cho t, t = u || K , ở đ â y u và K là các xâu bộ tám sao cho và |K| = KeyLen. d) Tính r = OS2 I P( u ) mod μ. e) Đặt = r.g , = r. h . f) Đặt EG = ε( ,fm t ) và PEH = ε '( ). g) Đặt SeedMask = KDF( I 1 || EG || PEH , SeedLen). h) Đặt MaskedSeed = seed Å SeedMask. i) Đặt C 0 = EG || MaskedSeed. j) Đưa ra là bản mã C 0 và khóa bí mật K . 10.3.4. Giải mã Giả sử I 0 = I2 O SP (0,4) và I1 = I2O SP (1,4). Thuật toán giải mã PSEC - KEM.Decrypt nhận đầu vào là khóa bí mật K, gồm phần tử x Î [0 ... μ ) và bản mã C 0 . Thuật toán thực hiện như sau: a) Tạo cú pháp C 0 , C 0 = EG || Maske d Seed, EG và MaskedSeed là các xâu bộ tám sao cho | MaskedSe e d | = SeedLen; bước này sẽ thất bại nếu | C 0 | <> b) Đặt , bước này sẽ thất bại nếu EG không phải là mã hợp lệ của phần tử nhóm. c) Tính d) Đặt PEH = ε ' ( ). e) Đặt SeedMask = KDF( I 1 || EG || PEH , SeedLen). f) Đặt seed = MaskedSeed Å SeedMask. g) T í nh là xâu bộ tám độ dài h) Tạo cú pháp t, t = u || K ở đây u và K là xâu bộ tám thỏa mãn và |K| = KeyLen. i) Tính r = OS2IP(u) mod μ. j) Tính = r.g. k) Kiểm tra , nếu không phải thì thất bại . I) Đưa ra khóa bí mật K. CHÚ THÍCH Việc xem xét tính an toàn của lược đồ trên có thể t ì m tại phụ lục B.10. 10.4. ACE-KEM Điều này mô tả cơ chế bọc khóa ACE - KEM. CHÚ THÍCH ACE - KEM được xây dựng dựa trên công trình của Cramer và Shoup [13 , 14]. 10.4.1. Các tham số hệ thống ACE - KEM là họ các cơ chế bọc khóa, được tham số hóa bởi các tham số hệ thống sau: - G : nhóm cụ thể được mô tả tại Điều 10.1; - KDF : hàm xuất khóa được mô tả ở Điều 6.2; - Hàm băm mật mã được mô tả ở Điều 6.1; - CofactorMode: một trong hai giá trị 0 hoặc 1. - KeyLen : số nguyên dương. Bất k ỳ sự kết hợp nào của các tham số hệ thống được ph é p đều cho phép, ngoại trừ các hạn chế sau: - HashLen : phải nhỏ hơn log 256 μ. - Nếu v = 1 thì CofactorMode sẽ bằng 0. - Nếu v > 1 CofactorMode có thể bằng 1 với điều kiện gdc(μ , v) = 1. CHÚ THÍCH Gi á tr ị của Cofactormode ch ỉ được sử dụng bởi thuật toán giải m ã . 10.4.2. Tạo khóa Thuật toán tạo khóa ACE - KEM .KeyGen không có đầu vào, thực hiện như sau: a) Tạo số ngẫu nhiên w,x,y,z Î [0...μ ) . b) Tính các phần tử của nhóm g' = w.g , c = x.g , d = y.g , h = z.g. c) Đưa ra khóa công khai: - g',c,d,h: các phần tử thuộc d) Đưa ra khóa riêng: - w,x,y,z : các số nguyên thuộc tập [0 ...μ) . 10.4.3. Mã hóa Thuật toán mã hóa A CE = KEM.Encrypt nhận đầu vào là khóa công khai, gồm g',c,d,h Î cùng tùy lựa chọn mật mã fmt xác định định dạng dùng để mã hóa phần tử nhóm. Thuật toán thực hiện như sau: a) Tạo số ngẫu nhiên r Î [0… μ) b) Tính các phần tử nhóm u = r.g, u' = r.g', = r.h. c) Tính các xâu bộ tám EU = ε(u,fmt) ,EU' = ε(u ' ,fmt ' ) d) Tính số nguyên α = OS2IP(Hash.eval(EU || EU')). e) Tính số nguyên r' = a.r mod μ. f) Tính phần tử nhóm v = r.c + r'.d. g) Đặt EV= ε(v,fmt). h) Đặt PEH = ε'( ). i) Đặt C 0 = EU || EU' || EV. j) Đặt K = KDF(EU || PE H ,KeyLe n ). k) Đưa ra là bản mã C 0 và khóa bí mật K . 10.4.4. Giải mã Thuật toán ACE - KEM.Decrypt nhận đầu vào là khóa bí mật, gồm w,x,y,z Î [0...μ) và bản mã C 0 . Thuật toán chạy như sau: a) Tạo cú pháp cho C 0 , C 0 = EU || E U ' || EV , ở đấy E U , EU', và EV là các xâu bộ tám sao cho đối với một số phần tử nhóm (xác định duy nhất) u,u', v Î H, ta có u = (EU), u’ = (EU'), v = (EV). Bước này sẽ thất bại nếu C 0 không được tạo cú pháp như vậy. b) Kiểm tra tập hợp { EU, E U' , EV } có phải l à tập bền vững các mã hợp lệ không, nếu không thì thất bại. c) Nếu CofactorMode = 1, đặt Ngược lại, th ì đặt . d) Nếu CofactorMode ≠ 1 và v > 1: kiểm tra u Î nếu u Ï thì thất bại. e) Tính số nguyên α = OS2 I P ( Hash. eval(EU || EU ' )). f) Tính số nguyên g) Kiểm tra nếu không thỏa mãn, th ì thất bại . h) Tính ph ầ n t ử nhóm . i) Đặt PEH = ε '( ). j ) Đặt K - KDF(EU || PEH, KeyLe n ). k) Đưa ra là khóa b í mật K. Vì l ý do an toàn, khuyến cáo rằng việc thực thi không được để lộ bất k ỳ thông tin nào về lý do sinh ra lỗi tại bước g. Nói riêng, việc thực thi có thể đưa ra cùng một thông báo lỗi tại cùng thời điểm bất kể lý do sinh ra lỗi. CHÚ THÍCH 1 Sử dụng CofactorMode = 1 c ó th ể mang lại lợi ích cho thực thi nếu v đ ủ nhỏ. Ch ú ý rằng ở chế độ này việc thực thi c ó th ể tính toán trư ớ c và lưu trữ giá trị thay v ì tính các giá trị w,x,y,z… CHÚ THÍCH 2 Việc thực thi không phụ thuộc vào việc sử dụng p hiê n bản tương đương về ch ứ c năng sau đây của thuật toán giải mã. Trong thực thi không cần thiết phải tính u' và v tại bước a của thật toán giải mã, mà đơn giản là tạo ra cú pháp C 0 sau khi nhận được EU, EU' , và EV , và ch ỉ biến đổi EU th à nh ph ầ n tử nhóm u . Bước b c ó thể bỏ qua. Tiếp đ ó việc kiểm tra tại bước g của thuật toán giải m ã thực hiện như sau: Nếu u = 0 thì kiểm tra EU' và EV c ó phải là mã (duy nh ấ t) của 0 hay không; nếu không thì gi ả sử fmt l à biến định dạng của EU và kiểm tra các điều kiện ε( = EU ' và ε( = E V. CHÚ THÍCH 3 Việc xem xét chi tiết t í nh an toàn của lược đồ này được đề c ậ p ở Ph ụ lục B.11. 11. Mật mã phi đối xứng dựa trên RSA và các cơ chế bọc khóa Điều này mô tả mật mã phi đối xứng và các cơ chế bọc khóa dựa trên biến đổi RSA . Mã RSAES được mô tả tại Điều 1 1.4; cơ chế bọc khóa RSA - KEM được mô tả ở Điều 11.5. CHÚ THÍCH 1 C ác lược đồ này là sự cải bi ê n của lược đồ mật mã gốc RSA [ 31]. CHÚ THÍCH 2 Trong một số tiêu chuẩn ISO khác, thuật ngữ “phân t í ch s ố“ được sử dụng ở những nơi "dựa vào RSA"; tuy nhiên, v ì ti ê u chuẩn này xác đ ị nh một số lược đ ồ khác nhau dựa trên phân t í ch số, nên nó chấp nhận thỏa thuận đặt tên mới. 11.1. Các thuật toán tạo khóa RSA Thuật toán tạo khóa RSA, RSAKeyGen () là thuật toán xác suất không có đầu vào, đầu ra là bộ ba ( n, e, d) , ở đ â y: - S ố nguyên n là tích của hai số nguyên tố p và q , có độ dài tương tự nhau , p ≠ q, - e là số nguyên dương thỏa mãn điều kiện gcd (e, (p - 1)(q -1)) = 1 và - d là số nguyên dương thỏa mãn ed ≡ 1 (modλ( n )) ở đây λ(n) là bội số chung nhỏ nhất của (p -1) và ( q -1). Phân phối đầu ra của thuật toán tạo khóa RSA phụ thuộc vào thuật toán cụ thể. Thuật toán này được phép cho kết quả đầu ra không thỏa mãn các điều kiện trên đây, chừng nào điều đó c ò n x ả y ra với xác suất không đáng kể. CH Ú TH Í CH 1 Trong việc mô tả mật mã dựa trên RSA, các mật mã này được tham số hóa bằng thuật ngữ RSAKeyGe n ; ví dụ RSAKeyGen được coi như một tham số hệ thống của mật mã. Trong những thực thi thông thường, thuật toán tạo khóa cụ thể c ó thể được chọn từ họ các thuật toán, được tham số h ó a b ở i “tham số an toàn’ (ví dụ, độ dài của n ). CHÚ THÍCH 2 Xem ISO/IEC 18033 hướng dẫn thuật toán tạo các s ố nguyên t ố p và q được đ ề cập trên đây. 11.2. Biến đổi RSA Thuật toán RSATransform (X, α, n) nhận đầu vào là - Xâu bộ tám X , - Số nguyên α , và - Số nguyên n , Và đầu ra là xâu bộ tám. Thuật toán thực hiện như sau: a) Kiểm tra việc thực hiện | X| = (n) ; nếu không thực hiện th ì thất bại. b) Đặt x = O S2IP(X). c) Kiểm tra x <> n ; n ế u không thỏa mãn th ì thất bại. d) Đặt y = x a mod n. e) Đặt Y = O S2IP(y, ( n )). f) Đưa ra là Y . CHÚ THÍCH Như đ ã biết, nếu (n, e, d) là đầu ra của thuật toán tạo khóa RSA và X = I 2 O SP(x, (n)) với số nguyên x nào đó th ỏ a m ã n 0 ≤ x ≤ n, khi đ ó RSATransform (RSAT r ansform(X,e, n ),d,n) = X. 11.3. Các cơ chế mã hóa RSA Cơ chế mã hóa RSA, REM xác định hai thuật toán: - REM.Encode(M, L, ELe n ) nhận đầu vào là bản rõ M , nhãn L và độ dài đầu ra l à ELen . Ở đây, M và L là các xâu bộ tám với độ dài bị hạn chế được mô tả dưới đây. Đầu ra là xâu bộ tám E độ dài Elen. - REM.Decode(E,L) nhận đầu vào là xâu bộ tám E , nhãn L và t ì m bản rõ M thỏa mãn REM .E ncode(M,L, | E | ) = E. Nếu không đưa ra được M như vậy th ì th ấ t bại. Ngoài ra, cơ chế cũng nên xác định giới hạn REM.Bound , sao cho khi gọi REM.Enco d e ( M,L,ELen), th ì điều kiện | M | ≤ ELen - REM sẽ được thỏa mãn. Nếu không thuật toán mã hóa sẽ thất bại. Ngoài ra thuật toán mã hóa cũng có thể thất bại, nếu |L| vượt quá giới hạn được xác định bởi quá trì nh thực thi. Nói chung thuật toán REM.Encode là thuật toán xác suất, bởi cùng một bản rõ có thể được mã hóa bằng một số cách khác nhau. Đồng thời v ì l ý do kỹ thuật, yêu cầu bộ tám đầu tiên của đầu ra phải là Oct( 0 ) . 11.3.1. Các cơ chế mã hóa RSA được ph é p Trong phần này của ISO/IEC, Cơ chế mã hóa RSA được phép là REM 1, được mô tả dưới đây ở Điều 11.3.2. 11.3.2. REM1 Điều này mô tả cơ chế mã hóa cụ thể được gọi là R EM 1 . CHÚ THÍCH REM 1 được xây dựng trên cơ sở OAEP của Bellare và Rogaway [8]. 11.3.2.1. Các tham số hệ thống REM 1 là họ các cơ chế mã hóa RSA được tham số hóa bởi các tham số hệ thống sau đây: - Hash : hàm băm mật mã được mô tả tại Điều 6.1; - KDF : hàm dẫn xuất khóa được mô tả ở Điều 6.2. Giá trị REM.Bound được xác định bằng: REM 1 .Bound = 2. Hash.len + 2. 11.3.2.2. Hàm mã hóa Hàm mã hóa REM 1 .Encode(M, L, ELen) chạy như sau: a) Kiểm tr a | M | ≤ ELen-2.HashJen- 2, nếu không th ì thất bại. b) Giả sử phần đệm (pad) là xâu bộ tám độ dài ELen- | M | -2.H a sh . Ien-2 gồm một xâu bộ tám Oct( 0 ). c) Tạo mầm là xâu bộ tám ngẫu nhiên mầm độ dài Hash .l en. d) Đặt check = Hash.ev a l(L). e) Đặt DataBlock = check f) Đặt DataBlockMask = KDF(seed, Elen - Hash.len - 1). g) Đặt MaskedDataBlock = DataBlockMask Å DataBlock. h) Đặt SeedMask = KDF(MaskedDataBlock, Hash.len). i) Đặt MaskedSeed = S ee dMask Å s ee d. j) Đặt E = || MaskedSeed || MaskedDataBlock. k) Đưa ra E. 11.3.2.3. Hàm giải mã (Decoding function) Thuật toán REM 1 .Decode(E,L) chạy như sau: a) Giả sử Elen = | E | . b) Kiểm tra ELen ≥ 2. Hash .l en + 2; nếu không thì th ấ t bại. c) Đặt Check = Hash.eva l (L). d) Tạo cú pháp E, E = || MaskedSeed || MaskedDataBlock ; ở đây X là bộ t á m và MaskedSeed và MaskedDataBlock là các bộ tám thỏa mãn hệ thức | MaskedSeed | = Hash .l en, | MaskedDataB l ock | = Elen-Hash .l en- 1 . e) Đặt SeedMask = KDF(MaskedDataBlock, Hash.len). f) Đặt seed = MaskedSeed Å SeedMask. g) Đặt DataBlockMask = KDF(seed,Elen - Hash.len - 1). h) Đặt DataB l ock = MaskedDataB l ock Å DataBlockMask . i) Tạo cú pháp cho DataBlock, DataBlock=check ' ; Check’ và M' là các xâu bộ tám với |check'| = H ash .l en ;|M'| = ELen- 2. Hash .l en- 1 . j) Giả sử là các bộ tám và l - Elen - 2. Hash.len - 1; đồng thời giả sử m là số nguyên dương lớn nhất sao cho m ≤ l, và M 1 = M 2 = = O ct(0) và T là ký hiệu bộ tám M m , giả sử M là ký hiệu xâu bộ tám . k) Nếu check’ ≠ check, X ≠ O ct( 0 ), hoặc T ≠ Oct ( 1 ) thì thất bại . l ) Đưa ra M. Vì l ý do an toàn, điều quan trọng là trong quá trình thực thi không để lộ bất kỳ thông tin nào về nguyên nhân phát sinh lỗi tại bước k. Nói riêng, thực thi có thể cho ra thông báo cùng lỗi tại cùng thời điểm, bất kể nguyên nhân việc sinh ra lỗi. 11.4 . RSAES 11.4.1. Các tham số hệ thống RSAES là họ các mã phi đối xứng với độ d à i bản rõ bị hạn chế, được tham số hóa bởi các tham số hệ thống sau: - RSAKeyGen : Thuật toán tạo khóa RSA được mô tả tại Điều 11.1; - REM : cơ chế mã hóa RSA được mô tả tại Điều 11.3. Bất kỳ một tổ hợp các tham số hệ thống nào cũng được ph é p với các hạn chế sau: - Độ d à i tính bằng octet của đầu ra n của RSAKeyGen () phải luôn luôn lớn hơn REM.Bound. 11.4.2. Tạo khóa Thuật toán RSAES.KeyGen không có đầu vào, chạy như sau: a) Tính (n, e,d) = RSAKeyGen (). b) Khóa công khai đầu ra PK : - n : số nguyên dương. - e : số nguyên dương. c) Đưa ra khóa riêng pk : - n : số nguyên đương. - d: số nguyên dương. RSAES là mật mã phi đối xứng với độ dài bản rõ bị hạn chế. Đối với khóa công khai cho trước PK = (n, e ), giá trị của RSAES.MaxMsgLen(PK) là (n) - REM. Bound. Các thuật toán mã hóa và giải mã đều sử dụng biến đổi thuật toán RSA được định nghĩa tại Điều 11.2. 11.4.3. Mã hóa Thuật toán RSAES.Encrypt nhận đầu vào; - Khóa công khai, gồm số nguyên dương n và số nguyên dương e , - Nh ã n L, - Bản rõ M vớ i độ dài lớn nhất (n) - REM.Bound, và - Không có tùy chọn mật mã. Thuật toán chạy như sau: a) Đặt E = REM.Encode(M, L, (n)). b) Đặt C = RSATransform(E, e, n). c) Đưa ra C . 11.4.4. Giải mã Thuật toán RSAES.Decrypt nhận đầu vào: - Khóa riêng, gồm số nguyên dương n và số nguyên dương e , - Nh ã n L, và - Bản mã C . Thuật toán chạy như sau: a) Đặt E = RSATransform (C,d,n ); chú ý rằng bước này cũng có thể thất bại . b) Đặt M = REM. Decode(E,L); chú ý rằng bước này cũng có thể thất bại . c) Đưa ra M . CHÚ THÍCH Tính an toàn của RSAES được xem xét tại Phụ lục B.13. 11.5 . RSA-KEM 11.5.1. Các tham số hệ thống RSA - KEM l à họ các cơ chế bọc khóa, được tham số hóa bởi các tham số hệ thống sau đây: - RSAKeyGen: Thuật toán tạo khóa RSA, được mô tả ở Điều 11.1; - KDF: hàm dẫn xuất khóa được m ô t ả ở Điều 6.2; - KeyLen: s ố nguyên dương. Giá trị của RSA - KEM.KeyLen được xác định bằng giá trị của tham số hệ thống Keylen . 11.5.2. Tạo khóa Thuật toán RSA - KEM.KeyGen không có đầu vào, chạy như sau: a) Tính (n,e,d) = RSAKeyGen (). b) Đưa ra khóa công khai PK : - n : số nguyên dương. - e : s ố nguyên dương. c) Đưa ra khóa riêng pk : - n : số nguyên dương. - d : s ố nguyên dương. Thuật toán mã hóa và giải mã sử dụng thuật toán biến đổi RSA được định nghĩa tại Điều 11.2. 11.5.3. Mã hóa Thuật toán mã hóa RSA - KEM.Encrypt nhận đầu vào là: - Khóa công khai, bao gồm các số nguyên dương n và e , và - Không có tùy chọn mật mã. Thuật toán chạy như sau: a) Tạo số ngẫu nhiên r Î [0..n). b) Đặt R = I2 O SP(r, ( n )). c) Đặt C 0 = RSATransform(R, e,n). d) Tính K = KDF(R,KeyLen). e) Đưa ra là bản rõ C 0 và khóa bí mật K. 11.5.4. G i ải mã Thuật toán RSA - KEM.Decrypt nhận đầu vào: - Khóa mật gồm các số nguyên dương n và d - Bản mã C 0 . Thuật toán chạy như sau: a) Đặt R = RSATransform(C 0 , d, n) ; chú ý rằng bước này c ũ ng có thể thất bại . b) Tính K = KDF(R, KeyLe n ). c) Đầu ra là khóa bí mật K . CHÚ THÍCH Tính an toàn của RSA - KEM được xem xét tại phụ l ục B.14. 12. Mật mã dựa trên phép bình phương modulo Điều này mô tả họ các mật mã phi đối xứng dựa trên phép bình phương modulo. Mã H I ME(R) được mô tả tại Điều 12.3. 12.1. Các thuật toán tạo khóa HIME Với số dương l và d >1 và thuật toán tạo khóa l - bit HIME - HIMEKeyGen là thuật toán xác suất không có đầu vào, đầu ra là các số nguyên dương (p,q,n,d) ,ở đấy: - p là số nguyên tố, với 2 l -1 ≤ p <> l ; p ≡ 3 ( mod 4), - q là s ố nguyên tố với 2 l -1 ≤ q <> l ; q ≡ 3 ( mod 4) và p ≠ q, - n = p d q. Phân phối đầu ra của thuật toán tạo khóa H I ME bit phụ thuộc vào thuật toán cụ thể. Thuật toán này được phép cho kết quả đầu ra không thỏa mãn các điều kiện trên đây, chừng nào điều đó còn xảy ra với xác suất không đáng kể. CHÚ THÍCH 1 Trong m ô tả m ậ t m ã dựa tr ê n HIME, những lược đồ này được tham số hóa theo thuật ngữ của HIMEKeyGen , nghĩa là HlMEKeyGen được xem như tham số hệ thống của mật mã. CHÚ THÍCH 2 Tham khảo ISO/IEC 18032 v ề hướng dẫn thiết k ế thuật toán tạo các số nguyên tố p và q ở tr ê n. 12.2. Các cơ chế mã hóa HIME Cơ chế mã hóa theo HIME, ký hiệu HIME là HEM đưa ra hai thuật toán: - H EM.Encode(M,L,ELen,KLen) nhận đầu vào là bản rõ M , nhãn L , độ dài đầu ra Elen , và số nguyên dương KLen.M và L l à các xâu bộ tám với độ dài b ị giới hạn, được mô tả dưới đây. KLen thỏa mãn điều kiện 1 ≤ KLen ≤ 8. Đầu ra là xâu bộ tám E độ dài ELen. - HEM.Decode(E,L,KLe n ) nhận đầu vào l à xâu bộ tám E , nhãn L , và số nguyên dương KLen. Đầu ra là bản rõ M sao cho HEM.Encode(M,L, | E | ,KLe n ) = E . Thuật toán sẽ đưa ra M , nếu không thì thất bại. 12.2.1. Các cơ chế mã hóa HIME được ph é p Trong phần này của ISO/IEC 18033, cơ chế mã hóa HIME được phép là HEM1 , được mô tả ở Điều 12.2.2 dưới đây. 12.2.2. HEM1 Điều này mô tả một cơ chế mã hóa HIME cụ thể, được gọi là HEM 1 . CHÚ THÍCH HEM 1 dựa trên OAEP do Bellare và Rogaway xây dựng [8]. 12.2.2.1. Các tham số hệ thống HEM 1 là họ các cơ chế mã hóa HEM được tham số hóa bởi các tham số hệ thống sau: - Hash: hàm băm mật mã được mô tả tại Điều 6.1; - KDF : hàm dẫn xuất khóa được mô tả tại Điều 6.2. Độ lớn của HEM 1.Bound được định nghĩa bằng MEM 1.Bound = 2. Hash.len + 2. 12.2.2.2. Hàm m ã hóa Thuật toán HEM 1 .Encode(M,L,ELen,KLen) chạy như sau: a) Kiểm tra điều kiện | M | ≤ ELen -2. HashJen -2, nếu không thỏa mãn thì thất bạ i . b) Giả sử phần pad là xâu bộ tám độ dài ELen- | M | -2 H ash .l en-2 gồm một xâu octet Oct( 0 ). c) Tạo xâu bộ tám ngẫu nhiên seed với độ dài Hash.len +1. d) Xóa đi KLen - bít c ó nghĩa nhất của seed. e) Đặ t check = Hash.eval(L). f) Đặt D ata .Block = g) Đặt DataBlockMask = KDF(seed, ELen - HashLen - 1). h) Đặt MaskedDataBlock = DataBlockMask Å DataBlock. i) Đặt SeedMask = KDF(MaskedDataBlock,Hash.len + 1). j) Xóa đi KLen - bit có nghĩa nhất của SeedMask . k) Đặt MaskedSeed = SeedMask Å seed. I) Đặt E = MaskedSeed II MaskedDataBlock. m) Đưa ra E. 12.2.2.3. Hàm giải mã Thuật toán HEM1.Decode(E,L,KLen) chạy như sau: a) Đặt ELen = | E |. b) Đặt check = Hash.eval(L). c) Tạo cú pháp E, E = MaskedSeed II MaskedDataBlock, MaskedDataBlock và MaskedSeed là các xâu bộ tám thỏa mãn điều ki ện | M a skedSeed | = Hash.len +1 và | MaskedDataBlock | = Elen - Hash.len - 1. d) Đặt SeedMask = KDF(MaskedDataBlock, Hash.len + 1). d) Xóa Klen - bit có nghĩa nhất của SeedMask. f) Đặt seed = MaskedSeed Å SeedMask. g) Đặt DataBlockMask = KDF(seed,ELen - Hash.len - 1). h) Đặt DataBlock = MaskedDataBlock Å DataBlockMask. i) Tạo cú pháp cho DataBlock, DataBlock = check' || M' ở đây check’ và M’ là các xâu bộ tám thỏa mãn điều kiện | check' | = Hash.len và | M' | = ELen - 2 .Hash.len - 1. j) Đặt M’ = ,ở đây M 1 ,…, M l là các bộ tám và l = Elen - 2.Hash. len - 1 ; đồng thời gi ả sử m là số nguyên dương lớn nhất sao cho m ≤ /, và M 1 = M 2 =...= M m-1 = Oct( 0 ) và T là k ý hiệu M m , M k ý hiệu xâu bộ tám k) Nếu check' ≠ check, phần KLen - bit có nghĩa nhất nhất của seed ≠ xâu bit gồm các số 0, hoặc T ≠ Oct( 1 ), thì thất bại. l) Đưa ra M. Vì lý do an toàn, điều quan trọng là trong quá trình thực thi không để lộ bất kỳ thông tin nào về nguyên nhân phát sinh lỗi tại bước k. Nói riêng, việc thực thi có thể đưa ra cùng thông báo lỗi tại cùng thời điểm b ấ t kể nguyên nhân sinh ra lỗi. 12.3. HIME(R) 12.3.1. Các tham số h ệ th ố ng HIME(R) là họ các mật mã phi đối xứng với độ dài bản rõ bị hạn ch ế , được tham số hóa bởi các tham số hệ thống sau: - d : số nguyên >1, - HIMEKeyGen : thuật toán tạo khóa HIME l- bit được mô tả tại Điều 12.1; - HEM : cơ chế mã hóa HIME được mô tả ở Điều 12.2. 12.3.2. Tạo khóa Thuật toán H I ME(R).KeyGen không có đầu vào, chạy như sau: a) Tính (p,q,n) = H I MEKeyGen (). b) Đưa ra khóa công khai PK : - n: s ố nguyên dương. c) Đưa ra khóa riêng pk : - n, p, q : các số nguyên dương. 12.3.3. Mã hóa Thuật toán mã hóa HIME(R).Encrypt nhận đầu vào là - khóa công khai là số nguyên dương n , - Nhãn L, - Bản rõ M v ớ i độ dài lớn nh ấ t là (n) - HEM.Bound, và - Không có tùy chọn mật mã. Thuật toán chạy như sau: a) Đặt k = 8 . (n) - (độ dài bit của n) + 1. b) Đặt E = HEM.Encode(M, L , (n), k). c) Đặt e = OS2IP ( E ). d) Đặt c = e 2 mod n. e) Đặt C = I2 O SP(c, (n)). f) Đưa ra C . 12.3.4. Giải mã Thuật toán giải mã HIME(R).Decrypt nhận đầu vào là: - Khóa riêng gồm các số nguyên dương n, p, q, - Nhãn L, - Bản mã C. Thuật toán chạy như sau: a) Đặt c = O S2 I P(C). b) Đặt k= 8 . (n) -(độ dài bit của n) + 1. c) Đặt z = p -1 mod. q. d) Đặt c p = c mod p, c q = c mod q. e) Đặt α 1 = mod p,α 2 = p - α 1 . f) Đặt β 1 = mod q,β 2 = q - β 1 g) Đặt 1) và z mod q. 2) và z mod q. 3) và z mod q. 4) và z mod q. h) Với i từ 1 đến 4, thực hiện: 1) Đặt 2) Với t từ 2 đến d , thực hiện: i) Đặt ii) Đặt 3) Đặt i ) Với i t ừ 1 đến 4, đặt X i = I 2 O SP (x i, (n)). j ) Nếu tồn tại duy nhất i sao cho HEM.Decode (X i , L, k) không bị thất bại và mod n = c , thì v ớ i i đó đặt M = HEM.Decode(X i ,L,k), nếu không thì thất bại. k) Đưa ra M. CHÚ THÍCH Việc xem xét tính an toàn của lược đ ồ này được trình bày tại Phụ lục B.1 5. PHỤ LỤC A (Quy định) CÚ PHÁP ASN.1 CHO CÁC BỘ ĐỊNH DANH ĐỐI TƯỢNG Phụ lục cung cấp cú pháp cho các bộ định danh đối tượng, khóa công khai, và các cấu trúc tham số đi kèm với các thuật toán được đặc tả trong phần này của ISO/IEC 18033. PHỤ LỤC B (Tham khảo) XEM XÉT TÍNH AN TOÀN Trong Phụ lục này xem xét các đặc t í nh an toàn của các lược đồ mật mã khác nhau đã được mô tả trong phần này của tiêu chuẩn ISO/IEC 18033. Đ ố i với mỗi loại lược đồ (ví dụ, mã phi đối xứng, thuật toán MAC,...) đưa ra định nghĩa hình thức tương ứng và với mỗi lược đồ cụ thể sẽ xem xét phạm vi m à đ ị nh nghĩa đưa ra được thỏa mãn. Tính an toàn của mỗi lược đồ có thể được chứng minh một cách hình thức, dựa trên các giả thuyết nhất định về tính khó, hoặc trên một giả thuyết khác là các cơ chế ở m ứ c th ấ p hơn là an toàn. Các ch ứ ng minh này là “các phép quy d ẫn”, trong đó chỉ ra làm thế nào để quy dẫn vấn đề kẻ địch A phá được lược đồ về lược đồ kẻ địch A' giải bài toán được giả thiết là khó, hoặc phá một cơ chế được coi là an toàn. Trong phần lớn các trường hợp, “chất lượng" của "phép quy dẫn" được chỉ ra bằng mô tả cách định lượng mối quan hệ giữa các yêu cầu về tài nguyên (v í dụ thời gian chạy thuật toán) và ưu thế (ví dụ xác suất thành công) của A và yêu cầu về tài nguyên và ưu thế của A' . Phép quy dẫn được gọi là “chặt chẽ”, nếu các yêu cầu về tài nguyên c ủ a A' lớn hơn không đáng k ể so với các yêu cầu v ề t à i nguyên của A , và nếu ưu thế của A' cũng nhỏ hơn không đáng kể so với của A. Phương pháp tiếp cận tính an toàn ở đây là “cụ thể", như trong [ 6 ] , so với cách tiếp cận có t í nh ‘‘tiệm cận”: phép quy dẫn của tính an toàn được phát biểu bằng thuật ngữ của các lược đồ cụ thể, chứ không phải bằng thuật ngữ của họ các lược đồ được chỉ số hóa bởi “tham số an toàn” và chỉ số này c ó xu hướng tiến ra vô cùng. Tuy nhiên, một số ước lượng định lượng được biểu thị bằng khái niệm “O lớn”, nhưng hoàn toàn là những hằng số bé. Một số chứng minh tính an toàn thuộc mô h ì nh được gọi là “tiên tri ngẫu nhiên”, mô h ì nh này đầu tiên được hình thức hóa trong [7] và từ đó được sử dụng để phân tích nhiều lược đồ mật mã. Trong mô hình tiên tri ngẫu nhiên, hàm băm và hàm dẫn xuất khóa được mô hình như những hàm ngẫu nhiên, mà đối với mọi thuật toán hay mọi kẻ tấn công, chúng ch ỉ là những “hộp đen". Các loại chứng minh tính an toàn theo mô hình tiên tri ngẫu nhiên như thế tốt nhất là nên xem như những chứng minh mới ở mức t ì m tòi (heuristic). Có thể, một lược đồ là an toàn theo mô hình tiên tri ngẫu nhiên, nhưng lại bị phá mà không cần giải được bài toán khó cơ s ở , hoặc các giả thuyết an toàn và không cần phải tìm ra bất kỳ điểm yếu cụ thể nào trong hàm băm hay hàm dẫn xuất khóa nào [12]. Nối cách khác, chứng minh tiên tri ngẫu nhiên đã loại b ỏ mất một lớp tấn công rộng. B.1 . Thuật toán MAC Điều này m ô tả đặc tính an toàn cơ bản của thuật toán MAC đă được trình bày trong phần n à y của tiêu chuẩn ISO/IEC 18033. Xét thuật toán MA thuộc các thuật toán MAC được mô tả tại Điều 6.3. Xét kịch bản tấn công sau đây. Kẻ tấn công chọn ngẫu nhiên một xâu bộ tám T * và khóa bí mật k ' . Gi ả sử kẻ tấn công cũng sở hữu giá trị MAC * = MA.eval(k ' ,T*) . K ẻ tấn công tạo ra một danh sách các cặp ( T , MAC) , ở đây T là x â u bộ tám với T ≠ T * (và cũng không nhất thiết c ó cùng độ dài với T ), và MAC là xâu bộ tám độ dài MA.MACLen. Ưu thế của kẻ tấn công được định nghĩa là xác suất sao cho với mỗi cặp (T, MAC), ta có MA.eval(k',T) = MAC. Với kẻ tấn công A và thuật toán MA , lợi thế được ký hiệu là Adv MA (A). Nếu k ẻ tấn công chạy trong khoảng thời gian nhiều nhất là t và tạo ra được một danh sách nhiều nhất là l cặp và T* và tất cả T về độ dài bị giới hạn bởi l' , th ì A được gọi là kẻ tấn công MA[t, l, l' ]. Tính an toàn ở đây có nghĩa là lợi thế này là không đáng kể đối với bất kỳ kẻ tấn công hiệu quả nào. Mặc dù mô hình tấn công “đơn thông báo' ở đây được xem là đủ cho việc thiết kế các cơ chế bọc dữ liệu an toàn, nhưng với nhiều ứng dụng khác là không đủ, và cần xem xét cả mô h ì nh t ấ n công "đa thông báo “ . Trong mô hình tấn công “đa thông b á o”, thay v ì thu được giá trị của MA.eval(k ' ,.) tại đầu vào đ ơ n lẻ T*, kẻ t ấ n công được phép thu được giá trị của MA.eval(k ',. ) tại nhiều đầu vào (được chọn phù hợp), T * 1­ ,…,T * s . Vì t rướ c đó kẻ tấn công đã lập được danh sách các cặp (T, MAC), nhưng với hạn chế là với 1 ≤ i ≤ s Điều 6.3.1 cho phép sử dụng các thuật toán MAC được mô tả tại ISO/IEC 9797-1 và ISO/IEC 9797-2, tất cả các thuật toán này được thiết kế an toàn trong mô hình tấn công “đa thông báo' và một số trong số đó được chứng minh là an toàn theo mô hình này, dựa trên những gi ả thiết nhất định về hàm băm mật mã cơ sở. B.2 . Mã khối Điều này mô tả đặc tính an toàn cơ b ả n của mã khối được trình bày trong phần này của ISO/IEC 18033. Xét mã khối BC được xác định trong Điều 6.4. BC đ ược gọi là hoán v ị giả ngẫu nhiên, nếu kẻ tấn công khó phân biệt được hoán v ị ngẫu nhiên của x â u bộ tám độ dài BC.BlockLen với hoán v ị b → BC.Encr y pt(k,b) với khóa b í mật k được chọn ngẫu nhiên. Trong t ấ n công này, kẻ tấn công được cho ở dạng tiếp cận tiên tri ( o racle access) tới hoán vị hoặc tới hoán vị ngẫu nhiên hoặc tới mã khối và phải đoán được đang tiếp cận trường hợp nào. Hoán vị được coi là giả ngẫu nhiên, nếu với bất k ỳ kẻ tấn công hiệu qu ả nào, khả năng đoán thành công của nó gần bằng 1/2 , với sai số không đáng kể. Điều 6.4.1 cho phép sử dụng các mã khối được mô tả trong ISO/IEC 18 0 33-3. Mặc dù có một í t chứng minh hình thức, nhưng kinh nghiệm cho thấy những mã khối này trong thực tế cũng hành xử như các phép hoán vị giả ngẫu nhiên. B.3 . Mã đối xứng Điều này m ô t ả đặc tính an toàn cơ bản được yêu cầu đối với mã đối xứng trong phần này của ISO/IEC 18033. Xét mã đối xứng MC được xác định trong Điều 6.5. Xét kịch b ả n tấn công sau. Kẻ tấn công tạo ra hai bản rõ (hai xâu bộ tám) M 0 , M 1 có độ dài bằng nhau, khóa bí mật k và chọn một bit ngẫu nhiên b , và M b được mã hóa theo khóa k . Kẻ tấn c ô ng biết bản mã c . Gọi là phỏng đoán bit b của kẻ tấn công. Ưu thế của k ẻ tấn công được định nghĩa bằng Gi ả sử A là kẻ tấn công và SC là mã đối xứng, ưu thế của A được k ý hiệu là Adv SC (A). Nếu kẻ tấn công chạy thời gian nhiều nhất l à t và đầu ra của thuật toán mã hóa có độ dài lớn nhất là l bộ tám, th ì A được gọi là k ẻ tấn công SC[t, l] . T í nh an toàn ở đây có nghĩa là ưu thế này là không đáng kể đối với bất kỳ kẻ tấn công hiệu quả nào. Mặc dù mô hình tấn công "đơn bản rõ" ở đây được xem là đủ cho việc thiết kế các cơ chế bọc dữ liệu an toàn, nhưng với nhiều ứng dụng khác là kh ô ng đủ và cần xem xét thêm mô hình tấn công “đa bản rõ”, ở đó kẻ tấn công được phép có được nhiều phép mã hóa phù hợp để lựa chọn. Dạng tấn công này cũng được gọi là tấn công “chọn bản rõ”. Một dạng tấn công khác được gọi là tấn công “chọn bản mã”, ở đó kẻ t ấ n công có được kết quả giải mã các bản mã đã lựa chọn. B.3.1 . An toàn của SC 1 Điều này xem xét t í nh an toàn của SC 1 được định nghĩa tại Điều 6.5.2. Đấy là mã đối xứng được tham số hóa theo thuật ngữ của mã khối BC. Chế độ móc xích mã khối mã (CBC) với giá trị kh ởi đầu (IV) được phân tích trong [4], tại đây đã chỉ ra chế độ CBC là an toàn đối với tấn công “đa b ả n rõ” như đã thảo luận ở trên, với giả thiết BC là hoán vị giả ngẫu nhiên (xem Phụ lục B.2). Mã SC 1 sử dụng giá trị kh ở i đầu cố định. Tuy vậy, dễ dàng điều ch ỉ nh chứng minh tính an toàn trong [4] để chỉ ra rằng SC 1 là an toàn chống lại tấn công "đơn bản rõ” vốn phù hợp với các cấu trúc trong tài liệu này. Để ý r ằ ng trong bài báo [35] trình bày một số t ấ n công lên SC 1 . Tuy nhiên, các tấn công trong [35] là tấn công “chọn bản mã” và do đó không liên quan ở đây. Tóm lại lược đồ bộ đệm (padding) đóng vai trò an toàn trong mã hóa CBC ch ỉ khi xem xét các tấn công chọn bản mã. B.3.2 . An toàn của SC2 Phần này thảo luận t í nh an toàn của SC2 được định nghĩa trong Điều 6.5.3. Hiện nay chưa có một phép quy dẫn hình thức nào quy tính an toàn của SC2 về tính an toàn của một số cơ chế khác hoặc tính khó của bài toán khác. Tuy nhiên, nếu muốn mô hình hóa hàm dẫn xuất khóa như một tiên tri ngẫu nhiên thì có thể yên tâm rằng SC2 là mật mã đối xứng an toàn. B.4 . Mật mã phi đối xứng Điều này mô tả đặc tính an toàn cơ bản được yêu cầu đối với mật mã phi đối xứng. Xét mật mã phi đối xứng AC, được định nghĩa ở Điều 7. Xét kịch bản tấn công “ chọn bản mã phù hợp” sau đây. Bước 1: Chạy thuật toán tạo khóa, tạo ra khóa công khai và khóa riêng. Kẻ tấn công, hiển nhiên, biết được khóa công khai nhưng không biết khóa riêng. Bước 2: Kẻ tấn công đưa ra một loạt câu truy v ấ n t ù y ý để tiên tri giải mã. Mỗi c â u chất v ấ n là một cặp nhãn/bản mã (L, C), cặp này được giải mã bởi tiên tri giải mã sử dụng khóa riêng. Kết quả gi ải mã được trao cho kẻ tấn công. Ngo à i ra, nếu thuật toán thất bại thì thông tin này được trao cho k ẻ tấn công và việc tấn công được tiếp tục. Kẻ tấn công tự do thiết kế các cặp nhãn/bản mã này theo một cách tùy ý - hiển nhiên không cần sử dụng thuật toán mã hóa để tính toán chúng. Bước 3: Kẻ tấn công chuẩn bị nhãn L* và hai bản rõ “đích" M 0 , M 1 có cùng độ dài, và nạp chúng vào tiên tri mã hóa. Nếu lược đồ hỗ trợ các tùy chọn mật mã nào đ ó , th ì kẻ tấn công cũng sẽ chọn chúng. Tiên tri mã hóa chọn ngẫu nhiên b Î {0,1} mã hóa M b sử dụng nhãn L*, chuyển kết quả là b ả n mã "đích" C * cho kẻ tấn công. Bước 4: Kẻ tấn công tiếp tục chuyển cặp nhãn /bản mã (L,C) tới tiên tri giải mã, chỉ với điều kiện ràng buộc là (L,C) ≠ ( L* , C *). Bước 5: K ẻ tấn công đưa ra Î {0,1}, và dừng lại. Ưu thế của A được định nghĩa bằng giá trị . Với kẻ tấn công A và mã phi đối xứng AC , ưu thế của A được ký hiệu là Adv AC (A). Nếu kẻ địch trong th ờ i gian thực hiện t, thực hiện nhiều nhất là q truy vấn giải mã tiên tri, tất cả các b ả n mã là đầu ra từ mã hóa tiên tri và đầu vào c ủ a giải mã ti ê n tri có độ dài lớn nhất là l , và các nh ã n đầu vào của mã hóa và giải mã tiên tri lớn nhất l à l' , khi đó A được gọi là k ẻ t ấ n công -AC[t,q,l, l '] . Tính an toàn có nghĩa là ưu thế đối với tất c ả kẻ tấn công hiệu quả là không đáng kể. Định nghĩa này, ở dạng hơi khác một ít, lần đầu tiên được đề xuất bởi Racko f t và Simon trong [30], trong công trình này định nghĩa trên đã được khái quát cho trường hợp độ dài bản rõ tùy ý và tính đến vai trò của nhãn. Nói chung cộng đồng nghiên cứu mật mã nhất trí rằng đây là thuộc tính an toàn “ổn" cho mật mã phi đối xứng tổng quát. Kh á i niệm an toàn này kéo theo các đặc tính có lợi khác như “không dễ uốn” ( xem [15,16]). Một cách trực quan, tính không dễ uốn c ó nghĩa là khó biến đổi một c ặ p nhãn/bản mã ( L ,C), mã hóa bản rõ M thành cặp khác (L’,C’), sao cho việc giải mã C' bằng nhãn L' liên quan đến M theo một cách nào đó. Tham khảo thêm các khái niệm khác an toàn đối với mã đối xứng trong [11,14, 5,15,16] Trong [27] trình bày một định nghĩa yếu hơn về an toàn, đôi lúc được gọi là an toàn chống lại các tấn công “thời gian ăn trưa". Trong thiết kế này, an toàn cũng được định nghĩa giống như ở trên, chỉ trừ một điểm là kẻ tấn công không được phép thực hiện bất kỳ truy vấn tiên tri giải mã nào ở bước 4 . Mặc dù, điều này có vẻ giống với một định nghĩa tự nhiên về an toàn, song nó lại không tương thích với nhiều ứng dụng và không phải là khái niệm an toàn phù hợp cho các mã phi đối xứng với mục tiêu tổng quát. Ngoài ra trong [21] cũng trình bày một định nghĩa yếu hơn về an toàn, được gọi là an toàn “ngữ nghĩa” Trong thiết k ế này khái niệm an toàn cũng được định nghĩa giống như ở đây, trừ một điểm là nói chung kẻ tấn công không được phép thực hiện bất kỳ truy vấn tiên tri giải mã nào. B.4.1 . Che giấu độ dài bản rõ Lưu ý rằng trong cuộc tấn công, đòi hỏi kẻ tấn công phải chuyển cho tiên tri mã hóa hai bản rõ đích có cùng độ dài. Hạn chế này lên kẻ tấn công ph ả n ánh một sự thật là, không thể che giấu kẻ tấn công độ dài của b ả n r õ được mã hóa - đối với nhiều hệ mật mã thì độ dài bản rõ được thấy rõ từ độ dài bản mã. Nói chung là điều này được áp dụng trong ứng dụng mật mã để đảm bảo là độ dài bản rõ không để lộ thông tin nhạy cảm. Với mật mã độ dài bản rõ bị giới hạn, khái niệm an toàn cũng giống như trong các trường hợp thông thường, trừ một điểm là không yêu cầu kẻ tấn công trình các bản rõ đích có cùng độ dài cho tiên tri mã hóa. Điều này phản ánh một sự thật là những lược đồ này có thể che giấu độ dài của bản rõ đối với kẻ tấn công. Với mật mã phi đối xứng độ dài bản rõ cố định, thì vấn đề trên không bị phát sinh. B.4.2 . Tính d ễ bị uốn nhẹ: Khái niệm yếu hơn một ít về an toàn Định nghĩa tính an toàn trên đây có thể coi là mạnh đến mức không cần thiết. Ví dụ, lấy một mật mã phi đối xứng AC thỏa mã định nghĩa tr ê n và thay đổi nó để nhận được mật mã mới A C’ như sau: AC ' cũng giống như AC, ch ỉ trừ một điểm là một bộ tám ngẫu nhiên được gắn vào bản mã sau khi mã hóa và loại bộ tám bổ sung đó trước khi giải, về phương diện kỹ thuật, AC’ không thỏa mãn định nghĩa trên đối với tính an toàn bản mã lựa chọn thích hợp mà dường như điều này là phi trực quan. Thật vậy, mặc dù về mặt kỹ thuật AC’ là “dễ bị uốn”, nhưng ch ỉ dễ bị uốn theo một kiểu “nhẹ": có thể tạo ra các bản mã khác nhau của cùng một bản rõ, và các bản mã khác nhau đ ó đều dễ dàng bị nhận dạng là bản t hay thế của một bản rõ. Điều này mô tả khái niệm hình thức v ề tính an toàn, phản ánh chính xác khái niệm trực giác của "tính dễ uốn nhẹ". Đối với mật mã phi đối xứng cụ thể AC , hàm gi á trị 0/1, thời gian đa th ứ c Equiv , được gọi là thuộc tính tương đương (equivalence predicate) cho AC , nếu với xác suất trội, đầu ra của AC.KeyGen là cặp (PK,pk) sao cho với nhãn bất kỳ L và hai bản mã bất kỳ C và C', ta có: Equiv(PK,L,C,C ' ) = 1 suy ra AC.Decrypt(pk,L,C) = AC. Decrypt(pk,L,C'). Mã đối xứng AC được gọi là dễ uốn nhẹ, nếu tồn tại thuộc tính tương đương Equiv và nếu nó thỏa mãn định nghĩa an toàn ở trên về tính an toàn chống lại tấn công chọn bản mã thích hợp, nhưng với cải biên sau đây trong cuộc chơi tấn công: khi kẻ tấn công trì nh cặp nhãn/bản m ã (L, C') cho tiên tri giải mã ở bước 4, thì thay v ì yêu cầu cặp (L,C) ≠ (L*,C*) , đòi h ỏ i L* ≠ L hoặc Equiv(PK,L,C,C * ) = 0. Đối với kẻ tấn công A, ưu thế của nó trong cấu trúc này ký hiệu bằng Adv' AC (A). B.5 . Các cơ chế bọc khóa Điều này mô tả thuộc tính an toàn cơ bản đòi hỏi đối với cơ chế bọc khóa. Xét cơ chế bọc khóa KEM được định nghĩa trong Điều 8.1. Xét kịch bản tấn công “chọn bản mã thích hợp" sau: Bước 1: Chạy thuật toán tạo khóa, tạo ra khóa công khai và khóa riêng. Kẻ tấn công, hiển nhiên, biết được khóa công khai nhưng không biết khóa riêng. Bước 2: Kẻ tấn công đưa ra một loạt câu truy v ấ n cho tiên tri giải mã. Mỗi câu truy vấn là bản mã C 0 , được giải mã bởi tiên tri giải mã, sử dụng khóa riêng. Kết quả giải mã được trao cho kẻ tấn công, hơn nữa nếu thuật toán thất bại th ì thông tin này được trao cho kẻ tấn công và tấn công được tiếp t ục. Kẻ tấn công tự do kiến thiết các bản mã này theo một cách tùy ý - không cần sử dụng thuật toán mã hóa để tính toán chúng. Bước 3: Kẻ tấn công gọi tiên tri mã hóa bằng cách cung cấp tùy chọn mật mã nào đó, nếu lược đồ hỗ trợ điều này, Tiên tri mã hóa thực hiện như sau: a) Chạy thuật toán mã hóa, tạo ra cặp (K*, ) . b) Tạo ra xâu bộ tám ngẫu nhiên độ dài KEM.KeyLen. c) Chọn ngẫu nhiên b Î {0,1}. d) Nếu b = 0, đưa ra (K*, ) ; ngược lại đưa ra là ( , ). Bước 4: Kẻ t ấ n công tiếp tục chuyển bản mã C 0 cho tiên tri giải mã với điều kiện ràng buộc C 0 ≠ . Bước 5: Kẻ tấn công đưa ra Î { 0,1} và d ừng lại. Ưu thế của A được định nghĩa bằng giá trị |. Với kẻ tấn công A, và cơ chế bọc khóa KEM , ưu thế của A được ký hiệu là Adv KEM ( A ). Nếu kẻ t ấ n công thực hiện trong thời gian t, thực hiện nhiều nhất là q truy vấn tiên tri giải mã, khi đó A được gọi là kẻ tấn công - K E M[t, q ]. Tính an toàn có nghĩa là ưu thế đối với tất cả kẻ tấn công hiệu quả là không đáng k ể . B.5.1 . T í nh dễ uốn nhẹ Điều này định nghĩa khái niệm tính dễ uốn nhẹ cho cơ chế bọc khóa tương ứng với khái niệm tính dễ uốn đối với mã phi đối xứng, như trong Phụ lục B.4.2. Đối với cơ chế bọc khóa cụ thể KEM , hàm giá trị 0/1, thời gian đa thức Equiv được gọi là thuộc tính tương đương đối với KEM , nếu với xác suất trội, đầu ra của KEM.KeyGen là cặp ( PK, pk) sao cho với hai bản mã bất kỳ C 0 và , ta có: Equiv(PK, C 0 , ) = 1 suy ra KEM.Decrypt(pk, C 0 ) = KEM.Decrypt(pk, ). Cơ chế bọc khóa KEM được gọi là dễ uốn nhẹ, nếu tồn tại thuộc tính tương đương Equiv và nếu nó thỏa mãn định nghĩa an toàn ở trên về tính an toàn chống lại tấn công chọn bản mã thích hợp, nhưng với thay đổi sau đây trong cuộc tấn công: khi kẻ tấn công gửi cặp bản mã C 0 cho tiên tri giải mã ở bước 4, th ì yêu cầu C 0 ≠ được thay bởi Equiv (P K, C 0 , ) = 0. Đối với kẻ tấn công A, lợi thế của nó trong cấu trúc này k ý hiệu bằng Ad v' KEM ( A ). B.6 . Các cơ chế bọc dữ liệu Điều này mô tả thuộc tính an toàn cơ b ả n được yêu cầu đối với cơ chế b ọ c dữ liệu. Xét cơ chế bọc khóa DEM được định nghĩa trong Điều 8.2. Xét kịch bản tấn công sau. Kẻ tấn công tạo ra hai bản rõ (hai xâu bộ tám) M 0 , M 1 có độ dài bằng nhau và nhãn L* . Khóa bí mật K được tạo một cách ngẫu nhiên. Chọn ngẫu nhiên bit b và M b được mã hóa bằng khóa bí mật K . Bản mã thu được được trao cho kẻ tấn công. Tiếp đ ó kẻ tấn c ô ng đưa ra một loạt các truy v ấ n cho tiên tri giải mã: mỗi truy vấn là một cặp nhãn/bản mã (L, C 1 ) ≠ ( L* , ) và tiên tri giải mã tương ứng với bản gi ả i mã của C 1 với nhãn L và khóa K . Kẻ tấn công phỏng đoán giá trị của b . Ưu thế của kẻ tấn công được định nghĩa b ằ ng Giả sử A là kẻ tấn công A và DEM là cơ chế bọc dữ liệu. Ưu thế của A được ký hiệu là Adv DEM (A) . Nếu kẻ tấn công chạy trong thời gian t , thực hiện nhiều nhất là q truy vấn tiên tri, tất cả các bản mã là đầu ra từ mã hóa tiên tri và đầu vào của giải mã tiên tri có độ dài lớn nhất là l bộ tám và các nh ã n đ ầ u vào của mã hóa và giải mã tiên tri lớn nhất là l' , khi đó A được gọi là kẻ tấn công -DEM[t,q,l, l' ]. Tính an toàn có nghĩa là ưu thế trên không đáng kể đối bất k ỳ kẻ tấn công hiệu quả nào. B.6.1 . An toàn DEM1, DEM2 và DEM3 Điều khoản này xem xét tính an toàn của các cơ chế bọc dữ liệu DEM1 (xem Điều 9.1), DEM2 (xem Điều 9.2), và DEM3 (xem Điều 9.3). Xét cơ chế DEM1 . Lược đồ này được tham số hóa bởi mã đối xứng SC và thuật toán xác thực thông báo MA. Có thể ch ỉ ra rằng nếu SC thỏa mãn định nghĩa an toàn tại Phụ lục B.3 và MA thỏa mãn định nghĩa an toàn tại Phụ lục B.1, khi đó DEM1 thỏa mãn định nghĩa an toàn tại Phụ lục B.6. Cụ thể hơn, với bất k ỳ kẻ tấn công A - DEM 1 [t,q,l, l' ] ta có: Adv DEM1 (A) ≤ Adv SC ( A 1 ) + Adv MA (A 2 ), ở đây, - A 1 là kẻ tấn công [ t 1 ,l'' ] với t 1 ≈ t , - A 2 là kẻ tấn công MA [ t 2 ,q,l '' ] với t 2 ≈ t ,và - l " = l - MA.MACLen. Tương tự, với bất kỳ tấn công A - DEM2[t,q , l, l'' ] , ở đây cần thỏa mãn l' = DEM2.LabelLen, chúng ta có Adv DEM2 (A) ≤ Adv SC (A 1 ) + Adv MA (A 2 ), ở đây - A 1 là kẻ tấn công S C[t 1 , l'' ], với t 1 ≈ t, - A 2 là kẻ tấn công MA[t 2 ,q, l'' + l' ] với t 2 ≈ t , và - l'' = I - MA.MACLen. Tương tự, với bất kỳ kẻ địch A - DEM3[t,q,l, l' ] , ở đây cần th ỏ a mãn l = DEM 3 .MsgLen + MA.MACLen, chúng ta có Adv DEM3 ( A ) ≤ Adv M A (A 2 ), Ở đây - A2 là kẻ tấn công MA[t 2 ,q,DEM3.MsgLen + l'] , với t 2 ≈ t. Dễ dàng xác lập các giới hạn này từ định nghĩa. Xem, chẳng hạn [14], đ ể chứng minh cho DEM2 với LabelLen = 0. Chứng minh cho những trường hợp khác có thể tiến hành theo những mạch suy luận tương tự như trong [14]. B.7 . An toàn của HC Điều khoản này mô tả độ an toàn của mật mã lai ghép HC, được quy đ ị nh tại điều 8.3. Lược đồ n à y được tham số hóa liên quan tới cơ chế bọc khóa KEM và cơ chế bọc dữ liệu DEM. Có thể chỉ ra rằng, nếu KEM thỏa mãn định nghĩa tính an toàn tại phụ lục B.5 và DEM thỏa mãn định nghĩa an toàn tại Phụ lục B.6, khi đó HC thỏa m ã n định nghĩa tại Điều B.4. Cụ thể hơn, với mọi kẻ tấn công A - HC[t,q, l,l ’] , ta có Adv HC (A) ≤ 2.Adv DEM ( A 1 ) + Adv KEM (A 2 ). Ở đây, - A 1 là kẻ tấn công [ t 1 , q ], với t 1 ≈ t, - A 2 là kẻ tấn công DEM[t 2 ,q, l , l' ] với t 2 ≈ t , và Bất đẳng thức trên không tính đến khả năng KEM.Ke y Gen đưa ra cặp khóa “tồi" (ví dụ một trong những cặp như thế là thuật toán giả i mã không vận hành như thuật toán nghịch đảo của thuật toán mã hóa) với xác suất khác không. Trong trường hợp này, đơn giản là cần bổ sung xác suất này ( được coi là không đáng kể) vào bên phải của bất đẳng thức trên. Giới hạn này dễ d àng thiết lập từ các định nghĩa. Xem, chẳng hạn trong [14], chứng minh chi tiết trong trường hợp không có nhãn. Chứng minh trong trường hợp có nhãn có thể tiến hành theo các mạch suy luận tương tự như trong [14]. N ế u KEM là dễ uốn nhẹ (xem Phụ lục B.5.1), thì dễ dàng chỉ ra rằng HC cũng d ễ uốn nhẹ (xem Phụ lục B.4.2) với cùng một giới hạn an toàn như trên. B.8 . Các giả thuyết về tính khó liên quan đến các nhóm cụ thể Điều này xác định một số giả thuyết về tính khó liên quan đến các nhóm cụ thể. Giả sử G = là nhóm cụ thể được định nghĩa ở Điều 10.1. B.8.1 . Bài toán tính toán Diffie-Hellman. Bài toán tính toán Diffie-Hellman (CDH) đối với G phát biểu như sau. Cho đầu vào (xg, yg) với x, y Î [0,… , m ) Hãy tính xy.g, giả thiết đầu v à o ngẫu nhiên, t ứ c x và y được chọn ngẫu nhiên từ tập hợp [0 ,…, m ). Giả thiết CDH là giả thi ế t rằng bài toán tính toán Diff i e-Hellman là bài toán khó. Lưu ý rằng rất kh ó , thậm ch í , nhận dạng l ờ i giải đúng cho bài toán CDH (đây được gọi là bài toán quyết định Diff i e-He ll man-xem phần tiếp theo dưới đây). Trong khi phân tích các hệ mật, các dạng thuật toán để giải bài toán CD H mà phần lớn là phát sinh một cách tự nhiên là những thuật toán cho ra một danh sách các l ời giải có thể đối với trường hợp đã cho của bài toán CD H . Với thuật toán A bất k ỳ giải bài toán CDH , đầu ra của nó là một danh sách các phần tử nh ó m, ta ký hiệu AdvCDH G (A) là xác suất để danh sách đó chứa lời giải đúng đối với đầu vào bài toán. Nếu A chạy trong thời gian t và tạo ra được danh sách nhiều nhất là l phần tử nh ó m, th ì A được gọi là kẻ tấn công CDH G (t,l). Trong [32] đã ch ỉ ra, làm thế nào để, kẻ tấn công CDH G (t, l) với e =AdvCDH G (A) và giá trị δ cho trước, biến đổi thành kẻ tấn công A’ - CDH G [t', 1 ] , sao cho AdvCDH G (A’) = 1-δ và sao cho t ' tương đương 0(t ∙ Î -1 l og( 1 /δ)) cộng với thời gian thực hiện số các phép toán nhóm là: 0( Î -1 l l og( 1 /δ ) log m + (log m ) 2 ) B.8.2 . Bài toán quyết định D i ff i e-Hellman Bài toán quyết định D i ffie-Hellman (DDH) đối với G được phát biểu như sau: Xác định hai phân bố: Phân bố R gồm bộ ba (xg, yg, zg), ở đây x , y, z được chọn ngẫu nhiên từ tập hợp [0,..., m ). Giả sử X R là bi ế n ngẫu nhiên được lấy mẫu từ phân bố này. Phân bố D bao gồm bộ ba (xg, yg, zg), ở đây x , y được chọn ngẫu nhiên từ tập hợp [0,..., m ), còn z = xy mod m . Ký hiệu X D là biến ngẫu nhiên với mẫu được lấy từ phân bố D. Bài toán quyết định Diffie-Hellman là phân biệt hai phân bố nói trên ( R và D ) Với thuật toán A mà đầu ra hoặc là 0 hoặc là 1, “Ưu thế DDH “ của nó được định nghĩa bằng AdvCDH G (A) = | Pr[A (X R ) = 1] - Pr [A(X D ) = 1] | . Nếu A chạy trong thời gian t thì A được gọi là kẻ tấn công DDH G [t]. Giả thiết DDH là: Ưu thế này là không đáng kể đối với tất cả các thuật t oán hiệu quả. Tham khảo thêm [10, 25, 26] về DDH và các vấn đề liên quan. B.8.3 . Bài toán Gap-CDH Bài toán Gap-CDH là bài toán giải bài toán CDH với sự hỗ trợ của tiên tri cho bài toán DDH. Trong trường hợp này, v ì thuật toán cho bài toán n à y sử dụng tiên tri DDH, có thể gi ả thiết là đầu ra của thuật toán là ph ầ n tử nhóm đơn lẻ, chứ không phải một danh sách các phần tử nhóm. Giả thiết rằng bài toán Gap-CDH là bài toán khó. Với bất k ỳ thuật toán "tiên tri” A, AdvGapCDH G (A) được định nghĩa là xác suất để cho ra lời giải đúng cho trường hợp ngẫu nhiên của bài toán CDH, sử dụng tiên tri đối với G . Nếu A chạy trong thời gian nhiều nhất là t , và thực hiện nhiều nhất q truy vấn đối với DDH-tiên tri, thì A được gọi là kẻ t ấ n công GapCDH G [t,q]. Tham khảo [29] để biết thêm chi tiết về giả thiết này. B.9 . Tính an toàn của ECIES-KEM Điều này xem xét tính an toàn của cơ chế bọc khóa EC I ES - KEM được định nghĩa ở Điều 10.2. Lược đồ này được tham số hóa theo thuật ngữ của nhóm cụ thể G (xem Điều 10.1) và hàm dẫn xuất khóa KDF (xem Điều 6.2). Có thể chứng minh lược đồ này là an toàn theo mô hình tiên tri ngẫu nhiên, nơi KDF đ ược mô hình hóa như ti ê n tri ngẫu nhiên, với giả thiết là bài toán Gap-CDH là bài toán khó. Cụ thể hơn, giả sử rằng các tham số hệ thống của ECIES-KEM được chọn sao cho SingleHashMode = 0 và CheckMode + CofactorMode + O l dCo f actorMode > 0. Khi đó nếu A là kẻ tấn công ECIES - KEM[t,q] và thực hiện nhiều nhất q’ truy vấn tiên tri ngẫu nhiên, khi đ ó ta c ó AdV ECIES-KEM ( 4) = O ( Adv G apCDH G (A')), ở đ ấ y, - A ' là kẻ tấn công GapCDH G (t' , O (q ' ),t ’ ≈ t. Giới hạn này về cơ bản đã được chứng minh trong [14], ít nhất cũng cho trường hợp khi CheckMode = 1 và các phần tử nhóm có mã duy nhất. Các trường hợp khác có thể chứng minh bằng lập luận tương tự. Giả sử các tham số hệ thống của ECIES - KEM được chọn sao cho SingleHashMode = 1 và CheckMode + Co f actorMode + O l dCofactorMode > 0. Trong trường hợp này ECIES - KEM sẽ không còn an toàn chống lại tấn công chọn bản mã, nhưng lại dễ uốn nhẹ (tham khảo Phụ lục B.5.1). Nếu khi đó n ế u A là kẻ tấn công EC I ES - KEM[t,q ] và thực hiện nhiều nhất q’ truy v ấ n t iên tri ng ẫ u nhiên, khi đó ta có Ad v' ECIES-KEM (A ) = O( AdvGapCDH G (A’)), ở đ â y, - A’ l à kẻ tấn công GapCDH G (t' , O (q.q ' ), t ' ≈ t. Ngoài ra, ch ỉ thỏa mãn định nghĩa yếu về an toàn, thì phép quy dẫn này sẽ không chặt chẽ như trong trường hợp ở đó Sing l eHashMode = 0. Đồng thời chất lượng của phép quy dẫn bị suy giảm, thậm chí còn giảm hơn với SingleHashMode = 1, khi xem xét mô hình đa bản rõ được định nghĩa một cách hình thức trong [3], ngược lại phép quy dẫn không suy giảm đáng kể khi S i ngleHashMode = 0. Nếu CheckMode + CofactorMode + OldCofactorMode = 0, khi đó, trong cả hai ước lượng trên, thuật ngữ AdvGapCDH G (A ' ), cần được thay thế bởi v .AdvGapCDH G (A'). B ở i vậy, sự lựa chọn tham số hệ thống này chỉ nên sử dụng khi v rất bé. Thay vì phân tích ECIES - KEM theo thuật ngữ của giả thiết Gap-CDH trong mô hình tiên tri ngẫu nhiên, có thể phân tích nó mà không cần sử dụng các tiên tri ngẫu nhiên, nhưng với giả thiết rất cụ thể và không chuẩn tắc. Tham khảo tại [1, 2] để biết thêm chi tiết. B.10 . Tính an toàn của PSEC-KEM Điều này xem xét t í nh an toàn của cơ chế bọc khóa PSEC - KEM được định nghĩa tại Điều 10.3. Lược đồ này được tham số hóa bằng thuật ngữ của nhóm cụ thể G (xem Điều 10.1) và hàm dẫn xuất khóa KDF (Điều 6.2). Có thể chứng minh sự an toàn của lược đồ này theo mô hình tiên tri ngẫu nhi ê n, coi KDF như tiên tri ngẫu nhiên và giả th iế t bài toán CDH là bài toán khó. Cụ thể hơn, với giá trị cho trước của tham số hệ th ố ng SeedLen và với A - kẻ tấn công PSEC - KEM[t,q] thực h i ện nhiều nhất q' truy vấn ngẫu nhiên, ta có Adv PS E C.KEM ( A) = O( AdvCD H G ( A ' ) + (q+ q')( m -1 + 2 - SeedL en )), ở đây A' là kẻ tấn công AdvCDH G [ t',O (q + q')], t ' ≈ t . Giới hạn này được chứng minh trong [41]. Đồng thời tính an toàn cũng k hông bị suy giảm đáng kể trong mô hình đa bản rõ được định nghĩa trong [10]. B.11 . Tính an toàn của ACE-KEM Điều này xem xét tính an toàn của cơ chế bọc khóa ACE-KEM, được định nghĩa trong 10.4. Lược đồ này được tham số hóa bằng thuật ngữ của nhóm cụ thể G (xem Điều 10.1), hàm dẫn xuất khóa KDF(xem Điều 6.2) và hàm băm hash (Điều 6.1). Lược đồ này có thể được chứng minh là an toàn, với gi ả thiết bài toán DDH là bài toán khó-cần nhấn mạnh là chứng minh v ề tính an toàn này không có trong mô hình tiên tri ngẫu nhiên. Thay v ì điều này, một số giả thiết cụ thể v à tương đối chuẩn tắc đã được đưa ra về h à m d ẫn xuất khóa và hàm băm. Cụ thể hơn, với bất kỳ kẻ tấn công A, ACE - KEM [t, q ], ta có A d v ACE-KEM (A) = O (A d vDDH G ( A 1 ) + Adv H a sh ( A 2 ) + Adv KDF (A 3 ) + q. m -1 ), ở đây: - A 1, A2 , A3 là những kẻ t ấ n công, thực hiện với lượng th ờ i gian như A - Adv H a Sh (A 2 ) là ký hiệu xác suất mà kẻ tấn công A 2 , với mã cho trư ớ c EU 1* và EU2* của hai phần tử độc lập, ngẫu nhiên thuộc …….. , có thể t ì m thấy mã EU 1 , và EU2 của các phần tử thuộc ……. , sao cho ( EU1, EU2) ≠ (E U1* , EU2 * ) , nhưng Hash.eval (EU1 || EU2) = Hash.eval (EU 1* || E U 2*). Nếu nhóm hỗ trợ đa mã hóa, th ì kẻ tấn công có thể chọn định dạng theo ý muốn, khi E U 1* và E U 2* được tạo ra. Hơn nữa kẻ tấn công có thể chọn sử dụng các đ ị nh dạng như nhau hoặc khác nhau trong hai lựa chọn của nó là EU1 và EU2 . Tuy nhiên EU1 * và EU2* phải là các mã hóa b ề n vững, và EU1 và EU2 cũng sở hữu các tính chất đó. Nếu Co f actorMode = 1, thì kẻ t ấn công có thể chọn EU1 làm mã của phần tử thuộc mà không nhất thiết thuộc Lưu ý rằng bài toán này là bài toán xung đột tiền ảnh thứ hai, bài toán này nói chung là bài toán khó giải hơn nhiều so với bài toán t ì m một cặp bất kỳ đầu vào xung đột. - Adv KD F (A 3 ) ký hiệu ưu thế của A 3 trong việc phân biệt giữa hai phân bố sau. Giả sử u 1 và là các phần tử độc lập, ngẫu nhiên trong và giả sử EU1 là mã của u 1 . Giả sử R là xâu các bộ tám ngẫu nhiên độ dài KeyLen . Phân bố th ứ nh ấ t là ( R, E U1 ) , và ph â n bố thứ hai là (KDF(EU1 || e '( ),KeyLen),E U 1). Độc giả có thể tham khảo [14] để xem chứng minh chi tiết cho trư ờ ng hợp CofactorMode = 0 và các phần tử nhóm có mã duy nhất. Dễ dàng chuyển chứng minh sang các trường hợp khác, sử d ụ ng yếu tố là thuật toán giải mã kiểm tra các mã hóa bền vững. Trong [ 14] đồng thời cũng chỉ ra rằng, độ an toàn của ACE - KEM không kém hơn ECIES - KEM , tức là với bất kỳ kẻ tấn công - ACE - KEM [t, q ] A tồn tại một kẻ tấn công - EC I ES - KEM [t ', q] A' với t’ ≈ t và Adv ECIES - KEM (A') ≈ Adv ACE-KEM (A) . Chứng minh trong [14] chỉ cho trường hợp CofactorMode = 0 và các phần tử của nhóm có mã hóa duy nhất. Chứng minh này dễ dàng thích hợp đ ể xử l ý các trư ờ ng hợp khác, một lần nữa làm cho việc sử dụng thực tế là kiểm tra thuật toán giải mã cho mã hóa thích hợp. Trong [14] đồng thời cũng chỉ ra rằng, nếu coi KDF như tiên tri ngẫu nhiên, th ì tính an toàn của ACE - KEM c ó thể được chứng m i nh dựa trên giả thiết CDH. Tuy nhiên, phép quy dẫn này về tính an toàn cũng không hoàn toàn chặt chẽ. Chứng minh trong [14] chỉ để cho trường hợp CofactorM o de = 0 và các phần tử nhóm có mã duy nhất. Chứng minh này dễ dàng chuyển sang cho các trư ờ ng hợp khác. Như đã chỉ ra trong Điều 10.4.4, nên lưu ý đ ế n việc thực thi ACE - KEM.Decrypt. Đặc biệt, việc thực th i ACE - KEM.Decrypt không nên để lộ nguyên nhân của sai s ó t trong bước g. Nếu kẻ tấn công c ó thể thu được thông tin từ tiên tri giải mã, việc chứng minh tính an toàn trong giả thiết DDH sẽ không còn giá trị nữa. Tuy nhiên, thậm ch í n ế u thông tin này tiếp cận được, th ì hiện chưa biết tấn công nào vào lược đồ này, và hơn nữa lược đồ vẫn không kém an toàn hơn so với EC I ES-KEM. B.12 . Bài toán ngược RSA Điều này xem xét bài toán ngược RSA. Giả sử RSAKeyGen là thuật toán tạo khóa RSA ( xem Điều 11.1). Bài toán ngược RSA phát biểu như sau: Cho đầu vào n và e của thuật toán RSAKeyGen () , cho x Î [0 ...n) h ã y tính y sao cho y e ≡ x (mod n ) . Với thuật toán A bất kỳ và thuật toán tạo khóa cho trước RSAKeyGen, Adv RSAKeyCen (A) ký hiệu xác suất của A gi ả i thành công bài toán ngược nói trên. Nếu A chạy trong lượng thời gian nhiều nhất t , thì được gọi là kẻ tấn công RSAKey G en[t] . Gi ả thi ế t RSA đối với RSAKeyGen là giả thiết: Adv RSAKey G en (A) không đáng kể đối với bất k ỳ thuật toán hiệu quả A nào. B. 13 . Tính an toàn của RSAES Điều này xem xét t í nh an toàn của mật mã c ó độ dài bản rõ hạn chế RSAES , được đ ị nh nghĩa trong Điều 11.4. Trong [8] đã phân tích một cài đặt t ổ ng quát hơn, trong đó (phương án thứ yếu của) cơ chế mã hóa REM1 (được định nghĩa tại Điều 11.3.2) được áp dụng cho phép “hoán vị cửa sập một chiều” tổng quát, chứ kh ô ng chỉ cho hàm RSA một chiều cụ thể. Việc phân tích được tiến hành theo mô h ì nh tiên tri ngẫu nhiên, ở đấy hàm dẫn xuất khóa và hàm băm được mô hình như những tiên tri. Trong [8] cũng đã ch ứ ng minh rằng lược đồ thu được thỏa mãn một tính chất kỹ thuật, được gọi là “nhận thức bản rõ' (plaintext a w areness), với giả thiết rằng phép hoán v ị cơ sở thực sự là hàm một phía. Ngoài ra, như đã chỉ ra trong [33], việc nhận bi ế t bản rõ không suy ra được tính an toàn chống lại tấn công chọn bản mã - nó chỉ suy ra khái niệm yếu hơn về an toàn, đ ó là an toàn chống lại tấn công “thời gian ăn bữa trưa” (xem Phụ lục B.4). Hơn nữa, trong [33] cũng đã chứng minh rằng nói chung REM1 không tạo ra mật mã an toàn ch ố ng lại tấn công chọn bản mã, nếu phép hoán v ị cơ sở là tùy ý. Kết qu ả phủ định này không suy ra rằng RSAES là không an toàn chống lại tấn công chọn bản mã - chỉ suy ra rằng phân tích trong [8] không đạt được điều này. Trong [33], đ ã chỉ ra rằng RSAES là an toàn, nếu số mũ mã h óa e là rất bé (v í dụ e = 3). Kết quả này đã được tổng quát trong [20] cho số mũ mã hóa tổng quát. Tuy nhiên có thể chỉ ra rằng phép quy dẫn của t í nh an toàn trong [20] là rất không chặt chẽ - thật vậy, nói chung chưa có thể nói gì về tính an toàn của RSAES đối với modulo RSA kích thước tới hàng ngàn bit. Phép quy dẫn an toàn trong [ 33] cho số mũ mã hóa nhỏ là tốt hơn đáng kể, nhưng v ẫ n không hoàn toàn chặt chẽ như đòi hỏi. Như đã chỉ ra trong Điều 11.3.2.3, cần quan tâm đến v ấ n đề thực thi RSAES . Đặc biệt là việc thực thi REM 1 .Decode không nên để lộ nguyên nhân sai sót tại bước thứ k ; Nếu kẻ tấn công có thể thu được thông tin này từ tiên tri giải mã, th ì lược đồ có thể dễ dàng bị phá, như mô tả trong [24]. B. 14 . Tính an toàn của RSA-KEM Điều này xem xét t í nh an toàn của cơ chế bọc khóa RSA-KEM, được định nghĩa trong Điều 11.5. Có thể chứng minh tính an toàn của lược đồ này theo mô hình tiên tri ngẫu nhiên, nơi các tham số hệ thống KDF được mô h ì nh hóa dưới dạng tiên tri ngẫu nhiên và giả thiết bài toán ngược RSA là bài toán kh ó . Cụ thể hơn, với bất kỳ thuật toán tạo khóa RSAKeyGen , sao cho đầu ra (n,e,d) luôn luôn thỏa mãn điều kiện n ≥ nBound , và vớ i mỗi kẻ tấn công A, RSA - KEM[t,q] ta c ó A dv RSA-KEM (A ) ≤ Adv R SA K ey G en (A ') + q/nBound. ở đây, - A ' là kẻ t ấ n công RSAKeyGen [t'] với t' ≈ t . Bất đẳng thức này không tính đến khả năng của biến cố RSAKeyGen tạo ra khóa RSA “tồi" với x á c suất khác không. Trong trường hợp này, đơn giản là cần bổ sung xác suất này (giả thiết là không đáng kể) vào vế phải của bất đẳng thức trên. Xem chứng minh tại [34]. Phép quy dẫn này hoàn toàn chặt chẽ, kh á c với phép quy dẫn cho RSAES được thảo luận ở trên trong Phụ lục B.13. Ngo à i ra, trong mô hình đa bản rõ được định nghĩa trong [3], t í nh an toàn của RSA-KEM nói chung không suy giảm do tính t ự quy dẫn ngẫu nhiên của bài to á n ngược RSA. Ngược lại, tính an toàn của RSAES suy gi ả m một cách tuyến tính theo số lượng bản rõ, vì không may là t í nh chất tự quy dẫn ngẫu nhiên không th ể khai thác được trong bối cảnh này. Đồng thời, không giống như RSAES, không có cảm giác là RSA-KEM dễ bị tổn thương đối với các tấn công “thực thi", như tấn công trong [ 24]. B. 15 . Tính an toàn của HIME(R) Có thể chỉ ra r ằ ng theo mô h ì nh tiên tri ngẫu nhiên, nơi hàm Hash và KDF trong HEM1 được mô hình hóa dưới dạng tiên tri ngẫu nhiên, rằng HIME(R) là an toàn chống lại tấn công chọn bản rõ phù hợp, với giả thiết là bằng tính toán để không thể phân tích số nguyên ở dạng mà ra bởi thuật toán H I MEKeyGen. Đ ể xem chi tiế t , tham khảo [29, 35] - lưu ý là [35] đã chỉnh sửa một số sai sót trong [29]. PHỤ LỤC C (Tham khảo) CÁC VÉC TƠ KIỂM TRA Phụ lục này đưa ra các véc tơ kiểm tra cho lược đồ mã hóa được đặc tả trong phần này của tiêu chuẩn ISO/IEC 18033. Đối với các cơ chế bọc khóa dựa trên ELGamal, nhóm “Modp” là một nh ó m con của với số nguyên tố p cho trước; nhóm “ECMo d p” là các đường cong elliptic tr ê n Z p , đôi khi được gọi là “ P192" trong các tiêu chuẩn khác; nhóm “ECGF2" là các đường cong elliptic trên trường hữu hạn gồm có 2 1 6 3 phần tử, đôi khi được gọi là "B163 “ trong các tiêu chuẩn khác (các phần tử trong trường được mô tả với quan hệ của đa thức cơ sở cho đa thức bất khả quy p đã cho). C.1. Véc tơ kiểm tra cho DEM1 C.1.1 . Véc t ơ kiểm tra C.1.2 Véc tơ kiểm tra C. 2 . Véc tơ kiểm tra cho ECIES-KEM C.2.1 . Véc tơ kiểm tra C .2.2 . Véc tơ kiểm tra C.2.3 . Véc tơ ki ể m tra ECIES-KEM C.2.4 . Véc tơ kiểm tra EC I ES-KEM C.2.5 . Véc tơ kiểm tra ECIES-KEM C. 3 . Véc tơ kiểm tra cho PSEC-KEM C.3.1 . Véc tơ ki ể m tra C.3.2 . Véc tơ kiểm tra C.3.3 . Véc tơ kiểm tra C.3.4 Véc tơ kiểm tra C.3.5 . Véc tơ kiểm tra C.4 . Véc tơ kiểm tra cho ACE-KEM C.4.1 . Véc t ơ kiểm tra C.4.2 . Véc tơ kiểm tra C.4.3 . Véc tơ kiểm tra ACE-KEM C.4.4 . Véc tơ kiểm tra C.4.5 . Véc tơ kiểm tra C.5 . Véc t ơ kiểm tra cho RSAES C.5.1 . V é c tơ kiểm tra C.5.2 . Véc t ơ k iể m tra C.5.3 . Véc tơ kiểm tra C.5.4 . Véc t ơ ki ể m tra C.6 . Véc tơ kiểm tra cho RSA-KEM C.6.1 . Véc tơ kiểm tra C.6.2 . Véc tơ kiểm tra C.6.3 . Véc tơ kiểm tra C.6.4 . Véc t ơ kiểm tra C.7 . Véc tơ kiểm tra cho HC Kết hợp mỗi KEM với DEM là khá đơn gi ả n, nhưng liệt kê tất cả các kết hợp khác nhau có thể kh ó và mất nhiều thời gian. Ch ú ng tôi cung cấp ở đây chỉ là một vector thử nghiệm như là một minh họa. C.7.1 . Véc tơ k iể m tra C.8 . Véc tơ kiểm tra cho H IME(R) C.8.1 . Véc tơ kiểm tra C.8 . 2 . Véc tơ kiểm tra Véc tơ kiểm tra HIME (R). No.2 (1023-bit) C.8.3 . Véc tơ kiểm tr a C.8.4 . Véc tơ kiểm tra C.8.5 . Véc tơ kiểm tra C.8.6 . Véc tơ k i ểm tra THƯ MỤC TÀI LIỆU THAM KHẢO [1]. I SO/IEC 10116:1997, Information technology - Security techniques - Modes of operation for an n-bit block cipher [2] . ISO/I EC 10118 (al l parts), Information technology - Security techniques - Hash-functions [3] . ISO/IEC 11770 (all parts), In f ormation technology - Security techniques - Key management [4] . ISO/IEC 15946-1:2002, Information technology - Security techniques - Cryptographic techniques based on elliptic curves - Part I: General [5] . ISO/IEC 18031:2005, Information technology - Security techniques - Random bit generation [6] . ISO/IEC 18032:2005 , In f or m ation technology - Security techniques - Prime number generation [7] . I SO/IEC18033-1:2005, Information technology - Security techniques - Encryption algor i thms - Part I: General [8] . [8] M. Abdalla, M. Bellare, and P. Roga w ay. DHAES: an encryption scheme based on the Diff i e- Hellman problem. Cryptology ePrint Archive, Report 1999/007, 1999. p rint.iacr.org> [9 ] . M. Abdalla, M. Bellare, and P. Roga w ay. The Oracle Diffie-Hellman assumptions and an analysis of DHIES. In Topics in Cryptology - CT-RSA 2001, pages 143-158, 2001. Springer LNCS 2045 [10] . M. Bellare, A. Boldyreva, and S. Micali. Public-key encryption in a multi-user setting: security proofs and improvements. In Advances in Cryptology - Eurocrypt 2000, pages 259-274, 2000 [11] . M. Bellare, A. Desai, E. Jokipii, and P. Rogaway. A concrete security treatment of symmetric encryption: analysis of the DES modes of operation. In 38th Annual Symposium on Foundations of Computer Science, 1997 [12] . M. Bellare, A. Desai, D. Pointcheval, and P. Roga w ay. Relations among notions of security for public-key encryption schemes. In A d vances in Crypto l ogy-Crypto '98, pages 26-45, 1998 [13] . M. Bellare, J. Kilian, and P. Roga w ay. On the security of cipher block chain i ng. In Advances in Cryptology - Crypto '94, pages 341-358, 1994 [14] . M. Bellare and P. Rogaway. Random oracles are practical: a paradigm for designing efficient protocols. In First ACM Con f erence on Computer and Communications Security, pages 62-73, 1993 [15] . M. Bellare and P. Rogaway. Optimal asymmetric encryption. In Advances in Cryptology - Eurocrypt '94, pages 92-111,1994 [16] . I. Blake, G. Seroussi, and N. Smart. Elliptic Curves in Cryptography. Cambridge University Press, 1999 [17]. D. Boneh. The Decision Diffie-Hellman Problem. In Ants-lll, pages 48-63, 1998. Springer LNCS 1423 [18] . R. Canetti , Universally composable security: a new paradigm for cryptographic protocols. Cryptology ePrint Archive, Report 2000/067, 2000. g > [19] . R. Canetti, O. Goldreich, and S. Halevi. The random o racle methodology, revisited. In 30th Annual ACM Symposium on Theory of Computing, pages 209-218, 1998 [20] . R. Cramer and V. Shoup. A practical public key cryptosystem provably secure against adaptive chosen ciphertext attack. In Advances in Cryptology-Crypto '98, pages 13-25, 1998 [21] . R. Cramer and V. Shoup. Design and ana l ysis of practical public-key encryption schemes secure against adaptive chosen ciphertext attack. Cryptology ePrint Archive, Report 2001/108, 2001. p rint.iacr.org> [22] . D. Dolev, C. Dwork, and M. Naor. Non-malleable cryptography. In 23rd Annual ACM Symposium on Theory of Computing, pages 542-552,1991 [23] . Dolev, C. Dwork, and M. Naor. Non-malleable cryptography, 1998. Manuscript (updated, full length version of STOC paper) [24] . Do l ev, C. Dwork, and M. Naor. Non-ma l leable cryptography. SIAM J. Comput., 30(2):391-437, 2000 [25] . T. EIGamal. A public key cryptosystem and signature scheme based on discrete logarithms. IEEE Trans. In f orm. The o ry, 31:469-472,1985 [26] . Fujisaki and T.Okamoto. Secure integration of asymmetric and symmetric encrypt i on schemes. In Advances in Cryptology-Crypto '99, pages 537-554, 1999 [27] . E. Fujisaki, T. Okamoto, D. Pointcheval, and J. Stern. RSA-OAEP is secure under the RSA assumption. In Advances in Cryptology-Crypto 2001, pages 260-274, 2001 [28] . S. Gold w asser and S. Micali. Probabilistic encryption. Jou rn al of Computer and System Sciences, 28:270-299,1984 [29] . Se l f-evaluation report: HIME(R) cryptosystem, Oct. 2003. Available from [30] . H. W. Lenstra. Finding isomorphisms between finite fiel d s. Math. Comp., 56:329-347,1991 [31] . J. Manger. A chosen ciphertext attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as standardized in PKCS # 1 v2.0. In Advances in Cryptology-Crypto 2001, pages 230-238, 2001 [32] . U. Maurer and S. Wolf. The Diffie-Hellman protocol. Designs, Codes, and Cryptography, 19:147-171, 2000 [33] . M. Naor and O. Reingold. Number-theoretic constructions of efficient pseudo-random functions. In 38th Annual Symposium on F oundations of Computer Science, 1997 [34] . M. Naor and M. Yung. Public-key cryptosystems provably secure against chosen ciphertext attacks. In 22nd Annual ACM Symposi u m on Theory of Computing, pages 427-437,1990 [35] . M. Nishioka, H. Satoh, and K. Sakuri. Design and analysis of fast provably secure public-key cryptosystems based on a modular squaring. In Proc. ICISC 2001, LNCS 2288, pages 81-102, 2001 [36] . T . Okamoto and D. Pointcheval. The gap-problems; a new class of problems for the security of cryptographic schemes. In Proc. 2001 International W orkshop on Practice and Theory in Public Key Cryptography (PK.C 2001), 2001 [37] . C. Rackoff and D. Simon. Noninteractive zero-knowledge proof of knowledge and chosen ciphertext attack. In Advances in Cryptology-Crypto '91, pages 433-444,1991 [38] . R. L. Rivest, A. Shamir, and L. M. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 21 ( 2): 120-126, 1978 [39] . V. Shoup. Lower bounds for discrete logarithms and related problems. In Advances in Cryptology - Eurocrypt '97, pages 256-266, 1997 [40] . V. Shoup. OAEP reconsidered. In Advances in Cryptology-Crypto 2001, pages 239-259, 2001 [41] . V. Shoup. A proposal for an ISO Standard for public key encryption. Cryptology ePrint Archive, Report 2001/112, 2001 <> p ://eprint.iacr.org> [42] . S. Vaudenay. Security flaws induced by CBC padding - applications to SSL, IPSEC, WTLS. In Advances in Cryptology-Eurocrypt 2002, 2002 MỤC LỤC Lời nói đầu Giới thiệu 1 . Phạm vi áp dụng 2 . Tài liệu viện d ẫn 3 . Định ngh ĩ a 4 . Ký hiệu và khái niệm 5 . Cơ sở toán học 6 . Các biến đổi mật mã 7 . Mật mã phi đối xứng 8 . Mật mã lai ghép tổng quát 9 . Thiết kết các cơ chế bọc dữ liệu 10 . Cơ chế bọc khóa dựa vào EIGamal 11 . Mật mã phi đối xứng dựa trên RSA và các cơ chế bọc khóa 12 . Mật mã dựa trên phép b ì nh phương modulo Phụ lục A (Quy định) Cú pháp ASN.1 cho các bộ định danh đối tượng Phụ lục B (Tham khảo) Xem xét tính an toàn Phụ lục C (Tham khảo) Các véc tơ kiểm tr a Th ư mục tài liệu tham khảo