맨위로가기

KCDSA

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

KCDSA는 정수론과 타원 곡선 암호화를 기반으로 하는 디지털 서명 알고리즘이다. KCDSA는 정수론 기반 KCDSA와 타원 곡선 기반 EC-KCDSA로 나뉘며, 각기 다른 도메인 파라미터와 사용자 파라미터를 사용한다. 서명 생성 및 검증 과정은 해시 함수를 활용하며, 정수론 기반과 타원 곡선 기반 방식에 따라 구체적인 계산 방식에 차이가 있다.

2. 도메인 파라미터

KCDSA 알고리즘에서 사용하는 도메인 파라미터는 기반이 되는 수학 이론에 따라 크게 두 가지로 나뉜다. 하나는 정수론의 이산 로그 문제에 기반한 파라미터이고, 다른 하나는 타원곡선 암호를 사용하는 EC-KCDSA의 파라미터이다. EC-KCDSA는 KCDSA의 수학적 기반을 타원곡선 암호로 변경한 방식이다. 각 방식에 따른 구체적인 파라미터 정의는 하위 섹션에서 설명한다.

2. 1. 정수론 기반 KCDSA


  • p: |p| = 512 + 256i (여기서 i = 0, 1, \dots, 6)를 만족하는 큰 소수.
  • q: |q| = 128 + 32j (여기서 j = 0, 1, \dots, 4)를 만족하며, p-1의 소인수.
  • g: GF(p)에서 위수(order)가 q인 기저 원소.


개정된 사양에서는 추가적으로 (p-1)/(2q)가 소수이거나, 이 값의 모든 소인수가 q보다 커야 한다는 조건이 추가되었다.

2. 2. 타원곡선 기반 EC-KCDSA

EC-KCDSA는 본질적으로 이산 로그 암호화 대신 타원곡선 암호를 사용하는 동일한 알고리즘이다.

도메인 파라미터는 다음과 같다.

  • 유한 필드에 대한 타원 곡선 E.
  • 소수 차수 q의 순환 부분군을 생성하는 E의 점 G. (q타원곡선 암호의 다른 설명에서 종종 n으로 표시된다.)


사용자 매개변수와 알고리즘은 모듈식 지수 연산이 점 곱셈으로 대체된다는 점을 제외하면 이산 로그 KCDSA와 기본적으로 동일하다. 구체적인 차이점은 다음과 같다.

  • 공개 키는 Y=\bar{x}G이다.
  • 서명 생성 시, r=h(W_x || W_y)이며, 여기서 W=kG이다.
  • 서명 검증 시, 검증자는 r=h(sY+eG)인지 테스트한다.

3. 사용자 파라미터

KCDSA 알고리즘에서 각 사용자는 고유한 키 쌍과 관련 파라미터를 가진다. 이는 서명 생성 및 검증 과정에서 사용자의 신원을 확인하고 데이터의 무결성을 보장하는 데 필수적이다.

주요 사용자 파라미터는 다음과 같다.


  • 개인 키 (x): 서명자만이 알고 있는 비밀 정보로, 전자서명 생성에 사용된다.
  • 공개 키 (y 또는 Y): 개인 키로부터 계산되어 공개되며, 서명 검증에 사용된다.
  • 인증 관련 값 (z): 서명자의 인증서 정보 등과 연관된 값이다.


KCDSA는 정수론에 기반한 방식과 타원곡선에 기반한 방식(EC-KCDSA)이 있으며, 사용하는 수학적 원리와 일부 연산 과정에서 차이가 있다. 각 파라미터의 구체적인 정의와 계산 방식, 그리고 두 방식 간의 상세한 차이점은 하위 섹션에서 다룬다.

3. 1. 정수론 기반 KCDSA


  • x: 서명자의 개인 서명 키이며, 0 < x < q를 만족하는 정수이다.
  • y: 서명자의 공개 검증 키이며, y=g^\bar{x} \pmod{p}로 계산된다. 여기서 \bar{x}x의 모듈러 곱셈 역원으로, \bar{x}=x^{-1} \pmod{q}이다.
  • z: 인증 과정에 사용되는 값으로, 규격 버전에 따라 정의가 다르다.
  • 1998년 초기 규격에서는 z를 ''인증서 데이터''의 해시 값, 즉 z = h(\text{인증서 데이터})로 정의하였다. 그러나 이 규격에서는 '인증서 데이터'의 정확한 형식을 명확하게 기술하지 않는 문제가 있었다.
  • 개정된 규격에서는 z를 공개 키 y의 하위 B 비트(가장 낮은 자리부터 B개의 비트 값)로 명확히 정의한다. 여기서 B는 사용하는 해시 함수의 블록 크기(비트 단위)를 의미하며, 일반적으로 512 또는 1024이다. 이 정의에 따라 해시 함수의 첫 번째 입력 블록은 y \pmod{2^B}가 된다.

3. 2. 타원곡선 기반 EC-KCDSA

EC-KCDSA는 본질적으로 이산 로그 암호화 대신 타원곡선 암호를 사용하는 동일한 알고리즘이다.

도메인 파라미터는 다음과 같다.

  • 유한 필드에 대한 타원 곡선 E.
  • 소수 차수 q의 순환 부분군을 생성하는 E의 점 G. (q는 타원 곡선 암호화의 다른 설명에서 종종 n으로 표시된다.)


사용자 매개변수와 알고리즘은 모듈식 지수 연산이 점 곱셈으로 대체된다는 점을 제외하면 이산 로그 KCDSA와 기본적으로 동일하다. 구체적인 차이점은 다음과 같다.

  • 공개 키는 Y=\bar{x}G이다. (여기서 \bar{x}는 개인키 x의 역원에 해당한다.)
  • 서명 생성 시, r=h(W_x || W_y)이며, 여기서 W=kG이다.
  • 서명 검증 시, 검증자는 r=h(sY+eG)인지 테스트한다.

4. 해시 함수

KCDSA 및 EC-KCDSA에서 사용되는 해시 함수 h는 충돌 저항 해시 함수이며, |q| 비트 다이제스트(해시값)를 생성한다.

5. 서명 생성

전자서명 생성은 메시지 m의 무결성을 보증하고 서명자의 신원을 확인하는 과정이다. KCDSA 알고리즘은 주어진 메시지 m에 대해 고유한 서명 값 쌍 (r, s)를 생성한다.

KCDSA 서명 생성 방식은 기반이 되는 수학적 원리에 따라 크게 두 가지로 나뉜다.


  • 정수론 기반 KCDSA: 이산 로그 문제의 어려움에 기반한 방식이다.
  • 타원곡선 기반 EC-KCDSA: 타원곡선 암호(Elliptic Curve Cryptography, ECC)를 이용하는 방식이다.


두 방식 모두 서명 생성 과정에서 임의의 값 k를 안전하게 생성하고 사용하는 것이 중요하며, 기본적인 절차는 유사하나 사용하는 수학적 연산(모듈러 지수 연산 또는 타원곡선 점 곱셈)에서 차이가 있다. 각 방식의 구체적인 서명 생성 절차와 파라미터는 하위 섹션에서 자세히 설명한다.

5. 1. 정수론 기반 KCDSA

메시지 m에 서명하는 과정은 다음과 같다.

  • 서명자는 먼저 무작위로 정수 k를 선택한다. 이 k0 < k < q 조건을 만족해야 한다. 그 다음, w = g^k \pmod{p}를 계산한다. 여기서 \pmod{p}는 모듈러 연산을 의미한다.
  • 계산된 w 값을 이용하여 서명의 첫 번째 부분인 r을 계산한다. r = h(w)이며, 여기서 h해시 함수이다.
  • 다음으로 서명의 두 번째 부분인 s를 계산한다. 계산식은 s = x(k - r \oplus h(z \parallel m)) \pmod{q}이다. 여기서 x는 서명자의 개인키, z는 인증서 관련 정보, \parallel는 비트열 연결, \oplus배타적 논리합(XOR) 연산을 의미한다.
  • 만약 계산된 s 값이 0이라면 (s=0), 서명 생성 과정을 처음부터 다시 시작해야 한다.
  • s가 0이 아니라면, 최종 서명은 (r, s) 쌍으로 구성된다.


이 표준 규격은 정수 w해시 함수의 입력값인 바이트 문자열로 어떻게 변환해야 하는지에 대해 명확하게 설명하지 않는 부분이 있다. 하지만 부록 C.1의 예시를 통해 보면, 이 변환은 PKCS#1/RFC 3447에서 정의된 I2OSP(Integer-to-Octet-String Primitive) 함수를 사용하는 것으로 해석될 수 있다. 즉, r = h(I2OSP(w, |q|/8))와 같이 계산된다. 여기서 |q|는 정수 q의 비트 길이를 의미한다.

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. 서명 검증

메시지 m에 대한 서명 (r, s)의 유효성을 확인하는 과정을 서명 검증이라고 한다. 검증자는 공개된 정보(공개키, 도메인 파라미터 등)를 이용하여 주어진 서명 값이 올바르게 생성되었는지 수학적으로 확인한다.

KCDSA 서명 검증은 크게 두 가지 방식에 따라 진행될 수 있다. 첫 번째는 정수론의 이산 로그 문제에 기반한 방식이며, 두 번째는 타원곡선 암호를 이용하는 EC-KCDSA 방식이다. 두 방식 모두 기본적인 검증 원리는 유사하지만, 사용하는 수학적 연산(모듈러 지수 연산 또는 타원곡선 점 덧셈)과 파라미터에서 차이가 있다.

구체적인 검증 절차는 사용하는 KCDSA 방식(정수론 기반 또는 타원곡선 기반)에 따라 달라지며, 각 방식의 상세한 검증 단계는 해당 하위 섹션에서 설명한다.

6. 1. 정수론 기반 KCDSA

메시지 m에 대한 서명 (r, s)를 검증하는 과정은 다음과 같다.

  • 검증자는 0 \le r < 2^

    0 < s < q인지 확인한다. 만약 이 조건을 만족하지 않으면 서명을 유효하지 않은 것으로 거부한다.
  • 검증자는 e = r \oplus h(z \parallel m)를 계산한다.
  • 검증자는 r = h(y^s \cdot g^e \mod{p})인지 확인한다. 이 식이 성립하면 서명은 유효하며, 그렇지 않으면 유효하지 않다.
  • 6. 2. 타원곡선 기반 EC-KCDSA

    EC-KCDSA는 본질적으로 이산 로그 암호화 대신 타원곡선 암호를 사용하는 동일한 알고리즘이다.

    도메인 파라미터는 다음과 같다.

    • 유한 필드에 대한 타원 곡선 E.
    • 소수 차수 q의 순환 부분군을 생성하는 E의 점 G. (q는 타원 곡선 암호화의 다른 설명에서 종종 n으로 표시된다.)


    사용자 매개변수와 알고리즘은 모듈식 지수 연산이 점 곱셈으로 대체된다는 점을 제외하면 이산 로그 KCDSA와 기본적으로 동일하다. 구체적인 차이점은 다음과 같다.

    • 공개 키는 Y=\bar{x}G이다.
    • 서명 생성 시, r=h(W_x || W_y)이며, 여기서 W=kG이다.
    • 서명 검증 시, 검증자는 r=h(sY+eG)인지 테스트한다.

    7. 관련 알고리즘

    EC-KCDSA는 KCDSA와 기본적으로 동일한 알고리즘으로, 이산 로그 암호 대신 타원곡선 암호를 사용한다.



    본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
    모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
    하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
    따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

    문의하기 : help@durumis.com