BDES(1)

명칭
bdes - Data Encryption Standard 에 의한 암호화 / 복호화(decode)

서식
bdes [-abdp] [-F N] [-f N] [-k key] [-m N] [-o N] [-v vector]

해설
bdes 하 그리고 규정되는 모든 DES 모드 처리를 실장하고 있습니다. 새로운 암호화 피드백 모드 (alternative cipher feedback mode (CFB))(와)과 양쪽 모두의 인증 모드도 포함됩니다. bdes (은)는 표준 입력을 읽어 표준 출력에 써냅니다. 옵션을 지정하지 않으면, 입력은 암호화 블록 연쇄 모드 (cipher block chaining mode (CBC))로 암호화됩니다. 암호화와 복호화(decode)에 동일한 열쇠를 사용하는 것으로 평문을 복원합니다.

전자 암호표 모드 (electronic code book mode (ECB)) 이외의 모든 모드는 초기화 벡터 (initialization vector)를 필요로 해, 지정되지 않는 경우는 제로 벡터가 사용됩니다. 명령행에 key (열쇠)(을)를 지정하지 않는 경우는, 대화적으로 입력을 요구합니다 (자세하게는 getpass(3) (을)를 참조해 주세요).

옵션은 다음과 같습니다:

-a  열쇠와 초기화 벡터 캐릭터 라인은 ASCII 캐릭터 라인으로서 다루어져 “0X”, “0x”, “0B”, “0b” 그럼 글자 만캐릭터 라인에 대한 특별한 변환은 되지 않습니다. 이 플래그는, 열쇠와 초기화 벡터의 양쪽 모두 에 작용합니다.

-b  전자 암호표 모드 (ECB)로 동작합니다.

-d  입력을 복호화(decode) 합니다.

-F N
    N 비트 의 새로운 암호화 피드백 모드 (CFB)로 동작합니다. 현재 상태로서는 N (은)는 7 이상 56 이하의 7 의 배수인 것이 필요합니다 (이 제한은 새로운 암호화 피드백 모드 (CFB)의 사양에는 적합하지 않습니다).

-f N
    N 비트 의 암호화 피드백 모드 (CFB)로 동작합니다. 현재 상태로서는 N (은)는 8 이상 64 이하의 8 의 배수인 것이 필요합니다 (이 제한은 표준의 암호화 피드백 모드 (CFB)의 사양에는 적합하지 않습니다).

-k key
    key (을)를 암호화 방식의 열쇠로 합니다.

-m N
    입력을 N 비트의 메세지 인증 코드 (message authentication code (MAC)) 그리고 처리합니다. N (은)는 1 이상 64 이하인 것이 필요합니다. N 하지만 8 의 배수가 아닐 때, MAC 의 bit length가 8 의 배수가 될 때까지 0 의 비트를 덧붙일 수 있습니다. 출력은 반드시 MAC 가 됩니다. MAC 는 암호화 블록 연쇄 모드 (CBC) 혹은 암호화 피드백 모드 (CFB)에서만 유효합니다.

-o N
    N 비트 의 출력 피드백 모드 (output feedback mode (OFB))로 동작합니다. 현재 상태로서는 N (은)는 8 이상 64 이하의 8 의 배수인 것이 필요합니다 (이 제한은 OFB 모드의 사양에는 적합하지 않습니다).

-p  패리티 비트의 리셋트를 하지 않습니다. 이 플래그에 의해 열쇠의 패리티 비트는 입력된 대로 해석되어 각각의 캐릭터를 홀수 패리티로 고치는 것은 하지 않습니다. 열쇠가 ASCII 캐릭터 라인의 경우에게만 사용됩니다.

-v vector
    초기화 벡터로서 vector (을)를 사용합니다. vector 는 열쇠와 같은 방식에서 해석됩니다. vector 는 전자 암호표 모드 (ECB)에서는 무효입니다.

열쇠와 초기화 벡터는 ASCII 캐릭터 라인으로서 주어져 그대로의 비트 줄로서 다루어집니다. “0X” 혹은 “0x” 그럼 글자 기다리고 있는 경우, 비트 줄을 나타내는 16 진수치 (으)로서 다루어집니다. “0B” 혹은 “0b” 그럼 글자 기다리고 있는 경우는, 비트 줄을 나타내는 2 진수치 (으)로서 다루어집니다. 어느 쪽의 경우에서도, 최초의 64 비트까지가 열쇠 혹은 초기화 벡터로서 사용되어 64 비트에 못 미친 경우는 64 비트가 될 때까지 0 의 비트가 추가됩니다.

DES 표준에 따라, 열쇠 캐릭터 라인의 각 캐릭터의 최하정도 비트는 깎아집니다. 대부분의 ASCII 캐릭터의 최상정도 비트는 0 이므로, 단순하게 하위 비트를 깎으면(자), 유효한 열쇠 공간의 크기는 2^56 개로부터 2^48 개까지 축소합니다. 이것을 막기 위해, 최상정도 비트는 최하정도 비트에 부분적으로 의존하는 함수인 것이 필요합니다. 예를 들면, 최상정도 비트는 홀수 패리티를 채우는 것 같은 값이 되도록(듯이) 설정되도록(듯이) 하는 방법이 있습니다. 이것으로 열쇠 공간의 크기가 보관 유지됩니다. 이 패리티 비트의 재설정은, 열쇠가 2 진수 혹은 16 진수로 주어졌을 경우에는 행해지지 않습니다. 게다가 ASCII 의 열쇠여도 재설정하지 않게 할 수 있는 것을 주의해 둡니다.

DES (은)는 매우 강고한 암호법으로 여겨지고 있어 table lookup attacks, key search attacks, 및 Hellman's time-memory tradeoff (이것들은 모두 대단한 수고와 시간을 필요로 합니다)(을)를 제외하면, 공의 문헌에 관한한 DES (을)를 돌파하는 해석법은 알려져 있지 않습니다. 열쇠의 선택과 열쇠 그 자체의 보안이 bdes 의 신뢰성을 결정하는 것이라고 믿어 틀림없습니다.

실장에 관한 주
이 프로그램과 호환성이 있는 소프트웨어를 실장하고 싶은 사람은, 이하의 점에 주의해 주세요. 이 소프트웨어는 Sun Microsystems, Inc. 하지만 공개하고 있다 data encryption standard 의 실장과 호환인 것으로 되어 있습니다.

전자 암호표 (ECB) 모드 및 암호화 블록 연쇄 (CBC) 모드에서는, 평문이 64 비트 (8 바이트 = 1 블록) 단위로 암호화됩니다. 평문의 파일이 올바르게 암호화되는 것을 프로텍션하기 위해서, bdes (은)는 (내부 동작으로서) 1 에서 8 바이트를 추가해, 그 중의 마지막 바이트는, 마지막 블록이 평문의 파일로부터의 입력으로서 몇바이트를 읽어들여 암호화했는지를 나타냅니다. 따라서, 복호화(decode) 때에는 마지막 블록은 0 에서 7 캐릭터까지의 평문데이터와 말미의 바이트로서 그 캐릭터수를 포함합니다. 복호화(decode) 시에 파일의 마지막 바이트가 0 에서 7 까지의 사이의 정수가 아니었던 경우, 파일이 파괴되고 있을까 잘못한 열쇠가 지정되었는지의 어느 쪽인지인 것에 주의해 주세요. 같은 기구가 OFB 와 CFB 의 모드에서도 이용되고 있습니다만, 그것들에서는 입력의 길이가 모드 사이즈의 배수인 것이 필요한 만큼으로, 마지막 바이트는, 0 인가, 모드 사이즈로서 사용되는 아르바이트수로부터 1 을 줄인 수치가 됩니다. (이것은 모드 사이즈가 8 의 배수인 것이 필요한 이유의 하나입니다. )

Sun 의 실장과 달리, 마지막 블록내의 이용되지 않는 바이트는 부정이 아니고, 하나전의 블록의 대응하는 바이트와 같게 됩니다. 이것에 의해, 암호화의 강도를 해치는 일 없이, 처리 속도와 이식성을 개선하고 있습니다.

열쇠가 ASCII 캐릭터 라인으로 입력되었을 경우, 열쇠의 각 캐릭터의 패리티 비트는 홀수 패리티가 되도록(듯이) 설정됩니다. Sun 의 실장과 달리, 2 진 혹은 16 진의 열쇠도 명령행으로 지정할 수 있습니다만, 그 경우, 패리티 비트가 재설정되는 것은 없습니다 이것에 의해 임의의 비트 패턴을 열쇠로서 시험할 수가 있습니다.

Sun 의 실장에서는 항상 초기화 벡터를 0 (전부 0)으로 하고 있습니다. bdes 그렇지만 기정 동작은 같습니다만, 명령행으로부터 지정해 변경할 수 있습니다.

관련 항목
crypt(3), getpass(3) Data Encryption Standard, Federal Information Processing Standard #46, National Bureau of Standards, U.S. Department of Commerce, Washington DC, January 1977. DES Modes of Operation, Federal Information Processing Standard #81, National Bureau of Standards, U.S. Department of Commerce, Washington DC, December 1980. Dorothy Denning, Cryptography and Data Security, Addison-Wesley Publishing Co., Reading, MA, 1982. Matt Bishop, Implementation Notes on bdes(1), Technical Report PCS-TR-91-158, Department of Mathematics and Computer Science, Dartmouth College, Hanover, NH 03755, April 1991.

면책조항

    THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    ARE DISCLAIMED.   IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    SUCH DAMAGE.

버그
DES 하지만 향후의 몇 년간도 안전한지 어떤지에 임해서 격렬한 논쟁이 있었습니다. 전용 하드웨어의 출현에 의해 전술의 각종 공격 방법의 비용이 저감 되는 것은 있으므로, 이러한 공격 방법이 계산량의 점으로부터 비현실적이다고는 이미 말할 수 없습니다.

열쇠 혹은 열쇠의 일람을 메모리에 납입할 수 있으므로, 메모리를 읽어낼 수 있는 경우는 암호화의 안전성이 손상될 가능성이 있습니다. 게다가 명령행으로 열쇠나 초기화 벡터를 지정했을 때에는, 프로그램의 인수를 표시하는 프로그램에 의해 감청될 가능성도 있습니다. 이것을 회피하기 위해서 bdes (은)는 인수를 덧쓰기합니다만, 유감스럽지만, 이것들이 경합 하는 것은 분명해, 현재 상태로서는 회피할 수 없습니다.

어떤 종류의 열쇠는 잠재적인 위험을 반입하게 되므로, 사용을 피해야 합니다. 이러한 열쇠는, 약한 열쇠 (weak key) (와)과 약간 약한 열쇠 (semiweak key) (으)로 불리고 있어 이하의 것입니다 (16 진수 표기로 p (을)를 0 혹은 1 으로 해, P (을)를 ‘e’ 혹은 ‘f’ (으)로 한다) :
0x0p0p0p0p0p0p0p0p | 0x0p1P0p1P0p0P0p0P
0x0pep0pep0pfp0pfp | 0x0pfP0pfP0pfP0pfP
0x1P0p1P0p0P0p0P0p | 0x1P1P1P1P0P0P0P0P
0x1Pep1Pep0Pfp0Pfp | 0x1PfP1PfP0PfP0PfP
0xep0pep0pfp0pfp0p | 0xep1Pep1pfp0Pfp0P
0xepepepepepepepep | 0xepfPepfPfpfPfpfP
0xfP0pfP0pfP0pfP0p | 0xfP1PfP1PfP0PfP0P
0xfPepfPepfPepfPep | 0xfPfPfPfPfPfPfPfP

이것은 DES 알고리즘에 고유의 성질입니다 ( Moore, Simmons, Cycle structure of the DES with weak and semi-weak keys, Advances in Cryptology - Crypto '86 Proceedings, Springer-Verlag New York, 1987, pp. 9-32. (을)를 참조).