소프트웨어 개발 보안 설계
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인 메시지 다이제스트를 출력하는 해시 알고리즘
'정보처리 > 정보시스템구축관리' 카테고리의 다른 글
소프트웨어 개발 보안 구축 구현 1/5 (0) | 2025.03.24 |
---|---|
소프트웨어 개발 보안 구축 설계 7/7 (0) | 2025.03.23 |
소프트웨어 개발 보안 구축 설계 5/7 (0) | 2025.03.21 |
소프트웨어 개발 보안 구축 설계 4/7 (2) | 2025.03.20 |
소프트웨어 개발 보안 구축 설계 3/7 (0) | 2025.03.19 |