03 — 암호·해시·MAC·전자서명·PKI·키 관리

전체 요약 목차

A — 분류·공격자 능력

치환은 기호를 바꾸고 전치는 위치를 바꾼다. 블록암호와 스트림암호는 대칭암호의 서로 다른 처리 방식이다. 스트림암호는 비밀키로 키스트림을 생성해 데이터를 처리한다. 알고리즘은 공개해 검토하고 키는 비밀로 관리한다. 인증과 재생 방지는 각각의 검증 절차를 함께 구성한다.

COA는 암호문, KPA는 알려진 평문/암호문 쌍, CPA는 선택한 평문에 대한 암호문, CCA는 허용된 선택 암호문에 대한 복호 결과를 이용하는 모델이다. CCA는 공격자가 선택한 암호문의 복호 결과를 얻을 수 있다는 공격 능력을 기준으로 한다. 전수 탐색은 키 후보 탐색, 차분/선형 분석은 차이·통계 관계 분석이다. ECC는 여기서 타원곡선 암호이며 오류정정부호 문맥과 구분한다. HAC ch1 §1.5·1.13.

B — 대칭 알고리즘

알고리즘블록/키 비트구조·구별점
DES64 / 유효56(패리티 포함 표기64)Feistel 16라운드; 32→48 확장, 8개 6→4 S-box
3DES/TDEA64 / 키 묶음에 따라 다름DES를 EDE 조합. 저장 키 길이와 실제 공격 비용에 따른 보안강도를 각각 평가
AES128 / 128·192·25610·12·14라운드; 마지막에는 MixColumns 생략
SEED128 / 128Feistel 16라운드
ARIA128 / 128·192·25612·14·16라운드; 치환·확산 계열, 마지막 추가 키 결합
IDEA64 / 1288라운드+출력변환, 52개 16비트 서브키

Feistel은 반쪽 블록의 교환과 결합으로 역변환을 구성하며, 라운드 함수 자체의 역함수 없이 복호 구조를 만들 수 있다. 라운드 수는 알고리즘별로 정한다. AES는 치환·행 이동·열 혼합·키 결합을 수행하고, IDEA는 8라운드 뒤 출력변환을 수행한다. HAC ch7 DES·IDEA, FIPS 197 §5, SEED RFC 4269, ARIA RFC 5794.

DES/TDEA는 역사적 구조 비교 대상으로 읽는다. NIST의 TDEA 문서는 2024-01-01 철회됐다. KCMVP 검증 대상은 알고리즘 분류와 별도이며 C12-H에서 처리한다. 철회 기록.

C — 모드·IV·오류

E/D는 블록암호 순방향/역방향 함수, P/C는 평문/암호문, ⊕는 XOR이다. 한 비트 암호문 오류의 효과는 복호 결과에 대한 것이다.

모드연결 기준초기값 조건(같은 키)암호/복호 병렬성암호문 비트 오류
ECBCj=E(Pj)IV 없음가능/가능해당 블록 불규칙 오류
CBCCj=E(Pj⊕Cj-1), C0=IV예측 불가 IV순차/가능해당 블록 불규칙+다음 블록 같은 비트
CFB암호문을 피드백해 E 출력과 XOR예측 불가 IV순차/암호문 확보 시 가능해당 세그먼트 같은 비트+뒤 제한된 세그먼트 불규칙
OFBE 출력을 다시 E 입력으로메시지별 IV 유일출력 생성 순차/순차, 사전 생성 가능해당 비트만
CTR유일한 counter block의 E 출력과 XOR전체 counter block 재사용 금지가능/가능해당 비트만

ECB/CBC는 완전 블록, CFB는 s비트 세그먼트 조건을 맞춘다. CFB 입력은 선택한 세그먼트 크기에 맞춘다. OFB/CTR은 마지막 부분 블록만큼 출력을 사용한다. CFB/OFB/CTR 복호에도 E를 사용하며 OFB는 E의 출력을 피드백한다. IV는 공개 가능한 값으로 두되 모드별 무결성·유일성·예측 불가 조건을 충족한다. 이 다섯 기밀성 모드에 인증 기능이 필요하면 별도 구성이나 인증된 암호화를 사용한다. SP 800-38A §6·부록 A~D.

CTR/OFB의 같은 키스트림 재사용은 두 암호문의 XOR로 평문 간 관계를 노출한다. 오류 전파는 손상된 암호문이 복호 결과에 미치는 영향이고, 변조 방지는 인증 검증으로 다룬다. 인증된 암호화는 태그 검증 성공을 평문 수용 조건으로 삼는다. 실제 적용은 TLS/프로토콜 장과 연결한다.

D — 공개키 연산·가정

RSA 기본 연산은 수신자의 공개키 (n,e)로 c=m^e mod n, 개인 지수 d로 m=c^d mod n이다. 이는 적절한 키 생성과 메시지 범위를 전제로 하는 기본 연산이다. 실제 암호화에는 안전한 인코딩 방식도 적용한다. RSAES-OAEP 등 암호화 인코딩과 RSASSA-PSS 등 서명 방식을 구분한다. 인수분해는 RSA 개인키를 구하는 경로이며, 실제 안전성은 인코딩·구현·키 관리도 함께 평가한다. RFC 8017 §3·5·7·8.

DH는 공개 g,p에서 A=g^a mod p, B=g^b mod p를 교환하고 B^a=A^b=g^(ab) mod p를 얻는 합의 원리다. 상대 공개값에 자기 비밀 지수를 적용한다. 각 당사자는 자기 비밀 지수로 공개값을 생성할 수 있다. 무인증 DH에는 중간자 위험이 있으므로 키 진위·프로토콜 인증을 함께 본다. RFC 2631 §2.1.1.

Rabin은 제곱근/인수분해, DH·ElGamal·DSA는 이산로그 계열의 배경으로 구분한다. ECC는 타원곡선 군을 쓰는 계열이며 ECDH는 키 합의, ECDSA는 전자서명에 쓰인다. ElGamal 암호화는 매번 적절한 새 난수를 선택하는 조건이 중요하다. 교육용 수치와 역사적 키 길이는 원리 설명에 사용하고, 실제 키 길이는 적용 시점의 보안강도 기준으로 정한다. HAC ch8 §8.2~8.4.

E — 키 설정·수명주기

전원 n명이 각 쌍마다 독립 공유키 하나를 가지면 n(n−1)/2개다. 각 참여자가 KDC와 장기키 하나를 공유하는 모델은 n개이며 서비스 세션키를 추가 발급한다. 공개키 모델은 각자 키쌍을 갖되 배포받은 공개키의 진위가 필요하다. 키 개수는 참여자·통신 쌍·키 역할이라는 모델의 가정을 정한 뒤 계산한다.

키 운반은 한쪽이 정한 키를 보호해 전달, 키 합의는 양측 기여로 공유값을 얻는 방식이다. 하이브리드는 공개키 기반 키 설정·인증과 대칭키 데이터 보호를 조합한다. 서명도 인증된 키 교환에 쓰인다. RFC 2631, RFC 8017.

전방향 안전성은 장기키의 나중 유출이 과거 세션키까지 드러내지 않게 하는 성질이다. 인증된 임시 DH와 임시 비밀의 적절한 폐기 등이 조건이다. RSA 서명은 교환 상대·메시지의 인증에, RSA 키 운반은 키 전달에 쓰이는 역할로 구분한다. NIST TLS 1.3 설명.

키는 안전한 생성→배포/설정→보관·접근통제→사용·교체→폐기 흐름으로 관리한다. cryptoperiod는 키의 허용 사용기간이며 인증서 유효기간과 각각 관리한다. 복구가 필요한 암호화키와 부인방지용 서명 개인키의 보관 정책을 목적별로 결정한다. 제품 성능과 침해전파·가용성은 별도 평가한다. OWASP Key Management, NIST cryptoperiod.

F — 해시·MAC

공격자가 받은 것과 찾는 것

성질주어진 것공격자가 찾는 것
역상 저항성해시값 hH(m)=h인 입력 m
제2역상 저항성특정 입력 mm과 다르면서 H(m′)=H(m)인 m′
충돌 저항성특정 입력이 고정되지 않음서로 다르면서 해시가 같은 두 입력

이상적인 n비트 해시의 일반적인 고전 공격에서 충돌 탐색은 약 2^(n/2), 역상 탐색은 약 2^n 규모로 비교한다. 실제 알고리즘은 알려진 분석 결과와 사용 조건으로 강도를 평가한다. 특히 반복 해시의 제2역상 강도는 긴 메시지 조건에 영향을 받을 수 있다. 해시 일치로 변조를 검사하려면 비교 기준값도 신뢰할 수 있어야 한다. 발신자 인증에는 신뢰할 키와 MAC·서명 등의 검증을 함께 사용한다.

처리 구조와 출력 길이

계열입력 처리 블록출력구조 구별
MD5512비트128비트32비트 워드 기반 반복 처리
SHA-1512비트160비트초기 상태와 메시지 블록을 반복 처리
SHA-224/256512비트224/256비트SHA-256 계열 처리; SHA-224는 초기값도 다름
SHA-384/5121024비트384/512비트64비트 워드 기반 SHA-512 계열
SHA3-224/256/384/512rate r 단위이름의 비트 길이Keccak 순열 기반 sponge
SHAKE128/256rate r 단위요청한 출력 길이XOF; 128/256은 보안강도 구분

MD5·SHA-2 계열은 패딩·길이 부호화·블록 분할·초기 상태·반복 상태 갱신을 구분한다. 입력 블록 길이는 한 번에 처리하는 단위, 출력 길이는 최종 해시값의 크기다.

Sponge는 b=r+c 크기 상태를 사용한다. 흡수 단계에서 입력 블록을 rate 부분에 XOR하고 순열을 적용하며, 추출 단계에서는 rate 부분에서 출력을 얻고 필요할 때 순열을 다시 적용한다. capacity는 직접적인 입력·출력에 사용하지 않는 내부 상태 부분으로 안전성에 관여한다. 출력 길이와 보안강도는 sponge의 파라미터·공격 모형을 함께 고려한다.

해시·MAC·서명

MAC은 비밀키를 이용한 메시지 인증 코드다. HMAC은 그중 해시 기반 구조이며 CMAC처럼 블록암호 기반 MAC도 있다. MAC은 키를 사용하는 인증 코드의 총칭이고, HMAC과 CMAC은 각각 해시·블록암호로 이를 구성한 방식이다.

HMAC의 핵심식은 H((K0 XOR opad) || H((K0 XOR ipad) || M))이다. K0는 긴 키를 먼저 해시하고 블록 길이에 맞게 0으로 채우는 등 규격에 따라 정규화한 키다. ipad와 opad는 서로 다른 고정 패드다. MAC은 공유키 보유자 사이에서 메시지를 인증한다. 전자서명은 서명 개인키와 공개 검증키를 분리한다. 눈사태 효과는 입력의 작은 변화가 출력에 넓게 퍼지는 성질이다.

역사적 알고리즘과 사용 판단

MD5는 역사적 처리 구조를 이해하는 대상으로 두며, 전자서명 등에는 충돌 저항성을 갖춘 해시를 선택한다. NIST는 SHA-1의 전자서명 사용을 제한하고 남아 있는 사용에서도 전환을 추진해 왔다. 역사적 구조 학습과 신규 구현의 알고리즘 선택은 목적별로 구분한다. HMAC의 안전성은 키·메시지 조건과 해당 구성의 분석 결과로 평가한다.

근거: NIST 해시, RFC2104, Keccak 구조.

G — 서명·응용

서명은 개인키로 생성, 대응 공개키로 검증하는 알고리즘 절차다. 서명 알고리즘은 메시지와 키를 결합해 검증 가능한 증거를 생성한다. 메시지가 변경되면 검증에서 그 변화를 확인할 수 있도록 구성한다. 공개키의 진위·개인키 통제와 함께, 재생 방지를 위한 신선성 검사도 갖춘다. RFC 8017 서명 절.

은닉서명은 서명자에게 메시지 내용을 숨기면서 서명을 얻는 흐름이다. 익명성의 범위는 서명 구조와 네트워크·결제 설계를 함께 고려하며 변형별 입력 가정을 확인한다. RFC 9474 §7. 이중서명은 SET에서 주문/결제 정보의 결합과 각 참여자의 제한된 열람을 지원하며 암호화 단계와 별개다. SET Book 1 (1997).

KCDSA는 KISA의 인증서 기반 부가형 전자서명 알고리즘으로 이산대수 계열, EC-KCDSA는 타원곡선 계열이다. 현재 KISA 소개는 TTAK.KO-12.0001/R4·12.0015/R3를 표기한다. 이 설명은 KISA 소개에 따른 명칭·용도·표준 표기 범위다. KISA. 법정 효력과 성립 조건은 C13-I로 연결한다.

H — 인증서·PKI

PKI는 정책·역할·키·인증서·저장소·운영을 포함하는 공개키 기반구조다. CA는 발급/서명, RA는 등록·신원확인 역할, 저장소는 인증서·상태 정보 배포 역할로 구분하며 한 조직이 여러 역할을 수행할 수 있다. PAA/PCA는 해당 계층 모델에서 사용하는 기관 명칭으로 읽는다.

계층형은 루트 CA 아래 하위 CA가 이어지는 구조이고, 네트워크/메시형은 독립 CA 사이의 교차인증 관계를 이용한다. 복합형은 이런 신뢰 영역들을 연결하는 관점이며 브리지 CA를 이용한 영역 간 연결이 한 예다. 브리지 CA는 신뢰 영역 사이의 연결을 지원하며 각 영역의 신뢰 앵커와 경로 정책을 함께 사용한다. NIST SP800-32 §3.2의 역사적 구조 설명

X.509 인증서는 주체와 공개키의 결합을 발급자가 서명한다. 버전·일련번호·발급자·유효기간·주체·공개키·알고리즘·서명과 v3 확장을 구별한다. CRL v2와 인증서 v3는 다른 버전이다. 신뢰 앵커부터 경로·서명·기간·용도·제약·상태를 검증한다. 루트에 대한 신뢰는 신뢰 앵커를 선택·배포하는 정책에서 시작한다. RFC 5280 §3~6.

만료는 유효기간 경과, 폐지는 유효기간 중에도 발생하는 상태 변경, 로컬 삭제는 파일 제거다. CRL은 목록, OCSP는 상태 질의/응답이며 생성·갱신 시각·캐시·서명자 권한·실패 정책을 확인한다. OCSP의 good 상태와 함께 발급·기간·이름·용도 등 인증서 검증 조건을 확인한다. 이용 비용은 서비스 운영 조건이다. RFC 6960 §2~3.

TLS 서비스 이름은 기대한 이름과 인증서 SAN을 대조한다. 서비스 이름 검증은 SAN을 기준으로 한다. RFC 9525. 계층/교차인증의 피해 범위는 신뢰 관계와 인증 경로 정책에 따라 판단한다. PGP의 사용자 신뢰 관계는 X.509의 CA 경로와 구별하되 상세 운영은 메일 장으로 보낸다.

I — 난수·솔트·확률암호·영지식

암호용 난수는 엔트로피·시드·예측 저항·상태 보호를 본다. 소프트웨어·하드웨어 구현 모두 난수의 품질과 상태 보호를 평가한다. 결정적 난수 생성기도 적절한 암호 설계와 입력이 필요하다. SP 800-90A Rev.1.

솔트는 계정별 비밀번호 해시에 결합하는 공개 가능한 입력으로 사전계산 재사용과 동일 비밀번호의 저장값 비교를 어렵게 한다. 비밀번호·키는 비밀로 관리하고 솔트의 길이는 적용 규격에 따른다. 인증과 접근통제 — 비밀번호 저장.

One-Time Pad의 완전기밀성은 메시지와 독립인 균등 난수 키를 메시지 길이만큼, 비밀로, 한 번만 사용하는 조건이다. 스트림암호는 비밀키로 생성한 키스트림을 쓰고, OTP 로그인 코드는 사용자 인증에 쓰인다. HAC ch1.

확률암호는 암호화에 난수성을 이용해 같은 평문도 다른 암호문이 될 수 있게 하는 방식이며 Goldwasser–Micali가 역사적 예다. 영지식증명은 주장 참이라는 사실 외 비밀 지식을 더 주지 않는 증명 성질이다. 영지식증명은 완전성·건전성·영지식 성질을 함께 본다. 확률암호는 암호화 결과의 난수성, 영지식증명은 증명 과정의 정보 노출을 다룬다. HAC ch8 §8.7, ch10 §10.4.

핵심 연결

  • 대칭암호는 공유 비밀키로 데이터를 처리하고, 공개키 방식은 키 설정·암호화·서명 등 목적에 맞게 사용한다.
  • 블록암호는 알고리즘과 운용 모드를 함께 정하며 IV·counter 조건을 지킨다.
  • 키 합의에 상대 인증을 결합하고, 키의 생성부터 폐기까지 수명주기를 관리한다.
  • 해시는 입력의 요약값, MAC은 공유키 기반 메시지 인증, 서명은 개인키 생성·공개키 검증으로 연결한다.
  • PKI는 신뢰 앵커에서 인증서 경로·기간·용도·상태·서비스 이름을 검증한다.
  • 난수·솔트·일회용 키는 각 목적에 필요한 독립성·예측 저항·사용 조건을 적용한다.

출처와 범위

2026-09-09까지 대조한 채택 핵심을 유지한다. 2026-09-10에는 출처 연결과 문서 구성을 정리했으며 기술·법령의 최신성 재검증은 수행하지 않았다. 제품·규격은 명시된 버전과 조건을 기준으로 읽는다.

추가 직접 출처(필요할 때 확인):