ESP Header 구조

OnNet Technology 2009. 8. 22. 11:01


 



Security Parameters Index (M)
Sequence Number (M)
Payload Data (M)
Padding (O) - Padding 이 필요할때만 해당 필드가 생기고 값이 들어간다.
Pad Length (M)
Next Header (M)
Authentication Data (O) - ESP 가 Authentication 이 Enable 되어 있을 경우만 해당 필드가 생기고 Auth 결과가 들어간다.


1.Padding 에 들어가는 데이터는?
 -RFC1423 에서는 Padding 크기가 1이면 0x01, 2이면 0x0202, 3이면 0x030303 ..... 7이면 0x07070707070707 이런식으로 들어갔지만
 RFC2406 에서는 Padding 크기가 1이면 0x01, 2이면 0x0102, 3이면 0x010203 ..... 7이면 0x01020304050607 이런식으로 들어간다.

2.Padding 에 들어갈 크기는 어떻게 계산되는가?
 -암호화 알고리즘에 따라 다르다. 예를 들어 DES-CBC-64 일 경우 8Byte boundary 를 맞춰줘야 한다.
 
 Padding Size X = Boundary - ( ( 데이터의 크기 + Pad Length 1Byte + Next Header 1Byte ) % boundary )
 
 예)데이터의 크기가 40byte 이면 Padding Size = 8 - ( ( 40 + 1 + 1 ) % 8 ) = 6 이된다.
  데이터 40Byte + Padding (0x010203040506, 6Byte) + Pad Length 1Byte + Next Header 1Byte = 48Byte
 예)데이터의 크기가 39Byte 이면 Padding Size = 8 - ( ( 39 + 1 + 1 ) % 8 ) = 7 이된다.
  데이터 39Byte + Padding (0x01020304050607, 7Byte) + Pad Length 1Byte + Next Header 1Byte = 48Byte

3.Payload Data 안은 어떻게 생겼는가?
 -DES-CBC-64 기준으로 다음과 같이 생겼다.
 

 -IV (8Byte) 는 Initialization Vector 로써 CBC (Cipher Block Chaining) 사용할때 필요한 초기 값이다.
 이 값으로 XOR 연산을 실행해서 데이터를 더 보호한다고 하는데 자세한건 검색해서 자료를 찾아보면 된다.
 
 -IV값은 Encrypt 할때 포함시키지 않는다.
 
 -IV값은 처음에는 랜덤으로 생성되고, 그 다음 데이터를 보낼때는 이 전에 보낸 Encryption 된 데이터의 하위 8Byte 값을 이용한다.
 
 ESP Sequence 1번의 IV 값 : d3 41 e5 16 83 a4 75 f3
 ESP Sequence 1번의 Encryption 된 데이터의 하위 8Byte : 17 1f 09 b6 b3 f8 d4 69
 ESP Sequence 2번의 IV 값 : 17 1f 09 b6 b3 f8 d4 69
 ESP Sequence 2번의 Encryption 된 데이터의 하위 8Byte : e3 d0 7d e1 a2 78 b1 54
 ESP Sequence 3번의 IV 값 : e3 d0 7d e1 a2 78 b1 54
 ESP Sequence 3번의 Encryption 된 데이터의 하위 8Byte : b2 b7 56 a8 31 ea c7 ce








Posted by 용학도리
,