IT Memory Note

[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(3) 본문

자격증/정보처리기사

[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(3)

h00ddu 2024. 8. 27. 23:02

 

1️⃣ 소프트웨어 개발 보안 설계


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

 

1. 암호 알고리즘(Encryption Algorithm)

 

⓵ 암호 알고리즘의 개념

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

암호화 알고리즘의 구분


※ 스트림(Stream) 암호 : 평문과 같은 길이의 키 스트림을 연속적으로 생성하여 평문과 이진 수열을 비트 단위로 XOR 연산하여 암호문을 생성하는 대칭키

   암호화 기법
 블록(Block) 암호 : 평문을 일정한 블록 단위로 나눠 각 블록마다 암호화 과정을 수행하여 고정된 크기의 블록 단위의 암호문을 생성하는 대칭키 암호화 기법


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

용어 설명
평문(Plain / Plaintext) 암호화되기 전의 원본 메시지
암호문(Cipher / Ciphertext) 암호화가 적용된 메시지
암호화(=Encrypt / Encryption / Encoding) 평문을 암호문으로 바꾸는 작업
복호화(=Decrypt / Decryption / Decoding) 암호문을 평문으로 바꾸는 작업
키(Key) 적절한 암호화를 위하여 사용하는 값
치환 암호(대치 암호, Substitution Cipher) 비트, 문자 또는 문자의 블록을 다른 비트, 문자 또는 블록으로 대체하는 방법
전치 암호(Transposition Cipher) 비트, 문자 또는 블록이 원래 의미를 감추도록 바리바꿈 등을 이용하여 재배열하는 방법

 


2. 암호 알고리즘 방식

 

  • 양방향인 대칭키 암호 방식과 비대칭키 암호 방식이 있고, 일방향 해시함수 방식인 MDC, MAC가 있음

⓵ 양방향 방식

 

 ㉮ 대칭키 암호 방식 : 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호키를 쓰는 알고리즘

 

  • 비밀키 전달을 위한 키 교환이 필요하고, 암호화 및 복호화의 속도가 빠름
  • 대칭키는 블록 암호화와 스트림 암호화 알고리즘으로 나뉨

< 대칭키 암호 방식 >

방식 설명
블록 암호 방식 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방법
예 : DES, AES, SEED
스트림 암호 방식 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식
예 : RC4

※ DES(Data Encryption Standard) : 56bit의 키를 이용, 64bit의 평문 블록을 64bit의 암호문 블록으로 만드는 블록 암호 방식의 미국표준(NIST)

   암호화 알고리즘
※ AES(Advanced Encryption Standard) : 고급 암호화 표준이라고 불리는 AES는 DES를 대체한 암호 알고리즘이며 암호화와 복호화 과정에서 동일한

   키를 사용하는 대칭키 암호화 알고리즘

※ SEED : KISA, ETR에서 개발하고 TTA에서 인증한 안전성, 신뢰성 우수한(3 DES 보다) 고속 블록 단위의 128비트 대칭키 암호화 알고리즘 


  ㉯ 비대칭키 암호 방식(=공개키 암호 방식) : 사전에 개인 키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식

 

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

※ RSA : 현재 비대칭키 암호 방식 중에서 가장 널리 쓰이고 있는 방식으로서, 소인수분해의 어려움을 이용한 방식

※ 디피-헬만(Diffie-Hellman) : 암호키를 교환하는 방법으로써 두 사람이 암호화되지 않은 통신망을 통해 공통의 비밀키를 공유할 수 있도록 하는 방식


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

 

구분 대칭키 암호 방식 비대칭키 암호 방식
대칭키(비밀키) 비대칭키(공개키, 사설키)
키의 관계 암호화 키 = 복호화 키 암호화 키 ≠ 복호화 키
키 개수 n(n-1)/2 2n
암호 알고리즘 공개 공개
장점 계산 속도가 빠름 암호화키 사전 공유 불필요
 관리해야 할 키 개수가 적음
단점 키 분배 및 관리의 어려움
 기밀성만 보장
계산 속도 느림
알고리즘 DES, AES, SEED 디피-헬만, RSA

 


⓶ 일방향 암호 방식(해시 암호 방식) : 임의 길이의 정보를 입력받아, 고정된 길이의 암호문(해시값)을 출력하는 암호 방식

 

방식 설명
MAC
(Message Authentication Code)
키를 사용하는 메시지 인증 코드로 메시지의 정당성을 검증하기 위해 메시지와 함께 전송되는 값
메시지의 무결성과 송신자의 인증을 보장
MDC
(Modification Detection Code)
키를 사용하지 않는 변경 감지 코드로 수신자는 받은 데이터로부터 새로운 MDC를 생성하여 송신자에게 받은 MDC와 비교하여 해당 메시지가 변경되지 않았음을 보장하는 값
 메시지의 무결성 보장

■ 해시 함수(Hash Function) : 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수

 - 해시 함수를 이용한 해시 알고리즘은 일방향 양호 방식으로 임의 길이의 정보를 입력받아, 고정된 길이의 암호문(해시값)을 출력하는 암호 방식

 - 해시 함수가 적용된 정보는 복호화가 불가능함

 - 해시 알고리즘의 종류 : MD5, SHA-1, SHA-256/384/512, HAS-160, HAVAL 등


3. 암호 알고리즘 상세

 

⓵ 대칭키 암호화 알고리즘

 

종류 설명
DES(Data Encryption
Standard)
 1975년 IBM에서 개발하고 미국의 연방 표준국(NIST)에서 발표한 대칭키 기반의 블록 암호화 알고리즘
블록 크기는 64bit, 키 길이는 56bit인 페이스텔(Feistel) 구조, 16라운드 암호화 알고리즘
DES를 3번 적용하여 보안을 더욱 강화한 3 DES(Triple DES)도 활용됨
SEED  1999년 국내 한국인터넷진흥원(KISA)이 개발한 블록 암호화 알고리즘
128bit 비밀키로부터 생성된 16개의 64bit 라운드키를 사용하여 총 16회의 라운드를 거쳐 128bit의 평문 블록을 128bit 암호문 블록으로 암호화하여 출력하는 방식
AES(Advanced
Encryption Standard)
 2001년 미국표준기술연구소(NIST)에서 발표한 블록 암호화 알고리즘
 DES의 개인키에 대한 전사적 공격이 가능해지고, 3 DES의 성능 문제를 극복하기 위해 개발
 블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit, 256bit로 분류
 AES의 라운드 수는 10, 12, 14라운드로 분류되며, 한 라운드는 SubBytes, ShiftRows, MixColumns, AddRoundKey의 4가지 계층으로 구성
ARIA(Academy
Research Institute
Algorithm)
 2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘
학계(Academy), 연구기관(Research Institute), 정부(Agency)의 영문 앞 글자로 구성
 블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit. 256bit로 분류
 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발되었으며, ARIA가 사용하는 대부분의 연산은 XOR과 같은 단순화 바이트 단위 연산으로 구성
IDEA(International Data
Encryption Alogorithm)
 DES를 대체하기 위해 스위스 연방 기술 기관에서 개발한 블록 암호화 알고리즘
 128bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦
LFSR(Linear Feedback
Shift Register)
 시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태값들이 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘
 LFSR에서 사용되는 선형 함수는 주로 배타적 논리합(XOR)이고, LFSR의 초기 비트값은 시드(Seed)라고 함
Skipjack 미 국가안보국(NSA, National Security Agency)에서 개발한 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보다 키의 비트 수를 적게하면서 동일한 성능을 제공
EIGamal 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 알고리즘의 한 종류로서 256bit의 해시값을 생성하는 해시함수
AES(미연방 표준 알고리즘)의 키 길이인 128, 192, 256bit에 대응하도록 출력 길이를 늘인 해시 알고리즘
HAS-160 국내 표준 서명 알고리즘 KCDSA(Korean Certificate-based Digital Signature Algorithm)를 위하여 개발된 해시함수
MD5와 SHA1의 장점을 취하여 개발된 해시 알고리즘
HAVAL 메시지를 1024bit 블록으로 나누고 128, 160, 192, 224, 256bit인 메시지 다이제스트를 출력하는 해시 알고리즘

 


 

(6) 데이터베이스 암호화 기법

 

구분 구성도 설명
API 방식
애플리케이션 레벨에서 암호 모듈(API)을 적용하는 애플리케이션 수정 방식
애플리케이션 서버에 암•복호화 모듈이 DB 서버에 설치된 방식
Plug-In 방식
암•복호화 모듈이 DB 서버에 설치된 방식
DB 서버에 암•복호화 기능을 수행하는 방식
TDE 방식
DB 서버의 DBMS 커널이 자체적으로 암•복호화 기능을 수행하는 방식
내장되어 있는 암호화 기능(TDE, Transparent Data Encryption)을 이용
Hybrid 방식
API 방식과 Plug-In 방식을 결합하는 방식
DB 서버와 애플리케이션 서버로 부하 분산

 


 

(7) 안전한 전송을 위한 데이터 암호화 전송

 

  • 민감한 정보를 통신 채널을 통하여 전송 시에는 반드시 암•복호화 과정을 거쳐야 하고, IPSec, SSL/TLS, S-HTTP 등 보안 채널을 활용하여 전송함

VPN(Virtual Private Network): 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션이자 여러 공중 인터넷망을 하나의 사설망처럼 사용할 수 있는 기술

 - VPN 방식 : SSL, IPSec

 

1. PPTP(Point to Point Tunnel Protocol)

 

  • 마이크로소프트사(Microsoft)가 개발한 프로토콜로 IP, IPX 페이로드를 암호화하고, IP 헤더로 캡슐화하여 전송하는 프로토콜
  • PPP(Point-to-Point Protocol)에 기초하여 2대의 컴퓨터가 직렬 인터페이스를 이용하여 통신할 때 사용함
  • 하나의 터널에 하나의 연결만을 지원하여 일대일 통신만 가능함
  • 데이터 링크 계층(2계층)에서 사용하는 보안 프로토콜

2. L2F(Layer 2 Forwarding)

 

  • 시스코사(Cisco)에서 개발한 프로토콜로 하나의 터널에 여러 개의 연결을 지원하여 다자간 통신이 가능하도록 하는 프로토콜
  • 전송 계층 프로토콜로 TCP가 아닌 UDP를 사용함
  • 데이터 링크 계층(2계층)에서 사용하는 보안 프로토콜

3. L2TP(Layer 2 Tunneling Protocol)

 

  • L2F와 PPTP의 결합한 방법으로 마이크로소프트사와 시스코에서 지원하고 있으며 호환성이 뛰어난 프로토콜
  • UDP 포트가 사용되고 터널링에 대한 인증을 수행함
  • 암호화 및 기밀성과 같은 데이터에 보안을 제공하지 않기 때문에 IPSec(Internet Protocol Security) 기술과 함께 사용함
  • 데이터 링크 계층(2계층)에서 사용하는 보안 프로토콜

4. IPSec(Internet Protocol Security)

 

⓵ IPSec의 개념

 

  • IP 계층(3 계층)에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용한 IP 보안 프로토콜

⓶ IPSec의 기능

 

기능 설명
기밀성 대칭 암호화를 통해 전송 데이터에 대한 기밀성 제공
비연결형 무결성 메시지가 위•변조되지 않았음을 보장하는 특성 제공
인증 데이터 원천 인증 및 송신처 인증
재전송 공격 방지 송신 측에서 IP 패킷별로 순서번호를 통해 재전송 공격 방지
접근 제어 Security Policy를 통해 시스템 접근 제어

 


⓷ IPSec 동작 모드

 

동작 모드 설명
전송 모드
(Transport Mode)
IP 패킷의 페이로드를 보호하는 모드
IP 상위 프로토콜 데이터를 보호하는 모드
터널 모드
(Tunnel Mode)
IP 패킷 전체를 보호하는 모드
IP 패킷 전체를 IPSec으로 캡슐화하여 IP 헤더를 식별할 수 없기 때문에 네트워크상 패킷 전송이 불가능
전송구간 주소 정보를 담은 New IP 헤더 추가

 


⓸ IPSec 프로토콜

 

프로토콜 설명
인증(AH, Authentication
Header) 프로토콜
메시지 인증 코드(MAC)를 이용하여 인증과 송신처 인증을 제공해주는 프로토콜로 기밀성(암호화)은 제공하지 않는 프로토콜
무결성, 인증 제공
암호화(ESP, Encapsulation
Security Payload) 프로토콜
메시지 인증 코드(MAC)와 암호화를 이용하여 인증과 송신처 인증과 기밀성을 제공하는 프로토콜
기밀성, 무결성, 인증 제공
키 관리(IKE, Internet Key
Exchange) 프로토콜
Key를 주고받는 알고리즘
공개된 네트워크를 통하여 Key를 어떻게 할 것 인가를 정의, IKE 교환을 위한 메시지를 전달하는 프로토콜

 


5. SSL(Secure Socket Layer)/TLS(Transport Layer Security)

 

⓵ SSL/TLS의 개념

 

  • 전송 계층(4계층)과 응용 계층(7 계층) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜

⓶ SSL/TLS의 특징

 

특징 설명
Netscape 사가 개발 SSL은 Netscape 사가 1990년대 초반 웹 보안을 위해서 처음 개발
다양한 암호 통신 방법 활용 대칭키 암호화, 공개키 암호화, 일방향 해시함수, 메시지 인증 코드, 의사난수 생성기, 전자서명을 조합하여 암호화 통신 수행
특정 암호기술에 의존하지 않음  암호 도구 목록(Cipher Suite)을 변경하여 강력한 알고리즘을 사용
SSL/TLS 상에 HTTP를 올려서 'https://'로 변경되어 사용

 


⓷ SSL/TLS 보안 기능

 

보안 기능 설명
기밀성 Triple DES, AES 같은 대칭키 암호화 알고리즘 제공
상호인증 연결 설정 과정에서 서버와 클라이언트 간에 신뢰할 수 있도록 인증 사용
RSA(비대칭키), DSS(전자서명) 알고리즘, X.509 공개키 인증서 사용
메시지 무결성 안전한 해시 알고리즘을 사용하여 메시지 인증 코드 생성

 


6. S-HTTP(Secure Hypertext Transger Protocol)

 

  • 웹 상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송하는 기술
  • S-HTTP에서 메시지 보호는 HTTP를 사용한 애플리케이션에 대해서만 가능함

 

(8) SW 개발 보안 적용 사례

 

구분 설명
BSIMM(Building
Security In
Maturity Model)
미국 국토안보국의 지원을 받아 수행된 소프트웨어 보증(Software Assurance, SwA) 프로젝트의 결과물 중 하나
보안 활동의 성숙도 수준을 영역별로 측정함으로써 소프트웨어 개발에 필요한 보안 능력 향상을 목표로 하는 개발 프레임워크
Open SAMM
(Software Assurance
Maturity Model)
OWASP에서 개발한 개방형 보완 프레임워크
개방을 원칙으로 소규모, 중규모, 대규모로 점진적인 확대가 가능한 융통성 있는 프레임워크
BSMM과는 달리 설계 리뷰와 코드 리뷰, 보안 테스팅을 3개의 중요한 검증 활동으로 정의함으로써 이들 활동 간의 연계성 강조
Seven TouchPoints 실무적으로 검증된 개발 보안 방법론 중 하나로써 SW 보안의 모범 사례를 SDLC(Software Development Life Cycle)에 통합한 소프트웨어 개발 보안 생명주기 방법론
MS SDL
(Security Development
Lifecycle)
마이크로소프트사가 2004년 이후 자사 소프트웨어 개발에 의무적으로 적용하도록 고안한 보안 강화 프레임워크
SDL은 개발 중인 제품이 보안 위협에 대해 얼마나 강인한가를 측정하기 위해 동일한 제품에 대해 'pre-SDL'과 'post-SDL'의 2개의 버전으로 테스트
OWASP CLASP
(=CLASP)
개념 관점, 역할 기반 관점, 활동 평가 관점, 활동 구현 관점, 취약성 관점 등의 활동 중심, 역할 기반의 프로세스로 구성된 보안 프레임워크로 이미 운영 중인 시스템에 적용하기 쉬운 보안 개발 방법론
프로그램 설계나 코딩 오류를 찾아내어 개선하기 위해 개발팀에 취약점 목록을 제공

※ OWASP(The Open Web Application Security Project) : 오픈 소스 웹 애플리케이션 보안 프로젝트로서 주로 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 기관