[정처기 실기] 개발 보안 구현 - 정보 보안
지난 시간은 정보보안의 3요소(기무가), 3A(Authentication, Authoriztion , Accounting)그리고 정보보안 거버넌스(ISMS, PIMS, ISMS-P, ITSEC(유럽), TCSEC, CC)과 복구(RTO, RPO)에 대해 공부했습니다.
이번 시간은 암호화알고리즘 암기가 주된 학습목표입니다. 알고리즘 하나가 문제로 나오기도 하고 여러 알고리즘을 분류하게 하는 문제들이 정보처리기사 실기에 출제됩니다.
목차
암호화 알고리즘 기본 용어
용어 | 설명 |
평문 (Plaintext) |
암호화되지 않은 원본 데이터를 의미합니다. 암호화 과정을 거치기 전의 데이터로, 일반적으로 가독성이 있는 형태입니다. |
암호문 (Ciphertext) |
평문을 암호화한 결과로, 외부에 공개되어도 원본 데이터를 알 수 없는 형태입니다. 암호화 과정을 거쳐서 변환된 데이터이며, 보안 목적으로 사용됩니다. |
암호화 (Encryption) |
평문을 암호문으로 변환하는 과정을 의미합니다. 보안 목적으로 데이터를 숨기거나 보호하기 위해 암호화가 사용됩니다. |
복호화 (Decryption) |
암호문을 평문으로 변환하는 과정을 의미합니다. 암호화된 데이터를 원본 형태로 다시 복원하여 사용할 수 있도록 하는 것입니다. |
전자서명 (Digital Signature) |
전자 문서의 무결성과 인증을 보장하기 위해 사용되는 기술로, 송신자가 자신의 개인 키를 사용하여 문서에 서명하고, 수신자는 송신자의 공개 키로 서명을 검증합니다. |
양방향 암호화 (Symmetric Encryption) |
암호화와 복호화에 동일한 키를 사용하는 암호화 방식으로, 데이터를 보호하기 위해 사용됩니다. 대표적으로 DES, 3DES, AES, ARIA, IDEA, SKIPJACK 등이 있습니다. |
단방향 암호화 (Hash Function) |
평문을 암호화된 고유한 값으로 변환하는 암호화 방식으로, 복호화가 불가능하며, 주로 데이터 무결성 검증이나 비밀번호 저장에 사용됩니다. |
암호화 알고리즘이란?
암호화 알고리즘은 데이터를 안전하게 전송하거나 저장하기 위해 사용되는 수학적인 방법 또는 규칙의 집합입니다.
(양방향)대칭키 암호화
암호화와 복호화에 동일한 키를 사용하는 알고리즘입니다.
데이터를 전송하거나 저장하기 전에 암호화하여 안전하게 유지하고, 필요할 때 해당 데이터를 복호화하여 원래의 형태로 복원할 수 있습니다.
아래와 같이 블록방식과 스트림 방식이 있습니다.
장단점
블록 암호 알고리즘
알고리즘명 | 년도 | 개발 기관 | 블록(단위) | 길이(키) | 라운드 |
DES Feistel |
1977 | IBM | 64비트 | 56비트 | 16 |
3DES | 1998 | IBM | 64비트 | 112비트 | 48 |
AES | 1997 | NIST | 128비트 | 128/192/256 | 10, 12, 14 |
ARIA | 2003 | KISA | 128비트 | 128비트 | 12, 14, 16 |
IDEA | 1990 | ETH Zurich 스위스 |
64비트 | 128비트 | 8 |
SKIPJACK Cipper, 음성 암호 |
1997 | NSA | 64비트 | 80비트 | 32 |
SEED | 1998 | NSRI | 128비트 | 128/256 | 16 |
LEA 빅데이터, 클라우드,IoT, 모바일 |
2014 | 국가보안기술연구소 | 128비트 | 128비트 |
스트림암호 알고리즘
- LFSR (Linear Feedback Shift Register)
- LFSR은 선형 피드백 시프트 레지스터의 약어입니다.
- 비선형 시프트 레지스터보다 구현하기 쉽고, 난수를 생성하거나 시퀀스를 생성하는 데 사용됩니다.
- RC4 (Rivest Cipher 4)
- RC4는 Ron Rivest가 개발한 스트림 암호 알고리즘으로, 비밀 키를 사용하여 스트림을 생성하여 데이터를 암호화 또는 복호화합니다. 과거에는 많은 프로토콜에서 널리 사용되었지만, 보안 결함으로 인해 안전하지 않다고 여겨지고 있습니다.
- A5
- A5은 GSM(글로벌 시스템 for 이동 통신)에서 사용되는 스트림 암호 알고리즘으로, 휴대폰과 기지국 간의 통신에서 데이터를 암호화하는 데 사용됩니다.
- A5/1, A5/2, A5/3과 같은 여러 버전이 존재합니다. A5/1은 1987년에 처음 도입되었으며, A5/2와 A5/3은 그 이후에 개발되었습니다.
(양방향) 비대칭키 알고리즘
비대칭키 알고리즘은 대칭키 알고리즘과는 다르게 암호화와 복호화에 각각 다른 키를 사용하는 암호화 기법입니다. 이러한 알고리즘은 공개키 암호화라고도 불립니다.
이러한 이름은 암호화와 복호화에 사용되는 키가 쌍을 이루는데, 이 중 하나는 공개되어 있고(Public Key), 다른 하나는 비밀로 유지됩니다(Private Key).
종류
- 공개키 (Public Key)
- 공개키는 암호화에 사용되며, 모든 사람에게 공개됩니다. 이 키는 데이터를 암호화하는 데 사용되며, 암호화된 데이터는 해당 키로만 해독할 수 있습니다.
- 개인키 (Private Key)
- 개인키는 복호화에 사용되며, 비밀로 유지됩니다. 이 키는 암호화된 데이터를 해독하는 데 사용됩니다. 개인키는 오직 해당 키를 소유한 사용자만이 알고 있습니다
장/단점
장점
- 안전한 키 교환: 공개키를 사용하여 안전하게 키를 교환할 수 있습니다. 키를 교환하는 데에 대한 보안 문제를 대칭키 알고리즘에 비해 더 쉽게 해결할 수 있습니다.
- 디지털 서명: 개인키를 사용하여 디지털 서명을 생성할 수 있습니다. 이를 통해 메시지의 무결성을 보호하고 메시지 송신자를 인증할 수 있습니다.
- 공개키 기반의 인프라: 공개키 암호화는 공개 키 인프라 (PKI)를 통해 효율적으로 관리될 수 있습니다. 이를 통해 공개 키의 신뢰성을 확인하고 사용자 간에 안전하게 공개 키를 배포할 수 있습니다.
단점
- 계산 비용: 대칭키 알고리즘에 비해 계산 비용이 높을 수 있습니다. 특히, 고급 공개키 알고리즘은 계산적으로 요구되는 리소스가 많을 수 있습니다.
- 키의 크기: 공개키 암호화에 사용되는 키의 크기가 대칭키 알고리즘에 비해 크기 때문에, 데이터 전송량이 늘어날 수 있습니다.
- 보안 문제: 알고리즘 자체의 보안 문제나 공개 키의 안전한 저장이 어려울 수 있습니다. 공개 키가 유출되거나 위조될 경우 보안이 손상될 수 있습니다.
- 속도: 대칭키 알고리즘에 비해 공개키 암호화는 느린 속도를 가질 수 있습니다. 특히, 데이터의 양이 많은 경우 계산 비용이 많이 들 수 있습니다.
비대칭 알고리즘 종류
소인수 분해
분류 | 알고리즘명 | 년도 | 개발자 | 특징 |
소인수 분해 | RSA | 1977 | Ron Rivest, Adi Shamir, Leonard Adleman | 대표적인 공개키 암호화 및 디지털 서명 알고리즘. 소인수 분해 문제의 난해성에 기반하여 보안이 보장됨. |
Rabin | - | Michael O. Rabin | RSA와 비슷하지만, 더 간단한 알고리즘. |
이산대수
분류 | 알고리즘명 | 년도 | 개발자 | 특징 |
이산대수 | Diffie-Hellman | 1976 | Whitfield Diffie, Martin Hellman | 키 교환을 위한 공개키 암호화 프로토콜. 사용자 간에 비밀 키를 안전하게 공유할 수 있음. |
ElGamal | 1985 | Taher Elgamal | Diffie-Hellman 키 교환에 기반하여 공개키 암호화 및 디지털 서명을 지원하는 알고리즘. | |
DSA (Digital Signature Algorithm) | 1991 | National Security Agency (NSA) | 디지털 서명 생성을 위한 표준 알고리즘. |
타원 곡선
분류 | 알고리즘명 | 년도 | 개발자 | 특징 |
타원 곡선 | ECC (Elliptic Curve Cryptography) | 1985 | Neal Koblitz, Victor S. Miller | 작은 키 크기로 높은 보안 수준을 제공하는 알고리즘. 제한된 자원 환경에서의 보안 솔루션에 적합함. |
전자 서명
전자 서명은 전자적으로 생성된 데이터에 대한 인증과 무결성을 보장하기 위한 보안 기술입니다. 전자 서명은 전통적인 서명의 디지털 버전으로, 디지털 문서나 데이터의 출처와 정당성을 입증하는 데 사용됩니다.
- 키 생성: 전자 서명을 생성하기 위해 공개키 암호화 기술을 사용하여 공개 및 개인 키 쌍을 생성합니다.
- 서명 생성: 서명을 생성하려는 데이터에 대해 해시 함수를 사용하여 메시지 다이제스트를 생성한 다음, 개인 키를 사용하여 이 다이제스트를 암호화하여 서명을 생성합니다.
- 서명 확인: 서명을 검증하려는 사용자는 메시지의 원본을 해시 함수를 사용하여 다이제스트로 변환한 다음, 발신자의 공개 키를 사용하여 서명을 해독합니다. 이를 통해 메시지의 무결성과 발신자의 정당성을 확인할 수 있습니다.
단방향 암호화 알고리즘이란?
단방향 암호화 알고리즘은 입력 데이터를 암호화할 때 사용되며, 암호화된 결과를 복호화할 수 없는 암호화 방식입니다. 다시 말해, 암호화된 데이터를 원래의 평문으로 복원하는 것이 불가능(복호화)합니다.
알고리즘은 주로 해시 함수로 구현됩니다.
해시 함수의 특성
용어 | 개념 | 특성 |
역상 저항성 | 암호화된 데이터나 해시 값으로 원본 데이터를 복원하는 것이 어려운 정도를 나타내는 개념입니다. x<-y |
- 암호화된 데이터로부터 원본 데이터를 추론하기 어렵습니다. - 암호화된 데이터가 해독되더라도 원본 데이터가 비슷한지 예측하기 어렵습니다. |
제2 역상 저항성 (약한 충돌) |
암호화된 데이터나 해시 값이 수정되었을 때, 수정된 값을 원본 데이터로 복원하는 것이 어려운 정도를 나타내는 개념입니다. Y가 나오는 다른 x값이 나오면 안됨 |
- 암호화된 데이터가 조작되었을 때, 수정된 값을 원본 데이터로 복원하기 어렵습니다. - 원본 데이터와 그 수정된 값 간에 암호화된 데이터가 전혀 다르게 나타납니다. |
충돌 저항성 | 서로 다른 입력에 대해 같은 해시 값이 생성되는 충돌이 발생하는 것을 어렵게 만드는 정도를 나타내는 개념입니다. 두개의 다른 입력 값이 같은 해시값을 가지면 안됨 |
- 서로 다른 입력에 대해 같은 해시 값이 생성되는 충돌이 발생할 확률이 매우 낮습니다. - 안전한 해시 함수는 충돌이 발생할 확률이 극히 낮은 경우를 보장합니다. |
해시 암호 종류
종류 | 특징 |
MD5 | - MD5(Message-Digest Algorithm 5)는 메시지의 다이제스트를 생성하기 위한 해시 함수입니다. - 128비트 해시 값이 생성되며, 충돌 저항성이 상대적으로 약한 편입니다. 2008년에 결함 발견 |
SHA | - NSA - SHA(Secure Hash Algorithm)는 메시지의 다이제스트를 생성하기 위한 해시 함수의 일련의 알고리즘들을 가리킵니다. - 주로 SHA-1, SHA-256, SHA-384, SHA-512 등이 있으며, 각각 다른 길이의 해시 값을 생성합니다. - 보안 강도가 높아지는 순서대로 SHA-1, SHA-256, SHA-384, SHA-512입니다. |
HAS-160 | - HAS-160(Hash Algorithm Standard 160)은 160비트 해시 값으로 메시지의 다이제스트를 생성하는 해시 함수입니다. - SHA-1과 유사한 해시 함수로, 보안 측면에서는 SHA-1보다 약간 더 안전하다고 여겨집니다. |
암호학적 함수의 결정
무차별 대입 공격 (Brute Force Attack)
- 개념: 무차별 대입 공격은 암호나 비밀번호와 같은 인증 정보를 찾기 위해 가능한 모든 조합을 시도하는 공격 기법입니다.
- 특징:
- 모든 가능한 조합을 시도하므로 시간이 오래 걸릴 수 있습니다.
- 암호의 길이와 복잡성이 증가할수록 공격에 필요한 시간이 기하급수적으로 증가합니다.
- 대응책
- 보안 강도가 높은 암호를 사용하여 공격을 어렵게 만듭니다.
- 계정 잠금, 임계값 초과 알림 등의 보안 정책을 설정하여 대응합니다.
- 2단계 인증 및 다단계 인증과 같은 추가적인 보안 메커니즘을 도입합니다.
- 키 스트레칭
Rainbow Table 공격
- 개념: Rainbow Table 공격은 미리 계산된 해시 값을 사용하여 대규모의 해시 값을 빠르게 비교하여 암호나 비밀번호를 찾는 공격 기법입니다.
- 특징:
- 미리 계산된 해시 값을 사용하므로 비교적 빠른 시간 내에 해독이 가능합니다.
- 일반적으로 특정 해시 함수에 대한 Rainbow Table을 생성하는 데 시간이 오래 걸릴 수 있습니다.
- 대응책:
- 솔트(Salt)를 사용하여 해시를 보완하고 공격을 어렵게 만듭니다.
- 해시 함수를 사용하여 해시 값을 복잡하게 만들어 Rainbow Table을 사용할 수 없게 합니다.
- 보안 강도가 높은 암호를 사용하여 공격을 어렵게 만듭니다.
암호학적 해시 함수의 보안
- 키 스트레칭 (Key Stretching):
- 개념: 키 스트레칭은 비밀번호와 같은 저연산(약한) 키를 고연산(강한) 키로 변환하는 과정입니다. 이를 통해 암호학적 해시 함수를 통해 생성된 해시 값이 무차별 대입 공격에 대한 저항성을 향상시킵니다.
- 특징:
- 키 스트레칭은 단일 해시 대신 반복적인 해시 함수 호출을 사용하여 더 강력한 해시 값을 생성합니다.
- 보통은 비밀번호나 인증 키와 같은 저연산 키를 고연산 키로 변환하는 데 사용됩니다.
- 솔팅 (Salting):
- 개념: 솔팅은 해시 함수에 원본 데이터에 추가적인 임의의 데이터(솔트)를 추가하는 과정입니다. 솔트는 모든 사용자에게 공통적으로 적용되지 않고, 각각의 데이터마다 다르게 적용됩니다.
- 특징:
- 솔트를 추가함으로써 동일한 입력값이라도 각기 다른 해시 값을 생성하여 무차별 대입 공격에 대응합니다.
- 솔트를 사용하여 레인보우 테이블 공격을 어렵게 만들 수 있습니다.
전자우편 보안
위협요소
- 데이터 유출: 전송 중에 데이터가 도청되거나 탈취될 수 있습니다.
- 데이터 변경: 전송 중에 데이터가 변경될 수 있어 정보의 무결성이 손상될 수 있습니다.
- 스팸 및 피싱: 악의적인 이메일이 수신자에게 전달되어 개인 정보를 빼낼 수 있습니다.
- 악성 첨부 파일: 이메일에 첨부된 파일이 악성 코드를 포함할 수 있습니다.
메일 암호화 프로토콜
프로토콜 | 특징 | 개발자 | 호화 알고리즘 | 보안 기능 |
PGP | 개인키와 공개키를 사용하여 전자우편을 암호화하고 전자서명을 지원하는 프로토콜 | Philip Zimmermann | RSA, IDEA, AES | - 기밀성 및 무결성 보호 - 키 관리 및 교환 기능 - 전자서명 지원 |
PEM | 전자우편을 암호화하는 데 사용되는 표준 형식 메시지 내용 보호 |
IETF | RSA | - 기밀성 보호 (공개키 암호화) - 송신자 인증 (X.509 인증서 기반) - 전자우편 보안 강화 |
S/MIME | 전자우편 보안을 위한 암호화 및 인증 프로토콜 첨부파일 |
IETF | RSA, AES, 3DES | - 첨부물 보안 - 기밀성 및 무결성 보호 (공개키 및 대칭키 암호화) - 송신자 및 수신자 인증 (X.509 인증서 기반) - 전자우편 서명 및 암호화 지원 |
DKIM | 발신자 인증 이메일의 전송 도메인을 검증하여 이메일의 진위성을 확인하는 데 사용 |
IETF | RSA | - 이메일 송신 도메인 검증 - 도메인 위장 공격 방지 - 이메일 스팸 감소 |
코드 오류란?
- 순차코드 (Sequential Code): 순차 코드는 명령문이 순차적으로 실행되는 코드를 가리킵니다. 프로그램이 예상대로 흐르지 않거나 예상한 대로 결과를 출력하지 않을 때 발생할 수 있습니다.
- 블록코드 (Block Code): 블록 코드는 중괄호로 둘러싸인 코드 블록을 가리킵니다. 블록 내의 코드가 올바르게 작성되지 않았거나 블록의 시작과 끝이 정확하지 않을 때 발생할 수 있습니다.
- 10진코드 (Decimal Code): 10진수를 사용하여 표현된 코드를 가리킵니다. 코드가 잘못된 숫자 값을 사용하거나 잘못된 숫자 계산을 수행할 때 발생할 수 있습니다.
- 그룹 분류 코드 (Grouping Code): 데이터를 그룹화하거나 분류하는 코드를 가리킵니다. 잘못된 그룹 지정이나 분류 방법이 잘못된 경우 발생할 수 있습니다.
- 연상 코드 (Association Code): 데이터나 개체 간의 연관성을 나타내는 코드를 가리킵니다. 잘못된 연관성 설정이나 잘못된 매핑이 발생할 경우 이러한 오류가 발생할 수 있습니다.
- 약어_파일
- 표의 숫자 코드 (Numeric Code in Tables): 표나 데이터베이스에서 사용되는 숫자 코드를 가리킵니다. 잘못된 코드 매핑이나 코드 값의 오용이 발생할 경우 이러한 오류가 발생할 수 있습니다.
- 40-50-90
- 합성 코드 (Composite Code): 둘 이상의 다른 종류의 코드를 결합하여 사용되는 코드를 가리킵니다. 이러한 코드가 제대로 구성되지 않거나 잘못된 경우 오류가 발생할 수 있습니다.
코드의 오류 발생 형태
유형 | 설명 | 예시 |
생략 오류 (Omission Error) |
필요한 코드나 요소를 생략하는 오류 | 함수 호출 시 필수 매개변수를 누락한 경우 1234->123 |
필사 오류 (Transcription Error) |
코드를 잘못 복사하거나 필사하는 오류 | 변수명을 잘못 복사하여 사용하는 경우 (total_sum을 total_suum으로 잘못 입력한 경우) 1234->125 |
전위 오류 (Precedence Error) |
코드의 순서가 잘못된 오류 | 변수를 선언하기 전에 사용하는 경우 1234->1243 |
이중 오류 (Duplication Error) |
동일한 작업이 두 번 수행되는 오류 | 중복된 함수 호출이나 변수 할당 1234->2143 |
추가 오류 (Addition Error) |
불필요한 코드나 요소가 추가되는 오류 | 불필요한 조건문이나 변수 선언 1234->12345 |
임의 오류 (Random Error) |
임의로 코드가 변경되거나 추가되는 오류 | 위의 내용이 두번이상 나온 경우 1234->12368 |
'정보처리기사' 카테고리의 다른 글
[정처기 실기] 4. 취약점 분석과 시스템 보안 구현 - 5과목 정보 보안 (0) | 2024.04.11 |
---|---|
[정처기실기] 3.인증과 접근 통제 - 5과목 정보 보안 (0) | 2024.04.10 |
[정처기실기] 1. SW 개발 보안 설계 - 5과목 정보보안 (0) | 2024.04.10 |
[정보처리기사 실기] 6. OSI 7계층, TCP/IP, 라우팅 프로토콜 - 4과목 네트워크 (0) | 2024.04.09 |
[정처기 실기] 5. 프로토콜의 개념과 역할 - 4과목 네트워크 (0) | 2024.04.09 |
댓글