"암호키"의 두 판 사이의 차이
1번째 줄: | 1번째 줄: | ||
− | '''암호키'''(Encryption Key)는 평문을 [[암호화]], [[복호화]]하는 핵심 가변 정보 값으로 암호 알고리즘 수행 시 반드시 주어져야 할 값이다. 키 공간이 커지면 보안성은 증가되며 그 키의 길이는 사용된 알고리즘의 bit의 수에 | + | '''암호키'''(Encryption Key)는 평문을 [[암호화]], [[복호화]]하는 핵심 가변 정보 값으로 암호 알고리즘 수행 시 반드시 주어져야 할 값이다. 키 공간이 커지면 보안성은 증가되며 그 키의 길이는 사용된 알고리즘의 bit의 수에 결정된다. |
==개요== | ==개요== | ||
− | 평문에서 암호기술을 적용하여 암호문으로 변환할 때 암호키가 필요하며, 암호문을 평문으로 변환할 때에는 복호키가 필요하다. | + | 평문에서 암호기술을 적용하여 암호문으로 변환할 때 암호키가 필요하며, 암호문을 평문으로 변환할 때에는 복호키가 필요하다. [[제3자]]가 알 수 없도록 안전성을 유지하기 위해서는 암호키는 비밀을 유지하여야 한다. |
− | |||
==역사== | ==역사== | ||
− | 1970년대 후반 미국 [[스탠퍼드 대학교]]과 [[MIT 대학교]]에서 시작되었다. 1976년 스탠퍼드 대학교의 [[휫필드 디피]](Whitfield Diffie)와 [[마틴 헬만]](Martin Hellman)은 | + | 1970년대 후반 미국 [[스탠퍼드 대학교]]과 [[MIT 대학교]]에서 시작되었다. 1976년 스탠퍼드 대학교의 [[휫필드 디피]](Whitfield Diffie)와 [[마틴 헬만]](Martin Hellman)은 '''암호의 새로운 방향'''(New Directions in Cryptography)이라는 논문에서 처음으로 [[공개키]] 암호의 개념을 발표하였다. 종래의 관용 암호 방식 또는 대칭키 암호 방식에서는 암호화키와 복호화키가 동일한 비밀키를 사용하기 때문에 송신자와 수신자는 비밀 통신을 하기 전에 비밀키를 공유하고 있어야 한다. 반면 공개키 암호 방식에서는 하나의 쌍이 되는 공개키와 비밀키를 생성하여 암호화에 사용되는 공개키는 공개하고, 복호화에 사용되는 비밀키는 사용자가 안전하게 보관하도록 한다. 공개키 암호 방식에서는 송신자와 수신자가 사전에 키를 공유할 필요가 없기 때문에 불특정 다수 사용자 간에 사전 준비가 없이도 암호 통신망을 구축하는데 유용하게 사용할 수 있다. |
− | 이어 1978년 MIT 대학의 [[로널드 라이베스트]](Ron Rivest), [[아디 샤미르]](Adi Shamir), [[레너드 애들먼]](Leonard Adleman)은 [[소인수 분해]] 문제에 기반을 둔 [[RSA]] 공개키 암호를 개발했는데, 이것은 오늘까지도 가장 널리 사용되는 공개키 암호 방식이다. 공개키 암호의 도입은 현대 암호의 발전에 중요한 계기가 되었다. <ref name="역사">〈[https://seed.kisa.or.kr/kisa/intro/EgovHistory.do 암호기술의 역사]〉, 《KISA 암호이용활성화》</ref> | + | 이어 1978년 MIT 대학의 [[로널드 라이베스트]](Ron Rivest), [[아디 샤미르]](Adi Shamir), [[레너드 애들먼]](Leonard Adleman)은 [[소인수 분해]] 문제에 기반을 둔 [[RSA]] 공개키 암호를 개발했는데, 이것은 오늘까지도 가장 널리 사용되는 공개키 암호 방식이다. 공개키 암호의 도입은 현대 암호의 발전에 중요한 계기가 되었다.<ref name="역사">〈[https://seed.kisa.or.kr/kisa/intro/EgovHistory.do 암호기술의 역사]〉, 《KISA 암호이용활성화》</ref> |
==종류== | ==종류== | ||
===대칭키 알고리즘=== | ===대칭키 알고리즘=== | ||
− | [[대칭키]](Symmetric key) 방식은 암호문을 생성(암호화)할 때 사용하는 키와 암호문으로부터 평문을 복원(복호화)할 때 사용하는 키가 동일한 암호 시스템으로 일반적으로 알고 있는 암호 시스템이다. | + | [[대칭키]](Symmetric key) 방식은 암호문을 생성(암호화)할 때 사용하는 키와 암호문으로부터 평문을 복원(복호화)할 때 사용하는 키가 동일한 암호 시스템으로 일반적으로 알고 있는 암호 시스템이다. 송신자와 수신자가 동일한 하나의 키로 암호화와 복호화를 수행하므로 대칭키(Symmetric key) 또는 비밀키(Secret Key) 방식의 암호화라고 한다. 데이터를 블록(Block) 단위로 처리하는 블록암호(Block cipher) 와 연속된 스트림으로 처리하는 스트림 암호(Stream cipher) 가 있으며 일반적으로 대칭키 암호화라고 하면 블록 방식의 암호화를 의미한다.<ref>〈[https://lesstif.gitbooks.io/web-service-hardening/content/encryption.html 대칭키 암호화]〉, 《깃북》</ref> 알고리즘 구조가 간단하여 대용량 자료를 암/복호화 하는데 유리하다는 장점이 있지만 교환 당사자 간의 동일한 키를 공유하므로 키를 관리하기 어렵게 된다. |
− | 송신자와 수신자가 동일한 하나의 키로 암호화와 복호화를 수행하므로 대칭키(Symmetric key) 또는 비밀키(Secret Key) 방식의 암호화라고 한다. | ||
− | 데이터를 블록(Block) 단위로 처리하는 블록암호(Block cipher) 와 연속된 스트림으로 처리하는 스트림 암호(Stream cipher) 가 있으며 일반적으로 대칭키 암호화라고 하면 블록 방식의 암호화를 의미한다. <ref> 〈[ | ||
− | 알고리즘 구조가 간단하여 대용량 자료를 암/복호화 하는데 유리하다는 장점이 있지만 교환 당사자 간의 동일한 키를 공유하므로 키를 관리하기 어렵게 된다. | ||
====블록 암호화==== | ====블록 암호화==== | ||
− | + | [[블록암호]](block cipher)는 기밀성있는 정보를 정해진 블록 단위로 암호화 하는 대칭키 암호 시스템이다. 만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용 모드가 사용된다. 블록 암호에 대한 안전성 증명 방법으로는 선택평문공격인 차분공격(Differential Cryptanalysis)과 알려진평문공격인 선형공격(Linear Cryptanalysis)등이 있다. 차분 공격(differential cryptanalysis)은 암호해독(cryptanalysis)의 한 방법으로, 입력값의 변화에 따른 출력값의 변화를 이용하는 방법이며, 선형 공격(linear cryptanalysis)은 암호 공격의 한 방법으로, 암호화 과정에서의 근사적 선형 관계식을 찾는 것을 목적으로 한다. 선형 공격은 차분 공격은 블록 암호를 공격하는 방법으로 널리 응용된다. | |
− | + | 블록암호 구조에는 페스탈(Feistel)구조와 SPN구조가 있다. 페스탈 구조는 암복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현시 스왑(Swap)단계 때문에 연산량이 많이 소요 되며 암호에 사용되는 라운드 함수를 안전하게 설계해야 한다는 단점이 있다. 대표적인 암호로는 DES가 있으며 Single DES는 안전성 문제로 현재 사용하고 있지 않다. 한국에서는 개발된 암호 중에서는 페스탈 구조기반으로 설계된 SEED가 있다. SPN 구조는 암복호화 과정에서 역함수가 필요하도록 설계되어야 한다는 단점이 있지만 중간에 비트의 이동없이 한번에 암복호화가 가능하기 때문에 페스탈 구조에 비해 효율적으로 설계할 수 있다. 대표적인 암호로는 AES가 있으며 AES는 현재 널리 상용되고 있다.<ref>〈[https://ko.wikipedia.org/wiki/%EB%B8%94%EB%A1%9D_%EC%95%94%ED%98%B8 블록암호]〉, 《위키백과》</ref> | |
====스트림 암호화==== | ====스트림 암호화==== | ||
− | + | [[스트림암호]](stream cipher)는 대칭 키 암호의 구조 중 하나로, 유사난수를 연속적(스트림)으로 생성하여 암호화하려는 자료와 결합하는 구조를 가진다. 일반적인 스트림 암호는 유사난수를 1비트 단위로 생성하고, 생성된 값과 암호화하려는 각 값을 XOR하여 1비트의 암호화된 자료를 얻는다. 스트림 암호는 일회용 난수표(OTP)를 유사난수로 대체한 것으로 볼 수 있다. 스트림 암호는 하드웨어 구현이 간편하며 속도가 빠르기 때문에 무선 통신 등의 환경에 주로 사용된다. 대표적으로 RC4가 널리 사용되며, 이외에도 A5/1, A5/2 등의 알고리즘이 존재한다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%8A%B8%EB%A6%BC_%EC%95%94%ED%98%B8 스트림 암호]〉, 《위키백과》</ref> | |
− | 스트림 암호는 일회용 난수표(OTP)를 유사난수로 대체한 것으로 볼 수 있다. | + | |
− | 스트림 암호는 하드웨어 구현이 간편하며 속도가 빠르기 때문에 무선 통신 등의 환경에 주로 사용된다. 대표적으로 RC4가 널리 사용되며, 이외에도 A5/1, A5/2 등의 알고리즘이 존재한다. | + | {{각주}} |
− | <ref> 〈[ | + | |
+ | ==같이 보기== | ||
+ | * [[암호]] | ||
+ | * [[키 (데이터베이스)]] | ||
+ | |||
+ | {{보안|토막글}} |
2021년 8월 2일 (월) 20:17 판
암호키(Encryption Key)는 평문을 암호화, 복호화하는 핵심 가변 정보 값으로 암호 알고리즘 수행 시 반드시 주어져야 할 값이다. 키 공간이 커지면 보안성은 증가되며 그 키의 길이는 사용된 알고리즘의 bit의 수에 결정된다.
개요
평문에서 암호기술을 적용하여 암호문으로 변환할 때 암호키가 필요하며, 암호문을 평문으로 변환할 때에는 복호키가 필요하다. 제3자가 알 수 없도록 안전성을 유지하기 위해서는 암호키는 비밀을 유지하여야 한다.
역사
1970년대 후반 미국 스탠퍼드 대학교과 MIT 대학교에서 시작되었다. 1976년 스탠퍼드 대학교의 휫필드 디피(Whitfield Diffie)와 마틴 헬만(Martin Hellman)은 암호의 새로운 방향(New Directions in Cryptography)이라는 논문에서 처음으로 공개키 암호의 개념을 발표하였다. 종래의 관용 암호 방식 또는 대칭키 암호 방식에서는 암호화키와 복호화키가 동일한 비밀키를 사용하기 때문에 송신자와 수신자는 비밀 통신을 하기 전에 비밀키를 공유하고 있어야 한다. 반면 공개키 암호 방식에서는 하나의 쌍이 되는 공개키와 비밀키를 생성하여 암호화에 사용되는 공개키는 공개하고, 복호화에 사용되는 비밀키는 사용자가 안전하게 보관하도록 한다. 공개키 암호 방식에서는 송신자와 수신자가 사전에 키를 공유할 필요가 없기 때문에 불특정 다수 사용자 간에 사전 준비가 없이도 암호 통신망을 구축하는데 유용하게 사용할 수 있다.
이어 1978년 MIT 대학의 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)은 소인수 분해 문제에 기반을 둔 RSA 공개키 암호를 개발했는데, 이것은 오늘까지도 가장 널리 사용되는 공개키 암호 방식이다. 공개키 암호의 도입은 현대 암호의 발전에 중요한 계기가 되었다.[1]
종류
대칭키 알고리즘
대칭키(Symmetric key) 방식은 암호문을 생성(암호화)할 때 사용하는 키와 암호문으로부터 평문을 복원(복호화)할 때 사용하는 키가 동일한 암호 시스템으로 일반적으로 알고 있는 암호 시스템이다. 송신자와 수신자가 동일한 하나의 키로 암호화와 복호화를 수행하므로 대칭키(Symmetric key) 또는 비밀키(Secret Key) 방식의 암호화라고 한다. 데이터를 블록(Block) 단위로 처리하는 블록암호(Block cipher) 와 연속된 스트림으로 처리하는 스트림 암호(Stream cipher) 가 있으며 일반적으로 대칭키 암호화라고 하면 블록 방식의 암호화를 의미한다.[2] 알고리즘 구조가 간단하여 대용량 자료를 암/복호화 하는데 유리하다는 장점이 있지만 교환 당사자 간의 동일한 키를 공유하므로 키를 관리하기 어렵게 된다.
블록 암호화
블록암호(block cipher)는 기밀성있는 정보를 정해진 블록 단위로 암호화 하는 대칭키 암호 시스템이다. 만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용 모드가 사용된다. 블록 암호에 대한 안전성 증명 방법으로는 선택평문공격인 차분공격(Differential Cryptanalysis)과 알려진평문공격인 선형공격(Linear Cryptanalysis)등이 있다. 차분 공격(differential cryptanalysis)은 암호해독(cryptanalysis)의 한 방법으로, 입력값의 변화에 따른 출력값의 변화를 이용하는 방법이며, 선형 공격(linear cryptanalysis)은 암호 공격의 한 방법으로, 암호화 과정에서의 근사적 선형 관계식을 찾는 것을 목적으로 한다. 선형 공격은 차분 공격은 블록 암호를 공격하는 방법으로 널리 응용된다.
블록암호 구조에는 페스탈(Feistel)구조와 SPN구조가 있다. 페스탈 구조는 암복호화 과정에서 역함수가 필요 없다는 장점이 있지만 구현시 스왑(Swap)단계 때문에 연산량이 많이 소요 되며 암호에 사용되는 라운드 함수를 안전하게 설계해야 한다는 단점이 있다. 대표적인 암호로는 DES가 있으며 Single DES는 안전성 문제로 현재 사용하고 있지 않다. 한국에서는 개발된 암호 중에서는 페스탈 구조기반으로 설계된 SEED가 있다. SPN 구조는 암복호화 과정에서 역함수가 필요하도록 설계되어야 한다는 단점이 있지만 중간에 비트의 이동없이 한번에 암복호화가 가능하기 때문에 페스탈 구조에 비해 효율적으로 설계할 수 있다. 대표적인 암호로는 AES가 있으며 AES는 현재 널리 상용되고 있다.[3]
스트림 암호화
스트림암호(stream cipher)는 대칭 키 암호의 구조 중 하나로, 유사난수를 연속적(스트림)으로 생성하여 암호화하려는 자료와 결합하는 구조를 가진다. 일반적인 스트림 암호는 유사난수를 1비트 단위로 생성하고, 생성된 값과 암호화하려는 각 값을 XOR하여 1비트의 암호화된 자료를 얻는다. 스트림 암호는 일회용 난수표(OTP)를 유사난수로 대체한 것으로 볼 수 있다. 스트림 암호는 하드웨어 구현이 간편하며 속도가 빠르기 때문에 무선 통신 등의 환경에 주로 사용된다. 대표적으로 RC4가 널리 사용되며, 이외에도 A5/1, A5/2 등의 알고리즘이 존재한다.[4]
각주
같이 보기