암호화 알고리즘 종류

P·2021년 12월 7일
0

암호화 알고리즘의 종류

양방향 암호화

  • 대칭키 암호화
  • 비대칭키 암호화

단방향 암호화

  • Hash

양방향 암호화

대칭키 암호화

  • 비밀 키 암호화라고도 불림
  • 암호화, 복호화 시 같은 키를 이용
  • 대칭키 암호화의 방식
  1. 스트림 암호
  2. 블록 암호

스트림 암호

  • 평문과 동일한 길이의 키 스트림(Key Stream)을 생성하여 평문과 XOR연산을 통해 암호화, 복호화를 수행
  • 무선 통신 환경에서 주로 사용
  • 스트림 암호의 대표적인 종류
    RC4, A5/1, A5/2, A5/3등..

블록 암호

  • 평문을 고정된 크기의 블록 단위로 암호화, 복호화 수행
  • 각 블록 단위마다 동일한 키 사용
  • 블록 크기를 맞추기 위해 패딩(Padding) 사용
  • 운용 방식(운용 모드)가 나뉘어 있음
  • Feistel: 암호화와 복호화 과정이 동일, 역함수가 존재하는 요소와 존재하지 않는 요소 모두 이용 가능
  • SPN(Substitution-Permutation Network): 대체(substitution)와 치환(permutation)을 이용하여 연산, 복호화 시 별도로 루틴 구현해야함
  • 블록 암호의 대표적인 종류
    DES, AES, SEED, ARIA 등..

블록 암호의 운용 방식
  1. ECB(Electric Codebook) 모드

    • 암호화, 복호화 시 항상 같은 키를 사용하여 수행
    • 평문이 n bits의 입력이라면 암호문도 n bits, 평문의 길이가 블록 길이의 배수가 아니면 평문에 마지막 부분에 Padding이 필요함
    • 블록 단위의 패턴이 유지되기 때문에 평문에서 같은 값을 가지는 블록은 모두 같은 암호문 값을 가지게 됨
    • 많은 데이터베이스를 암호화 할 때 병렬적으로 처리할 수 있음
    • ECB 모드의 그림
  2. CBC(Cipher Block Chaining) 모드

    • 평문의 첫번째 블록은 IV(Initial Vector)라고 불리는 초기 벡터와 처음 XOR 연산을 수행
    • 다음 블록들의 평문은 이전 암호문 블록 결과와 XOR 연산을 수행
    • 동일한 IV를 사용하는 환경에서는 평문이 동일하다면 암호문도 동일함
    • CBC모드의 그림
  3. CFB(Cipher Feedback) 모드

    • CBC와 동작이 비슷하지만 블록 크기(n)가 평문이나 암호문의 블록 크기(r)보다 작거나 같을 수 있음
    • 블록 기반 암호(DES, AES등)에 의해 블록 크기(64, 128등)가 정해지지 않음
    • n비트 이동 레지스터 S 값을 블록 암호를 이용하여 암호화, 복호화를 수행
    • 평문 또는 암호문 r 비트를 임시 블록 T에서 맨 앞 r 비트만큼 가져와 XOR 연산 수행
    • 수행한 결과 값을 다음 n비트 이동 레지스터의 뒷부분에 추가
    • CFB 모드의 그림
  4. OFB(Output Feedback) 모드

    • CFB 모드와 비슷
    • CFB 모드는 평문 r비트와 n비트 이동 레지스터의 암호화 결과값 r비트를 XOR 연산한 결과값을 다음 n비트 이동 레지스터 S에 보냄
    • OFB 모드는 r비트 끼리 XOR하기 전 임시 저장 블록에 있는 값 앞부분 r비트를 다음 n비트 이동 레지스터 S의 뒷 부분에 추가
    • 암호문 블록 전송 중 오류가 발생해도 오류는 다음 블록에 영향을 주지 않음(오류 파급의 영향 X)
    • OFB 모드의 그림
  5. CTR(Counter) 모드

    • CTR 모드는 암호화 시 피드백이 없음
    • 대신 초기 값 IV는 미리 정의된 값으로 초기화 하고 다음 블록들에서는 카운터를 이용하여 증가함
    • n비트 카운터는 각각의 블록 마다 미리 정의된 규칙에 따라 증가함(mod 2^n만큼)
    • CTR 모드의 그림

비대칭키 암호화

  • 공개 키 암호화라고도 불림
  • 암호화, 복호화 시 서로 다른 키를 이용하여 생성
  • 공개 키(Public Key)로 암호화를 하면 데이터 보안(메세지 교환)을 중점으로 둠
  • 비밀 키(Private Key)로 암호화를 하면 전자서명을 통한 인증을 중점으로 둠

공개 키 암호

  • 송신자는 수신자의 공개 키를 가지고 암호화를 수행
  • 수신자는 공개 키로 암호화 된 암호문을 자신의 개인 키로 복호화
  • 복잡한 수학연산을 이용하여 계산하기 때문에 대칭키 암호화 보다 연산속도나 처리속도가 느릴 수 있음
  • 공개 키 암호의 대표적인 종류
    RSA, Rabin, ElGamal, ECC 등..

비밀 키 암호

  • 개인 키를 소유한 사람만이 전자 서명 알고리즘을 통해 평문에 대한 서명 값을 생성할 수 있음
  • 생성된 서명 값에 대해 공개키를 이용하면 평문을 검증할 수 있음
  • 비밀 키 암호의 대표적인 종류
    DSA, RSA Signature, ECDSA 등..

단방향 암호화

Hash

  • 임의의 길이를 가지는 메시지를 고정된 크기의 해시 값을 계산하는 함수
  • 메시지가 변하면 해시 값은 완전히 다른 값으로 나와야 함(무결성)
  • 단방향 암호화만 기능(평문을 암호화하는 것은 가능, 암호문을 평문으로 복호화 불가능)
  • MDC(Modification Detection Code, 변경 감지 코드)로 메세지 무결성 검증
  • MAC(Message Authentication Code, 메시지 인증 코드)로 메세지 무결성+송신자에 대한 검증
  • 해시 함수의 종류
    MD5, RIPEMD, SHA-1, SHA-2, SHA-3 등..

암호학적 해시 함수의 조건

  • 역상 저항성(프리이미지 저항성): 어떤 해시 값에 대해 원래 입력값(평문)를 찾는것이 어려워야 함, 일방향성 이라고도 부름
  • 제2 역상 저항성(제2 프리이미지 저항성): 어떤 입력값(평문)에 대해 그 평문의 해시 값과 같은 해시 값을 가지는 또 다른 메세지(평문)를 찾는것이 어려워야 함
  • 충돌 저항성: 같은 해시 값을 가지는 두 입력값(평문)을 찾는 것이 어려워야 함
출처: https://javaplant.tistory.com/26
그림 출처: Cryptography & Network Security Mc Graw Hill Education Forouzan
profile
개인 정리 공간

0개의 댓글