Tink 자체는 FIPS 140-2가 확인되었습니다. 하지만 여러 FIPS를 140~2개의 승인된 알고리즘과 기본 구현에서 활용할 수 있음 검증된 암호화 모듈 BoringSSLs BoringCrypto. Tink에는 WORKSPACE: FIPS 모드에서 BoringSSL을 빌드합니다.
작업공간에서 기본적으로 BoringSSL 사용이 보장되지는 않습니다. FIPS를 준수합니다. 자세한 내용은 공식 보안 정책이 있습니다.
지원되는 알고리즘
Tink의 다음 알고리즘은 다음에 따라 승인됩니다. FIPS 140-2 (자세한 내용은 FIPS 140-2 부록 A):
- 인증된 암호화
<ph type="x-smartling-placeholder">
- </ph>
- AES-GCM
- AES-CTR-HMAC-SHA256
- MAC
<ph type="x-smartling-placeholder">
- </ph>
- HMAC-SHA256
- AES-CMAC
- 디지털 시그니처
<ph type="x-smartling-placeholder">
- </ph>
- ECDSA
- RSA-SSA-PKCS1
- RSA-SSA-PSS
C++의 FIPS 전용 모드
FIPS 140-2 승인 알고리즘을 사용해야 하고 FIPS 전용 모드에서 Tink를 빌드할 수 있습니다. 이렇게 하면 Tink에 인증된 알고리즘 사용 및 Tink가 검증된 암호화 모듈입니다.
이에 따라 Tink의 동작이 다음과 같이 변경됩니다.
Register()
함수는 FIPS가 있는 알고리즘만 등록합니다. 도움이 될 수 있습니다 즉, 사용할 수 있는 서비스만 검증된 암호화 모듈을 사용하는 알고리즘의 키 세트입니다.- Tink는 BoringSSL이 BoringCrypto 모듈로 빌드되었는지 확인합니다.
프리미티브 호출은 모듈이 유효하지 않을 때
INTERNAL
오류를 반환합니다. 있습니다. subtle/
에서 프리미티브 사용은 암호화 모듈입니다.
BoringCrypto
BoringCrypto를 사용하는 Tink 를 사용하여 검증된 암호화 모듈에 대한 액세스를 제공합니다. 현재 유효성 검사 상태는 사용 가능한 FIPS 전용 모드에서 작동하는 경우:
- AES-CMAC가 검증되지 않았으며 사용할 수 없습니다.
- RSA-SSA-PKCS1은 3072비트 모듈러스로 제한됩니다.
- RSA-SSA-PSS는 3072비트 모듈러스로 제한됨
Bazel과 함께 BoringCrypto 모듈을 사용하려면
C++에서 boringssl
에 대한 local_repository
정의
작업공간.
컴파일 시간에 사용 설정
FIPS 전용 모드에서 Tink를 빌드하려면 컴파일 시간에 플래그를 설정합니다.
bazel build ... --//third_party/tink/cc/config:use_only_fips=True
Tink가 FIPS 전용 모드로 빌드되었는지 런타임에 확인하려면
다음과 같은 상수를 제공하는 internal/fips_utils.h
헤더를 포함할 수 있습니다.
kUseOnlyFips
입니다.
FIPS 전용 모드에서 Tink를 빌드하지 않아도 일부 알고리즘에 대해 검증된 구현을 사용하되 사용할 수 있습니다
런타임에 사용 설정
FIPS 전용 모드에서 Tink를 빌드하는 대신
플래그를 설정하는 config/tink_fips.h
의 crypto::tink::RestrictToFips()
FIPS 프리미티브에 대한 제한을 사용하도록 설정합니다.
경고: 런타임 옵션을 사용하는 경우 crypto::tink::RestrictToFips()
는 키 자료를 처리하거나 키 관리자를 등록하기 전에 호출되어야 합니다.
다른 Tink 기능입니다. 또한 BoringSSL에
BoringCrypto 모듈로 빌드되었습니다. 그렇지 않으면 Tink를 사용하여
모든 데이터를 처리합니다