ACE 암호화

ACE Encrypt

ACE(Advanced Cryptographic Engine) — 공개 키 암호화 방식과 디지털 서명 방식을 모두 구현하는 장치 모음입니다. 이러한 구성표의 해당 이름 - —ACE 암호화 » 및 «ACE 서명 » 체계는 Cramer-Shoup 공용 키 암호화 체계와 Cramer-Shoup 서명 체계에 기초한다. 이러한 방식의 도입 변형은 전체 암호화 시스템의 성능과 보안 사이에서 균형을 잘 맞추기 위한 것이다.

작가들

ACE에서 구현된 모든 알고리즘은 빅터 슈프와 로널드 크레이머가 개발한 알고리즘을 기반으로 한다. 전체 알고리즘 명세서는 빅터 슈프가 작성했다. 알고리즘의 구현은 토마스 슈바인버거와 메흐디 나세히가 하고, 지원 및 유지보수는 빅터 슈프가 한다. 토마스 슈바인버거는 ACE 사양서 작성에 참여했으며 사용자 매뉴얼도 작성했다.

로널드 크레이머는 현재 덴마크의 아르후스 대학에 머물고 있다. 스위스 취리히에서 ETH에 머무르는 동안 ACE Encrypt 프로젝트를 진행하였다.

메흐디 나세히(Mehdi Nassehi)와 토마스 슈바인베르거(Thomas Schweinberger)는 스위스 주리히(Zürich)에 있는 IBM 연구소에서 ACE 프로젝트에 참여했다.
빅터 슈프는 스위스 주리히에 있는 IBM 연구소에서 일하고 있다.

보안

ACE의 암호화 체계는 합리적이고 자연스러운 난해성 가정 하에서 안전성이 입증될 수 있다. 이 네 가지 가정은 다음과 같다.

  • DDH(Decision Diffie-Hellman) 가정
  • 강력한 RSA 가정
  • SHA-1 두 번째 프리이미지 충돌 저항
  • MARS 합계/카운터 모드 유사 무작위

기본 용어 및 표기법

여기서 우리는 이 글에서 사용되는 몇 가지 명언을 소개한다.

기초수학 표기법

정수 집합.
[ 카디널리티 2의 유한 필드 2 }에 계수가 있는 일변량 다항식 집합.
— integer such that for integer and .
f{\displaystyle A\operatorname{rem}f}한 렘 ⁡ F2[T]{\displaystyler\in F_{2}[T]∈}deg⁡(r)<>, deg⁡(f){\displaystyle \deg(r)<, \deg(f)}가 A, f∈ F2[T] ≡ r({\displaystyle A\equiv r{\pmod{f}}}f≠ 0{\displaystyle A,f\in F_{2}[T],f\ne 다항 r—.q.

기본 문자열 표기법

모든 문자열 집합.
n 길이가 n인 모든 문자열 집합.
( ) 문자열 x 길이 0의 문자열은 로 표시된다
, A ‖ y y {\x}와 y 연결의 결과.

비트, 바이트, 워드

= { 0 def}{}={}}\{}\ 비트 집합.
1, n ) ,.. . . . . .. . . . . . . . . . . . . . . . . . . . . .( (2}}, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 그러한 A 집합에 대해 "제로 요소"를 정의한다.

= e b {\{def
= ( 0 .. .. . ) ∈ ∈ ∈ { { { { A}}}}}}{}}}}}}}}}}{{

= b 을(를) 바이트 집합으로 하고 W = b 32 을 단어 집합으로 정의한다.

{\ A { A\{> 0 l 대해 패딩 연산자를 정의한다.

.

전환 연산자

변환 연산자 t : s 원소 , F [ , , ,

암호화 구성표

암호화 키 쌍

암호화 체계는 두 가지 주요 유형을 사용한다.
ACE 공개 키:( g , g 1, , , h 1, 1, h 2, ,k , ) g_1},},k_{1},2
ACE 개인 키:( , , y, , ) }}.
지정된 매개 변수 의 경우 1024 m16 m 키 구성 요소는 다음과 같이 정의된다.
256비트 프라임 번호.
1 ( q {\와 같은 m-비트 소수.
— elements (whose multiplicative order modulo divides ).
, , y, ,z 2}} 요소 { - {\\{0,\no,
— elements with and , where = L ( / + / ) l+

키 생성

알고리즘. ACE 암호화 스키마를 위한 키 생성.
입력: 크기 매개 변수
출력: 공용/개인 키 쌍

  1. < < 2 2과 같은 임의의 프라이밍 {\를) 생성하십시오
  2. ( ) - < P <2 m 이렇게 P ≡ 1 (1 (을 생성한다
  3. g 1 .. . . ,P- , 하십시오
  4. Generate random integers and
  5. ,.. .. . . - , 에서 다음 정수를 계산하십시오
    1 m 화살표
    1 P
    1 P
    왼쪽 }:{1}
    1 e m 화살표 2}} .
  6. Generate random byte strings and , where and (\right\rceil
  7. 공개 키/개인 키 쌍 반환

암호문 표현

ACE 암호화 방식의 암호문에는 양식이 있다.

, , 2,, e)


구성 요소를 다음과 같이 정의한다.
1, 2, {,. P- 승수 순서 로 P 정수.
- 요소 W
B{{\ B
, 1, 2, v 우리는 서문을 preamble, 라고 부른다. cleartext가 батт로 구성된 문자열인 경우, e 의 길이는 l l / {\+16\right}과 같다
암호문을 바이트 문자열에 매핑하는 d e 함수를 도입해야 한다

정수 내가 을 들어 표현고 상응하는 역 함수 CDecode{CDecode\displaystyle}.;0{\displaystyle l>0}, 단어의 문자열 ∈ W4{\displaystyles\in W^{4}}, 정수 0≤ u1,2, v<>256나는{\displaystyle 0\leq u_{1},u_{2},v<, 256^{나는}}, 및 바이트 문자열 e∈. B∗{) 스타일 B

.


정수 > 바이트 문자열 B ( ) + L

.

암호화 프로세스

알고리즘. ACE 비대칭 암호화 작업.
input: public key and byte string .
출력: 바이트 문자열 - 암호 {

  1. ,. . .- 을(를) 임의로 생성하십시오.
  2. 암호 텍스트 서문 생성:
    1. W 를 임의로 생성한다.
    2. 1 g 1 1}^{1} 2 g r r .
    3. Compute ; note that .
    4. P 를 계산하십시오
  3. 대칭 암호화 작업의 키 계산:
    1. ~ h 화살표 }r 2~ h m P {\ { 화살표 2}^{
    2. Compute .
  4. 암호문 e c , s, , M) 계산
  5. 암호문 인코딩:
    ( B( P), s , 1, ,, e) \psi
  6. }을(를) 반환하십시오

대칭 암호화 프로세스를 시작하기 전에 입력 메시지 B을(를) M ,.. . }, 로 나누는데 여기서 마지막 블록을 제외한 블록은 각각 1024바이트가 된다. 각 블록은 스트림 암호로 암호화된다. 각 암호화된 블록 에 대해 16바이트 메시지 인증 코드를 계산한다. 암호문을 입수하면

)= ( M)+ L( M)/ \lceil

( )= 0 이면 L ()= 0 .

알고리즘. ACE 비대칭 암호화 프로세스.
입력:( m) W Z time W B>
출력: = ( M)+ ⌈ L( / l

  1. = M인 경우 을(를 반환하십시오
  2. 의사 임의 생성기 상태 초기화:
  3. A U U a 생성
    .
  4. < ( M) 를) 동안 다음을 수행하십시오.
    1. ( L( )- i, ) .
    2. 및 값 암호화화에 MAC에 에에에:::::::
      1. g a ) G r d ( , e ) 화살표
      2. e a t ) G r ( r ) 화살표
    3. 일반 텍스트 암호화: n [ + r a e
    4. 메시지 인증 코드 생성:
      1. + = ( ) 인 경우 s o c 1 s 0
      2. W
    5. 암호문 업데이트: e e e ( a c s m e\ e }}}}}}{B^{\
    6. + i i
  5. 을(를) 반환하십시오

암호 해독 프로세스

알고리즘. ACE 암호 해독 프로세스.
Input: public key and corresponding private key , byt e string .
출력: 암호 해독된 메시지 e

  1. 암호문 암호 해독:
    1. ( ) < ( P)+ L인 경우 그런 다음 R e j e Reject}을(를 반환하십시오
    2. 계산:
      ;

      , 2,< l 여기서 = L (
  2. 암호 텍스트 서문 확인:
    1. 또는 P 또는 인 경우 e {\을 반환하십시오
    2. 1 r }인경우 e j 을(를) 반환하십시오
    3. j c 왼쪽
    4. 1 1 w m 인 경우 r e c t 왼쪽 화살표
    5. Compute ; note that .
    6. + y r e e e 1
    7. e j = 1 인 경우R j 을(를) 반환하십시오
  3. 대칭 암호 해독 작업의 키 계산:
    1. , .
    2. Compute .
  4. 계산 e , , , e) 화살표 S 은 R c 을 반환할 수 있다는 점에 유의하십시오
  5. 을(를) 반환하십시오

알고리즘. 암호 해독 작업 e .
입력:(, , m, ) W Z > 0
출력: 암호 해독된 메시지 e

  1. = e인 경우 B 을(를) 반환하십시오
  2. 의사 임의 생성기 상태 초기화:
  3. A U U a 생성
    .
  4. 0 0
  5. < L( ) 를) 수행하는 동안 다음을 수행하십시오.
    1. m ( L( )- , + )- 화살표 .
    2. 0인 경우 e e 을(를) 반환하십시오
    3. 암호화 및 MAC에 대한 마스크 값 생성:
      1. g a ) G r d ( , e ) 화살표
      2. e a t ) G r ( r ) 화살표
    4. 메시지 인증 코드 확인:
      1. + + = () i인 경우 b 1 또는 c 0{\
      2. W
      3. If , then return .
    5. 일반 텍스트 업데이트: ([ + r) k ) M .
    6. + + i}.
  6. 을(를) 반환하십시오

시그너처 구성표

서명 체계는 두 가지 주요 유형을 채택한다.
ACE 시그니처 공개 키:( , s) e
ACE 시그니처 개인 키:( p, , ) .
매개 변수 즉 1024 m 에 대해 다음과 같은 방법으로 주요 구성요소를 정의한다.
m/ \ -bit prime number with(- )/ 도 프라임 번호다.
/ -bit prime number with(- )/ } - 또한 소수 - primelease number이다.
= 이며 m 또는 - 1 иттт has has has has has has has has.
, 요소{,.. . N- {\정량 잔류물 로 N N
161비트 프라임 번호.
{ 0... . .( - )/ - (
요소 B
요소 B

키 생성

알고리즘. ACE 공개 키 서명 체계를 위한 키 생성.
입력: 크기 매개 변수
출력: 공개/개인 키 쌍

  1. 임의의 소수점 , , q 생성 (- 1(q- 1 도 소수, 그리고
    - < 1 {\ 2}-1}, -1< }- pq},{\c
    어디에
    = / 1 =m /
  2. 을(를) 설정하십시오
  3. 임의의 소수점 e 2 2 161를 생성한다
  4. Generate random , taking into account and , and compute .
  5. ,... . . . . . .(p- )/ - 1 a\, ( 으로 하여 x h a {\ h {\\x\ {\x{.
  6. 임의 바이트 문자열 k B {\k'\B^{184 B32 {\^{32을 생성한다
  7. 키 쌍 공개/인기 키 키 return 반환
    ( s),( p )),

표시(.

ACE 서명 체계의 서명은 다음과 같은 방식으로 정의되는 형식, w, , y , , y, k~을 갖는다.
B {\ B
2 2 2과 같은 정수
, 요소{,., -
~ B 요소{\ ) = + ( M)+ 8/ {\) 서 M - 메시지가 서명되고 있음.

우리는 바이트 문자열 표현으로 서명을 매핑 하는 de{SEncode\displaystyle}기능과 해당 역 함수 SDecode{SDecode\displaystyle}마다 SEnc을 소개하고자 합니다. 정수 나는 을 들어;0{\displaystyle l>0}, 바이트 문자열 d∈ B64{\displaystyled\in B^{64}}, 정수가 필요하다. y y < l y, 바이트 k ~ ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,,

L}(


정수 > 바이트 문자열 B 여기서 ) + L

.

서명 생성 프로세스

알고리즘. ACE 서명 생성 프로세스.
Input: public key and corresponding private key and byte string , .
출력: 바이트 문자열 — 디지털 서명 signature B

  1. 다음 단계를 수행하여 입력 데이터를 해시하십시오.
    1. Generate a hash key at random, such that .
    2. Z( O a (~ , 화살표
  2. ~ 1, . {\1, 을(를) 임의로 하고 y ~ 2 e yn}}}
  3. x ( h e (y .
  4. Generate a random prime , , and its certificate of correctness : . Repeat this step until e
  5. Set ; note that .
  6. 계산 b h 여기서
    -(- ) r ( ) e

    그리고 여기서 =( - )/ p = (- )/
  7. 서명 인코딩:
    E d e ( B( ), d, , , y ,k~ ) \sigma

메모들

ACE 암호화 프로세스와 ACE 시그니처 프로세스의 정의에서 일부 보조 기능(예: UOWHASH, ESHASH 및 일부 기타)이 사용되고 있으며, 정의는 이 문서를 벗어난다. 이에 대한 자세한 내용은 в에서 확인할 수 있다.[1]

구현, 활용률 및 성능

ACE 암호화 체계는 NESSIE(New European Schemes for Signatures, Integrity and Encryption)가 비대칭 암호화 체계로 권장한다. 보도 자료는 2003년 2월까지이다.

두 계획 모두 GNU GMP 라이브러리를 사용하여 ANSI C에서 실행되었다. 테스트는 AIX 시스템에서는 파워 PC 604 모델 43P, 윈도 NT 시스템에서는 266MHz 펜티엄 등 두 가지 플랫폼에서 수행됐다. 결과 테이블:

기본 운영에 대한 시간 비용
파워 PC 펜티엄
피연산자 크기(바이트) 피연산자 크기(바이트)
512 1024 512 1024
곱하기 3.5×10초−5 1.0×10초−4 4.5×10초−5 1.4×10초−4
스쿼링 3.3×10초−5 1.0×10초−4 4.4×10초−5 1.4×10초−4
지수 1.9×10초−2 1.2×10초−1 2.6×10초−2 1.7×10초−1
암호화 방식 및 서명 방식 성능
파워 PC 펜티엄
고정비용(ms) MBit/초 고정비용(ms) MBit/초
암호화 160 18 230 16
암호 해독 68 18 97 14
서명 48 64 62 52
등록 설정 29 41
검증하다 52 65 73 53

문학

외부 링크