이 장에서는 IT 보안을 구현하는 데 사용되는 대표적인 메카니즘에 대해 개략적으로 말한다. 거론되는 메카니즘은 암호, 접근통제 리스트, 인증, 규칙 및 정책 구현, 그리고 가용성 메카니즘이다.
암호에 대한 참고서는 [crypto1].
www.cs.hut.fi/crypto/ [암호 SW에 대한 포인터]
ftp.funet.fi/pub/crypt [탁월함: "꼭 가봐야 할 곳"]
www.counterpane.com/ [Schneier: Blowfish, Twofish]
ftp.psy.uq.oz.au/pub/Crypto/ [E.Young's DES, SSL]
www.systemics.com/ [cryptix Java, C, Perl]
www.eskimo.com/~weidai/cryptlib.html [Wei Dai's C++ lib]
www.cs.hut.fi/ssh/ [Tatu Ylonen's SSH]
cwis.kub.nl/~frw/people/koops/lawsurvy.htm [암호+법]
ftp://ripem.msu.edu/pub/crypt/sci.crypt/ -- sci.crypt Archives
www.swcp.com/~iacr/ -- International Association for 암호학적 연구
www.cs.adfa.oz.au/teaching/studinfo/csc/lectures/classical.html 고전적인 암호 해설
www.cryptosoft.com/snews/snews.htm [암호관련 뉴스기사들에 대한 색인]Securityportal에 저자가 쓴 기사: 국제적으로 사용할 수 있는 강력한 암호 제품들 in September 1999.
키 길이에 대한 논의:
www.counterpane.com/keylength.html (published January 1996)
Byte May 1998 에 실린 훌륭한 기사, by Bruce Schneier [crypto2].
www.ssh.fi/tech/crypto/intro.html
데이타를 교환하는 양쪽 모두 키 를 가지고 있는데, 이 키는 (다른이들은 모름) 한쪽 편에서는 전송전에 데이타를 암호화하는 데, 다른쪽에서는 수신시 복호화하는 데에 쓰인다. 대칭 암호문에는 두가지 종류가 있다: 블록 (한번에 데이타 블록을 암호화) 과 스트림 암호문 (각각의 bit/byte 또는 단어를 순차적으로 암호화). 견본 알고리듬으로:
이점: 공용 키 알고리듬이 비슷한 수준의 공개 키보다 훨씬 빠르다.
단점: 양쪽이 같은 키를 알고 있어야 하므로 이를 교환하기 위한 안전한 방법을 찾아내야 한다. (별도의 안전한 채널을 통해).
대표적인 응용프로그램: 비밀성을 보호하기 위한 정보 암호화. 즉 데이타 파일의 로컬 암호화 (전송이 필요없는), 데이타 세션 암호화, 은행거래시스템 (PIN 암호화).
양쪽 모두 비밀 키 와 공개 키 를 가지고 있다. 비밀키는 각 소유주만 알고있지만, 공개 키는 누구에게나 사용 가능하다 (전화번호처럼). 보내는 쪽은 수신자의 공개키를 가지고 메시지를 암호화하고, 수신자는 자기의 비밀키로 복호화 한다. 이것은 암호화와 복호화에 서로 다른 키를 쓰는 알고리듬이 개발될 수 있다는 Diffie 와 Hellman의 발견으로 가능해졌다 (Stanford 대학교에서, 1975 년 가을). 공개키과 비밀 키가 모여 키 쌍을 이룬다.
다음의 공개키 시스템들이 잘 알려져 있다:
특허: 위의 RSA와 DH는 미국 특허권이 있다. Sunnyvale의 PKP (Public Key Partners)는, CA가 허가권을 가지고 있다. 그렇지만 DH 특허는 현재 만료되었고(19.8.97) RSA 특허는 (미국에서만 유효) 20.9.00.까지만 유효하다 (만료됨). DSS에 영향을 주는 특허 두개가 2008년까지 유효하다 (Scnorr 와 Kravitz의).
강도: 공개키 알고리듬은 풀기 어려운 수학적 문제에 의존한다. 예를들면 유한체 (finite field)에 대한 로그를 취한다든지(Diffie-Hellman) 큰 숫자를 소인수분해하여 (RSA) 단방향 기능 을 생성하는 것이다. 이러한 기능들은 한 방향으로 계산하는 것이 반대방향 계산보다 훨씬 쉬워, brute force 복호화를 사실상 불가능하게 만든다 (적절한 키 크기를 썼을 때, 현재의 컴퓨팅 능력으로는).
타원형 곡선 과 혼합체 발생기 (e.g. RPK at www.rpk.co.nz ) 등과 같은 더 새로운 기술에서는 더 빠른 공개키 시스템을 약속하고 있다.
PK의 이점: 비밀키만 비밀을 유지하면 된다. 공개키만 교환하면 되므로 키교환을 위해 별도의 안전한 채널이 필요하지 않다. 하지만 공개키가 송신자에게 전달될 때에는 그것이 올바른 공개키라는 것을 절대적으로 확신할 수 있는 방법으로 되어야 한다! 공개키 암호 또한 전자 서명 을 위한 방법을 제공한다.
단점: 알고리듬의 수학적 복잡성 때문에 속도가 느리다.
대표적인 응용프로그램: 발신지 증명 보장, 수신자만이 정보를 복호화 할 수 있도록 보장, 대칭 세션 키 전송.
해쉬 기능은 한 블록의 데이타로부터 고정길이 문자열을 만들어 낸다. 기능이 단방향인 경우, 메시지 축약 기능이라고도 불린다. 이 (빠른) 기능들은 메시지를 분석하여 일정한 길이의 사실상 유일한 축약을 만들어낸다. 즉 동일한 해쉬를 가지는 메시지를 찾는다는 것은 매우 빠른 컴퓨터로도 거의 불가능하다. 동일한 축약을 가지는 또다른 메시지를 만들어내는 실현 가능한 방법은 알려지지 않았다. 이러한 알고리듬들은 일반적으로 무결성 확인을 위한 메시지 서명을 생성하는 데 사용된다.
이점: 암호화보다 훨씬 빠르고 결과가 고정길이를 가진다 (따라서 아주 큰 파일이라도 동일한 크기의 축약을 만들어내므로, 데이타 전송시 훨씬 효율적이다).
단점:
대표적인 응용프로그램: 많은 인터넷 서버들은 다운로드 받을 수 있게 돼 있는 중요한 파일들에 대해 MD5 축약을 제공한다. 대부분의 전자 서명 시스템과 안전한 이메일 시스템은 무결성 보장을 위해 축약 기능을 사용한다.
해쉬의 흥미로운 변형으로 메시지 인증 코드 Message Authentication Codes (MAC)가 있는데, 키를 가지는 해쉬 기능이다. MAC을 생성하거나 확인하기 위해서는, 키를 가지고 있어야 한다. 이것은 해쉬가 전송 도중 변경되지 않았다는 것을 입증하는데 유용하다. 두가지 예로 HMAC (RFC 2104) 과 NMAC이 있으며, SHA-1을 기반으로 한다.
PGP, S/MIME, Secure RPC (따라서 secure NFS & NIS+ 도) 및 SKIP 과 같은 응용프로그램들은 부인 방지와 비밀성을 보장하기 위해 공개키 암호와 대칭키 암호를 조합해서 쓴다. (빠른) 서명 생성을 위해서는 해쉬 알고리듬이 사용된다.
암호 시스템에는 몇가지 가능한 취약점들이 있으며, 시스템의 강도는 가장 약한 링크의 강도이다.
다음 논의는 키 길이에 대한 문제에 초점을 두고 있지만, 위의 문제들이 다루어지지 않고는 강력한 키도 아무 소용이 없다!
컴퓨터는 해마다 점점 빨라지고, (계산능력은 2년마다 배가 된다), 저렴해지고 네트웍도 좋아지고 있다. 모든 암호 알고리듬들은 "brute force" 공격(가능한 모든 키 조합을 시도하는) 에 취약하다.
대칭(또는 공용)키 알고리듬:
일반적으로 키 길이가 알고리듬의 암호화 강도를 결정하는데, 대략 2의 키 길이만큼의 거듭제곱 정도의 공식으로 된다.따라서 56 bit 키를 깨는 데는 40 bit 키를 깰 때보다 65,536 배의 시간이 더 걸린다.
대부분의 제품들은 미국에서 나오고 미국 수출규제를 받는다.
공개(비대칭)키 알고리듬:
키 크기에 대한 권고: 어느 정도가 강력한가 ?
암호화 키 크기는 다음을 토대로 선택되어야 한다:
공격자
기간
권고 키 크기
호기심 많은 해커
정보가 며칠동안 보호되어야 한다.
공개키 512 bits
공용키 40 bits
호기심 많은 해커
정보가 최소 2년동안 보호되어야 한다.
공개키 1024 bits
공용키 60 bits
큰 조직
정보가 최소 20년동안 보호되어야 한다.
공개키 1568 bits
공용키 90 bits
정부
정보가 최소 20년동안 보호되어야 한다.
공개키 2048 bits
공용키 128 bits
여기서 강력한 암호화라는 것은 다음보다 크거나 같은 키크기를 사용하는 것으로 정의하도록 하자:
공개키 1568 bits (for RSA, DH and ElGamal)
공용키 90 bits
타원형 곡선이나 Quantum Cryptography 같은 새로운 암호화 시스템에 대해 어느 정도가 "강력한"지 여기서는 아직 정하지 않았다.
위의 참고 부분을 참조한다.
여기 전세계에 걸친 암호관련 법률과 규제에 대한 "국제법 암호 조사" 가 있다: cwis.kub.nl/~frw/people/koops/lawsurvy.htm.이것은, 특히 99년 9월이후로, 빠르게 변하고 있다.
* 다음 [] 부분은 현재 바뀐 부분이 많기 때문에 번역하지 않고 원문만 그대로 둡니다.-역자
[The U.S. and certain other countries consider encryption to be a weapon and strictly control exports. This is basically crippling the efforts to include encryption in Applications, Internet services such as Email and Operating systems.
In general the U.S. allows export of 40bit shared key systems and 512 bit Public Key systems.
Some countries (e.g. France), forbid encryption except when a key has been deposit in an escrow (so the legal authorities can listen to all communications if they need).
Other countries allied to the U.S. (e.g. Germany, UK, Sweden, etc.) also enforce the U.S. restrictions by allowing strong encryption domestically, but restricting export of cryptographic devices.
The OECD made a set of recommendations on international cryptography in June 1997, see www.oecd.org/dsti/iccp/crypto_e.html . Many countries have almost no restrictions, but some (especially European) countries are considering some kind of restriction of the use of cryptography in the future.
The only strong encryption software widely available internationally, known to the author of this document, are from Australia, Finland, Ireland and Russia. ]
DTS는 전자 문서에 대해 안전한 timestamp를 발행한다.
인증서는 개인의 신원에 대해 그의 공개 키를 증명해 주는 전자문서이다. 이들은 특정 공개키가 실제로 추정 소유자에게 속한다는 것을 확인하도록 해준다. ISO 인증서 표준은 X.509 v3 이고 구성요소는: 주체의 이름, 주체의 특성, 주체의 공개키, 유효일, 발행자 이름, 인증서 일련번호 및 발행자 서명이다. X.509 의 이름들은 X.400 메일 주소와 비슷하지만 인터넷 이메일 주소를 위한 필드를 더 가진다. X.509 표준은 S/MIME, SSL, S-HTTP, PEM, IPsec 키 관리에서 사용된다.
LDAP (Lighweight Directory Access Protocol) 은 X.500 기반의 인증서 관리를 위한 디렉토리 서비스이다. PGP5와 같은 어떤 보안 이메일 제품들에는 LDAP 서버 질의와 갱신을 지원하는 기능이 내장되어 있다.
인증서는 인증기관 (CA) 에 의해 발행된다. CA는 신뢰된 기관이며, 사용자의 신원을 입증한다. CA는 신뢰할 수 있는 공개키를(즉, 아주 큰) 가지고 있어야 하며 비밀키는 매우 안전한 장소에 보관해야 한다. CA들은 계층 구조를 이룰 수 있으며, 이 때 낮은 수준의 CA는 높은 CA를 신뢰한다.
송신자와 수신자가 자기의 통신상대방을 절대적으로 확신할 수 있어야 하는 상황에서는, CA가 그런대로 괜찮은 솔루션이다. CA의 또다른 이름은 신뢰된 제삼자(TTP, Trusted Third Party). 양쪽이 모두 공통된 기관을 신뢰한다면, 이 기관은 양측의 신임장을 확인하는 데 이용될 수 있다. E.g. 송신자가 자기의 공개 키, 이름 (및 다른 확인 정보) 을 CA에게 보낸다. CA는 이 정보를 할 수 있는 데까지 입증하고, 패킷에 자기의 각인을 덧붙여 수신자에게 보낸다. 수신자는 이제 송신자가 직접 자기가 누구라고 하는 것 보다 더 확신할 수 있다.
CA의 문제점은 이들을 믿어야 한다는 것이다! 그러나, 은행들 마저도 전세계적 금융 거래 네트웍인 SWIFT를 구현함으로써 그 문제를 극복했다.
다음을 참조한다:
암호화를 이용해 파일의 기밀성을 보호할 때 빈번한 요구사항중 하나가 비상시 파일 접근 (Emergency File Access) 이다. 파일 소유주가 중요한 파일을 암호화 해놓고 키를 잊어버리면 어떤 일이 일어나는가? 두번째 키가 생성되고, 다섯 부분으로 나뉘어져 다섯 (부분) 키 중 어느 두 개라도 조합하면 복호화 키로 사용할 수가 있다. 다섯 개의 (부분) 키들은 다른 사람들이 보관하고 있다가, 원래 소유주가 그 중요 파일을 복화화 할 수 없을 때만 사용되도록 할 수 있다.
PGP의 윈도우 버전은 이러한 키 분할 기능을 지원한다.
안전한 데이타 전송이란 안전하지 못한 (것으로 추정되는) 네트웍을 통해 안전하게 데이타를 교환하는 것이다.
요구 사항
등급 이상의 시스템에서는 안전한 데이타 전송이 요구되고 다음 분류로 나뉘어 질 수 있다:
안전한 데이타 전송은 암호 사용으로 얻을 수 있다. 두가지 주된 암호 방법이 있는데, 공개 키와 공용 키 방식이다. 보통 안전한 통신에는 두개를 혼합해서 사용한다.
안전한 전송을 위한 암호 사용
인증 시스템을 선택할 때, 깨려면 상당한 노력이 필요한 서명 기능과 암호화 방법 및 해쉬 기능을 선택한다.
전 절에 설명한 암호화 알고리듬들을 결합해서 안전한 데이타 전송을 위한 시스템을 만들어낼 수 있다. (아래 그림 참조):
데이타가 전송될 준비가 되었다:
수신 후 데이타는 복호화 된다:
이러한 접근방법을 사용하는 시스템의 예:: Sun의 Secure RPC (hence NIS+, NFS), SKIP, S/MIME도 크게 다르지 않다.
Ftp는 여러 플랫폼에서 표준으로 사용 가능하다. 그래서, 예를 들자면 유닉스와 IBM 메인프레임 간 파일을 전송할 때 편리한 방법이라고 생각하게 될 것이다. (Note: 가능하면 SSH/SCP 를 사용하라, 하지만 SSH는 모든 플랫폼에서 사용 가능하진 않다.) FTP 보안 개선을 위해 어떤 일이 필요한가?
보다 광범위한 SSH와 암호 제품들이 수록된 최신의 기사를 SecurityPortal 에 수록한 관계로 이 절은 축소 했다. 이 기사들을 참고하기 바란다:
[1] 국제적으로 사용가능한 강력한 암호 제품들, sp/int_crypto.html 또는 SecurityPortal 에 실린 버전.
[2] SSH에 관한 모든 것 , sp/ssh-part1.html 또는 SecurityPortal 에 실린 버전.
넷스케이프의 secure socket layer 는 클라이언트 & 서버 인증, 무결성 검사, 압축 및 암호화를 제공하는 "플러그 인" socket layer 이다 (443 포트 또는 HTTP with SSL). 현재는 인터넷 초안이다 (아직 승인 안됨), 아래 TLS 절을 참고.
TCP/IP 스택의 전송 계층에 맞게 설계되었고 (Berkeley sockets 처럼), 응용프로그램들 (telnet, ftp, HTTP 같은) 아래에 있다. SSL은 1994년 7월에 발표되었다. 이것은 인터넷 WWW 상용 응용프로그램에서 사용되도록 설계되었고, LAN 에서도 사용할 수 있다. 넷스케이프 Navigator 와 마이크로소프트 explorer 모두 SSL V2 와 V3 를 지원한다. SSL3를 지원하는 웹서버로 아파치와 넷스케이프가 있다.
알고리듬:
클라이언트는 서버에 연결해서 지원되는 암호화 알고리듬 목록을 보낸다. 서버는 알고리듬 이름, 공개 키, 공용 키 및 해쉬 알고리듬 이름으로 응답한다. 클라이언트는 공개 키가 진짜 그 서버의 것인 지를 검사할 수 있다. 클라이언트는 세션 키를 생성해서 서버의 공개 키로 암호화, 서버에게 전송한다. 서버는 이 세션키를 (자신의 비밀 키로) 해독 하고, 이를 사용하여 그 세션동안 전송되는 데이타를 암호화 한다. 클라이언트는 임의의 문자열을 세션키로 암호화하여 서버에게 보내 서버를 검사한다. 서버는 수신을 확인한다.
위의 인증 기법은 서버가 클라이언트를 인증하는 데에도 사용할 수 있으나, 이 때 서버가 클라이언트의 공개키를 가지고 있어야 한다 (WWW 응용프로그램의 경우 해당이 안됨).
참고:
TLS (Transport Layer Security)
1995 년, IETF는 SSL을 TLS라는 인터넷 표준으로 채용하는 작업을 시작했다. 1997년 3월에 SSL 3.0을 기반으로 하여 프로토콜 초안이 발표되었다. 몇 가지 차이점은 무결성 검사에 MD5 대신 HMAC을 사용하고 지원되는 암호 알고리듬이 약간 다르다는 것이다. www.consensus.com/ietf-tls 또는 www.ietf.org/html.charters/tls-charter.html 참조.
마이크로소프트의 Private Communication Technology (PCT) 는 SSL을 대체하기 위해 만들어졌다. 이것은 본질적으로 좀더 일반적이다.인증과 암호화 협상이 분리되어 있다. 이것은 마이크로소프트의 Explorer 3.0 에서 사용되며 다른 어떤 것과도 호환되지 않지만, 표준이 될 지도 모른다.
마이크로소프트는 IETF (1996년 4월) 와 넷스케이프에, 인터넷 상거래를 위한 호환성 있는 솔루션을 보장하기 위해 SSL/PCT 조합의 구현을 제안했다. pct.microsoft.com 참조 (옛날 링크인데 대체사이트가 발견되지 않음)
S-HTTP 는 HTTP 프로토콜의 연장으로 "일반" TCP/IP 상에서 돌아갈 수 있고, CommerceNet 에서 개발했다. 트랜잭션 기밀성을 위한 서비스를 제공하며, 응용프로그램 계층에서, secure HTTP 연결에서 동작한다. 현재 구현된 것은 CommerceNet CA 이다.
전자 상거래는 다음을 위한 안전한 방법을 필요로 한다:
제품 견본:
SET (Secure Electronic Transmission)
Secure Electronic Transmission은 전자 상거래를 위한 프로토콜 세트로 VISA, MasterCard 및 American Express에 의해 제안되었다 (1996년 2월부터). SET은 MIME 을 사용하여 메시지를 전송한다. SET 1.0 은 1997년 5월 공개되었고, TCP/IP 뿐만 아니라 대부분의 매체를 통해 통신할 수 있다.
인증: 서버은 인증을 요구하고, 서버 키는 CA에 의해 인증되며, 클라이언트와 키가 교환되고 거래가 발생한다. SET 전자 인증에는 계정 번호와 공개 키가 포함된다.
SET 2.0: 버전 2.0 은 필요성이 많은 암호화 중립적 아키텍쳐의 특징을 가지게 되어, 더 빠른 (SET 1.0에서 쓰인 RSA 암호화보다) 전자 상거래 응용프로그램의 개발을 촉진할 것이다. Certicom, 애플 컴퓨터, 그리고 RPK 같은 벤더들은 모두 스스로를 RSA에 대한 대안으로 자리매김 하려 하고 있다. 타원형곡선 암호시스템 (Elliptic Curve Cryptosystem, ECC)은 Certicom 과 애플 양쪽에서 밀고 있는 기술이다.
제품:
표준 DNS가 각 DNS 도메인이 공개 키를 가지고 병렬 공개 키 기반구조를 제공하도록 확장되었다. 도메인 키는 부팅시 올라오거나 부모 도메인으로부터 안전하게 전송된다.
BIND의 새로운 버전도 참조한다. ftp://ftp.isc.org/isc/bind/src/ , www.tis.com 그리고 IETF charter www.ietf.org/html.charters/dnssec-charter.html.
AccessData 라는 회사에서는 (Utah, phone 1-800-658-5199, www.accessdata.com ) WordPerfect, Lotus, Microsoft Office 및 ACT, Quattro Pro, Paradox, PKZIP, 등등에서 사용하는 내장된 암호화 체계를 부수는 패키지를 ~ $200 에 판다.
이것은 단순히 패스워드를 추측하는 것이 아니다 ? 실제 암호 해독을 하는 것이다.
읹으은 어떤 주체의 신원을 확일하는 프로세스이다. 주체는 (주도자,당사자라고도 불리는) 사용자가 될 수도 있고, 시스템 또는 프로세스가 될 수도 있다 즉, "네트웍 실체" 이다. 인증은 양쪽이 모두 알고 있으나 다른이들은 모르는 어떤 것, 즉 주체의 특성이나 가지고 있는 또는 알고있는 어떤 것을 사용한다. 따라서 이것은 생체 측정이 될 수도 있고 (지문, 망막 패턴, 손모양/크기, DNA 패턴, 필적 등), 패스프레이즈(passphrases), 패스워드, 일회용 패스워드 목록, ID 카드, 스마트 토큰, challenge-response 목록 등이 될 수 있다. 어떤 시스템은 이들의 조합으로 구성되기도 한다.
오늘날 강력한 인증기법 중 가장 흔한 것은 일회용 패스워드 목록 (종이), 자동 패스워드 생성기 (스마트 토큰) 및 지능적 ID 카드이다.
현재는 산업 표준이 없다. 여러가지 많은 노력들이 진행중이다. 특히 Federated Services API, GSS API 그리고 RADIUS 는 벤더들이 기존의 제품을 버릴 필요 없이 현재의 비호환 시스템들을 상호연결하는 논리적인 방법인 듯 하다. 하지만 그런 API가 기본적인 기능 이상의 것을 제공한다는 것이 상상이 잘 안되긴 한다.(앞선 기능들이 모든 제품에 공통적인 것은 아니므로). IETF 에도 현재 활동중인 인증 그룹이 여러 개 있다:
전사적 인증과 네임 서비스용으로는 DCE, NIS+ 와 NODS 가 현재의 선두 주자들이며, 마이크로소프트의 Active Directory service (planned for release with NT5 ) 는 이미 NT 도메인 사용 기업의 관심을 끌고 있다. X.500 디렉토리 서비스는 이들 대부분에서 볼 수 있을 것이며, 상호 운용 게이트웨이 구축을 허용하게 된다. DCE 나 NIS+ 가 PC 클라이언트를 완전히 받아들이지 않은 것은 유감이지만, 이는 아마도 가격과 복잡성의 문제를 반영하는 것이다.
SSH 는 유닉스 시스템에의 안전한 접근을 위한 정말 인상적인 제품이다. RSA, SecurID 또는 UNIX 사용자/패스워드 인증을 사용할 수 있다.
안전하지 않은 네트웍을 가로지르는 인증을 위해서는, 인증서나 토큰 기반 인증을 사용하는 고유(비호환, 고비용) 암호화 방화벽이 현재의 해결책이다. 추후 있음직한 SKIP 이나 IPsec 같은 제안표준 수용으로, 바라건대, 장기적인 상호 운용성이 제공될 것이다.
클라이언트/서버 응용프로그램은 IBM 메인프레임으로부터 VMS, UNIX 에서 PC 까지 여러가지의 많은 시스템들에서 운영된다. 불행히도 이 시스템들은 각각 자기만의 사용자 인증 방식을 가지고 있다. 데이타베이스 로그인은 대개 OS (사용자) 로그인과 통합되지 않는다. 보통은 사용자 이름과 패스워드로 시스템에 대해 사용자를 인증한다. 각 시스템과 응용프로그램이 자신의 로그온 프로세스를 가지고 있다면, 사용자는 (아마도) 서로 다른 사용자 이름과 패스워드 배열에 마주치게 된다. 이것은 진짜 보안 위험을 야기한다. 사용자가 여러가지 패스워드를 모두 적어놓거나, 거의 바꾸지 않거나, 단순한 것을 사용하게 되기가 쉽기 때문이다.
이상적인 해결책은 안전한 single signon 을 제공하는 것이다. 즉 사용자가 네트웍상의 어떤 워크스테이션에 로그온 할 때, 그의 신원이 인식되고 모든 시스템이나 응용프로그램과 공유될 수 있다. 모든 사용자는 아무곳에서나 어떤 시스템에라도 동일한 이름과 패스워드를 가지고 서명할 수 있다. 사용자는 하나의 패스워드만 기억하면 된다. 더욱 안전한 signon은 사원 ID 카드를 이용하여 사용자를 확인하거나 (각 워크스테이션의 카드 판독기로) 들고 다니는 스마트 카드를 이용하는 것이다 (일회용 패스워드와 함께).
Single signon 을 구현하는 것은 현대의 이질적 환경에서는 쉽지 않은 작업이지만, Kerberos 가 주요 주자인 것 같고 SUN의 NIS+도 선택사항인 것 같다.
강력한 인증은 (보통) 사용자가 알고 있는 어떤 것과 (e.g. 패스워드) 사용자가 가지고 있는 어떤 것에 (e.g. 목록, 스마트 카드) 의존한다. 응용프로그램은 인증 메카니즘을 지원해야 한다 (또는 인증 메카니즘이 응용프로그램에게 투명해야 한다). 다음은 강력한 방화벽 인증 방법/제품 견본이다.
Telnet, Rlogin 또는 ftp (쓰기가능) 같은 프로토콜이 허용되는 경우, 방화벽에서의 강력한 인증 메카니즘은 매우 중요하다. TCP/IP 는 본질적인 보안 취약점을 가지고 있으며 (기밀성, IP spoofing) 이들은 강력한 인증 제품에서 다루어야 한다. 키를 사용하는 경우, 키 분배가 고려되어야 한다.
표준은 없으며, 각 제품은 자신의 API를 가지고 있고 상호운용은 대개 아주 힘들다. 어떤 방화벽 인증 서버는 접착제 처럼 동작해서, 여러가지 인증제품에 공통 데이타베이스 사용을 허용하고 있다 (예로써 Gauntlet 인증 서버가 있다).
HTTP 에서는 기본 인증 방식이 지원된다.
알고리듬: WWW 클라이언트가 기본 인증으로 보호되는 문서에 대한 요청을 보낸다. 서버는 접근을 거부하고 기본인증이 필요하다는 헤더 정보와 함꼐 401코드를 보낸다. 클라이언트는 사용자에게 사용자이름과 패스워드를 넣을 다이얼로그를 띄워주고, 이를 서버에게 보낸다. 서버는 사용자이름과 패스워드를 검사하고 맞으면 문서를 보낸다.
암호화: 매우 약하다. 사용자 이름과 패스워드는 base64 방식으로 부호화된다. 문서는 평문으로 보내진다.
NT의 도메인은 (IBM/Microsoft) Lan Manager (LM)의 확장이며, 계층적이지 않고 도메인 기반이다 - 즉 분리된 LAN 들에 더 적합하다.
LM 인증은 몇 개의 변형이 있다: PC NETWORK PROGRAM 1.0, MICROSOFT NETWORKS 3.0, DOS LM1.2X002, DOS LANMAN2.1, Windows for Workgroups 3.1a, NT LM 0.12, CIFS. 마지막 두 개가 가장 관심을 끄는 것으로 NT4 에서 사용되었다.
Kerberos는 MIT 에서 Athena 프로젝트가 개발한 키 네트웍 인증 서비스이다. 이것은 분산, 실시간 환경에서 네트웍 자원에 대한 요청을 인증하기 위해 사용된다. DES (즉 공용키) 암호화 및 CRC/MD4/MD5 해쉬 알고리듬이 사용된다. 소스 코드는 무료로 얻을 수 있고 (비상용 버전을 위한), Kerberos는 여러가지 많은 시스템에서 돌아간다.
Kerberos는 인증 기관 역할을 하며 키와 티켓을 관리하는 "보안 서버" 또는 Kerberos 서버 (KDC)를 필요로 한다. 이 서버는 각 주체에 대한 (사용자 또는 호스트) 비밀 키 데이타베이스를 유지하며, 보호되는 네트웍 자원에 접근하고자 하는 주체의 신원을 인증하고, 두 사용자가 안전하게 통신하고자 할 때 세션 키를 생성한다.
Kerberos 인증 시스템은 여러가지 버전이 있다 :V3 (MIT), V4 (상용: Transarc, DEC) 및 V5 (in beta/RFC 1510, DCE, Sesame, NetCheque). BSDI 는 Kerberos 서버를 번들로 제공하는 유일한 OS 이다. Solaris 2 는 Kerberos 클라이언트를 번들로 제공하는데, 무엇보다도 NFS가 인증을 위해 Kerberos를 사용할 수 있게 해준다.
[마이크로소프트는 NT5 에서 Kerberos 를 지원할 계획인데, 기존 버전과 얼마나 호환될 지는 두고 봐야 한다.]
Gradient (www.gradient.com)는 DCE를 기업 보안의 중심이 되게 하기 위한 솔루션을 제공한다. SecurID나 Entrust PKI 인증서와 같은 non-Kerberos 인증 시스템에 대한 PC-DCE 인터페이스이다.NetCrusader 보안 서버는 여러가지 인증 원소들을 DCE 원소에 매핑시키기보다 다양한 응용프로그램을 보안 API와 어댑터를 통해 서로 연결하며 SSL,SAP,People's Tools API, Oracle/Sybase 및 Orbix와도 인터페이스 된다.
Kerberos도 문제가 없는 것은 아니다:
NIS+ 는 계층구조의 전사적 네임 시스템으로, Secure RPC를 기반으로 한다. 디폴트 구성에서는 사용자,그룹,서비스 네이밍, automounter 및 키 분배를 제공한다. NIS+는 맞춤테이블을 정의할 수 있도록 쉽게 확장될 수 있다.
NIS+는 유닉스의 실제적 표준인 NIS (Network Information System, or yellow pages) 의 개선된 버전이다. NIS 와 NIS+ 는 Sun 에서 개발했다. NIS는 대부분의 유닉스 플랫폼에서 사용가능하지만 보안이 매우 취약하다. NIS+는 훨씬 더 안전하지만 Sun의 Solaris와 최근에는 HP-UX 및 AIX 에서만 사용가능하다.
보안은 Secure RPC의 사용을 기반으로 하는데, SecureRPC는 또 Diffie/Hellman 공개 키 암호 시스템을 사용한다.
단점:
BoKS는 PC 및 유닉스 시스템을 위한 완전한 인증/single signon 패키지로서, 스웨덴의 DynaSoft 에서 만들었다. DynaSoft는 10년 정도 되고 직원이 50명 정도인 회사이다. 다음은 그 홈페이지에서 추출한 것이다: www.dynas.se/prod/prod_eng.html :
The BoKS 개념은 1987년부터 DynaSoft 가 개발하고 개선해 왔다. 이것은 접근 통제, 강력한 인증, 암호화, 시스템 감시, 알람 및 감사 추적 등과 같은 분야를 다루는 종합적인 보안 솔루션이다. BoKS 는 유닉스 및 도스/윈도우 환경에서 동작하며, 높은 신뢰성을 제공하고 대부분의 유닉스 플랫폼에 올라간다. BoKS 는 또 Tivoli 같은 전사적 관리 시스템 및 Oracle이나 Sybase 같은 데이타베이스 응용프로그램과도 통합될 수 있다.
BoKS는 Secure Dynamics SecurID 스마트 토큰을 사용한다. 저자는 실제로 BoKS에 대한 경험이 많지 않지만, 높은 수준의 보안이 요구되는 곳에서 광범위하게 쓰이고 있는 것으로 보인다. 유닉스 (SunOS, Solaris and HP-UX) 와 PCs (Windows & NT) 에서 운영된다. BoKS 는 공용 키 암호화를 사용한다.
S/Key는 Bellcore 에서 만든 일회용 패스워드 시스템이다. 공개 버전으로 사용 가능하다. 특징은:
OPIE는 U.S. Naval Research Laboratory 에서 만든 공개 도구이다. OPIE 는 S/Key 버전1의 개선된 버전으로 POSIX 호환 유닉스 류의 시스템에서 운영되며 S/Key에 비해 다음의 추가적인 특징을 가진다:
Secure Dynamics (현재는 RSA Security:역주) 의 SecurID 시스템은 현재 시장에서 보다 인정받는 제품들 중 하나이다. 대부분의 클라이언트와 동작하며 (유닉스, NT, VPN 클라이언트, 터미날 서버 등) 많은 방화벽들에서 SecurID 지원을 제공한다. 사용자 데이타베이스를 관리하고 접근을 허가/거부하는 서버는 ACE 라고 한다. 저자는 이 시스템을 사용해서 다양한 클라이언트 상의 수백명 사용자들에게 안전한 원격 접근을 제공한 적이 있다.
토큰은 SecurID 라는 이름을 가지고 기본적으로 신용카드 크기의 마이크로 컴퓨터로, 일분마다 유일한 패스워드를 생성한다. 이에 덧붙여 각 사용자는 4문자의 핀코드를 가지고 있다 (카드 도난에 대비). 사용자가 로그온 했을 때, 자기 핀(PIN)을 입력하고, 거기에 SecurID 토큰에 나타난 현재 패스-코드를 입력한다. 서버는 동일한 알고리듬과 비밀 암호화 키를 가지고 있어, 양쪽이 모두 안전하게 인증할 수 있도록 한다. Win95/NT용 소프트웨어 토큰도 있고 모토롤라에서 만든 SecurID 모뎀도 있다. 토큰은 보통 3년 정도 간다.
이러한 형태의 인증은 강력하지만, 세션이 하이잭 당할 위험이 있다. (예를 들어 일회용 패스워드가 자주 바뀌지 않을 때).
비용: 스마트 토큰은 대개 $60 (매 3년) 정도 하는데, 사용자가 많이 있으면 비싸게 보일 수 있는 가격이다, 특히 서버 소프트웨어비용이 사용자당 $150 씩 추가될 때.
안정성: 저자는 ACE 서버를 200 명의 사용자. 설치가 좀 불편하긴 하지만, 매우 견고하고 한번도 고장난 적이 없다 (Solaris 2.5 나 2.7에서).
서버는, 고가용성을 위해 미러링을 지원하는데, 유닉스에서 운영되고, 클라이언트들은 거의 모든 플랫폼이 가능하다. ACE는 Motif GUI를 통해 구성되는데 확실히 완전하지는 않다. 좀더 유용한 GUI 는 NT 원격 관리 도구에서 사용할 수 있다. ACE 는 NT/RAS,ARA, XTACACS 및 RADIUS 인증 프로토콜을 지원한다. www.securitydynamics.com/products/datasheets/asvrdata.html 또는 www.securitydynamics.com 을 참조한다. 몇몇 syadmin 들의 노트를 보려면 www.livingston.com/tech/docs/radius/securidconfig.html 를 참조한다.
Secure Computing www.securecomputing.com 의 Safeword 는 ACE/SecurID 의 직접적인 경쟁자이다. 서버는 유닉스상에서 운영된다. TACACS, TACACS+ 와 RADIUS 같은 많은 인증 프로토콜을 지원한다.
많은 토큰 종류가 지원된다: Watchword, Cryptocard, DES Gold & Silver, Safeword Multi-sync 및 SofToken, AssureNet Pathways SNK (SecureNet Keys). www.safeword.com/welcome.htm 를 참조한다.
Racal Guardata 에서 만든 이 일회용 패스워드 시스템은 SecurIDs 의 경쟁자로, 좋게 인정받고 있다. 기본적으로 다음과 같이 동작한다:
공격은 선택된 평문 추측의 형태로 발생할 수 있다. Racal Guardata 에서는 Access Gateway도 생산한다.
AssureNet Pathways 에서 만든 이 시스템은 NT에서 운영되므로(위의 대부분처럼 유닉스가 아니고) NT 서버 사용자들에게 흥미가 있을 것이다. 특징: ARA, NT/RAS, TACACS+ 를 통한 인증. 데이타베이스 복제를 통해 다중 서버가 가능하다.
사용되는 토큰은 SecureNet Keys (SNK) 하드웨어나 소프트웨어 토큰이다. challenge/response 인증은 DES를 사용하고, PIN 은 절대로 네트웍을 통해 전송되지 않으며 민감한 정보는 암호화된다. www.axent.com/product/def2.htm 참조
Merit Network 과 Livingston 은 신원확인과 인증을 위한 RADIUS 프로토콜을 개발하였다. IETF 에 RADIUS 표준을 정의하는 작업 그룹이 있다.
XTACACS 는 다중 프로토콜을 지원하는 BBN으로부터 나온 UDP 기반 시스템인 TACACS (Terminal Access Controller Access System)를 강화한 것이다. SLIP/PPP, ARA, Telnet 및 EXEC 프로토콜을 지원한다.
역시 TACACS 를 강화한 것이지만(CISCO에서), XTACACS 나 TACACS 와 호환되지는 않는다. SLIP/PPP 와 telnet에 덧붙여 S/key, CHPA, PAP 를 통한 인증을 허용한다. 인증과 인가가 분리되어 있으며 개별적으로 구성이나 기능하도록 할 수 있다.
PAP (패스워드 인증 프로토콜) 은 사용자 이름과 패스워드를 서버에 평문으로 전송한다. 패스워드 데이타베이스는 약하게 암호화된 형식으로 저장된다. CHAP (Challenge Handshake Authentication Protocol) 은 challenge/response 교환으로 각 로그인마다 새로운 키가 사용된다. 그러나, 패스워드 데이타베이스는 암호화되지 않는다. 몇몇 벤더들은 PAP 와 CHAP 프로토콜을 강화시킨 변형들을 제공하는데, 예를 들면 CHAP에서 패스워드를 암호화된 형식으로 저장하는 것 등이다.
ACL 은 누가 (또는 무엇이) 어떤 객체에 접근할 수 있는지를 ( e.g. 사용,읽기,쓰기,실행,삭제 또는 생성할 수 있는 지) 정의한다. 접근 통제 목록 (ACL) 은 데이타 기밀성과 무결성을 보장하기 위해 사용되는 주된 메카니즘이다. A system with 임의적 접근통제 (discretionary access control) 를 가지는 시스템은 사용자들 간의 차이를 판별할 수 있고 각 객체에 대해 ACL을 관리한다. ACL 이 사용자 (또는 데이타 소유주)에 의해 수정될 수 있는 경우, 임의적 접근 통제 로 간주된다. ACL이 시스템에 의해 지정되어야만 하고 사용자가 변경할 수 없는 경우, 강제적 접근 통제 가 사용되고 있는 것이다. 유닉스에서 OS서비스나 응용프로그램에의 접근에 대한 표준화된 ACL은 없다.
특정 환경을 안전하게 하기 위해서는, 규칙 및 정책이 구현될 수 있게 하는 메카니즘이 필요하다. 네트웍 전반에 걸쳐 유닉스 시스템에 규칙과 정책을 구현하는 것은 쉬운 일이 아니며 대개는 스크립트 개발도 필요하다. 또다른 가능성은 Tivoli 같은 도구를 사용하는 것인데, 이것은 네트웍으로 연결된 이기종 환경에서 규칙과 정책을 구현하도록 설계된 것이다.
NT 는 사용자 마다 전부는 아니지만 어느정도의 권한을 설정할 수 있도록 해 준다. 이것은 유닉스에서와는 매우 다른 접근방법이다. ("NT" 장 참조). 서버 네트웍에 걸쳐 규칙과 정책을 구현하는 것도 표준화된 유틸리티에 의해 지원되지 않는다.
주의해야할 것들:
전산 환경은 에어 컨디셔닝, 잠겨진 서버실 및 UPS (220V 보호) 등으로 보호될 수 있다. and UPS (220V protection).
Redundancy 는 가용성을 높여주고 하드웨어로 구현될 수도 있고(RAID), 디스크 드라이버 또는 OS (RAID) 또는 응용프로그램/서비스 레벨에서 구현될 수도 있다.(e.g. Replication, transaction monitors, backup domain controllers).
사용 가능한 경우에는, 대개 이것이 가장 저렴하고 쉬운 방법이다. 주된 문제는 이런 유형의 중복성을 지원하는 응용프로그램이 거의 없다는 것이다. 이러한 서버들에 연결하는 클라이언트들은 1차 서버가 사용 불가능할 경우 자동적으로 백업이나 복제 서버를 찾는다.
시스템 가용성을 높이는 고전적인 방법은 컴퓨터의 가장 약한 부분을 복제하는 것이다: 바로 디스크이다. RAID (Redundant Array of Inexpensive Disks) 는 중복성을 높이기 위해 표준 디스크들이 어떻게 사용되는 가를 정의하는 사실상의 표준이다. 최고의 RAID 시스템들은 디스크,디스크 콘트롤러, 전원공급장치 및 통신 채널을 복제한다. 가장 단순한 RAID 시스템은 소프트웨어로만 이루어진 디스크 드라이버로, 분리된 디스크들을 하나의 중복 세트로 함께 묶는다.
RAID에는 5개의 레벨이 있다:
RAID 시스템에서 주의해야 할 점:
응용프로그램에서 자체적으로 중복성을 제공하지 않는다면, 특별한 소프트웨어 (그리고 어쩌면 하드웨어도)를 두 대의 시스템에 설치하여 Hot Standby 기능을 제공한다. 원리는 다음과 같다: 두 시스템 모두 공유 디스크(고가용성, 이중 포트)에 접근할 수 있고 중복된 네트웍 연결을 가진다. 백업 시스템은 주 시스템을 지속적으로 감시하다가 주 시스템이 작동하지 않는 것을 알게 되면, 공유 디스크를 제어하고, 주 시스템과 같은 네트웍 주소를 가지도록 자기 자신을 재구성하고, 마스터에서 돌아가던 응용프로그램들을 시작한다.물론 이것은 특정한 응용프로그램인 경우에만 동작한다. e.g. 주서버가 고장나서 주요 응용프로그램이 구성이나 데이타 파일을 파괴한다면 백업 서버는 그 응용프로그램을 시작할 수 없을 것이다.
이것의 예로는 IBM의 HACMP 제품, 또는 Sun의 HA cluster 가 있다.
전문화된 컴퓨터 시스템들은 한대의 시스템에서 완전한 중복성을 제공한다. 즉 CPU, 메모리, 디스크 등등... 이 모두 중복되어 있다. 단일점에 의한 고장이 없다. 이러한 시스템들은 대개 특별히 맞추어진 운영체제를 필요로 하며, 엄청난 비용이 들고 주류 시스템들과 거의 호환성이 없다. 사업용으로는 드물게 쓰이며, 대부분 군용이나 특별한 금융적 용도로 쓰인다.