[정보처리기사 필기] 소프트웨어 개발 보안 구축 - 152. 암호 알고리즘

1. 암호 알고리즘의 개요

  • 패스워드, 주민번호, 은행계좌와 같은 중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법
  • 해시를 사용하는 단방향 암호화 방식, 개인키 및 공개키로 분류되는 양방향 암호화 방식
  • 암호 방식 분류

2. 개인키 암호화 Private Key Encryption 기법

  • 대칭 암호 기법, 비밀키 암호화 기법
  • 동일한 키로 데이터를 암호화하고 복호화
  • 데이터베이스 사용자는 평문의 정보 M을 암호화 알고리즘 E와 개인키 K를 이용하여 암호문 C로 바꾸어 저장시켜 놓으면 사용자는 그 데이터베이스에 접근하기 위해 복호화 알고리즘 D와 개인키 K를 이용하여 다시 방문의 정보 M으로 바꾸어 이용하는 방법
  • 암호화 대상이 n개일 때 사용되는 키의 개수 :
  • 개인키 암호화 방식의 종류
    • 블록 암호화 방식
      • 한 번에 하나의 데이터 블록을 암호화
      • DES, SEED, AES, ARIA, IDEA
    • 스트림 암호화 방식
      • 평문과 동일한 길이의 스트림을 생성하여 비트/바이트/워드 단위로 암호화
      • LFSR, RC4
  • 개인키 암호화 방식의 장단점
    • 장점 : 암호화/복호화 속도가 빠르며, 알고리즘이 단순, 공개키 암호 기법보다 파일의 크기가 작음
    • 단점 : 사용자의 증가에 따라 관리해야 할 키의 수가 상대적으로 많아짐

3. 공개키 암호화 Public Key Encryption 기법

  • 비대칭 암호 기법
  • 공개키 암호화 기법의 종류 : RSA 기법 등
  • 데이터를 암호화할 때 사용하는 공개키는 데이터베이스 사용자에게 공개, 복호화할 때의 비밀키는 관리자가 비밀리에 관리
  • 데이터베이스 사용자는 평문 정보 M을 암호화 알고리즘 E와 공개키 P를 이용하여 암호문 C로 바꾸어 저장시켜 놓고, 이를 복호화하기 위해서는 비밀키와 복호화 알고리즘에 권한이 있는 사용자만이 복호화 알고리즘 D와 비밀키 S를 이용하여 다시 평문의 정보 M으로 바꿀 수 있는 기법
  • 암호화 대상이 n개일 때 사용되는 키의 개수 : 2n
  • 자신만이 보관하는 비밀키를 이용하여 인증, 전자서명 등에 적용 가능
  • 공개키 암호화 기법의 장단점
    • 장점 : 키의 분배가 용이, 관리해야 할 키의 개수가 적음
    • 단점 : 암호화/복호화 속도가 느림, 알고리즘이 복잡, 개인키 암호화 기법보다 파일의 크기가 큼

4. 해시 Hash

  • 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미
  • 해시 함수 : 해시 알고리즘
  • 해시 값 (해시 키) : 해시 함수로 변환된 값이나 키
  • 무결성 검증을 위해 사용될 뿐만 아니라 정보보호의 다양한 분야에서 활용
  • 복호화가 거의 불가능한 일방향 함수에 해당
    • 일방향 함수 : 평문을 암호화하여 암호문으로는 변경할 수는 있으나, 암호문을 복호화하여 평문으로 변경하는 것은 불가능한 함수
  • 해시 함수의 종류
    • SHA 시리즈
      • 1993년 미국 국가안보국NSA이 처음 설계했으며, 미국 국립 표준 기술 연구소 NIST에 의해 발표
      • 종류 : SHA-0, SHA-1, SHA-2 (SHA-224), SHA 256, SHA-384, SHA-512
    • MD5
      • 1991년 R.Rivest가 MD4를 대체하기 위해 고안한 암호화 해시 함수
      • 블록 크기 : 512비트
      • 키 길이 : 128비트
    • N-NASH
      • 1969년 일본의 전신전화주식회사 NTT에서 발표한 암호화 해시 함수
      • 블록 크기, 키 길이 : 128비트
    • SNEFRU
      • 1990년 R.C.Meride가 발표한 해시 함수
      • 32비트 프로세서에서 구현을 용이하게 할 목적으로 개발
      • 블록 크기 : 512비트
      • 키 길이 : 128비트, 256비트

5. 공개키 기반 구조 PKI

  • 공개키 암호 시스템을 안전하게 사용하고 관리하기 위한 정보 보호 표준 방식
  • PKI의 종류
    • ITU-T의 X509 방식 : 인증기관에서 발생하는 인증서를 기반으로 상호 인증을 제공
    • 비X509 방식 : 국가별, 지역별로 맞게 보안 및 개발

6. 양방향 알고리즘 종류

  • SEED
    • 1999년 한국인터넷진흥원 KSA에서 개발한 블록 암호화 알고리즘
    • 블록 크기 : 128비트
    • 키 길이 : 128, 256
  • ARIA 
    • 2004년 국가정보원과 산학연협회가 개발한 블록 암호화 알고리즘
    • 학계 Academy, 연구기관 Research Institute, 정부 Agency
    • 블록 크기 : 128비트
    • 키 길이 : 128, 192, 256
  • DES
    • 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘
    • 3DES (Triple DES) : DES를 3번 적용하여 보안을 더욱 강화
    • 블록 크기 : 64비트
    • 키 길이 : 56비트
  • AES
    • 2001년 미국 표준 기술 연구소 NST에서 발표한 개인키 암호화 알고리즘
    • DES의 한계를 느낀 NST에서 공모한 후 발표
    • 블록 크기 : 128비트
    • 키 길이 : 128, 192, 256
  • RSA
    • 1978년 MIT의 라이베스트 Rivest, 샤미르 Shamir, 애들인 Adelman에 의해 제안된 공개키 암호화 알고리즘
    • 큰 숫자를 소인수분해하기 어렵다는 것에 기반하여 만들어짐
    • 공개키와 비밀키를 사용
    • 키 : 메시지를 열고 잠그는 상수
  • ECC
    • 1985년 RSA 암호 방식의 대안으로 제안
    • 이산대수 문제를 타원 곡선으로 옮겨 기밀성과 효율성을 높인 암호화 알고리즘
  • Rabin
    • 1979년 미하엘 라빈이 제안
    • 소인수분해의 어려움에 안전성의 근거를 둔 암호화 알고리즘

7. 솔트 Salt

  • 둘 이상의 계정에 대해 패스워드를 qwer1234라고 지정하고 같은 암호화 알고리즘을 적용하게 되면 결과도 마찬가지로 동일하게 나타나 이 경우 공격자가 나타나면 하나의 암호만 해제해도 둘 이상의 계정을 알게됨 → 이를 방지하고자 암호화를 수행하기 앞서 원문에 무작위의 값을 덧붙이는 과정을 수행
    • 이 때의 무작위 값을 솔트라고 함
  • 솔트를 사용하면 같은 패스워드에 대해 암호화를 수행하더라도 서로 다른 결과가 나타나게 되어 더 안전하게 암호화된 데이터를 관리할 수 있게 됨