예전 S모 사에서 요청하여 구현했었던 AES Key Wrapping 의 RFC 표준인 RFC3394 번역...

======================================================================================================

Advanced Encryption Standard (AES) Key Wrap Algorithm

Abstract

  문서의 목적은 인터넷 세계에서 편리하게 사용할 있는 AES Key Wrap 알고리즘을 만드는 것이다. 미국은 AES 새로운 암호 표준으로 채택하였으며, AES Key Wrap 알고리즘이 AES 키를 암호화하는 목적으로 미국에서 채택되어질 것이다. 문서는 NIST에서 제시한 AES Key Wrap 드래프트로부터 대부분을 가져왔다.


Table of Contents

 

1. Introduction. 3

2. Overview.. 3

2.1 Notation and Definitions. 4

2.2 Algorithms. 5

2.2.1 Key Wrap. 5

2.2.2 Key Unwrap. 6

2.2.3 Key Data Integrity -- the Initial Value. 8

2.2.3.1 Default Initial Value. 8

2.2.3.2 Alternative Initial Values. 9

3. Object Identifiers. 9

4. Test Vectors. 9

4.1 Wrap 128 bits of Key Data with a 128-bit KEK. 10

4.2 Wrap 128 bits of Key Data with a 192-bit KEK. 14

4.3 Wrap 128 bits of Key Data with a 256-bit KEK. 17

4.4 Wrap 192 bits of Key Data with a 192-bit KEK. 21

4.5 Wrap 192 bits of Key Data with a 256-bit KEK. 30

4.6 Wrap 256 bits of Key Data with a 256-bit KEK. 39

5. Security Considerations. 50

6. References. 50

  

1. Introduction

 NOTE: 아래 내용의 대부분은 [AES-WRAP]로부터 가져왔으며, AES Key Wrap 알고리즘의 보안성과 관련된 내용은 문서의 저자가 아닌 정부에 의해 만들어졌다.

 

규격은 NIST(National Institute of Standards and Technology) Key Wrap 요구사항을 만족하기 위한 목적을 가진다: , AES 사용하여 평문(plain text) () 관련된 무결성 정보 데이터와 함께 안전하게 암호화하기 위한 Key Wrap이라고 부르는 암호학적 알고리즘의 디자인이다 평문과 무결성 정보나 데이터와의 조합은 AES 블록 사이즈(128비트)보다 있다. 암호문(ciphertext) 비트는 평문(plaintext) 비트에 대한 고도의 비선형 함수(highly non-linear function)이어야 하며, 또한 unwrapping 경우 평문 비트는 암호문 비트에 대한 고도의 비선형 함수(highly non-linear function)이어야 한다. It is sufficient to approximate an ideal pseudorandom permutation to the degree that exploitation of undesirable phenomena is as unlikely as guessing the AES engine key(뭔소린지.. 대략 추측하기 어렵다 정도인듯).

 

key wrap 알고리즘은 신중하게 디자인된 관리 아키텍쳐로서 키를 보호하기 위한 충분한 보안성을 제공하여야 한다.

 

문서 전반에 걸쳐서, wrapping되어지는 모든 데이터를 데이터로 부른다. 데이터가 키인가 아닌가는 알고리즘 자체에 아무런 차이를 만들지 않으며, 사실 복수개의 키를 함께 wrapping하거나 키가 아닌 데이터를 wrapping 하기 위한 목적으로 키와 함께 다른 데이터를 포함해야 하는 이유가 있을 있다. 따라서 ‘key data’라는 용어는 wrapping되어지는 모든 데이터를 의미하기 위해 사용되는 것이며, 그럼에도 불구하고 규격이 키를 wrapping하기 위한 알고리즘이므로 실제로 데이터가 대상이 것이다. Wrapping 자체를 수행하기 위하여 사용되는 키를 KEK(key encryption key)라고 부른다.

 

문서에서 KEK AES codebook에서 지원하는 어떠한 키도 사용될 있다. KEK 128 비트, 192 비트, 256 비트의 길이를 가지는 키가 있다.

 

2. Overview

 

AES key wrap 알고리즘은 데이터를 wrapping 하거나 암호화하기 위하여 설계되었다. Key wrapping 64 비트 블록 단위로 동작한다. Wrapping 되기 이전에, 데이터는 n개의 64 비트 블록으로 나누어진다.

 

Key wrapping 알고리즘에서의 유일한 제한요소는 n 최소한 2이상이어야 한다는 것이다. ( 데이터의 길이가 64 비트보다 작거나 같은 경우, 규격에서 사용되는 상수 필드(constant field) 데이터를 합쳐서 128 비트의 codebook 만들게 되며 때는 key wrap 불필요하게 된다). Key wrapping 알고리즘은 지원되는 모든 AES 사이즈를 사용할 있다. 그러나, 다른 암호확적 값들이 wrapping되어질 필요가 있을 있다. 그러한 중에 하나가 DSS 위한 랜덤넘버 생성기의 시드(seed)이다. 시드 값은 4보다 n 요구한다. 다른 값들 역시 이러한 형태의 보호를 요구하고 있다. 따라서 n 값에 대한 상한선(upper bound) 없다.

 

AES key wrapping AES에서 지원하는 세가지 사이즈 어느것이라도 사용할 있도록 설정될 있다. 사이즈의 선택은 key wrap 제공하는 보안성 전체에 영향을 주지만, key wrap 알고리즘의 기술(description) 변경하지는 않는다. 따라서 아래의 설명에서 key wrap 일반론적으로(generically) 기술되며 KEK 대한 사이즈는 명시되지 않는다.

 

2.1 Notation and Definitions

 

다음의 표기들이 Key Wrapping 알고리즘의 기술에 사용된다.

 

AES(K, W)           W K 가지고 AES codebook 사용하여 암호화

AES-1(K, W)        W K 가지고 AES codebook 사용하여 복호화

MSB(j, W)           W에서 j개의 Most Significant Bit 리턴

LSB(j, W)            W에서 j개의 Least Significant Bit 리턴

B1 ^ B2            B1 B2 비트단위(bitwise) Exclusive Or (XOR)

B1 | B2            B1 B2 연접(concatenate)

K                  Key-Encryption K

n                  64 비트 크기의 데이터 블록의

s                  Wrapping 과정 안의 스텝 , s = 6n

P[i]                 j번째 평문 데이터 블록

C[i]                 j번째 암호문 데이터 블록

A                  64 비트의 무결성 체크 레지스터(integrity check register)

R[i]                 64 비트 레지스터들의 배열. 여기서 i = 0, 1, 2, ..., n

A[t], R[i][t]           암호화 스텝 t 이후의 레지스터 A 내용 R[i] 내용

IV                  Wrapping 과정에서 사용되는 64 비트의 초기화 벡터

 

Key wrap 알고리즘에서, AES codebook 대한 128 비트의 입력을 만들기 위해 64 비트의 quantity들을 병합하는데 연접 함수(concatenation function) 사용되며, AES codebook로부터 얻어지는 128 비트의 출력을 두개의 64 비트의 quantity들로 분할하는데 추출 함수(extraction function) 사용된다.

 

2.2 Algorithms

 

Key wrap 알고리즘에 대한 규격은 AES codebook [AES] 사용을 요구한다. 다음의 3 절에서는 각각 ‘Key Wrap 알고리즘’, ‘Key Unwrap 알고리즘’, ‘데이터 무결성 체크 대하여 기술한다.

 

2.2.1 Key Wrap

 

Key wrapping 과정에 대한 입력은 KEK wrapping 하고자 하는 평문 데이터이다. 평문 데이터는 n개의 64 비트 블록으로 이루어진 데이터이다. Key wrapping 과정은 다음과 같다.

 

   Inputs:      Plaintext, n 64-bit values {P1, P2, ..., Pn}, and Key, K (the KEK).

   Outputs:     Ciphertext, (n+1) 64-bit values {C0, C1, ..., Cn}.

 

   1) 변수들을 초기화 (Initialize variables).

 

       Set A0 to an initial value (see 2.2.3)

       For i = 1 to n

            R[0][i] = P[i]

 

   2) 중간 단계 값들을 계산(Calculate intermediate values).

 

       For t = 1 to s, where s = 6n

           A[t] = MSB(64, AES(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, AES(K, A[t-1] | R[t-1][1]))

 

   3) 결과를 출력(Output the results).

 

       Set C[0] = A[t]

       For i = 1 to n

           C[i] = R[t][i]

 

다른 key wrap 알고리즘은 shifting 대신에 indexing 사용하는 방법이다. 이것은 이전 방법에서의 rotation 피하면서 자리에서(in place) wrapped key 계산할 있게 해준다. 방법은 이전 방법과 동일한 결과를 내면서도 소프트웨어적으로 쉬운 구현이 가능하다.

 

   Inputs:  Plaintext, n 64-bit values {P1, P2, ..., Pn}, and Key, K (the KEK).

   Outputs: Ciphertext, (n+1) 64-bit values {C0, C1, ..., Cn}.

 

   1) 변수들을 초기화 (Initialize variables)..

 

       Set A = IV, an initial value (see 2.2.3)

       For i = 1 to n

           R[i] = P[i]

 

   2) 중간 단계 값들을 계산(Calculate intermediate values).

 

       For j = 0 to 5

           For i=1 to n

               B = AES(K, A | R[i])

               A = MSB(64, B) ^ t where t = (n*j)+i

               R[i] = LSB(64, B)

 

   3) 결과를 출력(Output the results).

 

       Set C[0] = A

       For i = 1 to n

           C[i] = R[i]

 

2.2.2 Key Unwrap

 

Unwrap 과정에 대한 입력은 KEK wrapped key 구성하는 (n+1)개의 64비트 블록의 암호문이다. 과정의 결과물은 n개의 64 비트 블록의 복호화된 데이터를 구성하는 n개의 평문 블록들이다.

 

   Inputs:  Ciphertext, (n+1) 64-bit values {C0, C1, ..., Cn}, and Key, K (the KEK).

   Outputs: Plaintext, n 64-bit values {P1, P2, ..., Pn}.

 

   1) 변수들을 초기화 (Initialize variables).

 

       Set A[s] = C[0] where s = 6n

       For i = 1 to n

           R[s][i] = C[i]

 

   2) 중간 단계 값들을 계산(Calculate intermediate values).

 

       For t = s to 1

           A[t-1] = MSB(64, AES-1(K, ((A[t] ^ t) | R[t][n]))

           R[t-1][1] = LSB(64, AES-1(K, ((A[t]^t) | R[t][n]))

           For i = 2 to n

               R[t-1][i] = R[t][i-1]

 

   3) 결과를 출력(Output the results).

 

       If A[0] is an appropriate initial value (see 2.2.3),

       Then

           For i = 1 to n

               P[i] = R[0][i]

       Else

           Return an error

 

Unwrap 알고리즘 역시 index 기반의 오퍼레이션으로 정의할 있으며 이는 계산 과정이 자리에서 수행되도록 해준다. 방법 역시 레지스터 shifting 방법과 동일한 결과를 생성한다.

 

   Inputs:  Ciphertext, (n+1) 64-bit values {C0, C1, ..., Cn}, and Key, K (the KEK).

   Outputs: Plaintext, n 64-bit values {P0, P1, K, Pn}.

 

   1 변수들을 초기화 (Initialize variables).

 

       Set A = C[0]

       For i = 1 to n

           R[i] = C[i]

 

   2) 중간 단계 값들을 계산(Calculate intermediate values).

 

       For j = 5 to 0

           For i = n to 1

               B = AES-1(K, (A ^ t) | R[i]) where t = n*j+i

               A = MSB(64, B)

               R[i] = LSB(64, B)

 

   3) 결과를 출력(Output the results).

 

   If A is an appropriate initial value (see 2.2.3),

   Then

       For i = 1 to n

           P[i] = R[i]

   Else

       Return an error

 

2.2.3 Key Data Integrity -- the Initial Value

 

초기값(IV) wrapping 과정의 첫번째 단계에서 A[0] 할당되는 값이다. 값은 데이터에 대한 무결성 체크를 위해 사용된다. Unwrapping 과정의 마지막 단계에서 복구된 A[0] 값을 기대되는 A[0] (처음에 입력된 ) 비교하여 일치하면 해당 키가 유효한 것으로 받아들여지며 Unwrapping 알고리즘은 해당 키를 리턴한다. 만약 일치하지 않는다면 해당 키는 거부되어지고 Unwrapping 알고리즘은 에러를 리턴한다.

 

무결성 체크에 의해 얻어지는 정확한 속성(exact properties)들은 초기값(initial value) 정의에 달려있다. 서로 다른 어플리케이션들은 서로 다른 속성들을 요구할 있다; 예를 들어, 데이터의 무결성을 lifecycle 동안 보장할 필요가 있거나 혹은 그것이 unwrapping되어질 때만 필요할 수도 있다. 규격에서는 데이터가 unwrapping 되어지는 동안의 데이터의 무결성을 지원하는 디폴트 초기값(initial value) 정의한다(2.2.3.1). 다른 초기값들을 지원하기 위한 준비도 되어 있다(2.2.3.2)

 

2.2.3.1 Default Initial Value

 

디폴트 초기값(IV) 다음과 같은 16진수 상수(hexadecimal constant) 정의된다:

 

       A[0] = IV = A6A6A6A6A6A6A6A6

 

상수를 IV 사용하는 것은 데이터가 wrapping되는 동안의 강력한 무결성 체크를 지원한다. 만약 unwrapping 과정이 ‘A[0] = A6A6A6A6A6A6A6A6’ 결과로 낸다면 해당 데이터가 훼손(corrupt)되어질 확률은 ‘2^-64’ 된다. Unwrapping 과정이 이와 다른 값을 A[0] 낸다면 unwrapping 과정은 반드시 에러를 리턴하고 어떠한 데이터도 리턴하여서는 않된다.

 

2.2.3.2 Alternative Initial Values

 

Key wrap 대용량의 관리 프로토콜이나 시스템의 일부로 사용되는 경우, 데이터 무결성의 적절한 범위(scope) 단지 데이터에 대한 무결성 이상일 있으며, 혹은 키가 wrapping되는 시간 이상의 기간 동안에 무결성을 보장하여야 수도 있다. 또한 데이터가 단지 AES 키만이 아닌 경우 데이터가 항상 64 비트의 배수가 아닐 수도 있다. 초기값에 대한 다른 정의들이 이러한 문제들을 해결하기 위하여 사용될 있다. NIST 향후의 관리 관련 발표에서 필요한 형태의 다른 초기값들을 정의하게 것이다. 향후 시간을 가지고 발전하게 여러 가지 대안들의 집합을 조정하기 위하여, 어플리케이션에 특화되지 않는(application-specific) key wrap 구현물은 초기값의 설정 테스트가 가능한 방법에 있어서 어느 정도의 유연성을 요구할 있을 것이다.

 

3. Object Identifiers

 

NIST 2.2.3.1 명시되어 있는 디폴트 초기값을 사용하는 key wrap 알고리즘을 식별하기 위하여 다음과 같은 오브젝트 식별자(OID)들을 할당하였다. OID 각각 하나의 KEK AES 사이즈마다 할당되어진다.

 

       aes  OBJECT IDENTIFIER  ::=  { joint-iso-itu-t(2) country(16)

          us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 1 }

 

       id-aes128-wrap  OBJECT IDENTIFIER  ::=  { aes 5 }

       id-aes192-wrap  OBJECT IDENTIFIER  ::=  { aes 25 }

       id-aes256-wrap  OBJECT IDENTIFIER  ::=  { aes 45 }

 

4. Test Vectors

 

절에 있는 예제들은 index 기반의 key wrap 알고리즘의 구현을 사용하여 생성된 값들이다. Index 기반의 구현방법은 key wrap 알고리즘을 소프트웨어적으로 구현하기 쉽게 해준다.

 

4.1 Wrap 128 bits of Key Data with a 128-bit KEK

 

   Input:

   KEK:            000102030405060708090A0B0C0D0E0F

   Key Data:       00112233445566778899AABBCCDDEEFF

 

   Wrap:

 

   Step t          A                 R1                            R2

 

   1

   In                  A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

   Enc               F4740052E82A2251          74CE86FBD7B805E7        8899AABBCCDDEEFF

   XorT               F4740052E82A2250          74CE86FBD7B805E7        8899AABBCCDDEEFF

 

   2

   In                  F4740052E82A2250          74CE86FBD7B805E7        8899AABBCCDDEEFF

   Enc               06BA4EBDE7768D0B       74CE86FBD7B805E7        D132EE38147E76F8

   XorT               06BA4EBDE7768D09       74CE86FBD7B805E7        D132EE38147E76F8

 

   3

   In                  06BA4EBDE7768D09       74CE86FBD7B805E7        D132EE38147E76F8

   Enc               FC967627BE937208          FE6E8D679C5D3460        D132EE38147E76F8

   XorT               FC967627BE93720B         FE6E8D679C5D3460        D132EE38147E76F8

 

   4

   In                  FC967627BE93720B         FE6E8D679C5D3460        D132EE38147E76F8

   Enc               5896EA9028EE203B         FE6E8D679C5D3460        07B2BD973E36A6FC

   XorT               5896EA9028EE203F         FE6E8D679C5D3460        07B2BD973E36A6FC

 

   5

   In                  5896EA9028EE203F         FE6E8D679C5D3460        07B2BD973E36A6FC

   Enc               93AEA71B258D90C3        25F5A3ADC2195401         07B2BD973E36A6FC

   XorT               93AEA71B258D90C6        25F5A3ADC2195401         07B2BD973E36A6FC

 

   6

   In                  93AEA71B258D90C6        25F5A3ADC2195401         07B2BD973E36A6FC

   Enc               E3EE986344D878F7         25F5A3ADC2195401         F14863BB1E9CA90A

   XorT               E3EE986344D878F1         25F5A3ADC2195401         F14863BB1E9CA90A

 

   7

   In                  E3EE986344D878F1         25F5A3ADC2195401         F14863BB1E9CA90A

   Enc               2BFC21B2C20E4006         B556D35ED8CEF052        F14863BB1E9CA90A

   XorT               2BFC21B2C20E4001         B556D35ED8CEF052        F14863BB1E9CA90A

 

   8

   In                  2BFC21B2C20E4001         B556D35ED8CEF052        F14863BB1E9CA90A

   Enc               4BE8CE99C0A43A7D       B556D35ED8CEF052        64BAE5818D0570BB

   XorT               4BE8CE99C0A43A75        B556D35ED8CEF052        64BAE5818D0570BB

 

   9

   In                  4BE8CE99C0A43A75        B556D35ED8CEF052        64BAE5818D0570BB

   Enc               EBE1CE91067024F3         BE114B343EB00981         64BAE5818D0570BB

   XorT               EBE1CE91067024FA         BE114B343EB00981         64BAE5818D0570BB

 

   10

   In                  EBE1CE91067024FA         BE114B343EB00981         64BAE5818D0570BB

   Enc               5A9C7B1F5B1C3B46        BE114B343EB00981         4FD3D2B7D74FBB42

   XorT               5A9C7B1F5B1C3B4C        BE114B343EB00981         4FD3D2B7D74FBB42

 

   11

   In                  5A9C7B1F5B1C3B4C        BE114B343EB00981         4FD3D2B7D74FBB42

   Enc               93B71967EED41FFC        AEF34BD8FB5A7B82       4FD3D2B7D74FBB42

   XorT               93B71967EED41FF7         AEF34BD8FB5A7B82       4FD3D2B7D74FBB42

 

   12

   In                  93B71967EED41FF7         AEF34BD8FB5A7B82       4FD3D2B7D74FBB42

   Enc               1FA68B0A8112B44B         AEF34BD8FB5A7B82       9D3E862371D2CFE5

   XorT               1FA68B0A8112B447          AEF34BD8FB5A7B82       9D3E862371D2CFE5

 

   Output:

   Ciphertext:     1FA68B0A8112B447          AEF34BD8FB5A7B82       9D3E862371D2CFE5

 

   Unwrap:

 

   Step t          A                 R1                            R2

   12

   In                  1FA68B0A8112B447          AEF34BD8FB5A7B82       9D3E862371D2CFE5

   XorT               1FA68B0A8112B44B         AEF34BD8FB5A7B82       9D3E862371D2CFE5

   Dec               93B71967EED41FF7         AEF34BD8FB5A7B82       4FD3D2B7D74FBB42

 

   11

   In                  93B71967EED41FF7         AEF34BD8FB5A7B82       4FD3D2B7D74FBB42

   XorT               93B71967EED41FFC        AEF34BD8FB5A7B82       4FD3D2B7D74FBB42

   Dec               5A9C7B1F5B1C3B4C        BE114B343EB00981         4FD3D2B7D74FBB42

 

   10

   In                  5A9C7B1F5B1C3B4C        BE114B343EB00981         4FD3D2B7D74FBB42

   XorT               5A9C7B1F5B1C3B46        BE114B343EB00981         4FD3D2B7D74FBB42

   Dec               EBE1CE91067024FA         BE114B343EB00981         64BAE5818D0570BB

 

   9

   In                  EBE1CE91067024FA         BE114B343EB00981         64BAE5818D0570BB

   XorT               EBE1CE91067024F3         BE114B343EB00981         64BAE5818D0570BB

   Dec               4BE8CE99C0A43A75        B556D35ED8CEF052        64BAE5818D0570BB

 

   8

   In                  4BE8CE99C0A43A75        B556D35ED8CEF052        64BAE5818D0570BB

   XorT               4BE8CE99C0A43A7D       B556D35ED8CEF052        64BAE5818D0570BB

   Dec               2BFC21B2C20E4001         B556D35ED8CEF052        F14863BB1E9CA90A

 

   7

   In                  2BFC21B2C20E4001         B556D35ED8CEF052        F14863BB1E9CA90A

   XorT               2BFC21B2C20E4006         B556D35ED8CEF052        F14863BB1E9CA90A

   Dec               E3EE986344D878F1         25F5A3ADC2195401         F14863BB1E9CA90A

 

   6

   In                  E3EE986344D878F1         25F5A3ADC2195401         F14863BB1E9CA90A

   XorT               E3EE986344D878F7         25F5A3ADC2195401         F14863BB1E9CA90A

   Dec               93AEA71B258D90C6        25F5A3ADC2195401         07B2BD973E36A6FC

 

   5

   In                  93AEA71B258D90C6        25F5A3ADC2195401         07B2BD973E36A6FC

   XorT               93AEA71B258D90C3        25F5A3ADC2195401         07B2BD973E36A6FC

   Dec               5896EA9028EE203F         FE6E8D679C5D3460        07B2BD973E36A6FC

 

   4

   In                  5896EA9028EE203F         FE6E8D679C5D3460        07B2BD973E36A6FC

   XorT               5896EA9028EE203B         FE6E8D679C5D3460        07B2BD973E36A6FC

   Dec               FC967627BE93720B         FE6E8D679C5D3460        D132EE38147E76F8

 

   3

   In                  FC967627BE93720B         FE6E8D679C5D3460        D132EE38147E76F8

   XorT               FC967627BE937208          FE6E8D679C5D3460        D132EE38147E76F8

   Dec               06BA4EBDE7768D09       74CE86FBD7B805E7        D132EE38147E76F8

 

   2

   In                  06BA4EBDE7768D09       74CE86FBD7B805E7        D132EE38147E76F8

   XorT               06BA4EBDE7768D0B       74CE86FBD7B805E7        D132EE38147E76F8

   Dec               F4740052E82A2250          74CE86FBD7B805E7        8899AABBCCDDEEFF

 

   1

   In                  F4740052E82A2250          74CE86FBD7B805E7        8899AABBCCDDEEFF

   XorT               F4740052E82A2251          74CE86FBD7B805E7        8899AABBCCDDEEFF

   Dec               A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

 

   Plaintext        A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

 

   Output:

   Key Data:  00112233445566778899AABBCCDDEEFF

 

4.2 Wrap 128 bits of Key Data with a 192-bit KEK

 

   Input:

   KEK:        000102030405060708090A0B0C0D0E0F1011121314151617

   Key Data:   00112233445566778899AABBCCDDEEFF

 

   Wrap:

 

   Step t          A                 R1                            R21

   In                  A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

   Enc               DFE8FD5D1A3786A7       351D385096CCFB29         8899AABBCCDDEEFF

   XorT               DFE8FD5D1A3786A6       351D385096CCFB29         8899AABBCCDDEEFF

 

   2

   In                  DFE8FD5D1A3786A6       351D385096CCFB29         8899AABBCCDDEEFF

   Enc               9D9B32B9ED742E02        351D385096CCFB29         51F22F3286758A2D

   XorT               9D9B32B9ED742E00        351D385096CCFB29         51F22F3286758A2D

 

   3

   In                  9D9B32B9ED742E00        351D385096CCFB29         51F22F3286758A2D

   Enc               7B8E343CA51CF8AB        BC164F51E20CC983         51F22F3286758A2D

   XorT               7B8E343CA51CF8A8        BC164F51E20CC983         51F22F3286758A2D

 

   4

   In                  7B8E343CA51CF8A8        BC164F51E20CC983         51F22F3286758A2D

   Enc               02A97C5897140595          BC164F51E20CC983         05FC2D8F8FF4B919

   XorT               02A97C5897140591          BC164F51E20CC983         05FC2D8F8FF4B919

 

   5

   In                  02A97C5897140591          BC164F51E20CC983         05FC2D8F8FF4B919

   Enc               15D4B63F66583817          429487269D3A0016          05FC2D8F8FF4B919

   XorT               15D4B63F66583812          429487269D3A0016          05FC2D8F8FF4B919

 

   6

   In                  15D4B63F66583812          429487269D3A0016          05FC2D8F8FF4B919

   Enc                AE2D0B76A6951EEA       429487269D3A0016          05A2D8FB4DD5BD7A

   XorT               AE2D0B76A6951EEC       429487269D3A0016          05A2D8FB4DD5BD7A

 

   7

   In                  AE2D0B76A6951EEC       429487269D3A0016          05A2D8FB4DD5BD7A

   Enc               79F849444F4B8AA8         D40B091CDBAC0340       05A2D8FB4DD5BD7A

   XorT               79F849444F4B8AAF         D40B091CDBAC0340       05A2D8FB4DD5BD7A

 

   8

   In                  79F849444F4B8AAF         D40B091CDBAC0340       05A2D8FB4DD5BD7A

   Enc               5933A9195B5F5E21          D40B091CDBAC0340       89F0D6C06F8CA9B4

   XorT               5933A9195B5F5E29          D40B091CDBAC0340       89F0D6C06F8CA9B4

 

   9

   In                  5933A9195B5F5E29          D40B091CDBAC0340       89F0D6C06F8CA9B4

   Enc               57ADA800299C2E85         4D5B3DFE7C04ABBA      89F0D6C06F8CA9B4

   XorT               57ADA800299C2E8C        4D5B3DFE7C04ABBA      89F0D6C06F8CA9B4

 

   10

   In                  57ADA800299C2E8C        4D5B3DFE7C04ABBA      89F0D6C06F8CA9B4

   Enc               BF17BD6A9BC80163        4D5B3DFE7C04ABBA      EB24CCFA52EA9078

   XorT               BF17BD6A9BC80169        4D5B3DFE7C04ABBA      EB24CCFA52EA9078

 

   11

   In                  BF17BD6A9BC80169        4D5B3DFE7C04ABBA      EB24CCFA52EA9078

   Enc               B68BF270AE81544F         F92B5B97C050AED2        EB24CCFA52EA9078

   XorT               B68BF270AE815444         F92B5B97C050AED2        EB24CCFA52EA9078

 

   12

   In                  B68BF270AE815444         F92B5B97C050AED2        EB24CCFA52EA9078

   Enc               96778B25AE6CA439         F92B5B97C050AED2        468AB8A17AD84E5D

   XorT               96778B25AE6CA435         F92B5B97C050AED2        468AB8A17AD84E5D

 

   Output:

   Ciphertext:     96778B25AE6CA435         F92B5B97C050AED2        468AB8A17AD84E5D

 

   Unwrap:

 

   Step t          A                 R1                            R2

 

   12

   In                  96778B25AE6CA435         F92B5B97C050AED2        468AB8A17AD84E5D

   XorT               96778B25AE6CA439         F92B5B97C050AED2        468AB8A17AD84E5D

   Dec               B68BF270AE815444         F92B5B97C050AED2        EB24CCFA52EA9078

 

   11

   In                  B68BF270AE815444         F92B5B97C050AED2        EB24CCFA52EA9078

   XorT               B68BF270AE81544F         F92B5B97C050AED2        EB24CCFA52EA9078

   Dec               BF17BD6A9BC80169        4D5B3DFE7C04ABBA      EB24CCFA52EA9078

 

   10

   In                  BF17BD6A9BC80169        4D5B3DFE7C04ABBA      EB24CCFA52EA9078

   XorT               BF17BD6A9BC80163        4D5B3DFE7C04ABBA      EB24CCFA52EA9078

   Dec               57ADA800299C2E8C        4D5B3DFE7C04ABBA      89F0D6C06F8CA9B4

 

   9

   In                  57ADA800299C2E8C        4D5B3DFE7C04ABBA      89F0D6C06F8CA9B4

   XorT               57ADA800299C2E85         4D5B3DFE7C04ABBA      89F0D6C06F8CA9B4

   Dec               5933A9195B5F5E29          D40B091CDBAC0340       89F0D6C06F8CA9B4

 

   8

   In                  5933A9195B5F5E29          D40B091CDBAC0340       89F0D6C06F8CA9B4

   XorT               5933A9195B5F5E21          D40B091CDBAC0340       89F0D6C06F8CA9B4

   Dec               79F849444F4B8AAF         D40B091CDBAC0340       05A2D8FB4DD5BD7A

 

   7

   In                  79F849444F4B8AAF         D40B091CDBAC0340       05A2D8FB4DD5BD7A

   XorT               79F849444F4B8AA8         D40B091CDBAC0340       05A2D8FB4DD5BD7A

   Dec               AE2D0B76A6951EEC       429487269D3A0016          05A2D8FB4DD5BD7A

 

   6

   In                  AE2D0B76A6951EEC       429487269D3A0016          05A2D8FB4DD5BD7A

   XorT               AE2D0B76A6951EEA       429487269D3A0016          05A2D8FB4DD5BD7A

   Dec               15D4B63F66583812          429487269D3A0016          05FC2D8F8FF4B919

 

   5

   In                  15D4B63F66583812          429487269D3A0016          05FC2D8F8FF4B919

   XorT               15D4B63F66583817          429487269D3A0016          05FC2D8F8FF4B919

   Dec               02A97C5897140591          BC164F51E20CC983         05FC2D8F8FF4B919

 

   4

   In                  02A97C5897140591          BC164F51E20CC983         05FC2D8F8FF4B919

   XorT               02A97C5897140595          BC164F51E20CC983         05FC2D8F8FF4B919

   Dec               7B8E343CA51CF8A8        BC164F51E20CC983         51F22F3286758A2D

 

   3

   In                  7B8E343CA51CF8A8        BC164F51E20CC983         51F22F3286758A2D

   XorT               7B8E343CA51CF8AB        BC164F51E20CC983         51F22F3286758A2D

   Dec               9D9B32B9ED742E00        351D385096CCFB29         51F22F3286758A2D

 

   2

   In                  9D9B32B9ED742E00        351D385096CCFB29         51F22F3286758A2D

   XorT               9D9B32B9ED742E02        351D385096CCFB29         51F22F3286758A2D

   Dec               DFE8FD5D1A3786A6       351D385096CCFB29         8899AABBCCDDEEFF

 

   1

   In                  DFE8FD5D1A3786A6       351D385096CCFB29         8899AABBCCDDEEFF

   XorT               DFE8FD5D1A3786A7       351D385096CCFB29         8899AABBCCDDEEFF

   Dec               A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

 

   Plaintext         A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

 

   Output:

   Key Data:  00112233445566778899AABBCCDDEEFF

 

4.3 Wrap 128 bits of Key Data with a 256-bit KEK

 

   Input:

 

KEK:

000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F

Key Data:    00112233445566778899AABBCCDDEEFF

 

   Wrap:

 

   Step t          A                 R1                            R2

   1

   In                  A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

   Enc               794314D454E3FDE1         F661BD9F31FBFA31        8899AABBCCDDEEFF

   XorT               794314D454E3FDE0         F661BD9F31FBFA31        8899AABBCCDDEEFF

 

   2

   In                  794314D454E3FDE0         F661BD9F31FBFA31        8899AABBCCDDEEFF

   Enc               D450EA5C5BBCB561       F661BD9F31FBFA31        F60E0CDB7F429FE8

   XorT               D450EA5C5BBCB563       F661BD9F31FBFA31        F60E0CDB7F429FE8

 

   3

   In                  D450EA5C5BBCB563       F661BD9F31FBFA31        F60E0CDB7F429FE8

   Enc               85DBDF1879D5C0A5       5602001BFA07AD8B         F60E0CDB7F429FE8

   XorT               85DBDF1879D5C0A6       5602001BFA07AD8B         F60E0CDB7F429FE8

 

   4

   In                  85DBDF1879D5C0A6       5602001BFA07AD8B         F60E0CDB7F429FE8

   Enc               738C291128B7226D          5602001BFA07AD8B         58924F777C3F678C

   XorT               738C291128B72269           5602001BFA07AD8B         58924F777C3F678C

 

   5

   In                  738C291128B72269           5602001BFA07AD8B         58924F777C3F678C

   Enc               2656A02DFFF054DC        F4DF378183E3D5B2        58924F777C3F678C

   XorT               2656A02DFFF054D9         F4DF378183E3D5B2        58924F777C3F678C

 

   6

   In                  2656A02DFFF054D9         F4DF378183E3D5B2        58924F777C3F678C

   Enc               DDFD0C0E8B52A63A       F4DF378183E3D5B2        91AC1D36A964F41B

   XorT               DDFD0C0E8B52A63C      F4DF378183E3D5B2        91AC1D36A964F41B

 

   7

   In                  DDFD0C0E8B52A63C      F4DF378183E3D5B2        91AC1D36A964F41B

   Enc               39AB00D4AE4399EA        5271D5CED80F34ED       91AC1D36A964F41B

   XorT               39AB00D4AE4399ED       5271D5CED80F34ED       91AC1D36A964F41B

 

   8

   In                  39AB00D4AE4399ED       5271D5CED80F34ED       91AC1D36A964F41B

   Enc               4CE414878463EAAC        5271D5CED80F34ED       67D8ED899E7929B8

   XorT               4CE414878463EAA4         5271D5CED80F34ED       67D8ED899E7929B8

 

   9

   In                  4CE414878463EAA4         5271D5CED80F34ED       67D8ED899E7929B8

   Enc               FBB44DB106AA0789        0DF7E50829123648          67D8ED899E7929B8

   XorT               FBB44DB106AA0780        0DF7E50829123648          67D8ED899E7929B8

 

   10

   In                  FBB44DB106AA0780        0DF7E50829123648          67D8ED899E7929B8

   Enc               877112A7308ADCC5         0DF7E50829123648          3472D5993D318FD2

   XorT               877112A7308ADCCF         0DF7E50829123648          3472D5993D318FD2

 

   11

   In                  877112A7308ADCCF         0DF7E50829123648          3472D5993D318FD2

   Enc               78E40190807CC151          63E9777905818A2A          3472D5993D318FD2

   XorT               78E40190807CC15A          63E9777905818A2A          3472D5993D318FD2

 

   12

   In                  78E40190807CC15A          63E9777905818A2A          3472D5993D318FD2

   Enc               64E8C3F9CE0F5BAE       63E9777905818A2A          93C8191E7D6E8AE7

   XorT               64E8C3F9CE0F5BA2        63E9777905818A2A          93C8191E7D6E8AE7

 

   Output:

   Ciphertext:     64E8C3F9CE0F5BA2        63E9777905818A2A          93C8191E7D6E8AE7

 

   Unwrap:

 

   Step t          A                 R1                            R2

   12

   In                  64E8C3F9CE0F5BA2        63E9777905818A2A          93C8191E7D6E8AE7

   XorT               64E8C3F9CE0F5BAE       63E9777905818A2A          93C8191E7D6E8AE7

   Dec               78E40190807CC15A          63E9777905818A2A          3472D5993D318FD2

 

   11

   In                  78E40190807CC15A          63E9777905818A2A          3472D5993D318FD2

   XorT               78E40190807CC151          63E9777905818A2A          3472D5993D318FD2

   Dec               877112A7308ADCCF         0DF7E50829123648          3472D5993D318FD2

 

   10

   In                  877112A7308ADCCF         0DF7E50829123648          3472D5993D318FD2

   XorT               877112A7308ADCC5         0DF7E50829123648          3472D5993D318FD2

   Dec               FBB44DB106AA0780        0DF7E50829123648          67D8ED899E7929B8

 

   9

   In                  FBB44DB106AA0780        0DF7E50829123648          67D8ED899E7929B8

   XorT               FBB44DB106AA0789        0DF7E50829123648          67D8ED899E7929B8

   Dec               4CE414878463EAA4         5271D5CED80F34ED       67D8ED899E7929B8

 

   8

   In                  4CE414878463EAA4         5271D5CED80F34ED       67D8ED899E7929B8

   XorT               4CE414878463EAAC        5271D5CED80F34ED       67D8ED899E7929B8

   Dec               39AB00D4AE4399ED        5271D5CED80F34ED       91AC1D36A964F41B

 

   7

   In                  39AB00D4AE4399ED       5271D5CED80F34ED       91AC1D36A964F41B

   XorT               39AB00D4AE4399EA        5271D5CED80F34ED       91AC1D36A964F41B

   Dec               DDFD0C0E8B52A63C      F4DF378183E3D5B2        91AC1D36A964F41B

 

   6

   In                  DDFD0C0E8B52A63C       F4DF378183E3D5B2        91AC1D36A964F41B

   XorT               DDFD0C0E8B52A63A       F4DF378183E3D5B2        91AC1D36A964F41B

   Dec               2656A02DFFF054D9         F4DF378183E3D5B2        58924F777C3F678C

 

   5

   In                  2656A02DFFF054D9         F4DF378183E3D5B2        58924F777C3F678C

   XorT               2656A02DFFF054DC        F4DF378183E3D5B2        58924F777C3F678C

   Dec               738C291128B72269           5602001BFA07AD8B         58924F777C3F678C

 

   4

   In                  738C291128B72269           5602001BFA07AD8B         58924F777C3F678C

   XorT               738C291128B7226D          5602001BFA07AD8B         58924F777C3F678C

   Dec               85DBDF1879D5C0A6       5602001BFA07AD8B         F60E0CDB7F429FE8

 

   3

   In                  85DBDF1879D5C0A6       5602001BFA07AD8B         F60E0CDB7F429FE8

   XorT               85DBDF1879D5C0A5       5602001BFA07AD8B         F60E0CDB7F429FE8

   Dec               D450EA5C5BBCB563       F661BD9F31FBFA31        F60E0CDB7F429FE8

 

   2

   In                  D450EA5C5BBCB563        F661BD9F31FBFA31        F60E0CDB7F429FE8

   XorT               D450EA5C5BBCB561        F661BD9F31FBFA31        F60E0CDB7F429FE8

   Dec               794314D454E3FDE0         F661BD9F31FBFA31        8899AABBCCDDEEFF

 

   1

   In                  794314D454E3FDE0         F661BD9F31FBFA31        8899AABBCCDDEEFF

   XorT               794314D454E3FDE1         F661BD9F31FBFA31        8899AABBCCDDEEFF

   Dec               A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

 

   Plaintext         A6A6A6A6A6A6A6A6       0011223344556677            8899AABBCCDDEEFF

 

   Output:

   Key Data:      00112233445566778899AABBCCDDEEFF

 

4.4 Wrap 192 bits of Key Data with a 192-bit KEK

 

   Input:

   KEK:       000102030405060708090A0B0C0D0E0F1011121314151617

   Key Data:  00112233445566778899AABBCCDDEEFF0001020304050607

 

   Wrap:

 

   Step t     A/R3             R1               R2

 

   1

   In   A6A6A6A6A6A6A6A6 0011223344556677 8899AABBCCDDEEFF

        0001020304050607

   Enc  DFE8FD5D1A3786A7 351D385096CCFB29 8899AABBCCDDEEFF

        0001020304050607

   XorT DFE8FD5D1A3786A6 351D385096CCFB29 8899AABBCCDDEEFF

        0001020304050607

 

   2

   In   DFE8FD5D1A3786A6 351D385096CCFB29 8899AABBCCDDEEFF

        0001020304050607

   Enc  9D9B32B9ED742E02 351D385096CCFB29 51F22F3286758A2D

        0001020304050607

   XorT 9D9B32B9ED742E00 351D385096CCFB29 51F22F3286758A2D

        0001020304050607

 

   3

   In   9D9B32B9ED742E00 351D385096CCFB29 51F22F3286758A2D

        0001020304050607

   Enc  2C8E19A519025B7C 351D385096CCFB29 51F22F3286758A2D

        FF540E514DE120A3

   XorT 2C8E19A519025B7F 351D385096CCFB29 51F22F3286758A2D

        FF540E514DE120A3

 

   4

   In   2C8E19A519025B7F 351D385096CCFB29 51F22F3286758A2D

        FF540E514DE120A3

   Enc  E727C7BDF822602E A08DAA041D17BBBA 51F22F3286758A2D

        FF540E514DE120A3

   XorT E727C7BDF822602A A08DAA041D17BBBA 51F22F3286758A2D

        FF540E514DE120A3

 

   5

   In   E727C7BDF822602A A08DAA041D17BBBA 51F22F3286758A2D

        FF540E514DE120A3

   Enc  15B61F7B25D51700 A08DAA041D17BBBA AE82BC1118A5DEA4

        FF540E514DE120A3

   XorT 15B61F7B25D51705 A08DAA041D17BBBA AE82BC1118A5DEA4

        FF540E514DE120A3

 

   6

   In   15B61F7B25D51705 A08DAA041D17BBBA AE82BC1118A5DEA4

        FF540E514DE120A3

   Enc  A187755AEA64719C A08DAA041D17BBBA AE82BC1118A5DEA4

        D1E708FD13778787

   XorT A187755AEA64719A A08DAA041D17BBBA AE82BC1118A5DEA4

        D1E708FD13778787

 

   7

   In   A187755AEA64719A A08DAA041D17BBBA AE82BC1118A5DEA4

        D1E708FD13778787

   Enc  5A994895D81644B7 926ED65A9E853FD9 AE82BC1118A5DEA4

        D1E708FD13778787

   XorT 5A994895D81644B0 926ED65A9E853FD9 AE82BC1118A5DEA4

        D1E708FD13778787

 

   8

   In   5A994895D81644B0 926ED65A9E853FD9 AE82BC1118A5DEA4

        D1E708FD13778787

   Enc  864F408C8AB8CDCF 926ED65A9E853FD9 552A09E141D08AE3

        D1E708FD13778787

   XorT 864F408C8AB8CDC7 926ED65A9E853FD9 552A09E141D08AE3

        D1E708FD13778787

 

   9

   In   864F408C8AB8CDC7 926ED65A9E853FD9 552A09E141D08AE3

        D1E708FD13778787

   Enc  53F4373F575EB7A4 926ED65A9E853FD9 552A09E141D08AE3

        ED5E8456E61BD295

   XorT 53F4373F575EB7AD 926ED65A9E853FD9 552A09E141D08AE3

        ED5E8456E61BD295

 

   10

   In   53F4373F575EB7AD 926ED65A9E853FD9 552A09E141D08AE3

        ED5E8456E61BD295

   Enc  9EAA4CDA0B1BA5FF 98883EDC6B080FB5 552A09E141D08AE3

        ED5E8456E61BD295

   XorT 9EAA4CDA0B1BA5F5 98883EDC6B080FB5 552A09E141D08AE3

        ED5E8456E61BD295

 

   11

   In   9EAA4CDA0B1BA5F5 98883EDC6B080FB5 552A09E141D08AE3

        ED5E8456E61BD295

   Enc  B1B9902C68E0EB52 98883EDC6B080FB5 63F6D88A0663FEF9

        ED5E8456E61BD295

   XorT B1B9902C68E0EB59 98883EDC6B080FB5 63F6D88A0663FEF9

        ED5E8456E61BD295

 

   12

   In   B1B9902C68E0EB59 98883EDC6B080FB5 63F6D88A0663FEF9

        ED5E8456E61BD295

   Enc  FCE591D77709A6E0 98883EDC6B080FB5 63F6D88A0663FEF9

        463437433A93EFE5

   XorT FCE591D77709A6EC 98883EDC6B080FB5 63F6D88A0663FEF9

        463437433A93EFE5

 

   13

   In   FCE591D77709A6EC 98883EDC6B080FB5 63F6D88A0663FEF9

        463437433A93EFE5

   Enc  428428D2BD88CF58 C46965F34EFB2261 63F6D88A0663FEF9

        463437433A93EFE5

   XorT 428428D2BD88CF55 C46965F34EFB2261 63F6D88A0663FEF9

        463437433A93EFE5

 

   14

   In   428428D2BD88CF55 C46965F34EFB2261 63F6D88A0663FEF9

        463437433A93EFE5

   Enc  6AC861AB961DA578 C46965F34EFB2261 56E3CEE892BBEFC4

        463437433A93EFE5

   XorT 6AC861AB961DA576 C46965F34EFB2261 56E3CEE892BBEFC4

        463437433A93EFE5

 

   15

   In   6AC861AB961DA576 C46965F34EFB2261 56E3CEE892BBEFC4

        463437433A93EFE5

   Enc  E80DB49CC9A1EA61 C46965F34EFB2261 56E3CEE892BBEFC4

        84943C8C67FCFD53

   XorT E80DB49CC9A1EA6E C46965F34EFB2261 56E3CEE892BBEFC4

        84943C8C67FCFD53

 

   16

   In   E80DB49CC9A1EA6E C46965F34EFB2261 56E3CEE892BBEFC4

        84943C8C67FCFD53

   Enc  ABEE3534AC465C2C 68F24EC260743EDC 56E3CEE892BBEFC4

        84943C8C67FCFD53

   XorT ABEE3534AC465C3C 68F24EC260743EDC 56E3CEE892BBEFC4

        84943C8C67FCFD53

 

   17

   In   ABEE3534AC465C3C 68F24EC260743EDC 56E3CEE892BBEFC4

        84943C8C67FCFD53

   Enc  E7CC8D8CEDE62BF7 68F24EC260743EDC E1C6C7DDEE725A93

        84943C8C67FCFD53

   XorT E7CC8D8CEDE62BE6 68F24EC260743EDC E1C6C7DDEE725A93

        84943C8C67FCFD53

 

   18

   In   E7CC8D8CEDE62BE6 68F24EC260743EDC E1C6C7DDEE725A93

        84943C8C67FCFD53

   Enc  031D33264E15D320 68F24EC260743EDC E1C6C7DDEE725A93

        6BA814915C6762D2

   XorT 031D33264E15D332 68F24EC260743EDC E1C6C7DDEE725A93

        6BA814915C6762D2

 

   Output:

   Ciphertext  031D33264E15D332 68F24EC260743EDC E1C6C7DDEE725A93

               6BA814915C6762D2

 

   Unwrap:

 

   Step t     A/R3             R1               R2

 

   18

   In   031D33264E15D332 68F24EC260743EDC E1C6C7DDEE725A93

        6BA814915C6762D2

   XorT 031D33264E15D320 68F24EC260743EDC E1C6C7DDEE725A93

        6BA814915C6762D2

   Dec  E7CC8D8CEDE62BE6 68F24EC260743EDC E1C6C7DDEE725A93

        84943C8C67FCFD53

 

   17

   In   E7CC8D8CEDE62BE6 68F24EC260743EDC E1C6C7DDEE725A93

        84943C8C67FCFD53

   XorT E7CC8D8CEDE62BF7 68F24EC260743EDC E1C6C7DDEE725A93

        84943C8C67FCFD53

   Dec  ABEE3534AC465C3C 68F24EC260743EDC 56E3CEE892BBEFC4

        84943C8C67FCFD53

 

   16

   In   ABEE3534AC465C3C 68F24EC260743EDC 56E3CEE892BBEFC4

        84943C8C67FCFD53

   XorT ABEE3534AC465C2C 68F24EC260743EDC 56E3CEE892BBEFC4

        84943C8C67FCFD53

   Dec  E80DB49CC9A1EA6E C46965F34EFB2261 56E3CEE892BBEFC4

        84943C8C67FCFD53

 

   15

   In   E80DB49CC9A1EA6E C46965F34EFB2261 56E3CEE892BBEFC4

        84943C8C67FCFD53

   XorT E80DB49CC9A1EA61 C46965F34EFB2261 56E3CEE892BBEFC4

        84943C8C67FCFD53

   Dec  6AC861AB961DA576 C46965F34EFB2261 56E3CEE892BBEFC4

        463437433A93EFE5

 

   14

   In   6AC861AB961DA576 C46965F34EFB2261 56E3CEE892BBEFC4

        463437433A93EFE5

   XorT 6AC861AB961DA578 C46965F34EFB2261 56E3CEE892BBEFC4

        463437433A93EFE5

   Dec  428428D2BD88CF55 C46965F34EFB2261 63F6D88A0663FEF9

        463437433A93EFE5

 

   13

   In   428428D2BD88CF55 C46965F34EFB2261 63F6D88A0663FEF9

        463437433A93EFE5

   XorT 428428D2BD88CF58 C46965F34EFB2261 63F6D88A0663FEF9

        463437433A93EFE5

   Dec  FCE591D77709A6EC 98883EDC6B080FB5 63F6D88A0663FEF9

        463437433A93EFE5

 

   12

   In   FCE591D77709A6EC 98883EDC6B080FB5 63F6D88A0663FEF9

        463437433A93EFE5

   XorT FCE591D77709A6E0 98883EDC6B080FB5 63F6D88A0663FEF9

        463437433A93EFE5

   Dec  B1B9902C68E0EB59 98883EDC6B080FB5 63F6D88A0663FEF9

        ED5E8456E61BD295

 

   11

   In   B1B9902C68E0EB59 98883EDC6B080FB5 63F6D88A0663FEF9

        ED5E8456E61BD295

   XorT B1B9902C68E0EB52 98883EDC6B080FB5 63F6D88A0663FEF9

        ED5E8456E61BD295

   Dec  9EAA4CDA0B1BA5F5 98883EDC6B080FB5 552A09E141D08AE3

        ED5E8456E61BD295

 

   10

   In   9EAA4CDA0B1BA5F5 98883EDC6B080FB5 552A09E141D08AE3

        ED5E8456E61BD295

   XorT 9EAA4CDA0B1BA5FF 98883EDC6B080FB5 552A09E141D08AE3

        ED5E8456E61BD295

   Dec  53F4373F575EB7AD 926ED65A9E853FD9 552A09E141D08AE3

        ED5E8456E61BD295

 

   9

   In   53F4373F575EB7AD 926ED65A9E853FD9 552A09E141D08AE3

        ED5E8456E61BD295

   XorT 53F4373F575EB7A4 926ED65A9E853FD9 552A09E141D08AE3

        ED5E8456E61BD295

   Dec  864F408C8AB8CDC7 926ED65A9E853FD9 552A09E141D08AE3

        D1E708FD13778787

 

   8

   In   864F408C8AB8CDC7 926ED65A9E853FD9 552A09E141D08AE3

        D1E708FD13778787

   XorT 864F408C8AB8CDCF 926ED65A9E853FD9 552A09E141D08AE3

        D1E708FD13778787

   Dec  5A994895D81644B0 926ED65A9E853FD9 AE82BC1118A5DEA4

        D1E708FD13778787

 

   7

   In   5A994895D81644B0 926ED65A9E853FD9 AE82BC1118A5DEA4

        D1E708FD13778787

   XorT 5A994895D81644B7 926ED65A9E853FD9 AE82BC1118A5DEA4

        D1E708FD13778787

   Dec  A187755AEA64719A A08DAA041D17BBBA AE82BC1118A5DEA4

        D1E708FD13778787

 

   6

   In   A187755AEA64719A A08DAA041D17BBBA AE82BC1118A5DEA4

        D1E708FD13778787

   XorT A187755AEA64719C A08DAA041D17BBBA AE82BC1118A5DEA4

        D1E708FD13778787

   Dec  15B61F7B25D51705 A08DAA041D17BBBA AE82BC1118A5DEA4

        FF540E514DE120A3

 

   5

   In   15B61F7B25D51705 A08DAA041D17BBBA AE82BC1118A5DEA4

        FF540E514DE120A3

   XorT 15B61F7B25D51700 A08DAA041D17BBBA AE82BC1118A5DEA4

        FF540E514DE120A3

   Dec  E727C7BDF822602A A08DAA041D17BBBA 51F22F3286758A2D

        FF540E514DE120A3

 

   4

   In   E727C7BDF822602A A08DAA041D17BBBA 51F22F3286758A2D

        FF540E514DE120A3

   XorT E727C7BDF822602E A08DAA041D17BBBA 51F22F3286758A2D

        FF540E514DE120A3

   Dec  2C8E19A519025B7F 351D385096CCFB29 51F22F3286758A2D

        FF540E514DE120A3

 

   3

   In   2C8E19A519025B7F 351D385096CCFB29 51F22F3286758A2D

        FF540E514DE120A3

   XorT 2C8E19A519025B7C 351D385096CCFB29 51F22F3286758A2D

        FF540E514DE120A3

   Dec  9D9B32B9ED742E00 351D385096CCFB29 51F22F3286758A2D

        0001020304050607

 

   2

   In   9D9B32B9ED742E00 351D385096CCFB29 51F22F3286758A2D

        0001020304050607

   XorT 9D9B32B9ED742E02 351D385096CCFB29 51F22F3286758A2D

        0001020304050607

   Dec  DFE8FD5D1A3786A6 351D385096CCFB29 8899AABBCCDDEEFF

        0001020304050607

 

   1

   In   DFE8FD5D1A3786A6 351D385096CCFB29 8899AABBCCDDEEFF

        0001020304050607

   XorT DFE8FD5D1A3786A7 351D385096CCFB29 8899AABBCCDDEEFF

        0001020304050607

   Dec  A6A6A6A6A6A6A6A6 0011223344556677 8899AABBCCDDEEFF

        0001020304050607

 

   Plaintext  A6A6A6A6A6A6A6A6 0011223344556677

              8899AABBCCDDEEFF 0001020304050607

   Output:

   Key Data:  00112233445566778899AABBCCDDEEFF0001020304050607

 

4.5 Wrap 192 bits of Key Data with a 256-bit KEK

 

   Input:

   KEK:

     000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F

   Key Data:    00112233445566778899AABBCCDDEEFF0001020304050607

 

   Wrap:

 

   Step t     A/R3             R1               R2

 

   1

   In   A6A6A6A6A6A6A6A6 0011223344556677 8899AABBCCDDEEFF

        0001020304050607

   Enc  794314D454E3FDE1 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607

   XorT 794314D454E3FDE0 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607

 

   2

   In   794314D454E3FDE0 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607

   Enc  D450EA5C5BBCB561 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607

   XorT D450EA5C5BBCB563 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607

 

   3

   In   D450EA5C5BBCB563 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607

   Enc  9DF8F5405FBC00C1 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154

   XorT 9DF8F5405FBC00C2 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154

 

   4

   In   9DF8F5405FBC00C2 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154

   Enc  F1D28EA6295891EC 0CC86A4D9B9C6A31 F60E0CDB7F429FE8

        6CA405593A3B5154

   XorT F1D28EA6295891E8 0CC86A4D9B9C6A31 F60E0CDB7F429FE8

        6CA405593A3B5154

 

   5

   In   F1D28EA6295891E8 0CC86A4D9B9C6A31 F60E0CDB7F429FE8

        6CA405593A3B5154

   Enc  BF213BFD04E8A24F 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        6CA405593A3B5154

   XorT BF213BFD04E8A24A 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        6CA405593A3B5154

 

   6

   In   BF213BFD04E8A24A 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        6CA405593A3B5154

   Enc  6F85BFBDB7E880E3 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

   XorT 6F85BFBDB7E880E5 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

 

   7

   In   6F85BFBDB7E880E5 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

   Enc  D532789E4E79D819 444F92BF78E77BB1 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

   XorT D532789E4E79D81E 444F92BF78E77BB1 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

 

   8

   In   D532789E4E79D81E 444F92BF78E77BB1 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

   Enc  2A5FFCEF1F1916D8 444F92BF78E77BB1 C6874607903270CD

        39EBC1A1A53FF55B

   XorT 2A5FFCEF1F1916D0 444F92BF78E77BB1 C6874607903270CD

        39EBC1A1A53FF55B

 

   9

   In   2A5FFCEF1F1916D0 444F92BF78E77BB1 C6874607903270CD

        39EBC1A1A53FF55B

   Enc  01271BA91D9804F6 444F92BF78E77BB1 C6874607903270CD

        740A273461ED82C6

   XorT 01271BA91D9804FF 444F92BF78E77BB1 C6874607903270CD

        740A273461ED82C6

 

   10

   In   01271BA91D9804FF 444F92BF78E77BB1 C6874607903270CD

        740A273461ED82C6

   Enc  A3223BD7237F7033 FB1611A83BEB567F C6874607903270CD

        740A273461ED82C6

   XorT A3223BD7237F7039 FB1611A83BEB567F C6874607903270CD

        740A273461ED82C6

 

   11

   In   A3223BD7237F7039 FB1611A83BEB567F C6874607903270CD

        740A273461ED82C6

   Enc  B50C330616E7B1C7 FB1611A83BEB567F 73EDC8CB9322C34E

        740A273461ED82C6

   XorT B50C330616E7B1CC FB1611A83BEB567F 73EDC8CB9322C34E

        740A273461ED82C6

 

   12

   In   B50C330616E7B1CC FB1611A83BEB567F 73EDC8CB9322C34E

        740A273461ED82C6

   Enc  FB8AFF3F083E12CE FB1611A83BEB567F 73EDC8CB9322C34E

        0B08CFDF48020F0D

   XorT FB8AFF3F083E12C2 FB1611A83BEB567F 73EDC8CB9322C34E

        0B08CFDF48020F0D

 

   13

   In   FB8AFF3F083E12C2 FB1611A83BEB567F 73EDC8CB9322C34E

        0B08CFDF48020F0D

   Enc  82F597607784A33C FB1F2965FCE1E783 73EDC8CB9322C34E

        0B08CFDF48020F0D

   XorT 82F597607784A331 FB1F2965FCE1E783 73EDC8CB9322C34E

        0B08CFDF48020F0D

 

   14

   In   82F597607784A331 FB1F2965FCE1E783 73EDC8CB9322C34E

        0B08CFDF48020F0D

   Enc  D48E5E83B7C906DB FB1F2965FCE1E783 D36F4FFBA2C82ED9

        0B08CFDF48020F0D

   XorT D48E5E83B7C906D5 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        0B08CFDF48020F0D

 

   15

   In   D48E5E83B7C906D5 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        0B08CFDF48020F0D

   Enc  1BF2B1CD947311B6 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        C490C33642717146

   XorT 1BF2B1CD947311B9 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        C490C33642717146

 

   16

   In   1BF2B1CD947311B9 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        C490C33642717146

   Enc  C9F5F26A378011DE F6E6F4FBE30E71E4 D36F4FFBA2C82ED9

        C490C33642717146

   XorT C9F5F26A378011CE F6E6F4FBE30E71E4 D36F4FFBA2C82ED9

        C490C33642717146

 

   17

   In   C9F5F26A378011CE F6E6F4FBE30E71E4 D36F4FFBA2C82ED9

        C490C33642717146

   Enc  39128CE5E435F3A0 F6E6F4FBE30E71E4 769C8B80A32CB895

        C490C33642717146

   XorT 39128CE5E4325F3B1 F6E6F4FBE30E71E4 769C8B80A32CB895

        C490C33642717146

 

   18

   In   39128CE5E435F3B1 F6E6F4FBE30E71E4 769C8B80A32CB895

        C490C33642717146

   Enc  A8F9BC1612C68B2D F6E6F4FBE30E71E4 769C8B80A32CB895

        8CD5D17D6B254DA1

   XorT A8F9BC1612C68B3F F6E6F4FBE30E71E4 769C8B80A32CB895

        8CD5D17D6B254DA1

 

   Ciphertext   A8F9BC1612C68B3F F6E6F4FBE30E71E4

                769C8B80A32CB895 8CD5D17D6B254DA1

 

   Unwrap:

 

   Step t     A/R3             R1               R2

 

   18

   In   A8F9BC1612C68B3F F6E6F4FBE30E71E4 769C8B80A32CB895

        8CD5D17D6B254DA1

   XorT A8F9BC1612C68B2D F6E6F4FBE30E71E4 769C8B80A32CB895

        8CD5D17D6B254DA1

   Dec  39128CE5E435F3B1 F6E6F4FBE30E71E4 769C8B80A32CB895

        C490C33642717146

 

   17

   In   39128CE5E435F3B1 F6E6F4FBE30E71E4 769C8B80A32CB895

        C490C33642717146

   XorT 39128CE5E435F3A0 F6E6F4FBE30E71E4 769C8B80A32CB895

        C490C33642717146

   Dec  C9F5F26A378011CE F6E6F4FBE30E71E4 D36F4FFBA2C82ED9

        C490C33642717146

 

   16

   In   C9F5F26A378011CE F6E6F4FBE30E71E4 D36F4FFBA2C82ED9

        C490C33642717146

   XorT C9F5F26A378011DE F6E6F4FBE30E71E4 D36F4FFBA2C82ED9

        C490C33642717146

   Dec  1BF2B1CD947311B9 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        C490C33642717146

 

   15

   In   1BF2B1CD947311B9 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        C490C33642717146

   XorT 1BF2B1CD947311B6 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        C490C33642717146

   Dec  D48E5E83B7C906D5 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        0B08CFDF48020F0D

 

   14

   In   D48E5E83B7C906D5 FB1F2965FCE1E783 D36F4FFBA2C82ED9

        0B08CFDF48020F0D

   XorT D48E5E83B7C906DB FB1F2965FCE1E783 D36F4FFBA2C82ED9

        0B08CFDF48020F0D

   Dec  82F597607784A331 FB1F2965FCE1E783 73EDC8CB9322C34E

        0B08CFDF48020F0D

 

   13

   In   82F597607784A331 FB1F2965FCE1E783 73EDC8CB9322C34E

        0B08CFDF48020F0D

   XorT 82F597607784A33C FB1F2965FCE1E783 73EDC8CB9322C34E

        0B08CFDF48020F0D

   Dec  FB8AFF3F083E12C2 FB1611A83BEB567F 73EDC8CB9322C34E

        0B08CFDF48020F0D

 

   12

   In   FB8AFF3F083E12C2 FB1611A83BEB567F 73EDC8CB9322C34E

        0B08CFDF48020F0D

   XorT FB8AFF3F083E12CE FB1611A83BEB567F 73EDC8CB9322C34E

        0B08CFDF48020F0D

   Dec  B50C330616E7B1CC FB1611A83BEB567F 73EDC8CB9322C34E

        740A273461ED82C6

 

   11

   In   B50C330616E7B1CC FB1611A83BEB567F 73EDC8CB9322C34E

        740A273461ED82C6

   XorT B50C330616E7B1C7 FB1611A83BEB567F 73EDC8CB9322C34E

        740A273461ED82C6

   Dec  A3223BD7237F7039 FB1611A83BEB567F C6874607903270CD

        740A273461ED82C6

 

   10

   In   A3223BD7237F7039 FB1611A83BEB567F C6874607903270CD

        740A273461ED82C6

   XorT A3223BD7237F7033 FB1611A83BEB567F C6874607903270CD

        740A273461ED82C6

   Dec  01271BA91D9804FF 444F92BF78E77BB1 C6874607903270CD

        740A273461ED82C6

 

   9

   In   01271BA91D9804FF 444F92BF78E77BB1 C6874607903270CD

        740A273461ED82C6

   XorT 01271BA91D9804F6 444F92BF78E77BB1 C6874607903270CD

        740A273461ED82C6

   Dec  2A5FFCEF1F1916D0 444F92BF78E77BB1 C6874607903270CD

        39EBC1A1A53FF55B

 

   8

   In   2A5FFCEF1F1916D0 444F92BF78E77BB1 C6874607903270CD

        39EBC1A1A53FF55B

   XorT 2A5FFCEF1F1916D8 444F92BF78E77BB1 C6874607903270CD

        39EBC1A1A53FF55B

   Dec  D532789E4E79D81E 444F92BF78E77BB1 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

 

   7

   In   D532789E4E79D81E 444F92BF78E77BB1 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

   XorT D532789E4E79D819 444F92BF78E77BB1 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

   Dec  6F85BFBDB7E880E5 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

 

   6

   In   6F85BFBDB7E880E5 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

   XorT 6F85BFBDB7E880E3 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        39EBC1A1A53FF55B

   Dec  BF213BFD04E8A24A 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        6CA405593A3B5154

 

   5

   In   BF213BFD04E8A24A 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        6CA405593A3B5154

   XorT BF213BFD04E8A24F 0CC86A4D9B9C6A31 AEBE2D5C8BF747A9

        6CA405593A3B5154

   Dec  F1D28EA6295891E8 0CC86A4D9B9C6A31 F60E0CDB7F429FE8

        6CA405593A3B5154

 

   4

   In   F1D28EA6295891E8 0CC86A4D9B9C6A31 F60E0CDB7F429FE8

        6CA405593A3B5154

   XorT F1D28EA6295891EC 0CC86A4D9B9C6A31 F60E0CDB7F429FE8

        6CA405593A3B5154

   Dec  9DF8F5405FBC00C2 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154

 

   3

   In   9DF8F5405FBC00C2 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154

   XorT 9DF8F5405FBC00C1 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154

   Dec  D450EA5C5BBCB563 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607

 

   2

   In   D450EA5C5BBCB563 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607

   XorT D450EA5C5BBCB561 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607

   Dec  794314D454E3FDE0 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607

 

   1

   In   794314D454E3FDE0 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607

   XorT 794314D454E3FDE1 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607

   Dec  A6A6A6A6A6A6A6A6 0011223344556677 8899AABBCCDDEEFF

        0001020304050607

 

   Plaintext  A6A6A6A6A6A6A6A6 0011223344556677

              8899AABBCCDDEEFF 0001020304050607

 

   Output:

   Key Data:  00112233445566778899AABBCCDDEEFF0001020304050607

 

4.6 Wrap 256 bits of Key Data with a 256-bit KEK

 

   Input:

   KEK:

     000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F

   Key Data:

     00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F

 

   Wrap:

 

   Step t     A/R3             R1/R4            R2

 

   1

   In   A6A6A6A6A6A6A6A6 0011223344556677 8899AABBCCDDEEFF

        0001020304050607 08090A0B0C0D0E0F

   Enc  794314D454E3FDE1 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607 08090A0B0C0D0E0F

   XorT 794314D454E3FDE0 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607 08090A0B0C0D0E0F

 

   2

   In   794314D454E3FDE0 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607 08090A0B0C0D0E0F

   Enc  D450EA5C5BBCB561 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607 08090A0B0C0D0E0F

   XorT D450EA5C5BBCB563 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607 08090A0B0C0D0E0F

 

   3

   In   D450EA5C5BBCB563 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607 08090A0B0C0D0E0F

   Enc  9DF8F5405FBC00C1 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 08090A0B0C0D0E0F

   XorT 9DF8F5405FBC00C2 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 08090A0B0C0D0E0F

 

   4

   In   9DF8F5405FBC00C2 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 08090A0B0C0D0E0F

   Enc  564408FDD0DD2EA4 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

   XorT 564408FDD0DD2EA0 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

 

   5

   In   564408FDD0DD2EA0 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

   Enc  4EF02EDD3146AFBB E7D1194D853E53F8 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

   XorT 4EF02EDD3146AFBE E7D1194D853E53F8 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

 

   6

   In   4EF02EDD3146AFBE E7D1194D853E53F8 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

   Enc  963AAFFD96B223EC E7D1194D853E53F8 EFD48BA304945576

        6CA405593A3B5154 E5923CB9FDB56FBC

   XorT 963AAFFD96B223EA E7D1194D853E53F8 EFD48BA304945576

        6CA405593A3B5154 E5923CB9FDB56FBC

 

   7

   In   963AAFFD96B223EA E7D1194D853E53F8 EFD48BA304945576

        6CA405593A3B5154 E5923CB9FDB56FBC

   Enc  66D7A8ADD086B9DD E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 E5923CB9FDB56FBC

   XorT 66D7A8ADD086B9DA E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 E5923CB9FDB56FBC

 

   8

   In   66D7A8ADD086B9DA E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 E5923CB9FDB56FBC

   Enc  C58B9D3AC6D5B94E E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

   XorT C58B9D3AC6D5B946 E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

 

   9

   In   C58B9D3AC6D5B946 E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

   Enc  1A681354E84C41F8 D6AE29ECE7192D43 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

   XorT 1A681354E84C41F1 D6AE29ECE7192D43 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

 

   10

   In   1A681354E84C41F1 D6AE29ECE7192D43 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

   Enc  DBA417FB51F9E3CB D6AE29ECE7192D43 FBEC169FA5C0F6BA

        C365B66943E2D760 73E3B6CBE5D05D74

   XorT DBA417FB51F9E3C1 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        C365B66943E2D760 73E3B6CBE5D05D74

 

   11

   In   DBA417FB51F9E3C1 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        C365B66943E2D760 73E3B6CBE5D05D74

   Enc  0629EB29A42E4FD9 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 73E3B6CBE5D05D74

   XorT 0629EB29A42E4FD2 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 73E3B6CBE5D05D74

 

   12

   In   0629EB29A42E4FD2 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 73E3B6CBE5D05D74

   Enc  F9ED8A1429515665 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

   XorT F9ED8A1429515669 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

 

   13

   In   F9ED8A1429515669 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

   Enc  2E8E2B6BB2016696 4745856AF333F01F FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

   XorT 2E8E2B6BB201669B 4745856AF333F01F FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

 

   14

   In   2E8E2B6BB201669B 4745856AF333F01F FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

   Enc  15342443CB95ADB1 4745856AF333F01F BCA418BBF7DCE60B

        F56701DAF0388216 3CF149E90E8C04D9

   XorT 15342443CB95ADBF 4745856AF333F01F BCA418BBF7DCE60B

        F56701DAF0388216 3CF149E90E8C04D9

 

   15

   In   15342443CB95ADBF 4745856AF333F01F BCA418BBF7DCE60B

        F56701DAF0388216 3CF149E90E8C04D9

   Enc  33FE29365885C4B7 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 3CF149E90E8C04D9

   XorT 33FE29365885C4B8 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 3CF149E90E8C04D9

 

   16

   In   33FE29365885C4B8 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 3CF149E90E8C04D9

   Enc  5075496800978B4A 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

   XorT 5075496800978B5A 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

 

   17

   In   5075496800978B5A 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

   Enc  A5382A26B47551F1 1BB8C765A84195E7 BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

   XorT A5382A26B47551E0 1BB8C765A84195E7 BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

 

   18

   In   A5382A26B47551E0 1BB8C765A84195E7 BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

   Enc  F19D80D437EFE8F9 1BB8C765A84195E7 F7EDAD518C960D36

        C272E9466AAE98F9 40F68C91DB49702C

   XorT F19D80D437EFE8EB 1BB8C765A84195E7 F7EDAD518C960D36

        C272E9466AAE98F9 40F68C91DB49702C

 

   19

   In   F19D80D437EFE8EB 1BB8C765A84195E7 F7EDAD518C960D36

        C272E9466AAE98F9 40F68C91DB49702C

   Enc  B422B444B87A190B 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 40F68C91DB49702C

   XorT B422B444B87A1918 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 40F68C91DB49702C

 

   20

   In   B422B444B87A1918 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 40F68C91DB49702C

   Enc  D058823360F88A37 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

   XorT D058823360F88A23 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

 

   21

   In   D058823360F88A23 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

   Enc  C89A96CA7B163ECC CBCCB35CFB87F826 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

   XorT C89A96CA7B163ED9 CBCCB35CFB87F826 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

 

   22

   In   C89A96CA7B163ED9 CBCCB35CFB87F826 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

   Enc  39D02FE7435870ED CBCCB35CFB87F826 3F5786E2D80ED326

        1CFBF6B4C24CB982 07DFE775B9687E73

   XorT 39D02FE7435870FB CBCCB35CFB87F826 3F5786E2D80ED326

        1CFBF6B4C24CB982 07DFE775B9687E73

 

   23

   In   39D02FE7435870FB CBCCB35CFB87F826 3F5786E2D80ED326

        1CFBF6B4C24CB982 07DFE775B9687E73

   Enc  0AEB82AE3146A91B CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B 07DFE775B9687E73

   XorT 0AEB82AE3146A90C CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B 07DFE775B9687E73

 

   24

   In   0AEB82AE3146A90C CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B 07DFE775B9687E73

   Enc  28C9F404C4B810EC CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B FB988B9B7A02DD21

   XorT 28C9F404C4B810F4 CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B FB988B9B7A02DD21

 

   Output:

   Ciphertext  28C9F404C4B810F4 CBCCB35CFB87F826 3F5786E2D80ED326

               CBC7F0E71A99F43B FB988B9B7A02DD21

 

   Unwrap:

 

   Step t     A/R3             R1/R4            R2

 

   24

   In   28C9F404C4B810F4 CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B FB988B9B7A02DD21

   XorT 28C9F404C4B810EC CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B FB988B9B7A02DD21

   Dec  0AEB82AE3146A90C CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B 07DFE775B9687E73

 

   23

   In   0AEB82AE3146A90C CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B 07DFE775B9687E73

   XorT 0AEB82AE3146A91B CBCCB35CFB87F826 3F5786E2D80ED326

        CBC7F0E71A99F43B 07DFE775B9687E73

   Dec  39D02FE7435870FB CBCCB35CFB87F826 3F5786E2D80ED326

        1CFBF6B4C24CB982 07DFE775B9687E73

 

   22

   In   39D02FE7435870FB CBCCB35CFB87F826 3F5786E2D80ED326

        1CFBF6B4C24CB982 07DFE775B9687E73

   XorT 39D02FE7435870ED CBCCB35CFB87F826 3F5786E2D80ED326

        1CFBF6B4C24CB982 07DFE775B9687E73

   Dec  C89A96CA7B163ED9 CBCCB35CFB87F826 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

 

   21

   In   C89A96CA7B163ED9 CBCCB35CFB87F826 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

   XorT C89A96CA7B163ECC CBCCB35CFB87F826 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

   Dec  D058823360F88A23 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

 

   20

   In   D058823360F88A23 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

   XorT D058823360F88A37 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 07DFE775B9687E73

   Dec  B422B444B87A1918 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 40F68C91DB49702C

 

   19

   In   B422B444B87A1918 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 40F68C91DB49702C

   XorT B422B444B87A190B 1BB8C765A84195E7 F7EDAD518C960D36

        1CFBF6B4C24CB982 40F68C91DB49702C

   Dec  F19D80D437EFE8EB 1BB8C765A84195E7 F7EDAD518C960D36

        C272E9466AAE98F9 40F68C91DB49702C

 

   18

   In   F19D80D437EFE8EB 1BB8C765A84195E7 F7EDAD518C960D36

        C272E9466AAE98F9 40F68C91DB49702C

   XorT F19D80D437EFE8F9 1BB8C765A84195E7 F7EDAD518C960D36

        C272E9466AAE98F9 40F68C91DB49702C

   Dec  A5382A26B47551E0 1BB8C765A84195E7 BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

 

   17

   In   A5382A26B47551E0 1BB8C765A84195E7 BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

   XorT A5382A26B47551F1 1BB8C765A84195E7 BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

   Dec  5075496800978B5A 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

 

   16

   In   5075496800978B5A 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

   XorT 5075496800978B4A 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 40F68C91DB49702C

   Dec  33FE29365885C4B8 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 3CF149E90E8C04D9

 

   15

   In   33FE29365885C4B8 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 3CF149E90E8C04D9

   XorT 33FE29365885C4B7 4745856AF333F01F BCA418BBF7DCE60B

        C272E9466AAE98F9 3CF149E90E8C04D9

   Dec  15342443CB95ADBF 4745856AF333F01F BCA418BBF7DCE60B

        F56701DAF0388216 3CF149E90E8C04D9

 

14

   In   15342443CB95ADBF 4745856AF333F01F BCA418BBF7DCE60B

        F56701DAF0388216 3CF149E90E8C04D9

   XorT 15342443CB95ADB1 4745856AF333F01F BCA418BBF7DCE60B

        F56701DAF0388216 3CF149E90E8C04D9

   Dec  2E8E2B6BB201669B 4745856AF333F01F FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

 

   13

   In   2E8E2B6BB201669B 4745856AF333F01F FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

   XorT 2E8E2B6BB2016696 4745856AF333F01F FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

   Dec  F9ED8A1429515669 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

 

   12

   In   F9ED8A1429515669 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

   XorT F9ED8A1429515665 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 3CF149E90E8C04D9

   Dec  0629EB29A42E4FD2 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 73E3B6CBE5D05D74

 

   11

   In   0629EB29A42E4FD2 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        F56701DAF0388216 73E3B6CBE5D05D74

   XorT 0629EB29A42E4FD9 D6AE29ECE7192D43 FBEC169FA5C0F6BA

 

        F56701DAF0388216 73E3B6CBE5D05D74

   Dec  DBA417FB51F9E3C1 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        C365B66943E2D760 73E3B6CBE5D05D74

 

   10

   In   DBA417FB51F9E3C1 D6AE29ECE7192D43 FBEC169FA5C0F6BA

        C365B66943E2D760 73E3B6CBE5D05D74

   XorT DBA417FB51F9E3CB D6AE29ECE7192D43 FBEC169FA5C0F6BA

        C365B66943E2D760 73E3B6CBE5D05D74

   Dec  1A681354E84C41F1 D6AE29ECE7192D43 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

 

   9

   In   1A681354E84C41F1 D6AE29ECE7192D43 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

   XorT 1A681354E84C41F8 D6AE29ECE7192D43 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

   Dec  C58B9D3AC6D5B946 E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

 

   8

   In   C58B9D3AC6D5B946 E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

   XorT C58B9D3AC6D5B94E E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 73E3B6CBE5D05D74

   Dec  66D7A8ADD086B9DA E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 E5923CB9FDB56FBC

 

   7

   In   66D7A8ADD086B9DA E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 E5923CB9FDB56FBC

   XorT 66D7A8ADD086B9DD E7D1194D853E53F8 EFD48BA304945576

        C365B66943E2D760 E5923CB9FDB56FBC

   Dec  963AAFFD96B223EA E7D1194D853E53F8 EFD48BA304945576

        6CA405593A3B5154 E5923CB9FDB56FBC

 

   6

   In   963AAFFD96B223EA E7D1194D853E53F8 EFD48BA304945576

        6CA405593A3B5154 E5923CB9FDB56FBC

   XorT 963AAFFD96B223EC E7D1194D853E53F8 EFD48BA304945576

        6CA405593A3B5154 E5923CB9FDB56FBC

   Dec  4EF02EDD3146AFBE E7D1194D853E53F8 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

 

   5

   In   4EF02EDD3146AFBE E7D1194D853E53F8 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

   XorT 4EF02EDD3146AFBB E7D1194D853E53F8 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

   Dec  564408FDD0DD2EA0 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

 

   4

   In   564408FDD0DD2EA0 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

   XorT 564408FDD0DD2EA4 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 E5923CB9FDB56FBC

   Dec  9DF8F5405FBC00C2 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 08090A0B0C0D0E0F

 

   3

   In   9DF8F5405FBC00C2 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 08090A0B0C0D0E0F

   XorT 9DF8F5405FBC00C1 F661BD9F31FBFA31 F60E0CDB7F429FE8

        6CA405593A3B5154 08090A0B0C0D0E0F

   Dec  D450EA5C5BBCB563 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607 08090A0B0C0D0E0F

 

   2

   In   D450EA5C5BBCB563 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607 08090A0B0C0D0E0F

   XorT D450EA5C5BBCB561 F661BD9F31FBFA31 F60E0CDB7F429FE8

        0001020304050607 08090A0B0C0D0E0F

   Dec  794314D454E3FDE0 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607 08090A0B0C0D0E0F

 

   1

   In   794314D454E3FDE0 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607 08090A0B0C0D0E0F

   XorT 794314D454E3FDE1 F661BD9F31FBFA31 8899AABBCCDDEEFF

        0001020304050607 08090A0B0C0D0E0F

   Dec  A6A6A6A6A6A6A6A6 0011223344556677 8899AABBCCDDEEFF

        0001020304050607 08090A0B0C0D0E0F

 

   Plaintext  A6A6A6A6A6A6A6A6 0011223344556677 8899AABBCCDDEEFF

              0001020304050607 08090A0B0C0D0E0F

 

   Output:

   Key Data:

        00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F

 

5. Security Considerations

 key wrap 알고리즘은 데이터에 대한 강력한 무결성 체크를 포함한다. 만약 unwrapping 과정이 A[0] 값으로 기대하는 올바른 체크 값을 생성한다면 해당 데이터가 훼손되었을 확률은 ‘2^-64’ 된다. 만약 unwrapping 과정이 기대하지 않는 값을 생성한다면 알고리즘 구현은 반드시 에러를 리턴하여야 하며(MUST), 어떠한 데이터도 리턴하여서는 안된다 (MUST NOT).

 

구현은 반드시 KEK 유출되지 않도록 보호하여야 한다. KEK 유출은 해당 KEK 보호하고 있는 모든 데이터의 유출을 야기할 있다.

 

6. References

 

AES    

National Institute of Standards and Technology. FIPS Pub 197: Advanced Encryption Standard (AES). 26 November 2001.

 

AES-WRAP 

National Institute of Standards and Technology. AES Key Wrap Specification. 17 November 2001. [http://csrc.nist.gov/encryption/kms/key-wrap.pdf]

 


Posted by Golmong
:


Chapter.2 Introduction

Cryptographic Techniques

SSL 이해하기 위해서는 암호화 알고리즘, 메시지 다이제스트(one-way or hash function), 전자서명에 대한 이해가 필요하다. technique들은 privacy, integrity, authentication 있어서의 basis 제공한다.

Cryptographic Algroithm

Alice 돈을 옮기기 위하여 자신의 은행에 메시지를 보낸다고 가정하자. 메시지에는 Alice 계좌번호, 송금액 등과 같은 정보가 포함되기 때문에 Alice 메시지가 private하기를 원한다. 이에 대한 해결책은 암호화 알고리즘을 사용하는 것이며, 암호화를 사용함으로써 Alice 메시지를 암호화된 형태로 전송하여 다른 사람들로 하여금 읽을 없도록 만든다.

메시지는 secret key 사용하여야만 해석되어질 있으며, key 없으면 메시지는 무용지물이 된다. 좋은 암호화 알고리즘은 공격자(intruder) 원래의 메시지로 decoding하는 것을 어렵게 만듦으로써 공격자의 수고를 가치 없게 만든다.

암호화 알고리즘에는 두가지 범주가 있다. : Conventional, Public key.

Conventional Cryptography

  • symmetric cryptography라고도 하며, 메시지의 송신자, 수신자가 동일한 key 공유하게 되며, key 메시지를 암호화하고 복호화하는데 사용되는 secret piece of information이다. key 안전하게 보관됨으로써 전송자와 수신자 이외에는 메시지를 읽지 못하게 된다. 만약 Alice 은행이 secret key 알고 있다면 그들은 서로에게 private message 전송할 있다. 그러나 통신 이전에 key private하게 공유하는 것이 문제가 있다.

Public Key Cryptography

  • asymmetric cryptography라고도 하며, 두개의 key 사용하는 알고리즘을 정의함으로써 key exchange 문제를 해결하며, 두개의 key 어느 것도 메시지를 암호화하는데 사용될 있다. 만약 하나의 키가 메시지를 암호화하는데 사용되었다면 다른 하나의 key 그것을 복호화하는데 사용되어져야 한다. 공개키 암호화는 단순히 하나의 (공개키) 공개하고 다른 하나의 (개인키) 보관함으로써 메시지를 안전하게 전달할 있게 해준다.

  • 누구나 공개키를 사용하여 메시지를 암호화할 있지만 해당되는 개인키를 가진 사람만이 메시지를 읽을 있다. 이러한 방식으로 Alice 은행의 공개키로 메시지를 암호화함으로써 키쌍의 주인인 은행으로 private message 보낼 있게 되며, 단지 은행만이 메시지를 복호화할 있다.

메시지 다이제스트

비록 Alice 자신의 메시지를 암호화함으로써 안전하게 만들 수는 있지만, 누군가가 돈을 가로채기 위하여 Alice original message 변조하거나 다른 message 바꿔치기 있다는 문제가 여전히 존재한다. Alice 메시지에 대한 무결성(integrity) 보장하는 하나의 방법은 Alice 메시지에 대한 간결한 요약(summary) 생성해서 메시지와 함께 은행으로 보내는 것이다. 메시지를 받게 되면 은행은 메시지의 summary 다시 생성해서 Alice 보낸 것과 비교하게 되며, 두개가 일치하면 메시지는 손상되지 않은 것이다.

이러한 summary 메시지 다이제스트, one-way function, 혹은 hash function이라고 부른다. Message digests are used to create short, fixed-length representations of longer, variable-length messages. 다이제스트 알고리즘은 서로 다른 메시지에 대하여 각각 유일한 다이제스트를 생성하도록 디자인되어진다. 또한 다이제스트로부터 원래의 메시지를 얻어내는 것이 매우 어렵게 되어 있으며, 동일한 다이제스트를 가지는 서로 다른 두개의 메시지를 찾는 것이 불가능하다. 따라서 어떤 메시지를 동일한 다이제스트를 가지는 다른 메시지로 바꿔치기할 가능성을 막아주게 된다.

Alice 직면하게 되는 다른 문제는 다이제스트를 은행으로 안전하게 보내는 방법이며, 문제가 해결되면 해당 메시지에 대한 무결성이 보장된다. 이를 위한 한가지 방법은 다이제스트를 전자 서명에 포함하는 것이다.

전자 서명(Digital Signatures)

Alice 은행으로 메시지를 전송하였을 은행은 공격자(intruder) Alice 계좌로부터 돈을 인출하는 것을 막기 위해 메시지가 정말로 Alice 보낸 것인가를 확인할 필요가 있다. 역할을 하는 것이 Alice 생성하여 메시지에 포함한 전자 서명이다.

전자 서명(Digital signatures) 메시지의 다이제스트와 다른 정보들(sequence number 같은) 전송자(sender) 개인키로 암호화함으로써 생성된다. 비록 누구나 전송자의 공개키를 가지고 서명을 복호화할 수는 있지만 단지 서명자만이 개인키를 알고 있을 뿐이며, 이것은 서명자만이 서명을 생성할 있음을 의미한다. 서명에 다이제스트를 포함한다는 것은 서명이 단지 메시지에 대해서만 유효함을 의미한다. 이것은 또한 누구도 다이제스트를 변경하지 못하며 서명을 없기 때문에 메시지의 무결성을 보장해준다.

Intruder 의한 가로채기(interception) 서명의 재사용을 막기 위하여 서명은 유일한 sequence number 포함하고 있으며, 이것은 은행으로 하여금 Alice 자신이 메시지를 보내지 않았다고 하는 부정하게(fraudulent) 클레임을 거는 것을 막아주게 된다. 이유는 단지 Alice만이 메시지에 서명할 있기 때문이다. 이를 부인봉쇄(non-repudiation)이라고 한다.

인증서(Certificates)

비록 Alice private message 은행으로 보내고, 메시지에 서명하고 또한 메시지의 무결성을 보장받을 있지만 여전히 Alice 자신이 정말로 은행과 통신(communicate)하고 있는가를 확인할 필요가 있다. 이것은 자신이 사용하는 공개키가 은행의 개인키와 대응되는가를 확인할 필요가 있음을 의미한다. 또한 은행 역시 메시지의 서명이 정말로 Alice 서명에 대응되는가를 확인할 필요가 있다.

만약 party 서로의 identity validate해주고 공개키를 confirm해주며, 또한 믿을 있는 agency 의해 서명된 증명서(certificate) 가진다면 그들은 자신이 생각하고 있는 올바른 상대방과 통신하고 있음을 확신할 있을 것이다. 이러한 믿을 있는 agency Certificate Authority라고 부르며, 증명서(certificate) 인증(authentication) 사용된다.

Certificate Contents

증명서는 하나의 공개키와 실재의 subject 보여지는 identity(individual, server 등등) 연관시킨다. subject 대한 정보는 identifying information(the distinguished name) 공개키를 포함한다. 또한 증명서는 증명서를 발급한 CA 대한 identification 서명, 그리고 증명서의 유효기간을 포함한다. 증명서에는 serial number 같이 CA 관리적 목적으로 사용하기 위한 administrative information 같은 부가적인 정보를 가질 수도 있다.

Subject:

Distinguished Name, Public Key

Issuer:

Distinguished Name, Signature

Period of Validity:

Not Before Date, Not After Date

Administrative Information:

Version, Serial Number

Extended Information:

Basic Contraints, Netscape Flags, etc.

Table 1: Certificate Information

Distinguished name 특정한 context 내에서 identity 제공하기 위해 사용된다. 예를 들어, 개인(individual) 개인 증명서(personal certificate) 뿐만 아니라 하나의 employee로서의 증명서을 가진다. Distinguished name X.509 표준[X509] 정의되어 있으며, 여기에는 field, field name, abbreviation(약어) 정의되어 있다.

A distinguished name is used to provide an identity in a specific context ? for instance, an individual might have a personal certificate as well as one for their identity as an employee. Distinguished names are defined by the X.509 standard [X509], which defines the fields, field names, and abbreviations used to refer to the fields (see Table 2).

DN Field:

Abbrev.:

Description:

Example:

Common Name

CN

Name being certified

CN=Joe Average

Organization or

Company

O

Name is associated with this organization

O=Snake Oil, Ltd.

Organizational Unit

OU

Name is associated with this organization unit, such as a department

OU=Research Institute

City/Locality

L

Name is located in this City

L=Snake City

State/Province

ST

Name is located in this State/Province

ST=Desert

Country

C

Name is located in this Country (ISO code)

C=XZ

Table 2: Distinguished Name Information

CA 어떤 DN name 필수적(required)이냐, 부가적(optional)이냐를 명시하는 정책(policy) 정의할 있으며, 또한 필드의 내용(field content) 대한 요구사항(requirement) 포함할 있다. 예를 들면, Netscape 브라우져는 어떤 서버에 대한 증명서의 Common Name 서버의 도메인 네임에 대한 wildcard pattern ( *.snakeoil.com 같은…) 부합(match)되는 이름을 가질 것을 요구한다.

증명서의 binary format ASN.1 notation [ X208] [PKCS] 사용하여 정의한다. notation content information binary form으로 변환하는 방법을 정의하는 encoding rule들을 어떻게 specify하는가를 정의한다. 증명서의 binary encoding Distinguished Encoding Rules(DER) 사용하여 정의하며, DER 일반적인 Basic Encoding Rules(BER) 기반을 두고 있다. Binary 다루지 못하는(cannot handle) transmission 위하여 binary form Base64 encoding [MIME] 사용하여 ASCII form으로 변환될 수도 있다. 이렇게 encoding 버전을 PEM(“Privacy Enhanced Mail”에서 얻어진 이름) encoded라고 부르며, [Table3]에서와 같이 begin delimiter line end delimiter line 사이에 놓여진다.

-----BEGIN CERTIFICATE-----

MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx

FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG

A1UEChMOU25ha2UgT2lsLCBMdGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhv

cml0eTEVMBMGA1UEAxMMU25ha2UgT2lsIENBMR4wHAYJKoZIhvcNAQkBFg9jYUBz

bmFrZW9pbC5kb20wHhcNOTgxMDIxMDg1ODM2WhcNOTkxMDIxMDg1ODM2WjCBpzEL

MAkGA1UEBhMCWFkxFTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25h

a2UgVG93bjEXMBUGA1UEChMOU25ha2UgT2lsLCBMdGQxFzAVBgNVBAsTDldlYnNl

cnZlciBUZWFtMRkwFwYDVQQDExB3d3cuc25ha2VvaWwuZG9tMR8wHQYJKoZIhvcN

AQkBFhB3d3dAc25ha2VvaWwuZG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB

gQDH9Ge/s2zcH+da+rPTx/DPRp3xGjHZ4GG6pCmvADIEtBtKBFAcZ64n+Dy7Np8b

vKR+yy5DGQiijsH1D/j8HlGE+q4TZ8OFk7BNBFazHxFbYI4OKMiCxdKzdif1yfaa

lWoANFlAzlSdbxeGVHoT0K+gT5w3UxwZKv2DLbCTzLZyPwIDAQABoyYwJDAPBgNV

HRMECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIAQDANBgkqhkiG9w0BAQQFAAOB

gQAZUIHAL4D09oE6Lv2k56Gp38OBDuILvwLg1v1KL8mQR+KFjghCrtpqaztZqcDt

2q2QoyulCgSzHbEGmi0EsdkPfg6mp0penssIFePYNI+/8u9HT4LuKMJX15hxBam7

dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ==

-----END CERTIFICATE-----

Table 3: Example of a PEM-encoded certificate (snakeoil.crt)

인증기관(Certificate Authorities)

CA 증명서를 발급하기 전에 먼저 증명서에 있는 정보를 확인(verify)함으로써 키쌍의 개인키의 identity 확인(assure)한다. 예를 들어 만약 Alice 개인 증명서(personal certificate) 요청하는 경우 CA 반드시 먼저 Alice 정말로 증명서를 요청한 사람인가를 확인하여야 한다.

Certificate Chains

CA 다른 CA 대한 증명서을 발급(issue) 있다. 증명서를 examining Alice Alice 신뢰할 있는 CA 도달할 때까지 parent CA 대한 issuer 증명서를 examine해야 필요가 있을 있다. Alice chain안의 “bad” certificate 대한 위험을 줄이기 위하여 제한된 chain(limited chain of issuers) 가진 증명서만을 신뢰할 것을 결정할 수도 있다.

Creating a Root-Level CA

위에서 언급된 바와 같이, certificate들은 top-level CA 도달할 때까지 certificate subject identity 대한 유효성(validity) certificate issuer 보증해야 한다. 이것은 하나의 문제를 발생시키는데, 그것은 issuer 가지지 않는 top-level authority certificate 누가 보증하는가의 문제이다. 이런 특정한 경우, top-level authority certificate “self-signed”되어지며, 증명서의 issuer subject 동일하게 된다. 결과로서 self-signed certificate 신뢰에 대한 문제가 생긴다. Root authority 의한 공개키의 wide publication 공개키의 신뢰에 대한 위험을 줄여줄 있는데, 누군가가 자신이 authority 되겠다고 하면서 키를 공표함으로써 문제를 해결할 있다. 보통 브라우져들은 well-known CA들을 신뢰할 있도록 미리 설정되어있다(preconfigured).

Thawte이나 VeriSign 같은 몇몇 회사들이 자신을 Certificate Authority로서 입지를 굳혀왔으며, 이들은 다음과 같은 서비스를 제공한다:

  • 증명서 요청에 대한 확인(Verifying certificate requests)

  • 증명서 요청의 처리(Processing certificate requests)

  • 증명서의 발급과 관리(Issuing and managing certificates)

자기 자신만의 CA(one’s own CA) 생성하는 것도 가능한데, 비록 인터넷 환경에서는 위험하긴 하지만 어떤 조직 내에서 개인이나 서버들을 확인(verify)하기 위한 목적의 인트라넷 환경에서는 매우 유용할 있다.

Certificate Management

CA 설립(establishing)하는 것은 믿을 있는 관리적(administrative), 기술적(technical), 관리(management) framework 요구하는 일이다. CA 증명서를 발급할 뿐만 아니라 증명서를 관리해야 한다. , 증명서가 어느 기간 동안 유효한가를 결정하고, 증명서를 갱신하며, 발급은 되었지만 이상 유효하지 않은 증명서들의 리스트(Certificate Revocation Lists - CRL) 관리해야 한다. 만약 Alice에게 어떤 회사의 직원으로서의 증명서를 발급하였다면 Alice 회사를 떠날 증명서는 취소되어야 필요가 있다. 그러나 증명서는 돌아다니는 것이기 때문에 증명서 자체만으로는 그것이 취소되었다는 것을 알려줄 없다. 따라서 증명서의 유효성(validity) 확인하고자 CRL 체크하기 위해서 증명서를 발급한 CA 문의(contact) 필요가 있다(보통 이것은 자동으로 되는 프로세스가 아니다-- this is not usually an automated part of the process).

Note:

브라우져에 디폴트로 설정되어져 있지 않은 CA 사용하는 경우, 브라우져로 하여금 CA 서명한 server certificate 확인(validate) 있도록 하기 위해 CA certificate 브라우져에 load해야 하는데, 이것은 브라우져가 일단 한번 CA certificate load하면 CA 서명한 모든 certificate 받아들이게 되기 때문에 위험할 있다.

 

Secure Sockets Layer (SSL)

Secure Sockets Layer protocol Reliable connection-oriented network layer protocol (e.g. TCP/IP) Application protocol layer (e.g. HTTP) 사이에 위치하는 Protocol Layer이다. SSL 상호 인증, 무결성을 위한 전자 서명의 사용, privacy 위한 암호화 등을 이용하여 클라이언트와 서버간의 안전한 통신을 제공한다.

프로토콜은 암호화, 다이제스트, 서명을 위한 특정 알고리즘의 선택을 지원하도록 디자인되어졌다. 이것은 특정 서버의 알고리즘 선택이 법적인 문제나 수출법과 같은 문제에 기반하여 이루어질 있도록 해주며, 또한 프로토콜로 하여금 새로운 알고리즘의 채택을 가능하게 해준다. 알고리즘의 선택은 프로토콜 세션이 시작될 클라이언트와 서버 간에 협상(negotiation)된다.

Version:

Source:

Description:

Browser Support:

SSL v2.0

Vendor Standard

(from Netscape Corp.)

[SSL2]

First SSL protocol for which implementations exists

- NS Navigator 1.x/2.x

- MS IE 3.x

- Lynx/2.8+SSLeay

SSL v3.0

Expired Internet Draft

(from Netscape Corp.)

[SSL3]

Revisions to prvent specific security attacks, add non-RSA ciphers, and support for certificate chains

- NS Navigator 2.x/3.x/4.x

- MS IE 3.x/4.x

- Lynx/2.8+SSLeay

TLS v1.0

Proposed Internet Standard

(from IETF)

[TLS1]

Revision of SSL 3.0 to update the MAC layer to HMAC, add block padding for block ciphers, message order standardization and more alert messages.

- Lynx/2.8+SSLeay

Table 4: Versions of the SSL protocol

[Table 4] 보여지는 바와 같이 몇가지 버전의 SSL 프로토콜이 있다. 위에 기술된 바처럼, SSL 3.0 장점 하나는 certificate chain loading 지원한다는 것이며, 이것은 서버가 브라우져에게 issuer certificate 함께 서버의 certificate 넘겨주는 것을 가능하게 해준다. 또한 Chain loading 기능은 해당 서버 certificate 서명한 issuer CA certificate 브라우져에 설치되어 있지 않은 경우에도 server certificate certificate chain 포함되어 있기 때문에 브라우져가 server certificate 확인(validate) 있도록 해준다. Transport Layer Security [TLS] protocol standard SSL 3.0 기반으로 하였으며, 현재 Internet Engineering Task Force (IETF) 의해 개발되고 있다.

Session Establishment

SSL 세션은 [Figure 1]에서와 같이 클라이언트와 서버 간의 handshake sequence 따라 이루어진다. sequence 서버가 server certificate 제공하느냐, 혹은 client certificate 요구하는가에 따라 달라질 있다. Cipher information 관리를 위해 부가적인 handshake step 요구되는 경우도 존재하지만 여기서는 하나의 일반적인 시나리오를 정리한다: 가능한 모든 경우에 대한 설명은 SSL specification 참조하라

Note

일단 SSL 세션이 이루어지면 이것은 재사용되어질 있으며, 이로 인하여 세션을 시작하기 위해 필요한 많은 단계들을 반복함으로써 발생하는 performance penalty 피할 있다. Reusing 기능을 위하여 서버는 SSL 세션마다 유일한 session identifier 할당하며, identifier 서버에 저장되어서 이후에 클라이언트가 다시 연결할 이를 사용함으로써 handshake 줄일 있다(session identifier 서버의 캐쉬에서 지워지기 이전까지 사용할 있다).
 

Figure 1: Simplified SSL Handshake Sequence
 

Handshake sequence 요소는 다음과 같다.

  1. 데이터 전송 시에 사용할 Cipher Suite 협상(negotiation)한다.( Negotiate the Cipher Suite to be used during data transfer)

  2. 클라이언트와 서버 간의 세션키를 공유한다.( Establish and share a session key between client and server)

  3. 부가적으로(Optionally) 클라이언트에게 서버를 인증한다.(authenticate the server to the client)

  4. 부가적으로(Optionally) 서버에게 클라이언트를 인증한다.(authenticate the client to the server)

첫번째 단계인 Cipher Suite Negotiation에서 클라이언트와 서버는 양측 모두가 지원할 있는 Cipher Suite 선택한다. SSL 3.0 프로토콜 규격은 31개의 Cipher Suite 정의되어 있다. 하나의 Cipher Suite 다음의 요소들로 정의된다:

  • Key Exchange Method

  • Cipher for Data Transfer

  • Message Digest for creating the Message Authentication Code (MAC)

Key Exchange Method

Key exchange method 어플리케이션 데이터의 전송에 사용할 공유 비밀키를 어떻게 클라이언트와 서버간에 동의(agree) 것인가를 정의한다. SSL 2.0 RSA 교환만을 지원하지만 SSL 3.0 가지 교환 알고리즘(RSA key exchange, Diffie-Hellman key exchange) 중에 선택할 있도록 지원한다. RSA 교환은 certificate 사용되는 경우에 선택되며, Diffie-Hellman 교환은 certificate 없고 클라이언트와 서버 간의 통신이 이전에 한번도 없는 경우에 선택된다.

Key exchange method 선택에 있어서 하나의 변수는 전자 서명을 사용할 것인가 사용하지 않을 것인가, 그리고 사용한다면 어떤 종류의 서명을 사용할 것인가이다. 개인키를 이용한 서명을 사용함으로써 공유키를 생성하는데 사용되는 정보를 교환할 man-in-the-middle-attack 막을 있다 [AC96, p516].

Cipher for Data Transfer

SSL 세션 내의 메시지를 암호화하기 위해서 위에서 기술된 conventional cryptography algorithm(대칭형 암호화) 사용한다. 암호화를 하지 않는 경우를 포함해서 9가지의 선택이 가능하다:

No encryption

Stream Ciphers

  • RC4 with 40-bit keys

  • RC4 with 128-bit keys

CBC Block Ciphers

  • RC2 with 40 bit key

  • DES with 40 bit key

  • DES with 54 bit key

  • Triple-DES with 168 bit key

  • Idea (128 bit key)

  • Fortezza (96 bit key)

“CBC” Cipher Block Chaining 의미하며, 모드에서는 바로 이전에 암호화된 암호문의 일부가 현재 block 암호화에 사용되어진다. “DES” Data Encryption Standard 의미하며, 여러가지의 variant(DES40, 3DES_EDE) 있다. "Idea" 암호학적으로 가장 강력한 알고리즘이며, "RC2" RSA DSI에서 개발한 독점적인 알고리즘이다.

Digest Function

Digest Function 선택은 record unit으로부터 어떻게 다이제스트가 생성되어지는가를 결정하며, SSL 다음을 지원한다:

  • No digest (Null choice)

  • MD5, a 128-bit hash

  • Secure Hash Algorithm (SHA-1), a 160-bit hash

메시지 다이제스트는 Message Authentication Code (MAC) 생성하는데 사용된다. MAC 메시지와 함께 암호화됨으로써 메시지의 무결성을 제공하며 또한 replay attack 막아준다.

Handshake Sequence Protocol

Handshake sequence 가지의 프로토콜을 사용한다:

  • 클라이언트와 서버 간 SSL 세션 수립을 위한  SSL Handshake 프로토콜.

  • 세션에 사용될 암호 수트(Cipher Suite)를 결정하기 위한 SSL Change Cipher Spec 프로토콜.

  • 클라이언트와 서버 간 에러 메시지를 전달하기 위한 SSL Alert 프로토콜.

Figure 2: SSL Protocol Stack

어플리케이션 프로토콜 데이터 및 이 프로토콜 자체는 Figure 2와 같이, SSL Record 프로토콜에 의해 싸여지며(encapsulated), 아래 계층의 프로토콜은 위의 싸여진 데이터가 무엇인지 상관하지 않고 일반적인 데이터로서 취급하여 전달하게 된다. 프로토콜 계층에서 상위의 싸여진 프로토콜 역시 아래 계층의 프로토콜이 무엇인지 상관하지 않는다.

Record 프로토콜에 의한 SSL 제어 프로토콜의 캡슐화는 만약 활성화된 세션이 재협상(renegotiated)되는 경우 제어 프로토콜이 안전하게 전달될 것임을 의미한다. 만약 이전에 세션이 존재하지 않았다면 널(NULL) 암호 수트가 사용되며, 이는 세션이 수립되기 전까지는 Integrity digest를 가지지 않는 암호화 및 메시지가 존재하지 않는다는 것을 의미한다.
 

Data Transfer


Figure 3: SSL Record Protocol


SSL Record 프로토콜 어플리케이션 데이터와 SSL 관리 데이터 작은 unit 쪼개거나, 복수의 상위 계층 프로토콜 데이터 메시지들을 하나의 unit 결합하여 클라이언트와 서버 간에 전송한다. 이 단계에서 데이터를 압축하고, 전자 서명을 붙이고, Unit들을 암호화한 후 하위의 프로토콜에 실어서 전송하게 된다. (Note: 현재 모든 주요 SSL 구현은 압축을 지원하지 않고 있다). 
 

Securing HTTP Communication

SSL 보통 브라우져와 서버 간의 HTTP 통신을 안전하게 만드는데 사용되며, 경우 non-secure HTTP 사용하지 않는 것이 아니라, SSL 위에서 일반적인 plain HTTP 구현한다(HTTPS라고 한다). 한가지 중요한 차이는 HTTPS 이용할 http 다른 서버 포트(디폴트 443) 사용하는 것이 아니라 https라는 URL scheme 사용한다는 것이며, 이것이 mod_ssl Apche 웹서버에 제공하는 주요한 기능이다.

References

[AC96] Bruce Schneier, Applied Cryptography, 2nd Edition, Wiley, 1996. See

http://www.counterpane.com/ for various other materials by Bruce Schneier.

[X208] ITU-T Recommendation X.208, Specification of Abstract Syntax Notation One (ASN.1), 1988.

See for instance ftp://ftp.neda.com/pub/itu/x.series/x208.ps.

[X509] ITU-T Recommendation X.509, The Directory ? Authentication Framework, 1988.

See for instance ftp://ftp.bull.com/pub/OSIdirectory/ITUnov96/X.509/97x509final.doc.

[PKCS] Kaliski, Burton S., Jr., An Overview of the PKCS Standards, An RSA Laboratories Technical Note, revised November 1, 1993. See http://www.rsa.com/rsalabs/pubs/PKCS/.

[MIME] N. Freed, N. Borenstein, ultipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies, RFC2045. See for instance ftp://ftp.isi.edu/in-notes/rfc2045.txt.

[SSL2] Kipp E.B. Hickman, The SSL Protocol, 1995.

See http://www.netscape.com/eng/security/SSL_2.html.

[SSL3] Alan O. Freier, Philip Karlton, Paul C. Kocher, The SSL Protocol Version 3.0, 1996. See

http://www.netscape.com/eng/ssl3/draft302.txt.

[TLS1] Tim Dierks, Christopher Allen, The TLS Protocol Version 1.0, 1997. See

ftp://ftp.ietf.org/internet-drafts/draft-ietf-tls-protocol-06.txt.

Posted by Golmong
:


90년대 후반 우리나라에도 인터넷이 보편화되고 다양한 IT 기술들이 등장하고 사용되지만 당시에는 많은 IT 기술 문서들이 대부분 영문들이고 한글로 된 기술문서들이 부족했던 시절이었는데, 이에 따라서 KLDP와 같은 다양한 기술문서 한글화 작업 프로젝트들이 많이 시작되었으며 젊은 엔지니어들은 오픈소스 프로젝트와 더불어 이러한 한글화 프로젝트에 contribution 하는 의무감이 유행하던 적이 있었다.
당시 나도 공부도 할겸 RFC나 암호 관련 문서들을 꽤 많이 번역하고 일부는 KLDP 등에 쾌척하면서 스스로 뿌듯함을 느끼던 적도 많았는데, 점점 나이를 먹고 조직에서 직급도 올라가면서 소위 관리 업무들이 많아지니 점점 예전의 그러한 열정을 잃어가고 그 때는 그렇게 재미있게 느껴지던 공부들이 이젠 관심조차 가지 않는 나를 보며 스스로 많이 느슨하게 살고 있다는 느낌을 받을 때가 많아진다.
지금도 예전의 그 열정을 유지할 수 있다면 삶이 조금은 더 나아질 수 있지 않을까....

오랜만에 PC 정리하다가 찾은 그 시절에 아르바이트 겸 공부 겸 해서 번역했었던 Mod_SSL 기술 문서들...
지금 올라와 있는 문서들과 비교하면 introduction 정도 변경이 있는 것 같긴 하지만 핵심 내용은 거의 변경이 없는 듯 하니 혹시나 도움이 되실 분들이 있을까 하여 한번 정리해 올려본다.
지금 보면 짧은 지식에 번역하면서 해석이 이상한 것도 많고 대충 대충 한 것도 많지만 다 과거의 기록이라는 핑계로, 귀찮기도 하니 그냥 올리니 혹시 이상한 부분이 있으면 댓글로 남겨주시면 감사하겠다.

mod_ssl의 최종 문서 주소는 아래와 같다.

http://www.modssl.org/docs/2.8/index.html 

암호 기술 분야의 좋은 점 중 하나는 15년이 지나도 사용되는 기술이 변하지 않는다는 점이 아닐까 싶다. 기껏해야 보안성 강화를 위해 RSA의 키 길이를 1024에서 2048 bit 로 올리는 정도의 변화가 있었을 뿐...
아마도 단언하건데 앞으로 15년 후에도 지금과 동일한 스키마에 동일한 알고리즘이 그대로 사용되고 있을 것이라고 강하게 추정하는 바이다.

Chapter1 OverView

module Eric A. Young Tim Hudson 구현한 SSL/TLS 라이브러리인 SSLeay 이용하여 Secure Socket Layer(SSL v2/v3) Transport Layer Security(TLS v1) 통한 Apache 웹서버의 강력한 암호화 기능을 제공한다.

mod_ssl package 1998 4 Ralf S. Engelschall 의하여 만들어졌으며, Ben Laurie 개발한 Apache-SSL package로부터 구현되었다. Mod_ssl Apache Group 사용한 라이센스와 동일한 BSD 스타일의 라이센스가 적용되며, author copyright 적절한 credit 표시하는 상업적, 비상업적 목적에 모두 사용될 있음을 의미한다.

Module Architecture


Mod_ssl package SSL module mod_ssl 사용하는데 필수적인 요소인 EAPI(Extended API) Apache add하기 위한 소스 패치들의 모음(set)으로 구성된다. Apache 핵심코드(core code) EAPI 포함하고 있어야만 mod_ssl 사용할 있다. 그러나 mod_ssl Apache 소스 트리에 적용할 EAPI 자동으로 add되기 때문에 보통 이것에 신경을 필요는 없으며, 이부분은 Apache 다른 package들과 mod_ssl building하고자 하는 package vendor들에게 중요한 부분이다. Mod_ssl Apache 소스 트리에 적용하는 방법에 대한 자세한 내용은 mod_ssl 배포판 안에 있는 INSTALL 파일을 참조한다.

 

Module Building

SSL module(mod_ssl) Apache 소스 트리의 src/modules/ssl 디렉토리에 위치하게 되며, 이것은 일반적인 Apache module이다. 이는 mod_ssl 다른 Apache module처럼 configure, build, install 있음을 의미한다. 보통 과정은 APACI command 사용하여 수행된다.

$ cd apache_1.3.x/

$ SSL_BASE=/path/to/ssleay ./configure --enable-module=ssl

혹은 src/Configuration 파일에서 SSB_BASE 변수를 직접 수정하고 해당 AddModule directive 주석처리를 없앤 후에 다음의 명령으로 수행할 수도 있다.

$ cd apache_1.3.x/src

$ ./Configure

다른 방법으로 APACI configure command line에서 ?enable-shared=ssl 옵션을 주거나 src/Configuration 파일에서 AddModule ssl_module module/ssl/libssl.a 라인을 SharedModule ssl_module modules/ssl/libssl.so 수정함으로써 Dynamic Shared Object(DSO) 지원을 가능하게 있다.

Mod_ssl DSO building하는 것은 run-time flexibility 향상시킬 있는데 예를 들면 build-time 아니라 run-time에서 SSL 사용할 것인가 사용하지 않을 것인가를 결정할 있다. 그러나 mod_ssl DSO building하는 것은 OS compiler DSO 지원하는가에 따라 달라지며, 모든 platform DSO 지원하지는 않는다.



  
Posted by Golmong
: