제정일 : 2006 년 12 월 xx 일 T T A S t a n d a r d CMS를위한추가암호알고리즘 : Part1 SEED (Additional Encryption Algorithm for CMS : Part1 SEED)
제정일 : 2006 년 12 월 xx 일 CMS를위한추가암호알고리즘 : Part1 SEED Additional Encryption Algorithm for CMS : Part1 SEED 본문서에대한저작권은 TTA 에있으며, 이문서의전체또는일부에대하여상업적이익을목적으로하는무단복제및배포를금합니다. Copyrightc Telecommunications Technology Associations(2006). All Rights Reserved.
서문 1. 표준의목적본표준은보안전자우편등에사용되는암호메시지규격 (CMS : Cryptographic Message Syntax, 이하 CMS) 에서 SEED 알고리즘을적용할수있도록하기위한것이다. 2. 주요내용요약본표준은보안전자우편등에서메시지암호화를위해사용되는 CMS에서 SEED 알고리즘을사용하기위한규격을기술한다. 본표준의 3장에서는컨텐츠와키암호화를위한객체식별자를정의하고, 4장에서는컨텐츠암호화키를암호화하기위해사용되는키싸기 (Key Wrapping) 알고리즘을정의한다. 5장및 6장에서는 SMIMECapabilities 속성과보안고려사항을소개하고마지막으로부록에서는 ASN.1 모듈과 SEED 및 CMS 관련객체식별자를정의한다. 3. 표준적용산업분야및산업에미치는영향 본표준은보안전자우편등의메시지암호화사용을촉진하고, 나아가암호기술의발전과관련응용서비스활성화에기여할것이다. 4. 참조권고및표준 4.1 국외표준 ( 권고 ) - [RFC4010] IETF RFC4010, Use of the SEED Encryption Algorithm in Cryptographic Message Syntax(CMS) - [RFC4269] IETF RFC4269, The SEED Encryption Algorithm - [ISOSEED] ISO/IEC 18033-3, Information technology - Security technique - Encryption algorithms - Part3 : Block ciphers, 2005 - [RFC3369] IETF RFC3369, Cryptographic Message Syntax (CMS) - [RFC3370] IETF RFC3370, Cryptographic Message Syntax (CMS) Algorithm - [RFC2633] IETF RFC2633, S/MIME Version 3 Message Specification - [RFC3394] IETF RFC3394, Advanced Encryption Standard(AES) Key Wrap Algorithm i
4.2 국내표준 - [TTA-SEED] TTAS.KO-12.0004, 128비트블록암호알고리즘 - [TTA-MODE] TTAS.KO-12.0025, 블록암호알고리즘 SEED의운영모드 4.3 기타 - [CRYPTREC] Information-technology Promotion Agency (IPA), Japan, CRYPTREC. "SEED Evaluation Report", 2002 5. 참조표준 ( 권고 ) 과의비교 5.1 참조표준 ( 권고 ) 과의관련성본표준에서는 IETF RFC 4010을기반으로국내블록암호알고리즘표준인 SEED가 CMS에서사용될수있도록 SEED 사용에대한식별자및사용규격을정의한다. RFC4010과동일함. 6. 지적재산권관련사항 본표준과관련하여 2006 년 10 월현재확인된지적재산권없음. 7. 적합인증관련사항 7.1 적합인증대상여부 : 없음 7.2 시험표준제정여부 ( 해당시험표준번호 ) : 없음 8. 표준의이력 판수제 개정일제정및개정내역 제 1 판 2006. 12. xx 제정 ii
Preface 1. The Purpose of standard This standard specifies how to use SEED algorithm in CMS. 2. The summary of contents This standard defines OID(Objective Identifier) and key wrap algorithm encrypting contents, key data and encryption key. Also it address attributions and security considerations of SMIME Capabilities. Finally, this standard specifies ASN.1 module and OID being continuous with SEED and CMS 3. Applicable fields of industry and its effect This standard contributes to promote using CMS. Also it'll bring the increment of cryptographic application scope. 4. Reference Standards (Recommendations) 4.1 International Standards(Recommendations) - [RFC4010] IETF RFC4010, Use of the SEED Encryption Algorithm in Cryptographic Message Syntax(CMS) - [RFC4269] IETF RFC4269, The SEED Encryption Algorithm - [ISOSEED] ISO/IEC 18033-3, Information technology - Security technique - Encryption algorithms - Part3 : Block ciphers, 2005 - [RFC3369] IETF RFC3369, Cryptographic Message Syntax (CMS) - [RFC3370] IETF RFC3370, Cryptographic Message Syntax (CMS) Algorithm - [RFC2633] IETF RFC2633, S/MIME Version 3 Message Specification - [RFC3394] IETF RFC3394, Advanced Encryption Standard(AES) Key Wrap Algorithm 4.2 Domestic Standards : None 4.3 Other Standards : None iii
5. Relationship to International Standards(Recommendations) 5.1 The relationship of international standards This standard has been developed refer to IETF RFC 4010 6. The Statement of Intellectual Property Rights None 7. The Statement of Conformance Testing and Certification None 8. The Hisytory of Standard Edition Issued Date Contents The 1st edition 2006. 12. xx Established iv
목 차 1. 개요 1 2. SEED 알고리즘 1 3. 컨텐트와키암호화를위한객체식별자 1 3.1. 컨텐트암호화용객체식별자 1 3.2. 키암호화를위한객체식별자 2 4. 키싸기알고리즘 2 4.1. 기호와정의 2 4.2. SEED 키싸기 3 4.3. SEED 키풀기 5 4.4. 키데이터무결성 -- 초기값 6 5. SMIMECapabilities 속성 7 6. 보안고려사항 8 부록 1. ASN.1 모듈 9 부록 2. SEED 알고리즘의객체식별자 10 부록 3. CMS 에서사용하는국내암호알고리즘에대한객체식별자 11 v
CONTENTS 1. Overview 1 2. SEED Algorithm 1 3. Content Identifiers for Content and Key Encryption 1 3.1. OIDs for Content Encryption 1 3.2. OIDs for Key Encryption 2 4. Key Wrap Algorithm 2 4.1. Notation and Defintions 2 4.2. SEED Key Wrap 3 4.3. SEED Key Unwrap 5 4.4. Key Data Integrity -- the Initial Value 6 5. SMIMECapabilities Attribute 7 6. Security Considerations 8 Appendix 1. ASN.1 Module 9 Appendix 2. Object Identifier of SEED Algorithm 10 Appendix 3. Object Identifier for Korean Cipher Algorithm in CMS 11 vi
CMS 를위한추가암호알고리즘 : Part1 SEED (Additional Encryption Algorithm for CMS : Part1 SEED) 1. 개요 이문서는암호메시지규격에서 SEED 알고리즘 [IETF4269][ISOSEED][TTASEED] 사용을위한규격을기술한다. 이를위해본표준에서는관련된객체식별자 (OID: Object Identifier) 와처리방법을정의한다. 2. SEED 알고리즘 SEED 암호알고리즘의세부명세및알고리즘사용에대한식별자는 IETF RFC 4269 및 TTAS.KO-12.0004를따른다. 3. 컨텐츠와키암호화를위한객체식별자 (OID, Object Identifier) 이절은암호메시지규격에서컨텐cm와키암호화용으로 SEED가사용되기위해필수적인객체식별자와처리정보를제공한다. 본표준에서는 SEED 알고리즘을 CMS에서사용할수있는대칭키암호알고리즘으로추가하기위해 SEED를이용한컨텐츠암호화알고리즘과키암호화알고리즘에대한객체식별자를정의한다. 따라서 CMS 에이전트는대응하는암호화알고리즘에대한객체식별자를선택하고각각에요구되는파라미터를제공하여프로그램코드를시작함으로써컨텐츠나키암호화를위해 SEED를이용할수있다. 3.1 컨텐트암호화용객체식별자 SEED는 [RFC3370] 에서정의된대칭컨텐트암호화알고리즘의부류에추가된다. Cipher Block Chaining(CBC) 방법에서 SEED 컨텐트-암호화알고리즘은다음객체식별자를가지고있다 id-seedcbc OBJECT IDENTIFIER ::= { iso(1) member-body(2) korea(410) kisa(200004) algorithm(1) seedcbc(4) } CMS 에서컨텐츠암호화를위한대칭키암호알고리즘으로 SEED 를사용하기위 - 1 -
해서는 SEED CBC에대한 AlgorithmIdentifier 파라미터필드는반드시존재해야만하고, 파라미터필드는초기값 (IV : Initial Value) 의값을가지고있어야만한다. SeedCBCParameter ::= SeedIV -- SEED 초기벡터 SeedIV ::= OCTET STRING (SIZE(16)) 평문은 [RFC3369] 의 6.3 장에따라덧붙여진다. 3.2 키암호화를위한객체식별자들 SEED 키암호화키 (KEK : Key-Encryption Key) 를이용하여 SEED 컨텐츠암호화키 (CEK : Content-Encryption Key) 를암 / 복호화하는데사용되는키싸기 (Key Wrapping) 및키풀기 (Key Unwrapping) 알고리즘은 4장에서정의된다. 그러므로본절에서는 SEED 키-암호화알고리즘을위한객체식별자만을정한다. 키암호화키의생성과분배는이문서의범위를넘어서는것으로, 본표준에서는다루지않는다. SEED 키 - 암호화알고리즘은다음객체식별자를가지고있다 : id-npki-app-cmsseed-wrap OBJECT IDENTIFIER ::= { iso(1) member-body(2) korea(410) kisa(200004) npki-app(7) smime(1) alg(1) cmsseed-wrap(1) } 키를싸는과정은그자체에서 IV를사용할방법과시점을정의하기때문에이객체식별자와관련된파라미터는없어야만한다. 4. 키싸기알고리즘 SEED 키암호화키 (KEK) 를이용하여 SEED 컨텐츠암호화키 (CEK) 를암호화하는데사용되는키-싸기알고리즘은 AES의키싸기알고리즘 [RFC3394] 와동일하다. 4.1 기호및정의 다음기호법은키싸기알고리즘의기술에사용된다. - 2 -
o SEED(K, W) : 키 K를갖고 SEED 코드북 (codebook) 를이용해서 W 암호화 o SEED-1(K, W) : 키 K를갖고 SEED 코드북를이용해서 W 복호화 o MSB(j, W) : W의최상위 j 비트를반환 o LSB(j, W) : W의최하위 j 비트를반환 o B1 ^ B2 : B1과 B2의비트연산 XOR(bitwise exclusive or) o B1 B2 : B1과 B2의비트연산 OR(Concatenate) o K : 키-암호화키 K o n : 64 비트키데이터블록의수 o s : 키싸기처리에서단계의수, s = 6n o P[i] : i번째평문키데이터블럭 o C[i] : i번째암호문데이터블럭 o A : 64비트무결성검사레지스터 o R[i] : 64비트레지스터배열 ( 여기서, i = 0, 1, 2,..., n) o A[t], R[i][t] : 암호화단계 t번후레지스터 A와 R[i] 의내용. o IV : 키싸기처리동안사용된 64비트초기값 키싸기알고리즘에서, 연접기능 (concatenation function) 은 SEED 코드북에 128비트입력을구성하기위하여 64비트의조각을연접하기위하여사용될것이다. 또한, 추출기능은 SEED 코드북으로부터나온 128 비트출력을두개의 64비트조각으로나누는데사용될것이다. 4.2 SEED 키싸기 SEED 키싸기알고리즘은 AES에대한키싸기알고리즘 [RFC3394] 의 2.2.1장과동일하며, 단지 AES" 를 SEED" 로대치하면된다. 키싸는과정에서의입력은키암호화키와싸여진평문이며, 평문은싸여진키데이터를포함하는 n 개의 64비트블록들로구성된다. 키싸는과정은다음과같다. o 입력 - 평문 : n개의 64비트값 {P1, P2,..., Pn}) - 키 : K (KEK) o 출력 - 암호문 : (n+1) 개의 64비트값 {C0, C1,..., Cn} - 3 -
o 키싸기과정 ( 이동 (shifting) 방식 ) 1 변수초기화 A[0] 로초기값설정 (4.4장참조 ) For i = 1 to n R[0][i] = P[i] 2 중간값계산 For t = 1 to s, where s = 6n A[t] = MSB(64, SEED(K, A[t-1] R[t-1][1])) ^ t For i = 1 to n-1 R[t][i] = R[t-1][i+1] R[t][n] = LSB(64, SEED(K, A[t-1] R[t-1][1])) 3 결과출력 Set C[0] = A[t] For i = 1 to n C[i] = R[t][i] 이동 (shifting) 방식의키싸기알고리즘이아닌색인 (indexing) 방식의키싸기알고리즘도사용할수있다. 이방법을통해앞선알고리즘에있는회전 (rotation) 을피하면서싸여진키를계산하는것이가능하다. 이방법은앞선방법과동일한결과를얻으면서, 소프트웨어구현을보다쉽게한다. o 입력 - 평문 : n개의 64비트값 {P1, P2,..., Pn} - 키 : K (KEK) o 출력 - 암호문 : (n+1) 개의 64비트값 {C0, C1,..., Cn} o 키싸기과정 ( 색인 (indexing) 방식 ) 1 변수초기화 A = IV로초기값설정 (4.4장참조 ) For i = 1 to n R[i] = P[i] - 4 -
2 중간값계산 For j = 0 to 5 For i=1 to n B = SEED(K, A R[i]) A = MSB(64, B) ^ t where t = (n*j)+i R[i] = LSB(64, B) 3 결과출력 Set C[0] = A For i = 1 to n C[i] = R[i] 4.3 SEED 키풀기 SEED 키싸기알고리즘은 AES에대한키싸기알고리즘 [RFC3394] 의 2.2.2장과동일하며, 단지 AES" 를 SEED" 로대치하면된다. 키풀기과정에입력되는값들은키암호화키와이전에싸여진키로이루어져있는암호문인 (n+1) 개의 64비트블록이다. 이것은키풀기과정을통해복호화된키데이터의 n개 64비트블록으로이루어져있는 n개의평문블록을출력한다. o 입력 - 암호문 : (n+1) 개의 64비트값 {C0, C1,..., Cn} - 키 : K (KEK) o 출력 - 평문 : n개의 64비트값 {P1, P2,..., Pn}. o 키풀기과정 ( 이동 (shifting) 방식 ) 1 변수초기화 Set A[s] = C[0] where s = 6n For i = 1 to n R[s][i] = C[i] 2 중간값계산 For t = s to 1-5 -
A[t-1] = MSB(64, SEED-1(K, ((A[t] ^ t) R[t][n])) R[t-1][1] = LSB(64, SEED-1(K, ((A[t]^t) R[t][n])) For i = 2 to n R[t-1][i] = R[t][i-1] 3 결과출력 If A[0] is an appropriate initial value (4.4장참조 ), Then For i = 1 to n P[i] = R[0][i] Else Return an error 키풀기알고리즘은색인 (indexing) 기반의연산을사용할수있다. 이방식의결과는레지시트이동 (shifting) 방식의연산과같은결과를생성한다. o 입력 - 암호문 : (n+1) 개의 64비트값 {C0, C1,..., Cn} - 키 : K (KEK) o 출력 - 평문 : n개의 64비트값 {P0, P1, K, Pn}. o 키풀기과정 ( 색인 (indexing) 방식 ) 1 변수초기화. Set A = C[0] For i = 1 to n R[i] = C[i] 2 중간값계산. For j = 5 to 0 For i = n to 1 B = SEED-1(K, (A ^ t) R[i]) where t = n*j+i A = MSB(64, B) R[i] = LSB(64, B) - 6 -
3 결과출력 If A is an appropriate initial value (4.4장참조 ), Then For i = 1 to n P[i] = R[i] Else Return an error 4.4 키데이터무결성 -- 초기값 초기값 (IV, Initial Value) 은키싸기과정의첫번째단계에서 A[0] 에할당된값을참조한다. 이값은키데이터에대한무결성검사를하는데사용된다. 키풀기과정의마지막단계에서얻은 A[0] 값은초기의 A[0] 값과비교된다. 만약두값이일치하면, 키는유효한것으로인정되고키풀기알고리즘은이 A[0] 값을반환한다. 만약일치하지않으면, 키는버려지고키풀기알고리즘은에러를반환한다. 무결성검사에의해획득된이러한엄격한특징들은초기값의정의에좌우된다. 즉, 다른애플리케이션은다소다른특성들을요구할수도있다. 예를들면, 키데이터의생명주기 (lifecycle) 전체에걸쳐서키데이터의무결성을결정한다거나단순히키가풀리는시점에서키데이터의무결성을결정할필요가있을수있다. 키싸기과정동안키데이터의무결성을제공하는기본초기값 (default initial value) 은다음과같은 16진수인상수로정의되어있다. A[0] = IV = A6A6A6A6A6A6A6A6 초기값 (IV) 로서상수를사용함으로써키데이터를싸는동안에키데이터에대한강한무결성검사가지원된다. 키데이터를풀때 A[0] = A6A6A6A6A6A6A6A6로하면키데이터가훼손된경우는 이다. 키데이터를풀때 A[0] 을임의의다른값으로하면, 임의의키데이터를되돌리지않고오류를되돌려줘야한다. 5. SMIMECapabilities 속성 S/MIME 클라이언트는 S/MIME 능력속성 (capabilities attribute) 을사용함으로써지원하는암호학 (cryptographic) 함수의집합을발표해야한다 [SHOULD]. 이속성 (attribute) 은암호학함수의객체식별자의부분적인목록을제공하고클라이언트에의해서명되어야만한다. 함수의객체식별자는논리적으로함수카테고리에서분 - 7 -
리되어야한다 [SHOULD]. 그리고우선권 (preference) 에관하여정돈되어야만한다. [RFC2633] 의 2.5.2장에서 SMINMECapabilities 및이와관련된속성을정의한다 (SMIMECapability SEQUENCEs의 SEQUENCE로정의되었다 ). 정의된속성은 SMIMECapabilies를공시한소프트웨어가지원할수있는알고리즘의일부항목을명세하는데사용할수있다. 만약 S/MIME 클라이언트에게 SEED로대칭암호화를지원하도록요청되면, 능력속성은대칭알고리즘의범주중위쪽조건으로지정된 SEED 객체식별자를포함해야만한다. 이객체식별자와관련된파라미터는 SeedSMimeCapability이여야만한다. SeedSMimeCapabilty ::= NULL SEED를기술하는 SMIMECapability SEQUENCE는다음 16진법문자열로서식별부호화규칙으로암호화 (DER-encoded) 되어야만한다. 30 0d 06 0a 2a 83 1a 8c 9a 44 07 01 01 01 05 00 송신에이전트 (sending agent) 가암호화된메시지를만들때, 어떤종류의암호화알고리즘을사용할지를결정해야만한다. 일반적으로결정과정은사적인동의, 사용자선호, 합법적인제약등과같은다른정보뿐만아니라수령인으로부터받은메시지에서포함된성능목록으로부터얻는정보를포함한다. 만약사용자들이대칭암호화 (symmetric encryption) 를위하여 SEED을요구하면, 송수신양측에서 S/MIME 클라이언트에의해지원되어야만한다. 그리고사용자가선호하는것으로설정되어야만한다. 6. 보안고려사항 본표준에서는 CMS의컨텐츠를암호화하고 CMS의컨텐츠를암호화하는데사용된대칭키를암호화하기위하여 SEED 암호알고리즘을사용하기위한방법을기술하고있다. 암호알고리즘이적용되는메커니즘외의다른메커니즘은 [RFC3269], [RFC3270] 및 [RFC3394] 에서정의된메커니즘들과동일하다. 따라서본표준에대한보안고려사항은 [RFC3269], [RFC3270] 및 [RFC3394] 에서의보안고려사항이동일하게적용될수있다. 또한, SEED 알고리즘자체에대해서는현재까지어떠한보안문제도발견되지않았다 [CRYPTREC]. - 8 -
부록 1. ASN.1 모듈 SeedEncryptionAlgorithmInCMS { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) modules(0) id-mod-cms-seed(?) } DEFINITIONS IMPLICIT TAGS ::= BEGIN id-seedcbc 컨텐트 IDENTIFIER ::= { iso(1) member-body(2) korea(410) kisa(200004) algorithm(1) seedcbc(4) } -- Initialization Vector SeedCBCParameter ::= SeedIV SeedIV ::= OCTET STRING (SIZE(16)) -- SEED Key Wrap Algorithm identifiers - Parameter is absent. id-npki-app-cmsseed-wrap 컨텐트 IDENTIFIER ::= { iso(1) member-body(2) korea(410) kisa(200004) npki-app(7) smime(1) alg(1) cmsseed-wrap(1) } -- SEED S/MIME Capabilty parameter SeedSMimeCapability ::= NULL END - 9 -
부록 2. SEED 알고리즘의객체식별자 o SEED 알고리즘의객체식별자체계 o SEED 알고리즘의객체식별자명세 - 10 -
부록 3. CMS 에서사용하는국내암호알고리즘에대한객체식별자 id-npki-app-cmsseedwrap 컨텐트 IDENTIFIER ::= { iso(1) member-body(2) korea(410) kisa(200004) npki-app(7) 1(smime) 1(alg) 1 } seedcbc 컨텐트 IDENTIFIER ::= { iso(1) member-body(2) korea(410) kisa(200004) npki-alg(1) 4 } has160 컨텐트 IDENTIFIER ::= { iso(1) member-body(2) korea(410) kisa(200004) npki-alg(1) 2 } kcdsa 컨텐트 IDENTIFIER ::= { iso(1) member-body(2) korea(410) kisa(200004) npki-alg(1) 1 } - 11 -
표준작성공헌자 표준번호 : 이표준의제 개정및발간을위해아래와같이여러분들이공헌하였습니다. 구분 성명 위원회및직위 연락처 소속사 과제제안표준초안제출 표준초안검토및작성 - - - - - - - - 표준안편집및감수 표준안심의 사무국담당 - 12 -
CMS를위한추가암호알고리즘 : Part1 SEED (Additional Encryption Algorithm for CMS : Part1 SEED) 발행인 : 김홍구발행처 : 한국정보통신기술협회 463-824, 경기도성남시분당구서현동 267-2 Tel : 031-724-0114, Fax : 031-724-0119 발행일 : 2006. 12