대칭키와 공개키 알고리즘의 차이점은 암호키 관점에서 알고리즘을 분류했을 때 아래 그림과 같다.
대칭키는 키가 1개, 공개키는 키가 2개이다.
대칭키
대칭키는 대부분 블록 암호 형태로 사용한다. 즉, 고정 길이 평문 블록을연산하여 동일한 크기의 암호문을 생산하는 형태이다.
이러한 형태의 암호 알고리즘으로 DES, 3-DES, AES가 있다. 아래 표는 각 알고리즘의 키의 크기와, 복호화하는데 걸리는 시간을 뜻한다.
공개키
공개키:𝑃𝑈={E,N}
개인키:𝑃𝑅={D,N}
키 생성 과정
1. N을 구한다.
두 개의 소수 p, q를 구하고 두 수를 곱해서 N을 구한다.
2.L을 구한다.
L은 P-1과 q-1의 최소공배수이다.
3. E를 구한다.
E와 L의 최대공약수가 1이어야 한다.
4. D를 구한다.
E x D mod L = 1
암호화 알고리즘 : C = M^e mod n
복호화 알고리즘 : M = C^dmod n
난수
난수의 용도
- RSA 공개 키 암호 알고리즘 및 기타 공개 키 알고리즘 키 생성
- 대칭 스트림 암호 스트림 키 생성
- 임시 세션 키를 위한 대칭 키 생성(TLS), IPSec 등 응용 분야
- Kerberos에서 키를 배포해야 할 경우에 난수를 사용
난수 열에 요구되는 두가지 조건
무작위성(Randomness)
수열의 무작위성을 판단하는 두 가지 요소가 있다.
- 균등 분포(Uniform distribution)
수열의 비트 분포가 반드시 균등해야 함.
즉, 1과 0이 비트열 상에 나타나는 빈도가 거의 비슷해야 함. - 독립성(Independence)
수열에서 추출한 어떠한 부분 수열도 다른 수열로부터 추론할 수 없어야 함.
예측 불가능성(unpredictability)
상호 인증, 세션 키 생성 같은 응용에서는 정교한 무작위성이 없어도 되지만, 일부를 보고 다음을 예측할 수 없어야 한다.
TRNG(True Random Number Generator) : 입력값으로 실제 랜덤한 정보를 사용
PRNG(Pseudorandom Number Generator) : 무작위 비트열을 생성하기 위해 사용하는 알고리즘
Pseudo : 가짜
PRF(Pseudo Random Function) : 고정된 길이의 의사난수 비트열을 생성하는데 사용하는 함수