FreeBSD 핸드북 : 보안 : DES, MD5, 그리고 Crypt
Previous: 보안
Next: 'crypt'메카니즘의 이해

6.1. DES, MD5, 그리고 Crypt

Garrett Wollman <wollman@FreeBSD.ORG> 저
24 September 1995,

손준완 <jws@is.tsukuba.ac.jp> 역..
1998년 5월 27일.

UN*X 시스템의 패스워드 보안이 간단히 노출되는 것을 방지하기 위해 패스워드는 종래부터 한 방법에 의해 스크람블되어 왔습니다. 벨 연구소의 유닉스 제7판이 나온 이후로 패스워드는 보안전문가들이 "일방향 해쉬함수(one-way hash fuction)"라고 부르는 방법을 이용해 암호화됩니다. 즉, 가능한의 전부의 패스워드 공간을 검색하는 맹목적인(brute-force) 방법을 제외하고는 그 오리지날 패스워드를 획득하는 것이 불가능하게 패스워드가 변환되어집니다. 불행히도, 그 당시 AT&T의 연구자들이 이용가능했던 유일의 암호화 기법은 DES(Data Encryption Standard)에 근거한 것들이었습니다. 이것은 영리기업에 있어서는 그다지 중요한 문제가 되지 않았지만, FreeBSD처럼 전 소스 코드가 자유롭게 입수 가능한 운영체제에 있어서는 심각한 문제가 되었습니다. 왜냐하면, 다수의 정부가 DES 및 다른 암호화 소프트웨어가 국경을 넘어가는 것에 제한을 두려고 했기 때문입니다.

여기서 FreeBSD팀은 하나의 딜레마에 직면하였습니다. 즉, 어떻게하면 법에 저촉되지 않고 국외에 있는 그들의 유닉스 시스템 전부에 호환성을 가지게 하는 것이 가능할까라는 것이었습니다. 그리하여 그들은, "dual-track approach"를 채용하기로 결정했습니다. 규제되어 있지 않는 패스워드 스크람블만을 담고 있는 배포용을 만들고, DES에 근거한 패스워드 해쉬를 추가 라이브러리로서 나누어 공급하는 것입니다. 패스워드에 스크람블을 추가하는 함수는 C 라이브러리에서 'libcrypt'로 불려지는(그것을 실행시키는 C 함수가 'crypt'라는 이름이기 때문입니다.) 별도의 라이브러리로 옮겨졌습니다. FreeBSD 1.x 및 2.0의 릴리즈 전의 스냅샷(snapshot)에서는, 그 규제되어져 있지 않는 스크람블러로는 Nate Williams에 의해 작성된 안전하지 않는 함수를 쓰고 있지만, 다음의 릴리즈에서는 RSA Data Security사의 일방향 해쉬함수 MD5를 사용하는 방법으로 대처되었습니다. 이들 함수는 어느 것이든 암호화를 필요로 하지 않기 때문에 미합중국에서의 수출 및 타국에서의 수입이 가능하게 되어져 있는 것입니다.

한편, DES에 근거한 패스워드 해쉬함수에 대한 작업 또한 진행중이었습니다. 우선, 미합중국 및 타국에서 쓰여진 코드의 동기를 해가며 미합중국 외부에서 작성된 'crypt'의 한 버젼이 수입되었습니다. 그리고 나서 라이브러리는 수정되어져 2개로 나눠졌습니다. 즉, DES 'libcrypt'는 일방향 패스워드 해쉬를 수행하는데 있어서 필요한 코드만을 가지고, 그것과는 별도의 'libcipher'가 실제의 암호화를 수행하기 위한 엔트리 포인터로서 생성되어졌습니다. 컴파일되어진 라이브러리에 대해서 국외 수출 허가를 얻는 것을 간단히 하기 위해서 코드는 이처럼 나눠졌던 것입니다.

6.1.1. 'crypt'메카니즘의 이해


FreeBSD 핸드북 : 보안 : DES, MD5, 그리고 Crypt
Previous: 보안
Next: 'crypt'메카니즘의 이해