본문 바로가기
정보처리/정보시스템구축관리

소프트웨어 개발 보안 구축 설계 6/7

by 피갓자 2025. 3. 22.

소프트웨어 개발 보안 구축 설계
소프트웨어 개발 보안 구축 설계

소프트웨어 개발 보안 설계

SW 개발 보안을 위한 암호화 알고리즘

암호 알고리즘(Encryption Algorithm) 개념

데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법

 

암호 알고리즘 관련 주요 용어

평문(Plain/Plaintext) : 암호화되기 전의 원본 메시지

암호문(Cipher/Ciphertext) : 암호화가 적용된 메시지

암호화(Encrypt/Encryption/Encoding) : 평문을 암호문으로 바꾸는 작업

복호화(Decrypt/Decryption/Decoding) : 암호문을 평문으로 바꾸는 작업

키(Key) : 적절한 암호화를 위하여 사용하는 값

치환 암호(대치 암호, Substitution Cipher) : 비트, 문자 또는 문자의 블록을 다른 비트, 문자 또는 블록으로 대체하는 방법

전치 암호(Transposition Cipher) : 비트, 문자 또는 블록이 원래 의미를 감추도록 자리바꿈 등을 이용하여 재배열하는 방법

암호 알고리즘 방식

양방향 방식

대칭 키 암호 방식

  • 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘
  • 비밀키 전달을 위한 키 교환이 필요하고, 암호화 및 복호화의 속도가 빠름

대칭 키 암호 방식

블록 암호 방식 : 긴 평문을 암호화하기 위해 공정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방법. 예를 들어, DES, AES, SEED

스트림 암호 방식 : 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식. 예를 들어, RC4

 

비대칭 키(공개키) 암호 방식

  • 사전에 개인 키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식
  • 공개키(Public Key)와 개인 키(사설키, Private Key)가 존재하며, 공개키는 누구나 알 수 있지만, 그에 대응하는 개인 키는 키의 소유자만이 알 수 있어야 함(공개키는 보안 타협 없이 공개적으로 배포 가능)
  • 공개키로 암호화된 메시지는 반드시 개인 키로 복호화해야 함
  • 비대칭 키 암호 방식에는 RSA, ECC, ELGamal, 디피-헬만 등이 있음
  • 자신만이 보관하는 비밀키를 이용하여 인증, 전자서명 등에 적용 가능

대칭 키 암호 방식 및 비대칭 키 암호 방식 비교

대칭 키 암호 방식

  • 장점 : 계산 속도 빠름
  • 단점 : 키 분배 및 관리의 어려움, 기밀성만 보장

비대칭 키 암호 방식

  • 장점 : 암호화 키 사전 공유 불필요, 관리해야 할 키 개수가 적음
  • 단점 : 계산 속도 느림

일방향(해시) 암호 방식

  • 임의 길이의 정보를 입력받아, 고정된 길이의 암호문(해시값)을 출력하는 암호 방식
  • 해시 암호화 알고리즘이 적용된 정보는 복호화 불가능

일방향 암호 방식

메시지 인증 코드(MAC, Message Authentication Code)

  • 키를 사용하는 메시지 인증 코드로 메시지의 정당성을 검증하기 위해 메시지와 함께 전송되는 값
  • 메시지의 무결성과 송신자의 인증 보장

변경 감지 코드(MDC, Modification Detection Code)

  • 키를 사용하지 않는 변경 감지 코드로 수신자는 받은 데이터로부터 새로운 MDC를 생성하여 송신자에게 받은 MDC와 비교하여 해당 메시지가 변경되지 않았음을 보장하는 값
  • 메시지의 무결성 보장

암호 알고리즘 상세

대칭 키 암호화 알고리즘

DES(Data Encryption Standard)

  • 1975년 IBM 사에서 개발하고 미국표준기술연구소(NIST)에서 발표한 대칭 키 기반의 블록 암호화 알고리즘
  • 블록 크기는 64bit, 키 길이는 56bit인 페이스텔(Feistel) 구조, 16라운드 암호화 알고리즘
  • DES를 3번 적용하여 보안을 더욱 강화한 3DES(Triple DES)도 활용됨

SEED

  • 1999년 국내 한국인터넷진흥원(KISA)이 개발한 블록 암호화 알고리즘
  • 128bit 비밀키로부터 생성된 16개의 64bit 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128bit의 평문 블록을 128bit 암호문 블록으로 암호화하여 출력하는 방식
  • 블록 크기는 128bit이며, 키 길이에 따라 128bit, 256bit로 분류

AES(Advanced Encryption Standard)

  • 2001년 미국표준기술연구소(NIST)에서 발표한 블록 암호화 알고리즘
  • DES의 개인 키에 대한 전사적 공격이 가능해지고, 3DES의 성능 문제를 극복하기 위해 개발
  • 블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit, 256bit로 분류
  • AES의 라운드 수는 10, 12, 14라운드로 분류되며, 한 라운드는 SubBytes, ShiftRows, MixColumns, AddRoundKey의 4가지 계층으로 구성

ARIA(Academy, Research Institute, Agency)

  • 2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘
  • ARIA는 학계(Academy), 연구기관(Research Institute), 정부(Agency)의 영문 앞 글자로 구성
  • 블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit, 256bit로 분류
  • 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발되었으며, ARIA가 사용하는 대부분의 연산은 XOR과 같은 단순한 바이트 단위 연산으로 구성

IDEA(International Data Encryption Algorithm)

  • DES를 대체하기 위해 스위스연방기술기관에서 개발한 블록 암호화 알고리즘
  • 128bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦

LFSR(Linear Feedback Shift Register)

  • 시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘
  • 선형 함수는 주로 배타적 논리합(XOR)이고, 초기 비트 값은 시드(Seed)라고 함

Skipjack

  • 미국국가안보국(NSA)에서 개발한 Clipper 칩에 내장된 블록 알고리즘
  • 소프트웨어로 구현되는 것을 막기 위해 Fortezza Card에 칩 형태로 구현됨
  • 전화기와 같이 음성을 암호화하는 데 주로 사용되고 64bit의 입출력, 80bit의 키, 32라운드를 가짐

비대칭 키 암호화 알고리즘

디피-헬만(Diffie-Hellman)

  • 최초의 공개키 알고리즘으로 W.Diffie와 M.Hellman이 1976년에 고안한 알고리즘으로서 유한 필드 내에서 이산 대수의 계산이 어려운 문제를 기본 원리로 하고 있음
  • 공개키 암호 방식의 개념을 이용하여 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 방법을 제시하였으며, 많은 키 분배 방식에 관한 연구의 기본이 됨(최초의 비밀키 교환 프로토콜)

RSA(Rivest, Shamir, Adleman)

  • 1977년 3명의 MIT 대학 수학 교수(Rivest, Shamir, Adleman)가 고안한 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘 이용하는 공개키 암호화 알고리즘
  • 비밀키의 복호화가 어려운 RSA 안전성은 소인수 분해 문제의 어려움에 근거를 두고 있음

ECC(Elliptic Curve Cryptography)

  • 1985년 코블리치와 밀러가 RSA 암호 방식에 대한 대안으로 처음 제안
  • 타원 곡선 암호는 유한체 위에서 정의된 타원곡선 군에서의 이산 대수 문제에 기초한 공개키 암호화 알고리즘
  • PKI 기반 RSA의 문제점인 속도와 안전성 해결하기 위해 타원 기반 구조체의 안정성과 효율성을 기반으로 생성되었고, RSA보다 키의 비트 수를 적게 하면서 동일한 성능을 제공하는 것이 가장 큰 특징

ELGamal

  • T.EIGamal이 1984년에 제안한 공개키 알고리즘
  • 이산 대수의 계산이 어려운 문제를 기본 원리로 하고 있으며, RSA와 유사하게 전자서명과 데이터 암복호화에 함께 사용 가능

해시(Hash) 암호화 알고리즘

MD5(Message-Digest algorithm 5)

  • 1991년 R.rivest가 MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용
  • 각각의 512bit짜리 입력 메시지 블록에 대해 차례로 동작하여 128bit의 해시값을 생성하는 해시 알고리즘

SHA-1(Secure Hash Algorithm)

  • 1993년 NSA에서 미 정부 표준으로 지정되었고, DSA(Digital Signature Algorithm)에서 사용
  • 160bit의 해시값을 생성하는 해시 알고리즘

SHA-256/384/512(Secure Hash Algorithm)

  • SHA(Secure Hash Algorithm) 알고리즘의 한 종류로서 256bit의 해시값을 생성하는 해시 함수
  • AES(Advanced Encryption Standard, 미연방 표준 알고리즘)의 키 길이인 128, 192, 256bit에 대응하도록 출력 길이를 늘인 해시 알고리즘

HAS-160

  • 국내 표준 서명 알고리즘 KCDSA(Korean Certificate-based Digital Signature Algorithm)를 위해서 개발된 해시 함수
  • MD5와 SHA1의 장점을 취하여 개발된 해시 알고리즘

HAVAL

  • 메시지를 1024bits 블록으로 나누고 128, 160, 192, 224, 256bit인 메시지 다이제스트를 출력하는 해시 알고리즘