주요 내용
- FIPS 준수 여부는 암호화 라이브러리 설치뿐만 아니라 전체 운영 체제 환경에 달려 있습니다.
- 호스트 커널이 검증된 FIPS 모드에서 실행되지 않는 한 "FIPS 컨테이너"는 준수하지 않습니다.
- 볼트온 암호화 모듈은 네이티브 OS 암호화에 비해 종종 불안정성과 복잡성을 야기한다.
FIPS 준수 달성 리눅스 환경에서 FIPS 준수 을 달성하는 것은 종종 보이는 것보다 더 복잡합니다. 많은 조직이 FIPS 지원을 주장하는 타사 암호화 모듈이나 컨테이너 이미지에 의존하지만, 이러한 설정은 실제로 FIPS 140-3 검증 프로그램 을 충족하지 못하거나 진정한 FIPS 140-3 준수을 제공하지 못할 수 있습니다.
네이티브 FIPS 구현과 후속 암호화 기술의 차이는 규정 준수 심사 통과 여부를 가를 수 있습니다.
네이티브 FIPS 암호화 모듈 대 드롭인 암호화 모듈
최근 CentOS 7을 운영하는 고객과 상담했는데, 해당 고객은 여러 연방 고객을 지원하고 엄격한 FedRAMP 암호화 요구사항을 충족하기 위해 검증된 암호화가 필요했습니다. CentOS 자체가 FIPS 인증을 받지 않았기 때문에, 그들은 타사 OpenSSL 및 Java FIPS 공급자에 의존했습니다.
이후 그들은 TuxCare의 FIPS 인증 AlmaLinux 9 ESU( FIPS 인증 리눅스 환경)로 이전했으며, 커널부터 시스템 전체에 걸쳐 암호화가 구성되는 방식 덕분에 더 이상 FIPS 140-3 요구사항을 충족하기 위해 추가 소프트웨어를 구매할 필요가 없다는 점에 매우 만족했습니다. OS가 이를 자동으로 처리해주기 때문입니다. 연간 159달러에 불과한 ESU로 전환하는 것은 월 100달러에서 연간 25,000달러까지 비용이 드는 소프트웨어를 사용하는 것보다 훨씬 현명한 선택입니다!
또한 그들은 MySQL 데이터베이스가 이 긴밀한 통합과 OpenSSL 같은 시스템 라이브러리에 연결되어 운영체제 전용으로 설계되지 않은 별도 추가 소프트웨어보다 더 안정적으로 실행된다고 언급했습니다. 실제로 이전에는 FIPS 모드에서 실행을 시도할 때 서버 충돌을 경험한 바 있습니다. ESU로 전환함으로써 FedRAMP 배포가 가능해졌습니다.
여러 고객들이 제3자 포크 대신 AlmaLinux OS에 내장된 소프트웨어를 사용함으로써 성능이 향상되었고, 구형 운영체제에서의 마이그레이션이 더 쉬워졌다고 언급했습니다.
TuxCare의 AlmaLinux 9 ESU FIPS 인증서는 FIPS 140-3 표준을 기반으로 하며, 대부분의 추가 소프트웨어가 사용하는 이전 140-2 표준이 아닙니다. FIPS 140-2 인증서가 역사적 목록으로 이동함에 따라, 새로운 연방 조달에서 점점 더 수용되지 않고 있습니다. TuxCare의 솔루션을 사용하면 이 문제는 사라집니다. 귀사의 인프라가 FIPS 140-3 검증 암호화로 미래에 대비하게 됩니다.
컨테이너 신화
또한 우리는 "FIPS 컨테이너 이미지"를 판매받은 사람들과도 만났습니다. 이 이미지들은 종종 FIPS 컨테이너 로 마케팅되는 경우가 많습니다. 그러나 이러한 제품은 공인된 암호화 및 보안 테스트 연구소(CSTL)에서 테스트를 거친 운영 환경(OE)에서 실행되지도 않으며, 따라서 어떤 FIPS 인증서에도 등재되지 않았고 NIST의 승인도 받지 않았습니다. 따라서 이러한 제품은 유효하지 않을 뿐만 아니라 작동조차 하지 않을 수 있습니다.
컨테이너는 호스트 OS 커널을 상속하므로, 반드시 FIPS 인증 커널을 갖춘 호스트에서 실행되어야 합니다. FIPS 인증 커널 가 FIPS 모드로 작동하는 환경에서 실행되어야 합니다. 이 환경은 라이브러리와 애플리케이션이 FIPS 모드를 감지하고 강제 적용하는 데 사용하는 /proc/sys/crypto/fips_{enabled,name,version} 지표들을 노출합니다. 라이브러리와 애플리케이션은 이를 통해 FIPS 모드를 감지하고 강제 적용합니다. 호스트 OS가 FIPS 모드로 실행되지 않는다면, 컨테이너 역시 FIPS 모드로 실행되지 않습니다.
이는 특히 IPSEC이나 OpenVPN과 같은 VPN을 실행하는 컨테이너에서 중요합니다. 이러한 프로토콜은 커널 암호화 API를 사용하기 때문에, 잘못된 호스트 커널을 사용할 경우 VPN이 규정을 준수하지 못하게 되어 국방부 네트워크에 연결할 수 없게 됩니다.
Ubuntu 24.04 호스트에서 컨테이너로 OpenSSL 3.1.2를 실행하는 환경(FIPS 활성화 여부와 무관하게)은 유효하지 않습니다. 이 환경에서는 FedRAMP 심사를 통과할 수 없으며, 미국 또는 캐나다 정부에 솔루션을 판매할 수 없습니다.
AlmaLinux가 시스템 전체에 걸쳐 FIPS를 어떻게 적용하는가
AlmaLinux 9 ESU의 커널 및 다양한 라이브러리 및 시스템 구성 요소(GnuTLS, Libgcrypt, NSS, NSPR, OpenSSL, libkcapi, nettle…)가 FIPS 인증을 획득했으므로, 이 운영 체제는 특정 소프트웨어가 아닌 인증된 환경을 제공합니다. 이는 암호화 환경이 OS 자체에 내장된의 장점 중 하나로, 암호화 환경이 OS 자체에 내장되어 있습니다.
예를 들어, CentOS Linux는 FIPS 인증을 받은 적이 없었기 때문에, 사람들은 일반적으로 시스템을 불안정하게 만드는 결과만 초래하는 추가 모듈과 복잡한 구성 및 소프트웨어 조정으로 어떤 형태의 FIPS "준수"를 달성하려고 시도했습니다.
AlmaLinux의 시스템 전체 암호화 정책을 통해 암호화 설정은 한 곳에서 중앙 집중식으로 관리됩니다. 이를 통해 개별 서비스나 애플리케이션을 따로 설정할 필요가 없습니다. fips=1 커널 매개변수를 사용하거나 fips-mode-setup –enable를 실행하는 것만큼 간단합니다. 적절히 구성된 FIPS 지원 커널를 사용하면 OpenSSH, Kerberos, bind9 등을 승인된 방식으로 자동 구성할 수 있습니다. 자세한 내용은 /usr/share/crypto-policies/FIPS/를 참조하십시오.
결과가 말해준다
FIPS 모듈(Rocky Linux 9.6을 공급업체 승인 운영 환경으로 FIPS 인증서에 추가하기 위한 필수 요건)의 내부 테스트 일환으로, 기존에 C 언어로 작성된 해당 모듈에 대해 TuxCare의 Endless Lifecycle Support for Runtimes 제품군도 함께 테스트하기로 결정했습니다. 우리는 OS와 중앙 집중식 암호화 시스템이 해당 소프트웨어를 FIPS 승인 방식으로 실행할 수 있음을 입증하는 여러 해석형 언어 스크립트를 작성했습니다. 이를 통해 애플리케이션이 사용할 수 있는 알고리즘과 프로토콜을 NIST 프로그램에서 승인한 것으로 제한하면서도, 프로그램 자체를 수정하지 않고도 대부분 구현할 수 있었습니다.
실제 애플리케이션이 이 환경에서 얼마나 잘 동작하는지 검증하고 FIPS 140-3 준수 여부를 검증하기 위해을 유지하기 위해, 기업 배포에 사용되는 여러 일반 런타임을 테스트했으며 그 결과는 아래에 상세히 기술되어 있습니다. 또한 요청 시 고객에게 테스트 스크립트와 기술 지원을 제공할 수 있습니다.
.NET
일부 경우 .NET의 내장 System.Security.Cryptography가 Linux 호스트에서 FIPS 140-3 준수를 완전히 강제하지 않는다는 점을 확인했습니다. 따라서 OpenSSL을 네이티브로 호출하도록 전환하는 것을 권장합니다.
Java
OpenJDK에는 여러 암호화 공급자가 있으며, 각각 FIPS 준수 측면에서 고유한 취약점을 지닙니다. 엔터프라이즈 리눅스 배포판에서는 SunPKCS11-NSS-FIPS를 권장하지만, 이 경우에도 단순히 차단하고 오류를 반환하기보다는 NSS가 사용하는 FIPS 지시자를 반드시 확인해야 합니다.
Python
파이썬의 cryptography 모듈은 네이티브 OpenSSL 라이브러리 호출을 사용하므로 바로 사용할 수 있습니다.
PHP
PHP 역시 시스템 OpenSSL을 사용하지만 처리해야 할 몇 가지 특이점이 있습니다. 예를 들어, PHP는 FIPS 모드에서 OpenSSL이 반환하는 것보다 더 많은 타원 곡선을 지원 대상으로 나열하는데, 이는 주로 "지원"이 해당 곡선을 사용할 수 있다는 의미가 아니라 PHP가 이를 인식한다는 의미이기 때문입니다. 일반적으로 사용하려는 암호화 알고리즘과 해시 함수를 명시적으로 지정하고, 해당 항목들이 FIPS 규정을 준수하는지 확인해야 합니다.
Node.js
Node.js crypto 패키지는 다시 시스템 OpenSSL에 링크되며 다음과 같은 라이브러리 호출을 수행합니다. EVP_PKEY_keygen() 와 같은 라이브러리 호출을 수행하므로 매우 잘 작동합니다.
최종 생각
FIPS 준수란 단순히 암호화 라이브러리를 설치하는 문제가 아닙니다. 이는 커널부터 애플리케이션이 의존하는 런타임 라이브러리에 이르기까지 전체 운영 환경에 달려 있습니다.
네이티브 시스템 수준의 FIPS 검증은 추가 암호화 기술에서 흔히 발생하는 복잡성과 불안정성을 제거합니다.
정부 계약이나 FedRAMP 같은 규정 준수 프레임워크를 위해 FIPS에 의존하는 환경이라면, 가장 안전한 접근 방식은 FIPS 인증을 받은 Linux 운영 체제로 시작하는 것입니다. FIPS 인증을 받은 Linux 운영 체제 를 사용하는 것입니다. 이 운영체제는 검증된 암호화를 기본적으로 제공하며 현대적인 FIPS 140-3 준수 요구 사항을 지원하는
FIPS 및 확장 보안 업데이트에 대한 자세한 내용은 당사의 AlmaLinux용 FIPS 사이트를 참조하십시오.






