# 결정론적 (Deterministic)

결정론적(Deterministic)이란 같은 입력과 초기 상태가 주어지면 항상 같은 순서의 연산을 거쳐 같은 결과를 내는 성질입니다. 암호에서는 같은 키와 같은 평문이면 언제나 같은 암호문이 나오는 경우가 대표적입니다.

## 자세히 알아보기

블록 암호 자체(예: AES의 한 블록 암호화)는 결정론적 함수입니다. 복호화가 가능하려면 같은 키로 같은 결과를 재현할 수 있어야 하기 때문입니다. 해시 함수, 키 유도 함수, 의사난수 생성기도 같은 시드를 넣으면 같은 출력이 나오는 결정론적 알고리즘입니다.

문제는 결정론적 암호화가 정보를 흘린다는 점입니다. 같은 평문이 같은 암호문이 되면, 공격자는 내용을 몰라도 "두 메시지가 같다"는 사실을 알 수 있습니다. ECB 모드로 이미지를 암호화하면 윤곽이 그대로 보이는 것이 유명한 예입니다. 그래서 현대 암호화는 초기화 벡터(IV)나 논스를 매번 새로 넣어 같은 평문도 매번 다른 암호문이 되게 하는 확률적 암호화를 기본으로 합니다(예: AES-GCM, ChaCha20-Poly1305). 고전 암호에서는 무작위 동음 치환(homophonic substitution)을 넣어 같은 효과를 내기도 했습니다.

반대로 결정론이 안전성을 높이는 경우도 있습니다. ECDSA 서명은 서명마다 비밀 난수 k가 필요한데, 난수 생성기가 약해 k가 반복되면 개인 키가 노출됩니다. RFC 6979는 k를 개인 키와 메시지에서 결정론적으로 유도해 이 위험을 없앱니다. Ed25519 서명도 설계상 결정론적입니다.

결정론성은 재현성과 검증 가능성의 바탕이기도 합니다. 같은 입력으로 같은 결과가 나와야 테스트 벡터로 구현을 검증할 수 있고, 서로 다른 구현이 같은 결과를 내는지 비교할 수 있습니다. 즉 "알고리즘은 결정론적으로, 비밀과 일회성 값은 무작위로"가 현대 암호 설계의 기본 원칙입니다.

## 블록체인·암호화폐에서는

블록체인 자체가 결정론적 상태 기계입니다. 모든 노드가 같은 블록을 같은 순서로 실행하면 같은 상태에 도달해야 합의가 유지되므로, 스마트 컨트랙트에서는 진짜 난수나 외부 시간을 직접 쓸 수 없습니다. 또 니모닉 하나로 수많은 주소를 재현하는 HD 지갑(BIP-32)은 "결정론적 지갑"이라 불립니다.

스마트 컨트랙트에서 난수가 필요하면 체인링크 VRF 같은 검증 가능한 난수 오라클이나 커밋-리빌 방식을 씁니다. 블록 해시나 타임스탬프를 난수처럼 쓰면 블록 생산자가 결과를 조작할 수 있어 위험합니다.

## 쉽게 말하면

결정론적인 것은 자판기와 같습니다. 같은 돈을 넣고 같은 버튼을 누르면 언제나 같은 음료가 나옵니다.

---
출처: https://achivx.kr/glossary/deterministic-%EA%B2%B0%EC%A0%95%EB%A1%A0%EC%A0%81-gyeoljeongnonjeok/ · ACHIVX 용어 사전 · 수정일 2026-10-20
