본문 바로가기

S-DEV/암호학

암호학 개론

728x90

• 정보보호 

- 보안의 3요소

인가된 사용자만(기밀성), 완전하고 정확한 정보에(무결성), 필요로 할 때마다 접근할 수 있도록 하는 것(가용성)

기밀성 : 허가된 사용자만 정보에 접근할 수 있게 되어있음

무결성 : 승인 받지 않은 사람이 정보를 무단으로 변경할 수 없음

가용성 : 승인되지 않은 사람이 정보를 삭제할 수 없음

 

•암호화

기밀성과 무결성을 보장하기 위해서는 암호화가 필요함

암호 기술을 이용하면 데이터 기밀성, 데이터 무결성, 인증 및 부인 방지 등의 기능을 제공할 수 있음

 

- 암호 기술 및 용어 정의

이브(Eve) : 도청자의 약자로 공격자를 의미

암호화(Encryption) / 복호화 (Decryption) : 암호화 키를 이용하여 메시지를 암호문으로 만들거나 평문으로 만듬

평문(Plain Text) / 암호문(Cipher Text) : 평문은 암호화를 하기전 메시지, 암호문은 암호화를 한 메시지

암호화 키(Key) : 암호화에 사용되는 키 -> 개인키, 공개키, 비밀키, 서명키 등

 

- 대표적인 공격들

스니핑

스니핑(sniffing) : 네트워크 상에서 자신이 아닌 다른 사용자의 패킷을 훔쳐보는 것 -> 데이터가 암호화 되면 스니핑을 통해 패킷을 확인하여도 데이터를 확인할 수 없음

 

데이터 위/변조

데이터 위/변조 : 사용자가 조작된 파일을 내려받거나 설치하게 되면 악성코드가 실행되는 등 피해를 입을 수 있음 -> 해시를 사용한더면 파일의 변조 여부 확인 가능, 메시지 인증 코드나 전자서명과 같이 출처를 확인할 수 있도록 하여야함

 

DDoS

DDoS(Distributed Denial of Service) : 분산 서비스 거부 공격으로 서비스 중단을 목표로 대량 요청을 발생시키는 공격 기법 -> DDoS가 발생하면 서비스에서는 이를 탐지하고 비정상적인 요청에 대해 차단하는 등 조치를 통해 가용성을 보장

 

• 고대암호

- 전치 암호(Transposition Cipher) : 문자의 위치를 서로 바꾸는 암호 

- 치환 암호(Substitution Cipher) : 문자를 다른 문자로 치환하는 암호

- 스키테일 암호 : 특정 지름을 갖는 막대에 종이를 감고 평문을 횡으로 쓴 다음 종이를 풀면 평문의 각 문자는 재배치되어 암호화가 됨

- 시저(Caesar)암호 : 카이사르 암호로 치환 암호, 알파벳을 평행 이동 시키는 형태로 문자를 암호화 

- 다일치환 암호 : 알파벳을 무작위 배열 알파벳과 1:1 대응시키는 방식으로 암호문을 생성, 기존 언어가 가지는 특성을 그대로 보존하기 때문에 빈도분석 등을 통해 해독이 가능

- 다중치환 암호 : 하나의 알파벳을 여러 개의 알파벳으로 연결하여 암호문을 생성 -> 비즈네르 암호

- 비즈네르 암호 : 암호문 생성 시 한가지 배열로만 치환할 경우 시저 암호와 동일하게되며, 빈도분석으로 해석이 가능 -> 이를 보완하기 위해 특정 키워드를 사용 -> 키는 평문 길이만큼 반복 나열하여 사용

- 카즈스키 테스트 : 다중문자 암호에서 키로 사용된 키워드에 대한 정보를 알 수 있다면, 마찬가지로 빈도분석이 가능

 

• 근대암호

- 에니그마

회전자로 작동하는 암호 기계의 한 종류로, 다중 치환암호를 전기공학적으로 구현된 기계

동작 원리 : 에그니마의 회전자는 시계와 같이 첫번째, 회전자가 한 바퀴를 돌면 두 번째 회전자가 한 칸을 돌고, 두번째 회전자가 한바퀴를 돌면 세 번째 회전자가 한 칸을 도는 식으로 동작

 

 • 현대암호

- Kerckhoff's principle

커크호프 또는 케르크호프스의 원리는 암호화에 사용되는 키를 제외한 나머지가 공개되더라도 암호체계는 안전해야 한다는 것을 말함 즉, 암호화에 사용된 알고리즘은 공개되어야 한다는 의미

 

- 대칭 암호 -> 서로 동일한 키를 사용해야하기 때문에 키 교환이 선행되어야함

암호화와 복호화에 동일한 키를 사용하는 암호

1. 스트림 암호 : 연속된 데이터를 입력받아 그에 대응하는 암호화 데이터를 생성

2. 블록 암호 : 정해진 블록 단위의 데이터(128 / 192 / 256 비트)를 입력받아, 그에 대응하는 블록 크기의 암호화 데이터를 생성

 

- 스트림 암호

대칭 암호의 한 종류로, 이진 수열로 변환된 평문을 비트 단위로 암호화 하는 암호 

의사난수를 통해 1비트 단위로 난수를 생성하고, 이를 평문 데이터와 XOR와 같은 형태로 연산하여 암호문을 생성

역순으로 복호화를 진행

 

- DES(Data Encryption Standard) 

미국 NIST가 국가 표준 알고리즘으로 지정한 대칭키 암호 알고리즘 

블록의 단위는 64비트로 평문을 64비트 단위로 암호화를 수행

개인용 PC로 수 시간만에 뚫을 수 있을 만큼 안전하지 않음

 

- 3-DES

DES를 3번 적용하여 키 길이를 3배로 늘리는 암호화 알고리즘 

DES를 3번 적용할 때 사용되는 암호화 키는 동일한 키로 사용하여도 되며, 모두 다른 키로 적용항 수 도 있음

현재 마찬가지로 컴퓨터 파워 증가함에 따라 사용하지 않는 것을 권고

 

- AES(Advanced Encryption Standard)

DES 알고리즘을 사용할 수 없게 되어 개발된 알고리즘 

SPN(Substitution Permutation Network) 구조로 설계되었으며, 128비트의 블록 사이즈를 가지며 128 / 192 / 256 비트의 암호화 키를 지원하는 대칭 키 알고리즘

 

- SEED

전자상거래, 금융, 무선통산 등에서 전송되는 기밀 정보들을 보호하기 위해 한국인터넷진행원과 국내 암호전문가들이 순수 국내기술로 개발한 블록 암호 알고리즘 

128 / 256 비트의 키 사이즈를 지원하며, 총 16라운드의 연산을 통해 암호화가 수행 

 

- ARIA

경량 환경 및 하드웨어 구현에 최적화된 블록 암호 알고리즘, 대부분 연산은 XOR와 같은 단순 바이트 단위 연산으로 구성

 

- 블록 암호 운용 모드

블록 암호는 128 / 192 / 256 등 특정 길이의 블록 단위로 암호화가 수행되므로, 임의의 데이터를 암호화하기 위해서는 먼저 블록 단위로 메시지를 나누고, 나눠진 블록들을 어떻게 암호화를 수행할 지 정해야함

ECD, CBC, PCBC, CFB, OFB, CTR 등 다양한 방식이 존재

 

1. ECD 운용 모드

Electronic Codebook의 약자로, 암호화하려는 메시지를 블록 단위로 나누어 각각 암호화하는 방식

모든 블록에 동일한 암호화 키가 사용되기 때문에 동일한 메시지에 대해 동일한 암호문이 발생한다는 문제가 있음

 

2. CBC 운용 모드

Cipher Block Chaning의 약자로, 각 블록은 이전 암호화된 블록을 XOR 연산하여 암호화를 수행하며, 첫 번째 블록에 대해서는 IV(Initial Vector)를 통해 암호화를 진행하는 방식

 

3. PCBC 운용 모드

CBC 모드과 거의 동일하나, 각 블록을 암호화할 때 이전 블록의 평문과 암호문이 XOR 연산

 

4. CFB 운용 모드 

이전 블록의 암호화된 블록을 이용하여 암호문을 생성하는 방식

 

5. CTR 운용 모드

Counter의 약자로, 난수(Nonce)와 각 블록의 순번을 이용하여 암호화를 진행하는 방식

 

- 대칭 키 관리 이슈

대칭 키 알고리즘을 사용하는 경우, 비밀을 공유하고자 하는 인원 간에는 모두 암호화 키를 공유하고 있어야 함

즉, n명의 인원이 각각 암호화 통신을 한다면, 각 인원마다 n -1 개의 암호화 키를 관리해야 하는 어려운 문제가 발생

 

• 비대칭 암호

비대칭 키 암호 또는 공개키 암호는 암호화에 사용되는 공개 키와 복호화에 사용되는 개인 키를 한  쌍으로 구성되어 있음

암호화는 공개된 키를 통해 누구나 수행할 수 있고, 암호문은 개인 키를 가진 사용자만 복호화하여 볼 수 있음

 

- RSA 

오늘날 표준으로 사용하고 있는 대표적인 공개키 암호화 시스템 -> 암호화뿐만 아니라 전자서명도 가능한 알고리즘

RSA 암호의 안전성은 큰 숫자를 소인수 분해하기에 어렵다는 것을 기반에 두고 있음 

1024 / 2048 / 4092 비트의 키 사이즈를 지원

 

- ECC(Elliptic Curve Cryptofraphy) 

타원곡선을 기반으로 한 암호 방식, RSA 암호 대안으로 나온 암호 기술

 

- Digital Signature 

전자서명은 서명자가 해당 전자문서에 서명했다느 사실을 나타냄

암호화와 반대로 개인 키를 이용하여 서명을 진행하며, 공개 키를 이용하여 서명자의 신원을 확인할 수 있음

서명은 개인 키를 가진 사용자만 수행할 수 있기 때문에 부인 방지를 제공할 수 있음 

 

• 해시 

임의의 길이를 가지는 데이터를 고정된 길이를 가지는 데이터로 전환한 값 -> 고정된 크기의 데이터로 변환되기 때문에 동일한 결과를 출력하는 많은 입력이 존재할 수 있음 

- 해시 함수 요구조건

1. 역상 저항성 : 주어진 결과 값에 대해 입력 값을 계산하기 어려워야 함

2. 제 2역상 저항성 : 주어진 입력 값에 대해 충돌쌍을 갖는 다른 입력 값을 계산하기 어려워여 함

3. 충동 저항성 : 충돌쌍을 갖는 두 입력 값을 계산하는 것이 어려워야 함

 

- MD5 (Message Digest algorithm)

임의의 길이의 데이터를 입력받아 128비트 길이의 해시 값을 출력하는 알고리즘 

Collision이 발생하여 사용 하는 것을 권장하지 않으며, SHA 와 같은 안전한 해시 알고리즘 사용이 권고되고 있음

 

- SHA1/ SHA256 / SHA384 / SHA512

Secure Hash Algorithm의 약자로, 임의의 길이의 데이터를 입력받아, 160 / 256 / 384 / 512 비트 등의 길이의 해시 값을 출력(SHA1 Collision이 발생하여 사용하지 않는 것을 권장)

해시 함수를 사용할 경우 SHA256 이상을 사용을 권고

 

• 인코딩 / 디코딩

인코딩은 데이터를 정해진 규칙에 따라 변환 처리하는 것을 말하고, 디코딩은 인코딩한 것을 원래대로 변환 처리하는 것을 말함

Base64 / URL 인코딩 / Unicode / HTML 인코딩 등이 있음

 

• 메시지 인증 코드 

- MAC (Message Authentication Code)

임의의 메시지를 비밀키를 이용하여 MAC을 출력 -> 비밀키를 공유한 사람에 한하여 무결성을 보증

 

• 인증서

- Certificate

인터넷 상에서 전자거래 등을 안심하고 사용할 수 있도록 해주는 사이버 증명서로 일상생활의 인간증명서에 비유할 수 있음

전자서명을 통해 상대방이 서명한 사람이 누구인지를 확인할 수 있고, 전자 문서의 위조나 변조를 예방할 수 있음

즉, 인증서를 통해 이름, 소속 등의 개인정보를 확인할 수 있음, 이러한 인증서를 인증기관(CA)에서 보증을 해줌 -> 신뢰할 수 있음 

 

- PKI (Public Key Infrastructure)

송수신 당사자들 간 인증하기 위해 공개 키 암호화 사용을 지원하는 시스템 

인증서의 정챚 수립 및 폐기 목록을 관리하는 인증 기관(CA) 과 인증 기관 대신 사용자 신분 확인 및 인증서 발행을 대행하는 대행 기간(RA)으로 구성 되어있음

 

 

 

'S-DEV > 암호학' 카테고리의 다른 글

Vigenere 코드  (0) 2023.07.16
Caesar Ciper 암호화 코드  (0) 2023.07.16