암호학

:)·2024년 5월 4일
0

보안 

목록 보기
5/28

암호학

종류

평문
암호화:   평문	  → 	암호화
복호화:  암호화     ←	     평문
  • 암호화의 필수 요소
    1. 평문
    2. 알고리즘 (algorithm)
  • 과정
    • encryption : 평문 (암호화키) → 암호화
    • decryption : 암호화 (복호화키) → 평문

  • 1세대 초기 암호화
    • 히브리어 ( 문자를 숫자 매칭 )
    • 심층암호화
      • 스테가노 그래피
        원래 메세지를 다른 매체로 숨기
    • 전자암호화
      • 메세지의 어순을 바꿈
    • 환자암호화 ( 시저스 암호 )
      • 문자 베열을 밀어내거나 바꿈
    • 비제네르 암호화
      • 최초로 key를 이용
    • 20세기 암호화 ( 전쟁 )
      • 1~2차 세계대전을 기준으로 아날로그 → 전자식
      • 에니그마암호화 (세르비우스) , 엘렌튜링 → 현대암호학
  • 2세대 현대 암호학 ( key 를 활용한 암호학 )

보안의 3요소

1. 기밀성 (3자가 알 수 없게)  인증	        id/pw
2. 무결성 (위변조 불가)         위변조		hash
3. 가용성 (사용시간 유지)      지속성

현대 암호화 종류

- 단방향 : hash 암호화만 수행 (무결성)   복호화가 불가능하기 때문에 key로 활용
- 양방향 (대칭)  암호화/복호화 키가 동일
- **비대칭 : 암호화/복호화 키가 한쌍으로 다른키가 쓰임**
- 하이브리드 : 키교환은 비대칭 , 데이터 전달은 대칭
    - 단방향 암호화
        1. 복호화 X
        2. 평문 (암호화) → 암호문
        3. 메세지 진위를 확인 (위변조) , 무결성
        4. hash algorithm : md5($1) , sha , sha2($6) 등등
    - 양방향 암호화 (key가 존재)
        1. 한쌍의 알고리즘 (암호화/복호화)를 사용
        2. 평문 (key : 암호화 ) 암호문
        암호문 (key : 복호화 ) 평문
        3. 대칭/비대칭 암호화 - 키를 기준으로 대칭, 비대칭을 나눔

대칭 암호화

1. 스트림 암호화 방식 : 입력되는 순서대로 암호화 수행 (RC4,RC5.........)
2. 블록 암호화 (block cipher) : 데이타를 나누어서 암호화 수행 ( xor , 전치 , 치환) - 카드 섞듯이..
    
   2-1. DES : date encryption standard ( 16라운드 ): 전 세계적으로 대칭 블록 암호화 표준
    
   1. 64bit 대칭키 크기 *** (block크기)
   2. 블록 byte당 1bit 의 패리티 (오류 검사) 비트 블록당 할당 [ 1byte = 8bit ]
   3. 라운드키크기 56bit ( 8bit가 패리티 )
    분할된 실제 대칭키 크기
    (라운드 안에서 동작 : 48 bit (32-8) (32-8) )
   4. 16라운드 **
    - 키워드 : 64bit 대칭키 크기 , 16라운드
    
 2-2.  3DES : DES를 다중으로 반복하여 암호 수행
    
   1. block 크기 => 64bit
    2. 실제 대칭키 크기 => 168bit (192/3 = (64-8) + (64-8) + (64-8)
    3. 블록 byte당 1bit씩 패리티(오류검사) 비트
    4. 분할된 크기 56bit => 실제 대칭키 크기 48bit
    실제 대칭키= 56X3 = 168bit
    - des,3des  차이점 : 192 ` 168 ,대칭키 크기 3배 , 3번 반복
    
2-3. aes  (advanced encryption standard)
    
   1. DES의 취약점 완화 , NIST (미국 국립표준연구소) 에서 개발
   2. SPN구조(병렬레이어구조) 이용 (Feistel구조와 spn구조 검색해볼것)
   3. block 크기 -> 128bit
   4. 대칭키 크기 -> 128/192/256bit

> 64bit des
192bit 3des
128/192/256bit aes
> 
  • SEED
    • KISA개발
    • 국내 인터넷 뱅킹 웹기반 서비스에 사용
    • 128/256bit 대칭 블록 암호화 알고리즘
      • 대칭키 크기는 그 안정성을 위해 128bit이상으로 처리함
  • 대칭키 암호화
    • 특징
      1. 비대칭 암호화에 비해 빠름
      2. 암호문 일정함 (증가 X)
      3. 통신에서 주로 사용
    • 문제점
      1. 반드시 키 동기화 작업
      2. key노출 시 기능 상실
    • 대안방안: 비대칭키

비대칭 암호화

  • 개인키 : private key 복호화

  • 공개키 : public key 암호화
    - (통신)교환은 보통 공개키 → 주고받는것은 늘 공개키 , 개인키는 주고 받지 않음
    - 공개키는 모든 사용자에게 공개 ( 암호화) 교환
    - 개인키는 개인만 사용하는 키 ( 복호화 )
    - 공개키로 암호화된 데이타는 개인키로만 복호화가능 -> 공인인증서 ,전자서명

    • 특징

      1. key 동기화 문제 해결
      2. 전자서명에 주로 사용
      3. 알고리즘 어려움
    • 종류

      1. RSA (Rivest Shamir, adleman) 1024 2048 byte이상 설정-
        1. 리베스트,샤미르,애들먼이 제작
        2. 소인수 분해기반
        3. 가장 많이 쓰는 비대칭 암호
        4. 암호화가 무작위로 바뀌지만 길이 일정
        5. 인증 느리지만 인증 후 통신은 빠름
      2. DSA(Digital Signature Algorithm) (Signature: 서명값: 구분값 : 식별값 )
        1. 미국표준 NIST 에서 개발 전자서명 표준
        2. 이산대수 기반
        3. 난수가 포함 길이가 일정하지 않음
        4. 인증은 빠를수도 있지만 인증 후 통신이 불규칙
      3. ECC (Elliptic Cuirve Cryptosystem)
        1. 타원곡선 암호화
        2. 다른 알고리즘에 응용되어 사용됨
      • 소인수분해 RSA , PGP , robin
      • 이산대수 DH , ElGmal ,DSA
      • 타원곡선방식 ECC
    • 공개키 암호화 → 개인키 복호화 : 데이터를 안전하게 전송할 수 있는 보안 관점

    • 개인키 암호화 → 공개키 복호화 : 신뢰할 수 있는 단체라는 것을 인증하는 관점

    • 비대칭 암호화의 장점

      1. key 동기화에 대한 안정성이 높음
      2. 인증을 통한 기밀성 보장
      3. 부인방지를 통한 무결성 보장
      • 비대칭 암호화의 단점

        1. 암호화/복호화의 처리속도가 느림

        2. MITM 공격에 취약함 (인증서를 통해 해결)

          • MITM공격 (Man in the middle attack) : 중간자 공격

            • 공격자가 통신경로 중간에 끼어드는 형태
            • 공개키 교환 과정에서 공격자가 자신의 공개키를 끼워 넣어 속임
            • 가로챈 자가 준 공개키로 암호화를 하기 때문에 대칭 암호화가 됨 → 그걸로 복호화를 함 → 다시 보내줄 때는 탈취한 공개키로 암호화해서 다시 보내줌

하이브리드형 암호화: 대칭/비대칭 암호화의 장점 혼합

  • 대칭 암호화 : 빠른 처리 속도
  • 비대칭 암호화 : 키 동기화의 안정성
    • 비대칭 암호화로 비밀키 교환후 대칭 암호화 방식으로 통신
  • key 동기화
    • key-wrapping (session-key방식)
    • 임의의 값을 교환하여 한 시스템에서 생성된 비밀키를 동기화하는 방식
    • WEB에서 주로 사용

  • Diffie-Hellman 키 동기화 방식 - 치퍼(알고리즘 메소드)

    • 비대칭으로 시작하지만 대칭으로 끝남.. 중간자 공격을 하려해도 계산을 하며 값이 달라지기 때문에 할 수 없음
    • 키는 주기적으로 달라짐
    • 각자 시스템에서 비밀키를 생성하지만 양측 동일한 비밀키가 생성
    • 임의의 값을 교환 생성된 비밀키를 동기화하는 방식
    • 이산대수 사용
      • P -> 소수(1,3,7,11,13,17) 뒤에 1,3,7 나오면 무조건 소수
        g -> 알고리즘 초기값

        clinet

        1. 개인키(b)생성
        2. 공개키(a) 생성 a= g^b mod p
        3. 서버에 공개키(a)전달
        • 요약: 만들어진 공개키생성 -> 서버로 전송

        server

        1. 개인키(y)생성
        2. 공개키(x) 생성 x= g^y mod p
        3. client에게 공개키(x)전달
        • 요약: 개인키 공개키생성 공개키를 클라이언트로 전송
  • server (비밀키생성) (비밀키 = 공개 ^개인 MOD소수)

    • clinet의 공개키(a)와 서버의 개인키(y)를 이용하여 비밀키(s)생성
      s= a^y mod p
  • client (비밀키생성)

    • server의 공개키(x)와 client의 개인키(b)를 이용하여 비밀키(s)생성
      s= x^b mod p

      g^개인키 mod p = 공개키산출
      산출공개키^(비밀키) mod p = 비밀키


정리

  • 단방향
    1. 단방향 알고리즘== hash
    2. 단방향 알고리즘은 복호화 x
    3. 단방향 알고리즘은 위변조 방지
    4. 종류 md5($1) , sha ,sha2 ($6)

  • 양방향 암호화의 특징 (key 교환)
    • 대칭암호화
      1. 스트림 방식(RC4,RC5) 블록방식 (des,3des,aes,seed)
      2. 종류 des,3des,aes , seed
      3. 대칭키 크기는 des는 64bit , 3des 192bit , aes 128bit/192bit/256bit , seed (128bit/256bit)
      4. 빠르지만 키 교환 동기화에 취약
      5. 키하나가 암호화 복호화를 담당
    • 비대칭 암호화
      1. 공개키와 개인키
      2. 키교환은 공개키만
      3. 종류에는 RSA,DSA
      4. RSA가 가장 많이 쓰임
      5. 대칭 키교환 보안
      6. MITM 중간자 공격에 취약
        • MITM => man in the Middle 중간자공격
          세션 중간에 끼어들어 비대칭키 통신방식을 대칭키 통신 방식으로 바꿈
  • 하이브리드 암호화
    1. 대표적→ 디피헬만
    2. 최초 비대칭 이후 통신은 대칭키로 통신
profile
:) GITHUB: https://github.com/YJ2123412

0개의 댓글