KCDSA
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
KCDSA는 정수론과 타원 곡선 암호화를 기반으로 하는 디지털 서명 알고리즘이다. KCDSA는 정수론 기반 KCDSA와 타원 곡선 기반 EC-KCDSA로 나뉘며, 각기 다른 도메인 파라미터와 사용자 파라미터를 사용한다. 서명 생성 및 검증 과정은 해시 함수를 활용하며, 정수론 기반과 타원 곡선 기반 방식에 따라 구체적인 계산 방식에 차이가 있다.
KCDSA 알고리즘에서 사용하는 도메인 파라미터는 기반이 되는 수학 이론에 따라 크게 두 가지로 나뉜다. 하나는 정수론의 이산 로그 문제에 기반한 파라미터이고, 다른 하나는 타원곡선 암호를 사용하는 EC-KCDSA의 파라미터이다. EC-KCDSA는 KCDSA의 수학적 기반을 타원곡선 암호로 변경한 방식이다. 각 방식에 따른 구체적인 파라미터 정의는 하위 섹션에서 설명한다.
KCDSA 알고리즘에서 각 사용자는 고유한 키 쌍과 관련 파라미터를 가진다. 이는 서명 생성 및 검증 과정에서 사용자의 신원을 확인하고 데이터의 무결성을 보장하는 데 필수적이다.
2. 도메인 파라미터
2. 1. 정수론 기반 KCDSA
개정된 사양에서는 추가적으로 가 소수이거나, 이 값의 모든 소인수가 보다 커야 한다는 조건이 추가되었다.
2. 2. 타원곡선 기반 EC-KCDSA
EC-KCDSA는 본질적으로 이산 로그 암호화 대신 타원곡선 암호를 사용하는 동일한 알고리즘이다.
도메인 파라미터는 다음과 같다.
사용자 매개변수와 알고리즘은 모듈식 지수 연산이 점 곱셈으로 대체된다는 점을 제외하면 이산 로그 KCDSA와 기본적으로 동일하다. 구체적인 차이점은 다음과 같다.3. 사용자 파라미터
주요 사용자 파라미터는 다음과 같다.
KCDSA는 정수론에 기반한 방식과 타원곡선에 기반한 방식(EC-KCDSA)이 있으며, 사용하는 수학적 원리와 일부 연산 과정에서 차이가 있다. 각 파라미터의 구체적인 정의와 계산 방식, 그리고 두 방식 간의 상세한 차이점은 하위 섹션에서 다룬다.
3. 1. 정수론 기반 KCDSA
3. 2. 타원곡선 기반 EC-KCDSA
EC-KCDSA는 본질적으로 이산 로그 암호화 대신 타원곡선 암호를 사용하는 동일한 알고리즘이다.
도메인 파라미터는 다음과 같다.
사용자 매개변수와 알고리즘은 모듈식 지수 연산이 점 곱셈으로 대체된다는 점을 제외하면 이산 로그 KCDSA와 기본적으로 동일하다. 구체적인 차이점은 다음과 같다.
4. 해시 함수
KCDSA 및 EC-KCDSA에서 사용되는 해시 함수 는 충돌 저항 해시 함수이며, |q| 비트 다이제스트(해시값)를 생성한다.
5. 서명 생성
전자서명 생성은 메시지 의 무결성을 보증하고 서명자의 신원을 확인하는 과정이다. KCDSA 알고리즘은 주어진 메시지 에 대해 고유한 서명 값 쌍 를 생성한다.
KCDSA 서명 생성 방식은 기반이 되는 수학적 원리에 따라 크게 두 가지로 나뉜다.
- 정수론 기반 KCDSA: 이산 로그 문제의 어려움에 기반한 방식이다.
- 타원곡선 기반 EC-KCDSA: 타원곡선 암호(Elliptic Curve Cryptography, ECC)를 이용하는 방식이다.
두 방식 모두 서명 생성 과정에서 임의의 값 를 안전하게 생성하고 사용하는 것이 중요하며, 기본적인 절차는 유사하나 사용하는 수학적 연산(모듈러 지수 연산 또는 타원곡선 점 곱셈)에서 차이가 있다. 각 방식의 구체적인 서명 생성 절차와 파라미터는 하위 섹션에서 자세히 설명한다.
5. 1. 정수론 기반 KCDSA
메시지 에 서명하는 과정은 다음과 같다.- 서명자는 먼저 무작위로 정수 를 선택한다. 이 는 조건을 만족해야 한다. 그 다음, 를 계산한다. 여기서 는 모듈러 연산을 의미한다.
- 계산된 값을 이용하여 서명의 첫 번째 부분인 을 계산한다. 이며, 여기서 는 해시 함수이다.
- 다음으로 서명의 두 번째 부분인 를 계산한다. 계산식은 이다. 여기서 는 서명자의 개인키, 는 인증서 관련 정보, 는 비트열 연결, 는 배타적 논리합(XOR) 연산을 의미한다.
- 만약 계산된 값이 0이라면 (), 서명 생성 과정을 처음부터 다시 시작해야 한다.
- 가 0이 아니라면, 최종 서명은 쌍으로 구성된다.
이 표준 규격은 정수 를 해시 함수의 입력값인 바이트 문자열로 어떻게 변환해야 하는지에 대해 명확하게 설명하지 않는 부분이 있다. 하지만 부록 C.1의 예시를 통해 보면, 이 변환은 PKCS#1/RFC 3447에서 정의된 I2OSP(Integer-to-Octet-String Primitive) 함수를 사용하는 것으로 해석될 수 있다. 즉, 와 같이 계산된다. 여기서 는 정수 의 비트 길이를 의미한다.
5. 2. 타원곡선 기반 EC-KCDSA
EC-KCDSA는 본질적으로 이산 로그 암호화 대신 타원곡선 암호를 사용하는 동일한 알고리즘이다.도메인 파라미터는 다음과 같다.
- 유한 필드에 대한 타원 곡선 ''E''.
- 소수 차수 ''q''의 순환 부분군을 생성하는 ''E''의 점 ''G''. (''q''는 타원 곡선 암호화의 다른 설명에서 종종 ''n''으로 표시된다.)
사용자 매개변수와 알고리즘은 모듈식 지수 연산이 점 곱셈으로 대체된다는 점을 제외하면 이산 로그 KCDSA와 기본적으로 동일하다. 구체적인 차이점은 다음과 같다.
- 공개 키는 ''Y'' = ''x̄G''이다. (여기서 ''x̄''는 개인 키)
- 서명 생성 시, ''r'' = h(''W''x || ''W''y)이며, 여기서 ''W'' = ''kG''이다. (''W''x와 ''W''y는 각각 ''W''의 x좌표와 y좌표를 의미하며, '||'는 비트열 연결을 나타낸다.)
- 서명 검증 시, 검증자는 ''r'' = h(''sY'' + ''eG'')인지 테스트한다. (여기서 ''e''는 메시지의 해시값, (''r'', ''s'')는 서명 값이다.)
6. 서명 검증
메시지 에 대한 서명 의 유효성을 확인하는 과정을 서명 검증이라고 한다. 검증자는 공개된 정보(공개키, 도메인 파라미터 등)를 이용하여 주어진 서명 값이 올바르게 생성되었는지 수학적으로 확인한다.
KCDSA 서명 검증은 크게 두 가지 방식에 따라 진행될 수 있다. 첫 번째는 정수론의 이산 로그 문제에 기반한 방식이며, 두 번째는 타원곡선 암호를 이용하는 EC-KCDSA 방식이다. 두 방식 모두 기본적인 검증 원리는 유사하지만, 사용하는 수학적 연산(모듈러 지수 연산 또는 타원곡선 점 덧셈)과 파라미터에서 차이가 있다.
구체적인 검증 절차는 사용하는 KCDSA 방식(정수론 기반 또는 타원곡선 기반)에 따라 달라지며, 각 방식의 상세한 검증 단계는 해당 하위 섹션에서 설명한다.
6. 1. 정수론 기반 KCDSA
메시지 에 대한 서명 를 검증하는 과정은 다음과 같다.- 검증자는