FF3-1 tweak 사용 문서
FF3-1 tweak 사용 문서
Vault의 transform 시크릿 엔진은 FPE(형식 보존 암호화) 변환에 FF3-1 알고리즘을 사용해요. 형식 보존 암호화 방식의 핵심 이점은 작은 도메인 공간에 걸친 plaintext를 안전하게 암호화할 수 있다는 것이에요 [1]. 그러나 이는 FF3-1 알고리즘에 제공되는 tweak이라는 파라미터를 도입하게 돼요. 최근까지 FPE 방식의 보안에 대한 공식 정의는 공격자가 특정 키의 코드북을 조사할 때 하나의 tweak에만 접근한다고 가정했어요. 그러나 Bellare의 연구에 따라, 이 개념은 공격자가 코드북을 생성하고 FF3-1에 대한 비자명한 구분자(distinguisher)를 만들려고 할 때 여러 tweak을 제어할 수 있다고 가정하도록 바뀌었어요.
이 페이지는 tweak을 사용할 때의 몇 가지 모범 사례를 상세히 다룰게요.
이 지침은 Vault FF3-1 변환을 사용할 때 선택한 tweak 소스가 supplied 또는 internal일 때만 적용된다는 점을 기억하세요.
출처: 문서
본문
FF3-1 모범 사례
Vault는 FF3-1 변환과 함께 tweak을 활용할 때 다음 사례를 권장해요.
- 암호화는 ACL을 통해 최대한 제한되어야 해요.
- tweak은 사용자 제어가 아니라 무작위로 선택되며 (비밀은 아니더라도) 민감한 것으로 취급돼요.
- tweak은 허용된 바이트 문자열의 최대 길이를 사용하고 높은 엔트로피를 가져야 해요(최대 tweak 도메인 공간에 걸쳐 가능한 한 균일하게 가변적이고 각 암호화마다 달라야 해요). tweak은 전체 도메인 공간을 활용해야 해요.
- 서로 다른 기본 엔티티에 대응하는 같은 값 두 개를 같은 tweak으로 암호화하지 않도록 주의해야 해요.
다음 섹션은 이러한 권장 사항에 대한 대략적인 동기를 제공하려고 해요. 자세한 내용은 페이지 하단의 추가 자료(Further Resources) 섹션을 참고하세요.
FF3-1 tweak 사용
FF3-1은 소규모 도메인에서 암호화 문제를 해결하기 위해 만들어진 tweakable 암호화 방식이에요. tweak은 도메인 공간을 인위적으로 늘리기 위해 도입됐어요. tweak의 도입으로 공격자는 이제 plaintext의 올바른 암호화와 올바른 tweak을 모두 가져야, 코드북을 통해 암호문에서 plaintext로 역추적할 수 있어요.
그러나 FF3-1 설정에서 사용되는 tweak의 수가 너무 적거나 제한된 도메인에서 선택되거나, 사용자 생성이고 암호화에 대한 접근 제어가 너무 넓으면 이는 위험할 수 있어요. 전자의 경우 tweak 값이 반드시 비밀은 아니므로 [3] tweak이 알려지면 코드북이 쉽게 만들어질 수 있어요. 후자의 경우 데이터 암호화에 접근한 공격자(즉, 선택 plaintext 강도)는 tweak을 조작해 도메인 공간의 그 인위적 확장을 본질적으로 우회할 수 있어요.
FF3-1에 대한 또 하나의 관찰은 같은 key와 tweak으로 같은 plaintext를 암호화하는 것이 결정적이므로, 우연히 일치하는 두 plaintext는 일치하는 두 암호문으로 이어진다는 것이에요. 따라서 서로 다른 객체에 대한 일치하는 plaintext를 같은 tweak으로 저장해서는 안 돼요. 예를 들어 전화번호 마지막 네 자리에 해당하는 암호문을 저장한다면 plaintext 충돌이 있을 수 있는데, 이 충돌 값들은 같은 tweak으로 암호화되지 않아야 해요 [3, Appendix C].
세 번째 관찰로, FF3-1은 tweak을 반으로 나누고 각 라운드 함수에 tweak의 절반을 사용해요. 따라서 이상적으로 무작위로 선택된 tweak은 tweak의 각 절반 안에서 높은 엔트로피를 가져야 해요. 최악의 시나리오로, 같은 왼쪽 또는 오른쪽 절반을 가진 tweak으로 많은 암호화를 만들면 더 편향된 암호화(해당 암호화 간의 구분이 오로지 abelian 합산 연산자의 무작위성에만 의존하는)로 이어져요. 실제로 무작위로 선택된 tweak을 사용하면 충분하지만, tweak의 두 절반 사이에 유사성을 만드는 알고리즘으로 tweak을 생성하는 것은 피하는 것이 중요해요 [4].
추가 자료 (Further resources)
- 1: https://eprint.iacr.org/2020/1311.pdf
- 2: https://csrc.nist.gov/news/2017/recent-cryptanalysis-of-ff3
- 3: https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-38g.pdf
- 4: https://img.chainnews.com/paper/568b1f587c93f63832f083dd449107c2.pdf
더 알아보기 (Learn more)
- Transform 시크릿 엔진의 FPE 변환에 대한 자세한 내용은 Transform 시크릿 엔진 문서를 참고하세요.
- Vault Transform 시크릿 엔진 전체 API는 Transform API 문서를 참고하세요.