ACE Encrypt
ACE (Advanced Cryptographic Engine) — набор программных средств, реализующих шифрование в режиме схемы шифрования с открытым ключом, а также в режиме цифровой подписи. Соответствующие названия этих режимов — «ACE Encrypt» и «ACE Sign». Схемы являются вариантами реализации схем Крамера-Шоупа. Внесённые изменения нацелены на достижение наилучшего баланса между производительностью и безопасностью всей системы шифрования. АвторыВсе алгоритмы, написанные в ACE, основаны на алгоритмах, разработанных Виктором Шоупом(Victor Shoup) и Рональдом Крамером (Ronald Cramer). Полная спецификация алгоритмов написана Виктором Шоупом. Реализация алгоритмов выполнена Томасом Швейнбергером(Thomas Schweinberger) и Медди Нассей (Mehdi Nassehi), их поддержкой и развитием занимается Виктор Шоуп. Томас Швейнберг принимал участие в составлении документа спецификаций ACE, а также написал руководство пользователя. БезопасностьДоказательство безопасности схемы шифрования и схемы цифровой подписи в ACE проводится с использованием обоснованных и естественных допущений. Четырьмя основными допущениями являются:
Основные обозначения и терминологияПриведём определения некоторых обозначений и терминов, используемых в данной статье. Основные математические обозначения Z {displaystyle Z} — множество целых чисел. Основные строковые обозначения A ∗ {displaystyle A^{ast }} — множество всевозможных строк. Биты, байты, слова b = d e f { 0 , 1 } {displaystyle b{stackrel {mathrm {def} }{=}}left{0,1
ight}} — множество битов. 0 b = d e f 0 ∈ b {displaystyle 0_{b}{stackrel {mathrm {def} }{=}}0in b} ;
Определим B = d e f b 8 {displaystyle B{stackrel {mathrm {def} }{=}}b^{8}} как множество байтов, а W = d e f b 32 {displaystyle W{stackrel {mathrm {def} }{=}}b^{32}} как множество слов. Для x ∈ A ∗ {displaystyle xin A^{ast }} с A ∈ { b , B , W } {displaystyle Ain left{b,B,W
ight}} и l > 0 {displaystyle l>0} определим оператор заполнения: p a d l ( x ) = d e f { x , L ( x ) ≥ l x | | 0 A l − L ( x ) , L ( x ) < l {displaystyle pad_{l}(x){stackrel {mathrm {def} }{=}}{egin{cases}x,&L(x)geq lx||0_{A^{l-L(x)}},&L(x)<lend{cases}}} . Оператор преобразованияОператор преобразования I s r c d s t : s r c → d s t {displaystyle I_{src}^{dst}:src ightarrow dst} выполняет преобразования между элементами Z , F 2 [ T ] , b ∗ , B ∗ , W ∗ {displaystyle Z,F_{2}[T],b^{ast },B^{ast },W^{ast }} . Схема шифрованияПара ключей шифрованияВ схеме шифрования ACE задействованы два типа ключей: Генерация ключаАлгоритм. Генерация ключа для схемы шифрования ACE. g 2 ← g 1 w r e m P {displaystyle g_{2}leftarrow g_{1}^{w}remP} , c ← g 1 x r e m P {displaystyle cleftarrow g_{1}^{x}remP} , d ← g 1 y r e m P {displaystyle dleftarrow g_{1}^{y}remP} , h 1 ← g 1 z 1 r e m P {displaystyle h_{1}leftarrow g_{1}^{z_{1}}remP} , h 2 ← g 1 z 2 r e m P {displaystyle h_{2}leftarrow g_{1}^{z_{2}}remP} . ( ( P , q , g 1 , g 2 , c , d , h 1 , h 2 , k 1 , k 2 ) , ( w , x , y , z 1 , z 2 ) ) {displaystyle ((P,q,g_{1},g_{2},c,d,h_{1},h_{2},k_{1},k_{2}),(w,x,y,z_{1},z_{2}))} Представление шифротекстаШифротекст в схеме шифрования ACE имеет вид ( s , u 1 , u 2 , v , e ) {displaystyle (s,u_{1},u_{2},v,e)} ,
где компоненты определяются следующим образом: Необходимо ввести функцию C E n c o d e {displaystyle CEncode} , которая представляет шифротекст в виде байтовой строки, а также обратную функцию C D e c o d e {displaystyle CDecode} . Для целого l > 0 {displaystyle l>0} , символьной строки s ∈ W 4 {displaystyle sin W^{4}} , целых 0 ≤ u 1 , u 2 , v < 256 l {displaystyle 0leq u_{1},u_{2},v<256^{l}} , и байтовой строки e ∈ B ∗ {displaystyle ein B^{ast }} , C E n c o d e ( l , s , u 1 , u 2 , v , e ) = d e f I W ∗ B ∗ ( s ) | | p a d l ( I Z B ∗ ( u 1 ) ) | | p a d l ( I Z B ∗ ( u 2 ) ) | | p a d l ( I Z B ∗ ( v ) ) | | e ∈ B ∗ {displaystyle CEncode(l,s,u_{1},u_{2},v,e){stackrel {mathrm {def} }{=}}I_{W^{ast }}^{B^{ast }}(s)||pad_{l}(I_{Z}^{B^{ast }}(u_{1}))||pad_{l}(I_{Z}^{B^{ast }}(u_{2}))||pad_{l}(I_{Z}^{B^{ast }}(v))||ein B^{ast }} .
C D e c o d e ( l , ψ ) = d e f ( I B ∗ W ∗ ( [ ψ ] 0 16 ) , I B ∗ Z ( [ ψ ] 16 16 + l ) , I B ∗ Z ( [ ψ ] 16 + l 16 + 2 l ) , I B ∗ Z ( [ ψ ] 16 + 2 l 16 + 3 l ) , [ ψ ] 16 + 3 l L ( ψ ) ) ∈ W 4 × Z × Z × Z × B ∗ {displaystyle CDecode(l,psi ){stackrel {mathrm {def} }{=}}(I_{B^{ast }}^{W^{ast }}({Bigl [}psi {Bigr ]}_{0}^{16}),I_{B^{ast }}^{Z}({Bigl [}psi {Bigr ]}_{16}^{16+l}),I_{B^{ast }}^{Z}({Bigl [}psi {Bigr ]}_{16+l}^{16+2l}),I_{B^{ast }}^{Z}({Bigl [}psi {Bigr ]}_{16+2l}^{16+3l}),{Bigl [}psi {Bigr ]}_{16+3l}^{L(psi )})in W^{4} imes Z imes Z imes Z imes B^{ast }} . Процесс шифрованияАлгоритм. Асимметричный процесс шифрования ACE. ψ ← C E n c o d e ( L B ( P ) , s , u 1 , u 2 , v , e ) {displaystyle psi leftarrow CEncode(L_{B}(P),s,u_{1},u_{2},v,e)} . Перед запуском процесса симметричного шифрования входное сообщение M ∈ B ∗ {displaystyle Min B^{ast }} разбивается на блоки M 1 , . . . , M t {displaystyle M_{1},...,M_{t}} , где каждый блок кроме, возможно, последнего имеет 1024 байт. Каждый блок шифруется потоковым шифратором. Для каждого зашифрованного блока E i {displaystyle E_{i}} вычисляется 16-байтовый код аутентификации. Получаем криптограмму e = E 1 | | C 1 | | . . . | | E t | | C t {displaystyle e=E_{1}||C_{1}||...||E_{t}||C_{t}} . L ( e ) = L ( M ) + 16 ⌈ L ( M ) / m ⌉ {displaystyle L(e)=L(M)+16leftlceil L(M)/m ight ceil } . Заметим, что если L ( M ) = 0 {displaystyle L(M)=0} , то L ( e ) = 0 {displaystyle L(e)=0} . Алгоритм. Симметричный процесс шифрования ACE. g e n S t a t e ← I n i t G e n ( k , s ) ∈ G e n S t a t e {displaystyle genStateleftarrow InitGen(k,s)in GenState} ( k A X U , g e n S t a t e ) ← G e n W o r d s ( ( 5 L b ( ⌈ m / 64 ⌉ ) + 24 ) , g e n S t a t e ) . {displaystyle (k_{AXU},genState)leftarrow GenWords((5L_{b}(leftlceil m/64 ight ceil )+24),genState).} . Процесс дешифрованияАлгоритм. Процесс дешифрования ACE. ( s , u 1 , u 2 , v , e ) ← C D e c o d e ( L B ( P ) , ψ ) ∈ W 4 × Z × Z × Z × B ∗ {displaystyle (s,u_{1},u_{2},v,e)leftarrow CDecode(L_{B}(P),psi )in W^{4} imes Z imes Z imes Z imes B^{ast }} ; заметим, что 0 ≤ u 1 , u 2 , v < 256 l {displaystyle 0leq u_{1},u_{2},v<256^{l}} , где l = L B ( P ) {displaystyle l=L_{B}(P)} . Алгоритм. Операция дешифрования S D e c {displaystyle SDec} . g e n S t a t e ← I n i t G e n ( k , s ) ∈ G e n S t a t e {displaystyle genStateleftarrow InitGen(k,s)in GenState} ( k A X U , g e n S t a t e ′ ) ← G e n W o r d s ( ( 5 L b ( ⌈ m / 64 ⌉ ) + 24 ) , g e n S t a t e ) . {displaystyle (k_{AXU},genState^{prime })leftarrow GenWords((5L_{b}(leftlceil m/64 ight ceil )+24),genState).} . Схема цифровой подписиВ схеме цифровой подписи ACE задействованы два типа ключей: Генерация ключаАлгоритм. Генерация ключа для схемы цифровой подписи ACE. 2 m 1 − 1 < p < 2 m 1 {displaystyle 2^{m_{1}-1}<p<2^{m_{1}}} , 2 m 2 − 1 < q < 2 m 2 {displaystyle 2^{m_{2}-1}<q<2^{m_{2}}} , и p ≠ q {displaystyle p eq q} , где m 1 = ⌊ m / 2 ⌋ {displaystyle m_{1}=leftlfloor m/2 ight floor } и m 1 = ⌈ m / 2 ⌉ {displaystyle m_{1}=leftlceil m/2 ight ceil } . ( ( N , h , x , e ′ , k ′ , s ) , ( p , q , a ) ) {displaystyle ((N,h,x,e^{prime },k^{prime },s),(p,q,a))} . Представление подписиПодпись в схеме цифровой подписи ACE имеет вид ( d , w , y , y ′ , k ~ ) {displaystyle (d,w,y,y^{prime },{ ilde {k}})} , где компоненты определяются следующим образом: Необходимо ввести функцию S E n c o d e {displaystyle SEncode} , которая представляет подпись в виде байтовой строки, а также обратную функцию S D e c o d e {displaystyle SDecode} . Для целого l > 0 {displaystyle l>0} , байтовой строки d ∈ B 64 {displaystyle din B^{64}} , целых 0 ≤ w ≤ 256 21 {displaystyle 0leq wleq 256^{21}} и 0 ≤ y , y ′ < 256 l {displaystyle 0leq y,y^{prime }<256^{l}} , и байтовой строки k ~ ∈ B ∗ {displaystyle { ilde {k}}in B^{ast }} , S E n c o d e ( l , d , w , y , y ′ , k ~ ) = d e f d | | p a d 21 ( I Z B ∗ ( w ) ) | | p a d l ( I Z B ∗ ( y ) ) | | p a d l ( I Z B ∗ ( y ′ ) ) | | k ~ ∈ B ∗ {displaystyle SEncode(l,d,w,y,y^{prime },{ ilde {k}}){stackrel {mathrm {def} }{=}}d||pad_{21}(I_{Z}^{B^{ast }}(w))||pad_{l}(I_{Z}^{B^{ast }}(y))||pad_{l}(I_{Z}^{B^{ast }}(y^{prime }))||{ ilde {k}}in B^{ast }} .
C S e c o d e ( l , σ ) = d e f ( [ σ ] 0 64 , I B ∗ Z ( [ σ ] 64 85 ) , I B ∗ Z ( [ σ ] 85 85 + l ) , I B ∗ Z ( [ σ ] 85 + l 85 + 2 l ) , [ σ ] 85 + 2 l L ( σ ) ) ∈ B 64 × Z × Z × Z × B ∗ {displaystyle CSecode(l,sigma ){stackrel {mathrm {def} }{=}}({Bigl [}sigma {Bigr ]}_{0}^{64},I_{B^{ast }}^{Z}({Bigl [}sigma {Bigr ]}_{64}^{85}),I_{B^{ast }}^{Z}({Bigl [}sigma {Bigr ]}_{85}^{85+l}),I_{B^{ast }}^{Z}({Bigl [}sigma {Bigr ]}_{85+l}^{85+2l}),{Bigl [}sigma {Bigr ]}_{85+2l}^{L(sigma )})in B^{64} imes Z imes Z imes Z imes B^{ast }} . Процесс генерирования подписиАлгоритм. Генерирование цифровой подписи ACE. b ← e − 1 ( a − r ) r e m ( p ′ q ′ ) {displaystyle bleftarrow e^{-1}(a-r)rem(p^{prime }q^{prime })} , и где p ′ = ( p − 1 ) / 2 {displaystyle p^{prime }=(p-1)/2} и q ′ = ( q − 1 ) / 2 {displaystyle q^{prime }=(q-1)/2} . σ ← S E n c o d e ( L B ( N ) , d , w , y , y ′ , k ~ ) {displaystyle sigma leftarrow SEncode(L_{B}(N),d,w,y,y^{prime },{ ilde {k}})} . ЗамечанияВ схемах шифрования и цифровой подписи ACE используются некоторые вспомогательные функции(такие как, например, UOWHash,ESHash и другие), описание которых выходит за рамки данной статьи. Подробнее о данных функциях можно найти в. Реализация, применение и производительностьСхема шифрования ACE рекомендована проектом NESSIE (New European Schemes for Signatures, Integrity and Encryption) как асимметричная схема шифрования. Пресс-релиз датирован февралем 2003.
|