이 단원에는 RPCSEC_GSS API의 개발 및 특징에 대한 설명이 나와 있습니다.
RPC에서 처음으로 지원된 보안 플레이버는 AUTH_SYS(AUTH_UNIX라고도 함)였습니다. AUTH_SYS는 사용자와 그룹 ID를 사용하여 메시지 발신자와 수신자를 식별하는 UNIX 스타일의 증명서를 제공했었습니다. AUTH_SYS는 구현하기가 쉽지만 정확한 인증을 제공하지 않았기 때문에 보안을 유지하기 어려웠습니다. 즉, 승인을 요청하는 클라이언트가 실제 그 클라이언트인지 서버에서 확인할 방법이 없었던 것입니다. 따라서 AUTH_SYS를 사용할 때는 비교적 쉽게 네트워크 요청을 도용할 수 있습니다.
AUTH_SYS가 개발된지 얼마 되지 않아 곧 다음 버전의 보안 플레이버인 AUTH_DES가 제공되었습니다. AUTH_DES는 공개키 인증을 기반으로 하며, 클라이언트의 개인키와 서버의 공개키 사이에 공통키를 생성하기 위해 Diffie-Hellman 키 교환을 사용합니다. 생성된 공통키는 DES 세션키를 암호화하기 위해 사용되며, 이 세션키는 서버가 세션을 구축할 때 해독됩니다.
AUTH_DES는 AUTH_SYS에 비해 상당히 향상되었지만 광범위한 사용에 있어서 어느 정도의 제한이 있습니다. 현재 암호화 표준에서 볼 때 많은 사용자가 사용하기에는 키 크기가 작다는 것이 가장 큰 결점입니다.
마지막으로 또 하나의 RPC 보안 플레이버가 소개되었습니다. AUTH_KERB는 Kerberos V4를 기반으로 AUTH_DES나 AUTH_SYS보다 향상된 보안을 제공합니다. 그러나 이것 역시 도용 가능성이 있습니다.
이러한 보안 플레이버에 대한 자세한 내용은 ONC+ DEVELOPER'S GUIDE를 참고하십시오.
보안 성능을 향상시키기 위해 새로운 네트워크 계층인 일반 보안 표준 API 즉, GSS-API가 추가되었습니다. GSS-API 프레임워크에서는 인증 외에 두 가지 보안 서비스를 추가로 제공합니다.
무결성. 무결성 서비스의 경우, GSS-API는 기본 메커니즘을 사용하여 프로그램 간에 교환된 메시지를 인증합니다. 암호 검사합계는 다음을 설정합니다.
수신자에 대한 데이터 작성자의 ID
작성자에 대한 수신자의 ID(상호 인증이 요청될 경우)
전송된 데이터 자체의 인증
프라이버시. 프라이버시 서비스에는 무결성 서비스가 포함되어 있습니다. 또한 전송된 데이터는 도용을 방지하기 위해 암호화됩니다.
미국 수출 제한에 따라, SEAM을 사용하더라도 프라이버시 서비스를 사용할 수 없는 경우가 있습니다.
현재 GSS-API는 응용 프로그램 레벨에서 사용할 수 없습니다. 그러나 일부 GSS-API 기능은 RPCSEC_GSS 기능을 통해 사용할 수 있으며 이 기능들은 "불투명(opaque)" 방식으로 조작할 수 있습니다. 프로그래머들은 이 기능들의 값에는 직접 관여할 필요가 없습니다.
ONC RPC 응용 프로그램에서는 RPCSEC_GSS 보안 플레이버를 통해 GSS-API의 기능을 이용할 수 있습니다. RPCSEC_GSS는 다음과 같이 GSS-API 계층의 "최상위"에 위치합니다.
RPCSEC_GSS 프로그래밍 인터페이스를 사용하면 ONC RPC 응용 프로그램에서 다음을 지정할 수 있습니다.
보안 모델로, 각 유형의 보안 메커니즘이 여러 수준의 다양한 데이터 보호를 제공합니다. 이 경우 모든 보안 메커니즘(Kerberos V5, RSA 공개키 등)은 GSS-API에 의해 지원됩니다.
프라이버시나 무결성 서비스입니다(또는 둘 다 해당 없음). 기본적으로는 무결성 서비스가 제공되며 이 서비스는 특정 메커니즘에 국한되지 않습니다.
보호 수준으로, 프라이버시나 무결성 서비스를 구현하기 위해 사용되는 암호화 알고리즘의 유형을 지정합니다. 각 보안 메커니즘에는 관련 QOP가 여러 개 포함될 수 있습니다.
응용 프로그램에서는 RPCSEC_GSS가 제공하는 기능을 통해 유효한 QOP와 메커니즘 목록을 얻을 수 있습니다( "기타 함수" 참고). 개발 시 응용 프로그램에 메커니즘과 QOP를 하드코딩하지 않아야 나중에 다른 메커니즘과 QOP를 사용할 때 응용 프로그램을 수정할 수 있습니다.
원래 "보안 플레이버"와 "인증 플레이버"는 같은 의미였습니다. 그러나 RPCSEC_GSS의 도입과 함께 "플레이버"는 약간 다른 의미로 사용되었습니다. 이제 플레이버는 인증과 함께 서비스(무결성 또는 프라이버시)를 포함하지만 현재 이에 해당하는 플레이버는 RPCSEC_GSS뿐입니다.
ONC RPC 응용 프로그램에서는 다른 플레이버와 마찬가지로 RPCSEC_GSS를 사용하여 동배와 보안 콘텍스트를 설정하고, 데이터를 교환하고, 콘텍스트를 폐기합니다. 일단 콘텍스트가 설정되면 응용 프로그램은 전송된 각 데이터 단위에 대해 QOP와 서비스를 변경할 수 있습니다.
RPCSEC_GSS 데이터 유형 및 RPCSEC_GSS에 대한 자세한 내용은 rpcsec_gss(3N) 매뉴얼 페이지를 참고하십시오.