일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 복습
- IT
- Review
- 보안용어
- 리눅스마스터2급
- 워게임
- Security
- 웹해킹
- 리눅스
- 정리
- keyword
- webhacking
- 기록
- 취약점진단
- Linux
- 자격증
- 드림핵
- 보안
- DreamHack
- 클라우드
- 자격증공부
- it자격증
- reivew
- 정보처리기사
- wargame
- 공부
- Shell
- study
- 위험관리
- 케이쉴드주니어
- Today
- Total
IT Memory Note
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(3) 본문
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) : 오픈 소스 웹 애플리케이션 보안 프로젝트로서 주로 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 기관
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(2) (0) | 2024.08.29 |
---|---|
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(1) (0) | 2024.08.29 |
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(2) (0) | 2024.08.27 |
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(1) (1) | 2024.08.27 |
[정보처리기사] 서버 프로그램 구현 : 배치 프로그램 구현 (0) | 2024.08.21 |