[정처기 실기] 암호 알고리즘
이부분은 시험에 정~말 잘나온다.
대칭키 vs 비대칭키로 암기해야하는데 너무 많다.
대칭, 비대칭은 양방향 알고리즘이다.
지난 시험에서 년도, 만든 기관 혹은 사람으로 외웠는데 도움이 안되었다.
암호화 알고리즘이란?
암호화 알고리즘은 암호화와 복호화를 위해 사용되는 수학적인 계산 방법입니다. 이 알고리즘은 메시지나 데이터를 일정한 규칙에 따라 암호화하여 누구나 쉽게 읽을 수 없게 만들고, 나중에 필요할 때 원래의 메시지나 데이터로 돌려놓을 수 있도록 합니다.
암호화 알고리즘은 대개 공개키 암호화와 대칭키 암호화로 분류됩니다. 대칭키 암호화는 동일한 암호화 키를 사용하여 메시지를 암호화하고 복호화하는 방식으로, 암호화와 복호화에 동일한 키를 사용하기 때문에 빠르고 간단한 처리가 가능합니다. 대신, 키가 유출될 경우 암호화된 메시지를 쉽게 해독할 수 있으므로 안전한 전송과 저장이 어려워집니다.
공개키 암호화는 암호화와 복호화에 각각 다른 키를 사용하는 방식으로, 개인키와 공개키를 사용합니다. 공개키는 누구나 알 수 있으며, 개인키는 보안이 필요한 주체만 보유하게 됩니다. 이 방식은 대칭키 암호화의 단점을 보완하며, 안전한 전송과 저장이 가능합니다. 하지만 대칭키 암호화보다 처리 속도가 느리며, 키 관리와 인증에 대한 문제가 발생할 수 있습니다.
블록암호란?
블록 암호는 고정된 길이의 데이터 블록을 입력으로 받아, 키와 함께 블록 단위로 암호화를 수행하는 대칭키 암호화 방식입니다. 블록 단위로 암호화를 수행하기 때문에 블록 암호라고 부릅니다. 블록의 크기는 알고리즘마다 다르며, 일반적으로 64비트, 128비트 등이 사용됩니다.
암호화와 복호화를 위해 동일한 길이의 블록을 사용
예를 들어, AES 암호화 방식에서는 128비트 블록을 사용합니다. 이를 16바이트 블록이라고도 부릅니다. 암호화를 위해서는 입력 데이터를 16바이트 블록 단위로 분할하고, 각 블록을 암호화한 후 연결하여 전체 데이터를 암호화합니다.
키 길이 따라 128,192,256 비트를 지원한다에서 지원은 입력받을 수있는 길이를 말함
대표적인 블록 암호로는 DES(Data Encryption Standard), 3DES
스트림 암호란?
스트림 암호는 데이터를 비트 단위로 처리하여 암호화하는 알고리즘입니다. 이 방식은 데이터가 입력되는 대로 바로 암호화하며, 일반적으로 블록 암호화와는 달리 데이터의 길이에 제한이 없습니다.
스트림 암호는 비트 스트림을 생성하는 랜덤한 수열을 이용하여 데이터를 암호화합니다. 이 수열을 "키 스트림"이라고 하며, 암호화된 데이터와 함께 전송됩니다. 수신측에서는 동일한 키 스트림을 생성하여 암호화된 데이터를 복호화합니다.
스트림 암호의 장점은 처리 속도가 빠르고, 대부분의 경우 메모리 사용량이 적습니다. 또한 데이터의 길이에 제한이 없기 때문에 대용량 데이터를 암호화할 때 유용합니다. 하지만, 랜덤한 수열을 생성하기 위한 초기화 벡터와 키 관리가 중요하며, 잘못된 사용은 보안 위험을 초래할 수 있습니다.
예를 들어, RC4 암호화 방식에서는 암호화와 복호화에 사용되는 키를 이용해 스트림 암호를 생성합니다. 이 스트림 암호는 입력 데이터와 비트 XOR 연산을 수행하면서 데이터를 암호화합니다. 이렇게 함으로써 연속적인 데이터 스트림을 암호화할 수 있습니다.
해시 암호화란?
해시 암호화는 임의의 크기의 데이터를 고정된 크기의 해시 값으로 변환하는 암호화 기술입니다. 이 해시 함수는 입력값을 알고리즘에 따라 변환하여 출력값으로 반환하며, 동일한 입력값에 대해서는 항상 동일한 출력값이 반환됩니다.
해시 암호화의 주요 용도는 데이터의 무결성 검사입니다. 만약 데이터가 변경되었을 경우, 새로 생성된 해시 값은 이전에 생성된 해시 값과 다를 것입니다. 이를 통해 데이터의 무결성을 검증할 수 있습니다.
해시 암호화는 비밀번호 저장 등의 용도로도 사용됩니다. 일반적으로 비밀번호는 저장할 때 평문으로 저장하지 않고, 해시 함수를 사용하여 암호화합니다. 이를 통해 비밀번호가 유출되더라도 원래의 비밀번호를 알아낼 수 없으며, 동일한 비밀번호를 입력했을 때 항상 동일한 해시 값이 반환되므로 인증에 사용됩니다.
하지만, 일부 해시 함수는 뚫릴 수 있으므로, 보안 강도가 높은 암호화 기술이 필요한 경우 다른 암호화 기술과 함께 사용해야 합니다. 또한, 일부 해시 함수는 충돌 가능성이 있으므로, 충돌을 방지하기 위한 추가적인 보안 처리가 필요할 수 있습니다.
MAC은?
MAC(Message Authentication Code)은 메시지의 무결성 보호를 위한 기법 중 하나입니다. MAC은 대칭키를 사용하여 메시지에 대한 인증 태그를 생성하며, 이를 이용해 메시지의 무결성을 검증합니다. MAC은 대표적으로 HMAC(Hash-based Message Authentication Code)이나 CBC-MAC(Cipher Block Chaining - Message Authentication Code) 방식이 사용됩니다.\
AES는 MAC과 관련이 있을 수 있습니다. MAC은 메시지의 무결성 보호를 위한 기법 중 하나로, 대칭키를 사용하여 메시지에 대한 인증 태그를 생성합니다. 이때, 대표적으로 AES 기반의 MAC 알고리즘인 CMAC(Cipher-based Message Authentication Code)이나 GCM(Galois/Counter Mode)이 사용됩니다. 따라서, AES는 MAC을 생성하는 데 사용될 수 있습니다.
HMAC은 해시 함수와 대칭키 암호화를 결합하여 메시지 인증 코드를 생성하는 방식입니다. HMAC은 대표적으로 HMAC-SHA1, HMAC-SHA256, HMAC-MD5 등이 사용됩니다. HMAC은 메시지와 함께 전송된 키를 이용하여 메시지의 무결성과 인증을 검증할 수 있습니다.
예를 들어, HMAC-SHA256 알고리즘을 이용하여 메시지 인증 코드를 생성하는 과정은 다음과 같습니다.
- 전송하려는 메시지를 선택합니다.
- 전송하려는 메시지와 함께 사용할 키를 선택합니다.
- HMAC-SHA256 알고리즘을 사용하여 메시지와 키를 이용하여 메시지 인증 코드를 생성합니다.
- 메시지와 함께 생성된 메시지 인증 코드를 전송합니다.
NMAC은 해시 함수를 반복적으로 적용하여 MAC를 생성하는 방식입니다. NMAC은 대표적으로 CMAC, GCM 등이 사용됩니다.
예를 들어, CMAC 알고리즘을 이용하여 메시지 인증 코드를 생성하는 과정은 다음과 같습니다.
전송하려는 메시지를 선택합니다.
전송하려는 메시지와 함께 사용할 키를 선택합니다.
CMAC 알고리즘을 사용하여 메시지와 키를 이용하여 MAC를 생성합니다.
생성된 MAC를 전송합니다.
HMAC과 NMAC 모두 메시지의 무결성과 인증을 검증하는데 사용되지만, 그 방식은 약간 차이가 있습니다. HMAC은 해시 함수와 대칭키 암호화를 사용하여 MAC를 생성하고, NMAC은 해시 함수를 반복적으로 적용하여 MAC를 생성합니다.
MDC란?
MDC(Message Digest Checksum)는 메시지 무결성을 검사하기 위한 해시 함수의 일종입니다. MDC는 메시지의 고정된 길이의 체크섬(Checksum) 값을 생성하여, 이를 이용해 메시지의 무결성을 검증합니다.
MDC는 대표적으로 SHA-1, SHA-2, SHA-3, MD5 등의 알고리즘이 사용됩니다. 이 알고리즘들은 메시지를 입력으로 받아서 고정된 길이의 해시 값을 생성합니다. 이 해시 값은 메시지가 변조되었는지 검증할 때 사용됩니다. 만약 해시 값이 일치하지 않으면, 메시지에 변조가 일어났다고 판단할 수 있습니다.
알고리즘 방식에 따른 구분(암기 중요)
- 양방향 vs 일방향
- 양방향(암호화와 복호화에 같은 키)
- 대칭(같은키) VS 비대칭(다른키)
- 양방향(암호화와 복호화에 같은 키)
- 일방향 키
- MAC vs MDC (이건 잘 안물어봄)
- MAC : 키를 사용하는 메시지 인증 코드로 메시지의 무셩성과 송신자의 인증 보장 (HMAC, NMAC)
- MDC : MD5, SHA
- MAC vs MDC (이건 잘 안물어봄)
- 일방향(암호화만 가능하고 복호화는 불가능한 알고리즘)
- Hash function
- MD5, SHA-1(DSA),SHA-256/348/512, HAS-160(국내표준서명),HAVAL(1024bit)
위 도식만 보고는 분명 어질어질할 것이다.
보고 금방 이해가는 것 같아도 또 까먹는다.
우선, 양방향부터 설명한다면, 평문을 암호로 바꾸는 암호화와 암호를 평문으로 바꾸는 복호화에 같은 암호키를 쓴다.
철수와 영희가 하나의 키로 소통한다고 보면된다.
도깨비말(키)는 동일하지만 서로 암호화 복호화되는 것과 같다.
아래 그림으로 보면 대칭키는 사람 수에 따라 왜 n(n-1)/2되는 지 말해준다.
총 10명이면, 나를 제외하고 9명과 하나씩의 키가 필요하다. 그럼 9개
이 9개가 10명에게 있어야해서 90개
그런데, 2명당 하나의 키를 공유하게 되어 있으므로 2명을 한쌍으로 계산해야 효율적임
그래서 나누기 2를 하면 총 45개
비대칭은 단순하다. (실제 algorithm의 과정 말고 설명이)
한사람이 암호화 복호화키를 서로 다르게 2개를 가지고 있기 때문에 한 사람당 2개씩 가지면된다
알고리즘 정리 표
- 양비대
- 대칭:아아시르데 (대칭키 외우기 아아, 시른데)
- 비대칭 : 디이 알리 (비대칭 외우기 디이게 싫어, 알리 노래처럼 지우개로 지운 것 같어. ㅠ
방식 | 방식 | 알고리즘명 | 년도 | 개발 기관 | 크기(단위) | 길이(키) | 라운드 | 방식 |
양방향 | 대칭키 | DES(Data Encryption Standard) | 1975 | IBM | 64 | 56 | 16 | 블록 |
3DES (DES 3번 암,복호화) | 1998 | IBM | 64 | 56 | ||||
SEED(SEcure Encryption Algorithm) | 1999 | 한국전자통신연구원(KETI) | 128 (256) |
64 | 16 | 블록 | ||
AES 3D성능개선 |
2001 | 미국 표준 기술 연구소 (NIST) |
128 | 128 192,256 |
10,12,14 4가지 계층 |
블록 | ||
ARIA (Advanced Encryption Standard Robust Innovation Algorithm) AES를 대체하기 위해 나옴. XOR |
2004 | 한국전자통신연구원(KETI) | 128 |
128,192,256. | - | 블록 | ||
IDEA(International Data Encryption Algorithm) DES 대체 |
1991 | 스위스연방기술기관 | 64 | 128 | 8 | 블록 | ||
LFRS(Linear Feedback Shift Register) 초기 비트값 SEED |
1949 | Claude Shannon (MIT) | 난수, XOR | 스트림 | ||||
대칭 : 암호화 복호화 키가 두개!! |
||||||||
비대칭키 | 알고리즘명 | 특징 | ||||||
Diffie-Hellman 최초 공개키 /2사용자 공개 |
1976 | Whitfield Diffie, Martin Hellman | 대칭키 분배를 위한 키 교환 프로토콜, 공개키 암호화 방식을 기반으로 함 | |||||
RSA | 1977 | MIT Ron Rivest, Adi Shamir, Leonard Adleman |
공개키 암호화 및 디지털 서명 알고리즘, 대칭키보다 안전한 암호화 방식 | |||||
ECC | 1985 | Neal Koblitz, Victor Miller | 타원 곡선 암호화 알고리즘, 작은 키 크기로 높은 수준의 보안성을 제공함 | |||||
ElGmal | 1984 | Taher Elgamal | 공개키 암호화 알고리즘, 대칭키를 교환하기 위해 사용됨 |
알고리즘명 | 연도 | 특징 | ||
일방향 | 해시 | MD5 | 1991 | - R.rivest가 MD4를 개선 - (m)무결성 검사 - (5) 512비트 짜리 입력 메시지 -> 128비트 해시값 생성 |
SHA-1 | 1993 | - (a)NAS미 정부 표준 - (a)DSA(Digital Singnature Algorithm)에서 사용 - (1)160비트 해시값 - MD5보다 높은 안정성을 보여주며, 현재도 많이 사용 |
||
SHA-256/384/512 | 2001 | - SHA 시리즈 - 256비트/384비트/512비트의 해시값을 생성 - AES의 128,192,256에 대응 - SHA-1보다 높은 안전성을 보여주며, SHA-256이 가장 많이 사용됩니다. |
||
HAS-160 | 2004 | - 한국 표준 서명 알고리즘 - Korea Certification-based Digital Signiture - MD5 + SH1 = 160 - SHA-1의 취약점을 보완하기 위해 개발된 알고리즘 |
||
HAVAL | 1992 | - 메시지를 나눔 1024bit로 - 128,160,192,224,256 비트 메시지 다이제스트를 출력 - 알고리즘이 더 많이 사용되지만, 암호학 연구에서는 여전히 활용 |
'정보처리기사' 카테고리의 다른 글
[정처기 실기] 문제 풀이 - 데이터 베이스 기본 (0) | 2023.04.10 |
---|---|
[정처기 실기] DDL이란? (0) | 2023.04.09 |
[정처기 실기] 서버 접근 통제의 유형 -비개발자 도전기 (0) | 2023.04.06 |
[정처기 실기] 애플리케이션 공격 기법 - 이해와 암기 (0) | 2023.04.04 |
[정보처리기사 실기] DDOS 공격 (0) | 2023.04.03 |
댓글