2009.10.31 15:33 Etc../Encryption


 

패딩은 무엇인가?

ECB, CBC 모드의 DES, Blowfish 같은 블럭 암호 알고리즘은 암호 입력이 블럭 크기의 정확한 배수가 되어야 한다.
만약, 암호화될 평문이 정확한 배수가 아니면, 암호화전에 패딩 데이터를 추가하는 것이 필요하다.
복호화할때, 수신측은 명백한 방법으로 패딩을 제거하는 방법을 알아야 한다.



5가지 일반적인 방법.

1. 패딩되는 바이트의 수의 같은 값으로 모두 패딩 : PKCS7 패딩
2. 0x80 패딩 후 0으로 패딩
3. 0으로 패딩 후 마지막 바이트는 패딩되는 바이트의 수로 패딩 : ANSIX923 패딩
4. 0으로 패딩 : Zeros 패딩
5. 0x20으로 패딩



랜덤 패딩

만약 전송할 메시지가 블럭 길이보다 작고, ECB 모드로 암호화된다면, 암호문은 동일한 메시지에 동일한 값이 될것이다.
한 해결책은 위 3번째 방법을 사용하되, 0 대신 랜덤 값을 패딩해라.




언제 패딩을 해야하고 언제 안해야 하나?

1. 일반적인 방법으로, 만약 프로그래머로서 당신이 제어할 수 없는 가변 길이의 데이터를 암호화한다면,
CBC 모드로 패딩해라. 모호함을 피하기위해서, 패딩을 추가하는 표준 방법을 항상 사용해라.
2. 만약 평문이 항상 고정 길이를 가진다면, 패딩 사용을 피할 수 있다. -> 고정 길이와 블록 길이가 같다는 조건이 필요
3. 암호화에 CFB 또는 OFB 모드가 사용되거나 RC4 등 스트림 암호 알고리즘이 사용된다면, 패딩을 할 필요가 없다.

출처 : http://www.di-mgt.com.au/cryptopad.html



 

NET Framework Class Library

(System.Security.Cryptography, PaddingMode Enumeration)

대부분의 일반 텍스트 메시지는 블록의 바이트 수가 완전히 채워져 있지 않으므로 마지막 블록을 채우기에 바이트가 모자란 경우가 가끔 있습니다. 이런 경우에는 택스트에 패딩 문자열이 추가됩니다. 예를 들어, 블록 길이가 64비트이고 마지막 블록에 40비트만 있으면 패딩 문자열 24비트가 추가됩니다.

일부 암호화 표준이 특정한 패딩 구성표를 지정합니다. 다음 예제에서는 이러한 모드의 작동 방식을 보여 줍니다. 블록 길이가 8, 데이터 길이가 9, 8진수 패딩 수가 7 그리고 데이터가 FF FF FF FF FF FF FF FF FF인 경우 결과는 다음과 같습니다.

데이터: FF FF FF FF FF FF FF FF FF
a. None : FF FF FF FF FF FF FF FF FF
아무 것도 채워지지 않았습니다(*. 파일 암호화시 문제가 발생한다).

b. X923 패딩: FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 07
ANSIX923 패딩 문자열에서는 마지막 바이트를 총 패딩 바이트 수로 설정하고 나머지 바이트는 0으로 채웁니다.

c. PKCS7 패딩: FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07
PKCS #7 패딩 문자열은 바이트 시퀀스로 구성되어 있으며, 각각의 시퀀스는 추가된 패딩 바이트의 전체 수와 동일합니다. 

d. ISO10126 패딩: FF FF FF FF FF FF FF FF FF 7D 2A 75 EF F8 EF 07
ISO10126 패딩 문자열에서는 마지막 바이트를 총 패딩 바이트 수로 설정하고 나머지 바이트는 임의의 데이터로 채웁니다.

e. Zeros 패딩 : FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00
패딩 문자열은 0으로 설정된 바이트로 구성됩니다.

출처 : MSDN


'Etc.. > Encryption' 카테고리의 다른 글

Cryptography!  (0) 2010.06.16
What is CRC?  (0) 2009.11.06
What is Padding?  (0) 2009.10.31
Posted by LinkC

블로그 이미지
LinkC

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

공지사항

Yesterday31
Today2
Total331,153

달력

 « |  » 2019.8
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

최근에 받은 트랙백

글 보관함


. .