05/06 면접 준비/개인키,공개키

전성수·2025년 5월 5일

단방향 해시(함수) / 단방향 암호화

  • 입력값을 고정된 길이의 해시값으로 변환
  • 복호화(원래 값 복원)가 불가능, 동일 입력값 → 항상 동일 해시값
  • 대표 예: SHA-256, SHA-512, MD5 등 해시 함수
  • 비밀번호 저장, 데이터 무결성 체크, 디지털 서명

양방향 암호화

  • 암호화된 데이터를 복호화(원래 값 복원)할 수 있음
  • 대칭키(비밀키), 공개키(비대칭키) 방식이 대표적
  • 예: AES, RSA 등
  • 데이터 기밀성 보호, 통신 암호화

해싱(Hashing)과 암호화(Encryption)의 차이

  • 해싱: 단방향, 복호화 불가, 데이터 무결성·식별 등에 사용
  • 암호화: 양방향, 복호화 가능, 데이터 기밀성 보호에 사용

전자서명

서명 생성(송신자)
메시지(문서 등)에 단방향 해시함수를 적용해 해시값(메시지 다이제스트)을 만듭니다.
이 해시값을 개인키(비밀키)로 암호화(=전자서명)합니다.
원본 메시지와 전자서명을 함께 전송합니다.

서명 검증(수신자)
수신자는 원본 메시지에 동일한 해시함수를 적용해 해시값1을 만듭니다.
전자서명을 공개키로 복호화하여 해시값2를 얻습니다.
해시값1과 해시값2가 같으면,
메시지가 변조되지 않았고, 서명자가 맞다는 것을 증명할 수 있습니다.

왜 해시함수를 쓸까?
효율성: 긴 메시지 전체를 암호화하지 않고, 짧은 해시값만 암호화하므로 속도가 빠름
무결성: 메시지가 조금이라도 바뀌면 해시값이 완전히 달라짐
단방향성: 해시값만으로 원본 메시지를 알 수 없음

결론
전자서명은 단방향 해시함수로 메시지 요약값을 만든 뒤, 그 해시값에 공개키 암호(비대칭키)로 서명하는 방식입니다.


예시

  1. Alice(송신자)가 메시지와 서명을 만든다
    메시지:
    "나는 5만원을 Bob에게 보낸다."

해시값 만들기(단방향 해시함수 사용)
예를 들어, 해시값이 ABC123이 나왔다고 가정

해시값을 Alice의 개인키로 암호화(전자서명 생성)
→ 암호화된 해시값(전자서명): XYZ789

Alice가 Bob에게 보내는 것

원본 메시지: "나는 5만원을 Bob에게 보낸다."

전자서명: XYZ789

  1. Bob(수신자)가 메시지와 서명을 검증한다
    Bob이 받은 것

메시지: "나는 5만원을 Bob에게 보낸다."

전자서명: XYZ789

Bob이 메시지에 해시함수 적용
→ Bob도 해시값 ABC123을 얻음

전자서명을 Alice의 공개키로 복호화
→ 복호화 결과도 해시값 ABC123이 나옴

둘이 같으면?

메시지가 중간에 바뀌지 않았고,

Alice가 진짜 보낸 것임을 Bob이 확인할 수 있음

개인키와 공개키는 수학적으로 연결되어 있어,
개인키로 암호화한 데이터는 공개키로만 풀 수 있고,
이를 통해 신원 확인과 데이터 무결성을 보장

개인키로 암호화, 공개키로 복호

전자서명(Digital Signature) 방식
송신자가 자신의 개인키로 메시지(또는 해시값)를 암호화(서명)하고,
수신자는 송신자의 공개키로 복호화(검증)해서
메시지가 위변조되지 않았고,송신자가 진짜 서명자임을 확인
즉, "인증·무결성·부인방지"가 목적

공개키로 암호화, 개인키로 복호화

"기밀성 보장"을 위한 공개키 암호화(Public Key Encryption) 방식.
송신자가 수신자의 공개키로 메시지를 암호화해서 보내면,
오직 수신자만 자신의 개인키로 복호화
즉, "비밀 유지(기밀성)"가 목적

profile
ㅡ/ㅡ

0개의 댓글