별의 공부 블로그 🧑🏻‍💻
728x90
728x170

66. 비대칭키(공개키) 암호화

1. 공개키(Public Key) 암호화

  • 공개키 암호화 기법(비대칭키 암호화)
    • 공개키개인키 라는 2개의 암호화 키를 사용하여 암/복호화를 수행하는 방법
    • 클라이언트
      • 공개키 를 수신 받은 후, 공개키로 암호화하여 메시지를 전송함.
        • 수신자
      • 자신만 가지고 있는 개인키 로 복호화함.
  • 대칭키 암호화 기법 의 키 공유 문제를 해결한 방법
    • 암호화 키의 길이가 길어서 암호화 및 복호화의 성능이 떨어짐.

(1) 공개키 암호화의 주요 특징

  • 암호화 키와 복호화 키가다른 암호화 방식
  • 키 교환
    • 키 합의(Key Agreement) 또는 키 전송에 사용됨.
    • 공개키/개인키를 사용하여 인증, 서명, 암호화 수행

(2) 공개키 암호화의 필요성

  • 키 관리 문제
    • 비밀 키의 배분, 공유 문제
    • 키의 저장 및 관리 문제
  • 인증
    • 메시지의 주인을 인증할 필요
  • 부인 방지
    • 메시지의 주인이 아니라고 부인하는 것을 방지

(3) 공개키 암호화 방식

암호 모드 - 소량의 메시지 암호화 목적
- 주로 키 교환의 용도로 사용
인증 모드 - 메시지를 인증(부인 방지)하는 것이 목적

(4) 공개키 암호화 종류

구분 특징 수학적 배경 장점 단점
Diffie Hellman - 최초의 공개키 알고리즘
- 키 분개 전용 알고리즘
이산대수 문제 - 키 분배에 최적화
- 키는 필요 시에만 생성
- 키 저장 불필요
- 암호 모드로 사용 불가(인증 불가)
- 위조에 취약
RSA - 대표적인 공개키 알고리즘 소인수분해 - 여러 라이브러리 존재 - 컴퓨터 속도 발전으로 키 길이 증가
DSA - 전자서명 알고리즘 표준 이산대수 문제 - 간단한 구조 (Yes or No의 결과만 가짐) - 전자 서명 전용
- 암호화, 키 교환 불가
ECC - 짧은 키로 높은 암호 강도
- PDA, 스마트폰, 휴대폰
타원 곡선 - 오버헤드 적음.
- 160키 = RSA 1024
- 키 테이블(20KB) 필요

이산대수, 인수분해 Key 길이 : 1024 ~ 2048비트

ECC Key 길이 : 160비트 이상

(5) 공개키 암호화 방식과 대칭키 암호화 방식의 차이점

항목 대칭키 암호화 공개키 암호화
키 관계 암호화 키 = 복호화 키 암호화 키 ≠ 복호화 키
안전한 키 길이 128비트 이상 2048비트 이상
구성 비밀키 공개키, 개인키
키 개수 N(N-1)/2 2N
(주의! 키 쌍으로는 N)
대표적인 예 DES, 3DES, AES RSA, ECC
제공 서비스 기밀성 기밀성, 부인 방지, 인증
목적 데이터 암호화 대칭키 암호(전달(키 분배))
단점 키 분배 어려움, 확장성 떨어짐. 중간자 공격 (대응 : PKI)
암호화 속도 공개키(비대칭키) 보다 빠름. 대칭키 보다 느림.

 

2. 해시(Hash) 함수

  • 키가 없고 복호화가 불가능한 특징을 가지는 암호화 방식
  • 일방향 암호 기술
  • MD(Message Digest) : 무결성만 제공하는 메커니즘
  • 다양한 길이의 입력을 고정된 짧은 길이의 출력으로 변환하는 함수
    • 고정 길이 출력 : 128비트, 160비트, 256비트 등
  • 표현 방식
    • y = h(x)
      • x : 가변 길이의 메시지
      • y : 해시 함수를 통해서 생성
      • h : 해시 값(Hash Code)을 생성

(1) 해시 함수의 조건

  • 압축
    • 임의의 길이의 평문을 고정된 길이의 출력 값으로 변환함.
  • 일방향(One Way Function, 선이미지 회피성)
    • 메시지에서 해시 값(Hash Code)을 구하는 것은 쉽지만, 반대로 해시 값에서 원래의 메시지를 구하는 것은 매우 어려움.
      • 역방향 계산 불가능
  • 효율성
    • 메시지로부터 h(메시지)를 구하는데 많은 자원과 노력이 소요되지 않아야 함.
  • 충돌 회피(Collision Free, 강한 충돌 회피성)
    • 다른 문장을 사용하였는데도 동일한 암호문이 나오는 현상
    • h(M1) = h(M2)인 서로 다른 M1M2를 구하기는 계산상 불가능해야 함.
  • 2차 선이미지 회피성
    • 어떤 블록 x에 대해서 H(y) = H(x)y != x인 것을 찾는 것이 계산적으로 불가능해야 함.
    • 약한 충돌 회피성

(참고) 입력 값이 똑같은데 왜 출력이 다르지?

  • 리눅스에서 starrykss 사용자의 패스워드를 root와 동일하게 변경
  • root와 패스워드를 동일하게 변경하고, /etc/shadow 파일에서 해시 값을 확인
    • 패스워드를 동일하게 입력 했지만, rootstarrykss 사용자의 해시 값이 다른 것을 확인할 수 있음.
      • 이론적으로는 동일한 입력에 같은 출력이 나오는 것이 해시 함수이지만, 리눅스에서는 패스워드를 입력 값으로 해시 함수에 넣을 때 리눅스만 알고 있는 임의의 값을 추가해서 넣기 때문에 해시 값이 다르게 나옴.
  • 정보 보안에서 패스워드를 만들 때, 임의의 값을 추가하는 것을 Salt 값 이라고 함.

(2) 해시 함수 종류

종류 특징
MD2 - Rivest가 개발
- 8비트 컴퓨터를 위해서 고안됨.
- 매우 안전하지만, 계산할 때 많은 시간이 걸림.
- 128비트의 출력 해시 값 생성
MD4 - Rivest가 개발
- MD2 보다는 메시지 압축 속도가 빠름.
- 속도는 빠른 반면, 안정성에서 뒤떨어짐.
- 128비트의 출력 해시 값 생성
MD5 - Rivest가 개발
- 안정성이 떨어지는 MD4 알고리즘을 수정하여 만듦.
- 128비트의 출력 해시 값 생성
SHA - Secure Hash Algorithm
- MD 계열의 알고리즘과는 달리 160비트 출력 해시 값을 생성
SHA-1 - 미국 표준의 메시지 압축 알고리즘
- 160비트의 출력 해시 값 생성
  • 국내에서 해시 함수를 통하여 주민등록번호 및 패스워드를 암호화할 때 가장 권고하는 해시 함수
    • SHA-256

생일자 공격(Birthday Attacks)

  • 23명 중에서 같은 생일을 가지는 사람이 2명이나 그 이상이 있을 확률은 1/2보다 큼.
  • 생일자 역설을 근거로, 한 해시 함수의 최소 비트는 160비트 이상이 되어야 함.
    • 국내의 경우, 패스워드 암호화 시에 SHA-256 이상의 해시 함수를 사용하는 이유

 


 

내용 출처 : 이기적 네트워크관리사 1·2급 필기 (임호진, 황성하 공저, 영진닷컴)

728x90
그리드형(광고전용)

'Certificate > Network Manager' 카테고리의 다른 글

70. IP 기반의 접근 통제  (0) 2021.05.03
69. 전자 우편 보안  (0) 2021.05.03
68. 전자상거래 보안  (0) 2021.05.03
67. 웹 서버 보안  (0) 2021.05.03
65. 대칭키(비밀키) 암호화  (0) 2021.05.01
64. 암호화 개요  (0) 2021.05.01
63. 정보 보호 공격 유형과 보호 대책  (0) 2021.05.01
62. 정보 보호 목표  (0) 2021.05.01
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️


📖 Contents 📖