용어 사전
공개키 암호란 — 공개키와 개인키 쌍으로 암호화·서명하는 구조
공개키 암호는 공개키와 개인키 쌍을 사용하는 암호 방식입니다. 공개키로 암호화·서명 검증하고, 개인키로 복호화·서명한다. TLS(HTTPS)·전자서명·패스키의 토대가 되는 구조와, 암호를 직접 만들지 않는다·개인키를 지킨다 같은 실무의 핵심을 방어 관점에서 해설합니다.
「공개키」와 「개인키」라는 말은 TLS(HTTPS)·전자서명·패스키 등 곳곳에서 등장합니다. 여기서는 공격 절차는 다루지 않고, 공개키 암호의 사고방식과 실무에서 짚어야 할 방어의 핵심을 해설합니다.
공개키와 개인키의 역할
키가 쌍을 이루고 있으며, 역할이 반대라는 점이 핵심입니다.
어디에 쓰이는가
암호화(비밀스러운 주고받기)
- 상대의 공개키로 암호화해서 보낸다
- 대응하는 개인키를 가진 본인만 복호화할 수 있다
- TLS에서는 「공통키를 안전하게 공유」하는 용도로 쓰인다
전자서명(진정성의 증명)
- 송신자가 개인키로 서명을 만든다
- 수신자는 공개키로 검증하여, 본인성과 변조 여부를 확인
- TLS 인증서·소프트웨어 배포·패스키의 인증에 쓰인다
실제 TLS(HTTPS)는 공개키 암호로 공통키를 안전하게 공유하고, 그 이후의 통신은 빠른 공통키 암호로 지키는 하이브리드 방식입니다. 패스키도 단말 내의 개인키로 서명하고, 서버의 공개키로 검증함으로써 피싱에 강한 인증을 실현하고 있습니다.
방어의 핵심
암호를 직접 만들지 않는다
이론이 옳더라도, 난수의 품질·패딩·타이밍 차 등 구현의 세부에서 깨진다. 표준 프로토콜과 검증된 라이브러리를 쓰고, 독자 구현을 피한다.
개인키를 엄중히 관리한다
개인키는 코드나 저장소에 두지 않는다. 전용 보관(키스토어/시크릿 매니저)에 격리하고, 유출 시에 **실효·재발급(로테이션)**할 수 있는 운용으로 한다(→ 공개 디렉터리에 비밀을 두지 않는다).
키 길이·알고리즘을 최신으로 유지한다
권장은 시대에 따라 바뀐다. 오래된 키 길이나 비권장 알고리즘을 방치하지 말고, 최신 권장을 따라간다. 인증서는 Let's Encrypt 등으로 자동 갱신한다.
본 사이트의 관점: 쓰는 쪽의 책임은 '키 관리'에 있다
공개키 암호 그 자체는 강력하며, 보통 굳이 깰 필요는 없습니다. 현장의 사고는 암호의 수학이 아니라, 개인키의 보관 위치·실효의 구조·오래된 설정의 방치 같은 운용 면에서 일어납니다. 이 사이트도 개인키는 공개 면 바깥으로 격리하고, 유출이 의심되면 「읽혔다는 전제」로 즉시 로테이트하는 방침입니다. 암호는 직접 만들지 않고 표준에 올라탄다——이것이 가장 안전한 지름길입니다.
다음에 읽을거리
FAQ
Q공개키 암호와 공통키(대칭키) 암호는 어떻게 다른가요?
공통키 암호는 암호화와 복호화에 같은 키를 쓰기 때문에 빠르지만, 그 키를 상대에게 안전하게 전달하는 방법이 과제가 됩니다. 공개키 암호는 공개키와 개인키 쌍을 사용하며, 공개키는 누구에게 나눠줘도 상관없습니다. 실제 TLS(HTTPS)에서는 공개키 암호로 '공통키를 안전하게 공유'하고, 그 뒤의 대량 데이터는 빠른 공통키 암호로 지키는 하이브리드 방식이 사용됩니다.
Q전자서명은 어떻게 '진짜'임을 확인하나요?
송신자가 자신의 개인키로 데이터의 서명을 만들고, 수신자는 송신자의 공개키로 그 서명을 검증합니다. 개인키는 본인만 가지고 있으므로, 검증이 통과하면 '그 공개키의 소유자가 서명했으며/내용이 변조되지 않았다'는 것을 알 수 있습니다. TLS 인증서나 소프트웨어 배포의 진정성 확인도 이 전자서명의 구조에 의해 뒷받침됩니다.
Q직접 암호를 구현해도 되나요?
피하세요. 암호는 이론이 옳더라도 구현의 세부(난수의 품질, 패딩, 타이밍 차 등)에서 깨집니다. 방어의 원칙은 '직접 만들지 않고·검증된 라이브러리와 표준 프로토콜을 쓴다'는 것. 키의 생성·보관·실효(로테이션) 운용을 설계하고, 키 길이나 알고리즘은 최신 권장을 따라갑니다.