본문 바로가기

CS BASIC/정보 보안

[CS BASIC] 암호(cipher), 암호화(encipher), 대칭키(Symmetric Key), 비대칭 키(Asymmetric Key)

개요 

오늘은 서로 다른 두 컴퓨터 시스템 사이에서 데이터를 주고 받을 때 사용할 수 있는 암호화 기술과 암호에 대해 살펴보도록 하겠습니다.


암호(暗號 cipher, cypher) 란?

암호(暗號 cipher, cypher)는 정보를 이해할 수 없도록 암호화 하거나 다시 해독하기 위한 일련의 단계를 정의한 알고리즘을 말합니다.

코드를 통한 인코딩과 암호(cipher)를 통한 암호화(encipher)는 둘다 본래 뜻이 알 수 없게 한다는 점에서 같은 의미로 볼 수 있습니다. 

그러나 암호학, 특히 비밀을 유지하기 위한 고전적인 암호학 관점에서는 두 개념을 서로 다르게 구분합니다.

코드는 일반적으로 여러 코드를 모아놓은 코드 사전을 통해 단어나 문장을 대체한다. 

예를 들어 "UQJHSE"라는 코드는 "다음 장소로 이동하시오"라는 뜻으로 대체될 수 있습니다. 

그러나 암호(cipher)는 일반 문장을 전혀 이해할 수 없는 글자들로 바꾸며, 적절한 변환 과정을 거치지 않으면 사용할 수 없는 형태가 됩니다.

암호(cipher)의 과정은 일반적으로 암호를 구성하고 해독하는 키(key 또는 미국 NSA에서는 cryptovariable라 부름)라 불리는 부가적인 정보를 통해 이루어집니다. 

 

암호(cipher)를 사용하여 메시지를 암호화하려면 먼저 키를 정해야한다. 
키 없이 암호를 해독하는 것은 매우 어렵습니다. 그러나 불가능한 것은 아닙니다.

현대적인 암호(cipher)는 몇 가지 방법으로 분류할 수 있습니다.

종류 설명
블록 암호  정보를 고정 된 단위의 크기로 묶어 처리하는 경우
스트림 암호  연속적으로 정보를 주고 받는 상황에서 적용되는 암호
대칭 키 암호  하나의 암호키로 암호화와 해독 모두 똑같이 사용된다. 따라서 암호문을 해독하기 위해서는 암호키를 전해야 함.
비대칭 키 암호  암호화 암호키와 해독 암호키가 다르다. 이는 해독하기 위한 암호키를 공개하면서도 개별적인 보안성을 유지할 수 있음.

 

암호화(encryption)란?

암호화(encryption)는 특별한 지식을 소유한 사람들을 제외하고는 누구든지 읽어볼 수 없도록 알고리즘을 이용하여 정보를 전달하는 과정입니다.
이를 역행하는 과정을 해독 또는 디크립션이라고 하며 이로써 암호화된 정보를 다시 읽을 수 있도록 합니다.


일방향 암호

구분 설명
MAC
(Message Authentication Code)
키를 사용하는 메시지 인증 코드로 메시지의 무결성과 송신자의 인증을 보장
MDC
(Modification Detection Code)
키를 사용하지 않는 변경 감지 코드로 메시지의 무결성을 보장

 


해시함수

임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수.

 

동의어로 해시 알고리즘 또는 해시함수 알고리즘이라고도 불립니다.

해시 함수에 의해 얻어지는 값은 해시 값이라 부르며 해시 코드, 해시 체크섬 또는 간단하게 해시라고도 부릅니다.

 

직접 접근할 수 있는 짧은 길이의 값이나 키가 존재하여 해당 주소에 빠른 접근이 가능하며 메시지의 오류나 변조를 탐지하는데 활용 됩니다.

해시함수의 유형

해시 함수 설명
제산법 - 나머지 연산자(%)를 사용하여 테이블 주소를 계산하는 방식
제곱법 - 레코드 키 값을 제곱한 후에 결관 값의 중간 부분에 있는 몇 비트를 선택하여 해시 테이블의 홈 주소로 사용하는 방식
숫자 분석법 - 레코드의 키를 구성하는 수들이 모든 키들 내에서 자리별로 어떤 분포인지를 조사하여 비교적 고른 분포를 나타내는 자릿수를 필요한 만큼 선택하여 레코드의 홈 주소로 사용
폴딩법 - 레코드 키를 여러 부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR 한 값을 홈 주소로 사용하는 방식
기수 변환법 - 어떤 진법으로 표현된 주어진 레코드 키를 다른 진법으로 간주하고 키를 변호나하여 홈 주소를 얻는 방식
- 어떤 키 값이 16진수로 표현되어 있다면 이를 10진법으로 표현된 것으로 간주하고 키 값을 변환하여 홈 주소를 계산함
무작위 방법 - 난수를 발생시켜 각 레코드 키의 홈 주소를 결정하는 방식

 

 

해시 암호화 알고리즘

해시 함수에서 해시 값을 생성하는 데에는 아래와 같은 알고리즘을 사용할 수 있습니다.
알고리즘 설명
MD5
(Message-Digest Algorithm5)
- 1991년 R.rivest가 MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용
-  각각의 512bit 짜리 입력 메시지 블록에 대해 차례로 동작하여 128bit의 해시값을 생성하는 해시 알고리즘
SHA-1
(Secure Hash Algorithm)
-  1993년 NSA에서 미 정보 표준으로 지정되었고, DSA(Digital Signature Algorithm)에서 사용
-  160bit의 해시값을 생성하는 해시 알고리즘
SHA-256/384/512 -  SHA(Secure Hash Algorithm) 알고리즘의 한 종류로서 256bit의 해시 값을 생성하는 해시 함수
-  AES(Advanced Encryption Standard, 미연방 표준 알고리즘)의 키 길이인 128, 192, 256bit에 대응하도록 출력 길이를 늘인 해시 알고리즘
HAS-160 -  국내 표준 서명 알고리즘 KCDSA(Korean Cerificate-based Digital Signature Algorithm)를 위하여 개발된 해시 함수
-  MD5와 SHA1의 장점을 취하여 개발된 해시 알고리즘

키 (Key)란?

키(Key)는 암호화와 관련된 작업에서 사용되는 비밀 코드나 문자열을 나타냅니다. 

 

키는 데이터를 안전하게 보호하고 전송하는 데 사용되는 것으로

암호화된 문자열을 사람 또는 프로그램이 이해할 수 있는 데이터로 복원, 즉 복호화 하는데 사용됩니다.

 

대칭키 vs 비대칭키(공개키)

대칭키 (Symmetric Key, 비밀키)

대칭키는 같은 키를 암호화와 복호화에 모두 사용하는 방식입니다.



대칭키의 특징

  • 빠르고 효율적이지만, 키를 안전하게 관리해야 합니다.
  • 주로 대용량 데이터 전송에 사용됩니다.
  • 흔히 사용되는 대표적인 대칭키 알고리즘에는 AES(Advanced Encryption Standard)가 있습니다.

fig 1.0 대칭키 암호화 과정


 

비대칭키 (Asymmetric Key 또는 공개키)

 비대칭키는 암호화에 사용되는 키와 복호화에 사용되는 키가 서로 다른 경우를 말합니다.

 


비대칭 키의 특징

  • 공개키와 개인키 두 가지 키가 쌍으로 생성되어, 공개키는 공개되고 개인키는 보안으로 유지됩니다.
  • 안전한 키 교환을 위해 사용되므로, 기밀성과 보안 등급이 높은 데이터의 보호에 적용됩니다.
  • 주로 전자 거래를 위한 디지털 서명, 기밀 유출 방지를 위한 안전한 통신 전략 등에 활용되고 있습니다.
  • 대표적인 비대칭키 알고리즘으로는 RSA, ECC 등이 있습니다.

fig 1.1 비대칭키 암호화 과정

 


키 암호화 알고리즘

대칭키 암호화 알고리즘

종류 설명
DES
(Data Encryption Standard)
- 1975년 미국의 연방 표준국(NIST)에서 발표한 대칭 키 기반의 블록 암호화 알고리즘
-  블록 크기는 64bit, 키 길이는 56bit인 페이스텔(Feistel) 구조
-  DES를 3번 적용하여 보안을 더욱 강화한 3 DES(Triple DES)도 활용 됨
SEED -  1999년 한국인터넷진흥원(KISA)이 개발한 블록 암호화 알고리즘
-  128bit 비밀키로부터 생성된 16개의 64bit 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128bit의 평문 블록을 128bit 암호문 블록으로 암호화하여 출력하는 방식
-  블록 크기는 128bit이며, 키 길이에 따라 128bit 256bit로 구분
AES
(Advanced Encrption Standard)
-  2001년 미국 표준 기술 연구소(NIST)에서 발표한 블록 암호화 알고리즘
-  DES의 개인 키에 대한 전사적 공격이 가능해지고, 3 DES의 성능문제를 극복하기 위해 개발
-  블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit, 256bit로 분류
-  AES의 라운드 수는 10, 12, 14라운드로 분류되며, 한 라운드는 SubBytes, ShiftRows, MixColumns, AddRoundKey의 4가지 계층으로 구성
ARIA
(Academy, Research Institute Agency)
-  2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘
-  ARIA는 학계(Academy), 연구기관(Research Institue), 정부(Agency)의 영문 앞글자로 구성
-  블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit 256bit로 분류
-  ARIA는 경량 환경 및 하드웨어에서의 효율성 향상을 위해 개발되었으며, ARIA가 사용하는 대부분의 연산은 XOR 과 같은 단순한 바이트 단위 연산으로 구성
IDEA
(International Data Encrption Algorithm)
-  DES를 대체하기 위해 스위스 연방 기술 기관에서 개발한 블록 암호화 알고리즘
-  128 bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦
LFSR
(Linear Feedback Shift Register)
-  시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘
-  LFSR에 사용되는 선형 함수는 주로 배타적 논리합(XOR)이고, LFSR의 초기 비트 값은 시드(Seed)라고 함.

 
대칭키 암호화 방식

암호화 방식 설명
스트림(Stream) 암호 평문과 같은 길이의 키 스트림을 연속적으로 생성하여 평문과 이진 수열을 비트 단위로 XOR 연산, 암호문을 생성하는 대칭 키 암호화 기법
블록(Block) 암호 평문을 일정한 블록 단위로 나누어서 블록마다 암호화 과정을 수행하여 고정된 크기의 블록 단위의 암호문을 생헝하는 대칭키 암호화 기법

 

비대칭키 암호화 알고리즘

알고리즘 설명
RSA
(Rivest-Shamir-Adleman)
- 1977년 3명의 MIT 수학 교수가 고안한 큰 인수의 곱을 소인수분해하는 수학적 알고리즘을 이용하는 공개키 암호화 알고리즘
ECC
(Eliptic Curve Cryptography)
- 1985년 코블리치와 밀러가 RSA 암호 방식에 대한 대안으로 처음 제안한 알고리즘으로 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 암호화 알고리즘
ElGamal - 1984년에 제안한 공개키 알고리즘으로 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있으며, RSA와 유사하게 전자서명과 데이터 암-복호화에 함께 사용 가능
디피-헬만
(Diffie-Hellman)
- 최초의 공개키 알고리즘으로 W.Diffie와 M.Hellman이 1976년에 고안한 알고리즘으로써 유한 필드 내에서 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있음
-  공개키 암호 방식의 개념을 이용하여 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 방법을 제시하였으며, 많은 키 분배 방식에 관한 연구의 기본이 됨(최초의 비밀키 교환 프로토콜)

패키징 도구 구성 기술

오늘날의 소프트웨어는 악의적인 목적을 가진 프로그래머 또는 외부 개발자에 의해 기업의 프로그램을 임의로 변조 및 도용할 수 없도록 암호화 기술을 사용해 보호하도록 묶는 아래와 같은 기술이 적용된 패키징 도구를 사용합니다.

구성 기술 설명
공개키 기반구조
(PKI)
인증기관에서 공개키 암호 방식 기반의 전자 서명된 인증서를 발급받아 네트워크상에서 안전하게 비밀통신을 가능하도록 하는 기술
대칭 및 비대칭 암호화 대칭 암호화는 암호화와 복호화를 위해 동일한 키를 사용하는 암호화 방식
전자서명
서명자를 확인하고 서명자가 해당 전자문서에 서명했다는 사실을 나타내기 위해 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보

 

 


참고자료
https://ko.wikipedia.org/wiki/%EC%95%94%ED%98%B8_(%EC%95%94%ED%98%B8%ED%95%99)

 

암호 (암호학) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 켄싱턴 룬돌에서 발견된 에드워드 라르손(Edward Larsson)의 룬 암호 . 흑자체로 섞인 문자와 피그펜 암호(Pigpen cipher)가 적혀있다. 암호(한자:暗號 영어:cipher 또는 cy

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%95%94%ED%98%B8%ED%99%94

 

암호화 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 암호화(暗號化) 또는 엔크립션(encryption)은 특별한 지식을 소유한 사람들을 제외하고는 누구든지 읽어볼 수 없도록 알고리즘을 이용하여 정보(평문을 가리킴)를

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98

 

해시 함수 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 이름을 0~15 사이의 정수값으로 매핑하는 해시 함수의 예. “John Smith”와 “Sandra Dee”라는 두 키 사이에 충돌이 존재한다. 해시 함수(hash function) 또는 해시 알고

ko.wikipedia.org