시스템 네트워크 3일차

Jh Park·2022년 9월 20일

단방향성 암호화

Hash Function

  • Hash를 이용하여 암호화하는 과정
  • 평문을 암호화할순 있지만, 복호화는 불가능한 단방향성 암호화이다.
  • 항상 해쉬 함수마다 정해져 있는 고정된 길이로 출력
  • 원문의 조금만 바뀌어소 해쉬값이 달라지기에 무결성을 입증하기 위해 사용

대표적인 알고리즘

  • MD5
    • output: 128
    • MD4를 대체하기 위해 고안
    • 메세지 축약 알고리즘으로, 파일의 무결성 검사 용도로도 사용
    • MD5의 결함을 발견하고 SHA로 사용하기를 권장
  • SHA
    • SHA-224, SHA-256, SHA-384, SHA-512
    • output: 128
    • 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정, SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여 SHA-0이라고도 불린다. 2년 후 SHA-0의 변형인 SHA-1이 발표되었으며, 그 후에 4종류의 변형 SHA-224, SHA-256, SHA-384, SHA-512생겼다.

  • 구글 보안팀 (프로젝트 제로)

    • 세계적인 해커들을 고용해 제로데이 취약점을 알아내는 것 각종 테스트, 크래킹 등을 한다고한다.

    • https://shattered.io/ SHA-1의 충돌쌍을 공개하였다

    • MD5와 SHA-1은 안전하지 않으며 ISMP-P, ISO27001에서 사용하면 안되며 인증도 안됨


양방향성 암호화

대칭키(symmetric key)

특징과 여러 이름

  • 치환(s)과 순열(p)을 사용
  • 암호화키와 복호화키가 서로 대칭 - 대칭키(Symmetric Key)
  • 암호화키와 복호화키 대칭 되기에 하나만 알아도 알 수 있음 - 단일키(Single Key)
  • 하나의 통신 세션에서 모든 메시지를 암호화하기 위해 사용 - 세션키(Session Key)
  • 대칭키는 대칭적이기에 다른 사람이 알면 안됨 - 비밀키(Secret Key)

대표적인 알고리즘

  • DES > 3DES
    • 1999년 RSA컨퍼런스에서 DES를 크래킹을 시연하였고 57시간만에 크래킹되어 표준에서 제외 3DES로 임시로 사용하다가 공개키 표준을 공모를 시작하였고 그 때 나온 것이 AES이다
  • AES
    • ID/PW로 로그인하는 대부분의 경우 AES로 암호화, Wi-Fi를 이용하는 모든 트래픽도 AES로 암호화 등등
  • 우리나라 : SEED는 금융중앙망에 사용
    HIGHT, ARIA, LEA는 경량 대칭키로 모바일/IoT에 사용
  • 외국 RC 시리즈(RC4,RC6), Fish 시리즈(TwoFish,★ BlowFish)

대칭키의 문제점

  • 키를 상대에게도 전달해야 복화화가 가능하지만 키를 안전하게 전달하기가 힘들다.
  • 대칭키를 사용하기위에서는 n(n-1)/2개의 키가 필요하기에 필요한 키의 개수가 너무 많아 관리가 어렵다.
  • 이러한 문제들을 해결하기 위한 것이 비대칭키이다.

암호화 방식

  • 블록 암호
    • 어느 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘
    • 평문을 일정한 크기의 블록으로 잘라낸 후 암호화 알고리즘을 적용
    • 블록 암호 하나의 에러는 데이터 블록 전체에 영향
  • 스트림 암호
    • 데이터 흐름을 순차적으로 처리해가는 암호 알고리즘
    • 통상 한 번에 1비트씩 평문과 키 스트림을 XOR하여 생성
    • 암호문에서 1비트가 왜곡되면 평문에서도 1비트만 왜곡

비대칭키

특징과 여러 이름

암호화에 사용하는 키와 복호화하는 키가 서로 다름 - 비대칭키
개인이 소지하고 있는 것을 - 개인키, 공개하는 것을 - 공개키
연산는 싶지만 연산에서 나온 결과 값만을 가지고 역연산이 힘들것을 이용함.

대표적인 알고리즘

  • Diffie-Hellman(디피-헬만)
    • 이산대수의 난해함에 그 안전성기반을 두고 있음
  • RSA
    • 소인수분해의 어려움에 근거
    • RSA, 대칭키 RC 시리즈,MD5 등 Ron Rivest 제작
  • 타원곡선암호(ECC: Elliptic Curve Cryptography)
    • 모바일에 적합하여 유튜브,인스타,페이스북 같이 모바일 사용자가 많을 때 사용한다.
    • 비트코인이 타원곡선암호 기술 방식에 속하는 타원곡선 디지털서명 알고리즘(ECDSA: Elliptic Curve Digital Signature Algorithm) 암호 알고리즘을 사용

활용

  • 공개키 암호화
    • 평문을 상대의 공개키를 사용하여 암호화하여 발송하면 생대가 상대의 개인키로 복호화하기에 자신의 신분을 증명할 수 있음
  • 개인키 암호화
    • 평문을 자신의 개인키로 복호화하면 상대는 자신의 공개키로 복호화하기에 자신의 신분을 증명가능

전자 서명

정의 및 과정

  • 전자서명이란
    서명자를 확인하고 서명자가 당해 전자문서에 서명했다는 사실을 나타내는 데 이용하려고, 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보

  • 과정

  1. 평문의 '해쉬값을 생성'하여 송신자의 '개인키로 암호화'하여 발송
  2. 암호문을 받은 송신자의 '공개키로 복화화'
  3. 송신자는 평문의 해쉬값을 생성하여 발송자가 보낸 암호문에 있던 해쉬값과 비교하는 과정을 통해 원문이라는 것을 알 수 있다.

기능

  • 무결성
  • 인증
  • 부인 방지

특징

  • 서명자 인증(Authentication)
    전자서명을 생성한 서명인을 검증 가능(서명자의 공개키)
  • 부인방지(Non-Repudiation)
    서명인은 자신이 서명한 사실을 부인 불가
  • 위조 불가(Unforgeable)
    서명인의 개인키가 없으면 서명을 위조하는 것은 불가함
  • 변경 불가(Unalterable)
    이미 한 서명을 변경하는 것은 불가
  • 재사용 불가(Not-Reusable)
    한 문서의 서명을 다른 문서의 서명으로 재사용 불가

인증서

  • 형식 : X.509v3
  • 인증서의 주요 내용 : 서명알고리즘, 유효기간, 발급자, 주체, 주체의 공개키, 서명된 해시값 등
  • 공개키가 올바른지 확인 (주체의 것이 맞는지 검증)
  • 방법 :
    공개키의 해시 값을 계산하여 인증기관의 개인키로 암호화하여 인증기관의 공개키로 복호화하여 해시값을 비교하여 인증한다.(전자서명과 비슷)
    • 생성 : 공개키(원문)의 해시값을 구해서 송신자(CA)의 개인키로 서명
    • 검증 : 송신자(CA)의 공개키로 서명된 해시값을 복호화한 후, 공개키(원문)의 해시값을 구해서 비교

PKI

  • PKI
    • RA (Registration Authority, 등록기관) : 인증서 신청 업체를 검증하고 등록을 대행하는 역할 (사업자등록증, 인감증명, 인감도장, 등기부등본)
    • CA (Certificate Authority, 인증기관) : 인증서를 발행
    • RootCA (최상위 인증기관, 美PCA) : 인증기관을 검증
    • Repository : 인증서(공개키)를 모아놓은 데이터베이스 (ldap)

  • 우리나라 : NPKI (National Public Key Infrastructure)
    • PAA(정책기관) : 미래부
      • Root CA : KISA - ca 관리
        • CA(인증기관) : 금융결제원, 정보인증, 전자인증, Koscom, 무역정보협회 - ra 인증
          • RA(등록기관) : 은행, 증권회사, 대행업체 등등

※ 최근에는 은행들이 자체적으로 인증서를 발행하기에 CA도 된다.

★ 인증서는 삭제하기가 어려움 그렇기에 인증서 취소 목록(CRL : Certificate Revocation Authority) 있는데 일반인들이 이를 확인하기는 어렵다. 그렇기에 나온것이 OCSP(Online Certificate Status Protocol)이다. OCSP은 온라인에서 실시간으로 인증서의 유효성을 검증하는 프로토콜이다.


SSL/TLS

  • 웹 브라우저와 웹 서버간에 암호화(대칭,비대칭,해시 등) 사용하는 프로토콜

  • Netscape 만들어져 SSL(Secure Socket Layer) 시작되었고 SSL1.0, SSL2.0에 취약점 발견되어 SSL3.0을 만들어 보안하였지만 취약점이 있었음, 표준화하기로 결정하고 이름을 TLS(Transport Layer Security)로 변경하여 SSL3.0의 업그레이드 버전으로 TLS1.0을 1999년에 만들어졌다.

  • 지금은 SSL은 사용하지 않지만 관용적으로만 SSL라고 한다. - 최근 TLS는 1.3버전을 사용하고 있으며 TLS1.3, 1.2만 권장하며 TLS1.1이하는 비권장된다.

    웹서버가 자신의 공개키를 인증서 형식(X.509v3)으로 제공
    웹브라우저는 세션키를 생성해서 웹서버의 공개키로 암호화해서 웹서버에게 보냄 / 웹서버는 자신의 개인키로 복호화하여 세션키를 받음
    웹브라우저와 웹서버는 데이터를 보낼때 세션키로 암호화해서 보냄
    상대방에게 받은 암호문은 세션키로 복호화함

0개의 댓글