키 생성

키 생성(Key generation)은 암호학에서 키를 생성하는 과정이다. 키는 암호화/복호화되는 모든 데이터를 암호화하고 복호화하는 데 사용된다.

키를 생성하는 데 사용되는 장치 또는 프로그램을 키 생성기 또는 키젠이라고 한다.

 암호학에서의 생성 
현대의 암호화 시스템에는 DES 및 AES와 같은 대칭 키 암호와 RSA와 같은 공개 키 암호 방식이 포함된다. 대칭 키 알고리즘은 단일 공유 키를 사용한다. 데이터를 비밀로 유지하려면 이 키를 비밀로 유지해야 한다. 공개 키 알고리즘은 공개 키와 개인 키를 사용한다. 공개 키는 누구에게나 제공된다(종종 디지털 인증서를 통해). 발신자는 수신자의 공개 키로 데이터를 암호화한다. 개인 키를 가진 사람만이 이 데이터를 복호화할 수 있다.

공개 키 알고리즘은 대칭 키 알고리즘보다 훨씬 느린 경향이 있으므로, TLS 및 SSH와 같은 현대 시스템은 이 둘의 조합을 사용한다. 한 당사자가 다른 당사자의 공개 키를 수신하고 작은 데이터 조각(대칭 키 또는 이를 생성하는 데 사용되는 일부 데이터)을 암호화한다. 나머지 대화는 암호화를 위해 (일반적으로 더 빠른) 대칭 키 알고리즘을 사용한다.

컴퓨터 암호학은 키에 정수를 사용한다. 경우에 따라 키는 난수 생성기(RNG) 또는 유사난수(PRNG)를 사용하여 무작위로 생성된다. PRNG는 분석 시 무작위로 보이는 데이터를 생성하는 컴퓨터 알고리즘이다. 시스템 엔트로피를 사용하여 데이터를 시드하는 PRNG는 일반적으로 더 나은 결과를 생성하는데, 이는 공격자가 PRNG의 초기 조건을 추측하기 훨씬 더 어렵게 만들기 때문이다. 무작위성을 생성하는 또 다른 방법은 시스템 외부 정보를 활용하는 것이다. 베라크립트(디스크 암호화 소프트웨어)는 사용자 마우스 움직임을 활용하여 고유한 시드를 생성하며, 사용자는 마우스를 불규칙적으로 움직이도록 권장된다. 다른 상황에서는 비밀구절과 키 유도 함수를 사용하여 결정론적으로 키가 파생된다.

많은 현대 프로토콜은 전방향 비밀성을 갖도록 설계되어 각 세션에 대해 새로운 공유 키를 생성해야 한다.

고전 암호 시스템은 통신 링크의 한쪽 끝에서 항상 두 개의 동일한 키를 생성하고 어떻게든 키 중 하나를 링크의 다른 쪽 끝으로 전송한다. 그러나 디피-헬먼 키 교환을 대신 사용하면 키 관리가 단순화된다.

실제로 데이터를 복호화하지 않고도 암호화된 데이터를 읽는 가장 간단한 방법은 무차별 대입 공격이다. 즉, 키의 최대 길이까지 모든 숫자를 시도하는 것이다. 따라서 충분히 긴 키 길이를 사용하는 것이 중요하다. 키가 길수록 공격하는 데 기하급수적으로 더 많은 시간이 걸리므로 무차별 대입 공격이 비실용적이게 된다. 현재 128 비트(대칭 키 알고리즘의 경우) 및 2048 비트(공개 키 알고리즘의 경우)의 키 길이가 일반적이다.

 물리 계층에서의 생성 

 무선 채널 
무선 채널은 두 최종 사용자로 특징지어진다. 파일럿 신호를 전송함으로써 이 두 사용자는 자신들 간의 채널을 추정하고 채널 정보를 사용하여 자신들만이 아는 비밀 키를 생성할 수 있다. 사용자 그룹을 위한 공통 비밀 키는 각 사용자 쌍의 채널을 기반으로 생성될 수 있다.

 광섬유 
키는 광섬유 링크의 위상 변동을 활용하여 생성될 수도 있다.

 같이 보기 
 분산 키 생성: 일부 프로토콜의 경우, 어떤 당사자도 비밀 키를 단독으로 소유해서는 안 된다. 오히려 분산 키 생성 중에는 모든 당사자가 키의 공유를 얻는다. 메시지 복호화와 같은 암호화 작업을 수행하려면 참여 당사자의 임계값이 협력해야 한다.

 각주 

분류:키 관리