• Tidak ada hasil yang ditemukan

Algadfma A. Pembsatan Parameter Domain

N/A
N/A
Protected

Academic year: 2021

Membagikan "Algadfma A. Pembsatan Parameter Domain"

Copied!
11
0
0

Teks penuh

(1)
(2)

ALGORITMA ECC

Algadfma A.

Pembsatan Parameter Domain

Input: Suatu

F,

,

FR,

tingkat keamanan L memenuhi 160

<

L <

LlogZpJ

clan

f > _ 4

&

Output:

Parameter-parameter domain D

=

@,

Fq

S,

a,

b, P, n, h)

1.

Pilih

a,

b

E

Fp secara random dengan menggunakan Algoritma

C

untuk

kurva eliptik E, yaitu

9

=

x3

+

mc

+

b.

2. Hitung

N =

#E(F,).

3.

Periksa bahwa N dapat dibagi dengan suatu prima besw

n

yang

memenuhi

n

>

2L.

Jika tidak, maka ke langkah 1.

4.

Periksa bahwa n

tidak

membagi

pk

-

1 untuk 1

<

k

<

20. Jika tidak,

maka ke langkah 1.

5.

Periksa bahwa

n

# p .

Jika tidak, maka ke langkah I .

6.

Buat h

t

Nln.

7 .

Pllih sembmng titik

P'

E

E(Fp) d m buat P

=

hhP

'.mgi

w

p

a

i

P

#

03.

8.

Hasilnya

(p,

a,

B, P,

n,

h).

Algoritma

B.

Validasi Eksplisit dari Parameter Domain.

Input: Set parameter domain D

=

@,

a,

b,

P,

n,

h)

Output:

Penerimaan atau penolakan validasi D

1.

Periksa bahwap adalah prima.

2.

Peiksa baliwa

a, 6,

xp, y p

(dimana

P i x ,

y)) addah elemen-elemen

dari

F,.

3.

Periksa bahwa

a

dan b meridefinisikan matu kurva eliptik atas

F,

(yaitu,

&

+

27b2

#

0

untuk fapangan-lapangan denganp

>

3).

4.

P&sa bahwa

P

;t co

5. Periksa bahwa

P

memenuhi persamaan kurva eliptik ynag

dideflnisikan oleh a d m b

(3)

6.

Periksa bahwa n adalah prima, bahwa n

>

2I6O

d m bahwa

n

>

4&.

7.

Periksa bahwa

nP

= m.

8.

Hitung

h'

=

k&

+

I ) ~ / ~ J

dan periksa bahwa

h

=

h'.

9.

Periksa bahwa

n

tidak membagi

qk

-

1 untuk

1<

k < 20.

10. Periksa bahwa n t p .

11.

Jika beberapa pemeriksaan gagal maka hasilnya ("Invalid"); lainnya

("Valid").

Algoritma C. Pembuatan Kuwa Eliptik Random atas

Fp

Input: Suatu primap, dan hngsi

hash

1-bit H

Output: Sebuah seed

S dengan ukuran minimal 160 bit, dan

a,

b

G

Fp

mendefinisikan suatu kurva eliptik

E:

yz

=

2

+

ax

+

b

1.

~ ~ ~ t t t r 1 0 ~ ~ l , ~ t r ( t - 1 ) 1 t 1 , ~ t t t ~ 1 .

2. Pilih sembarang string bit

S

dengan panjang g

2

1

bit.

3.

Hitung

h

=

H(S), d m misalkan r o adalah string bit dengan panjmg

v

bit

yang diperoleh dengan menggunakan bit-bit paling kanan

v

dari h.

4.

Misalkan

Ro

adalah string bit yang diperoleh dengan meletakkan bit paling

kiri

YO

ke 0.

5.

Misalkan z adalah intejertepresentasi biliernya adalah

S.

6.

Untuk

i

=

1

ke

s

maka:

6.1 Misalkan

s,

adalah representasi bner g-bit dari intejer (z

+

i)

mod

Zg.

6.2

Hitung

Ri

=

H(si).

7.

Misalkan

R

=

&

11

RI

11

...

(1

R,.

8.

Misdkan

r

adalah intejer yang representasi binemya adalah

R.

9.

Jika

r

=

0 atau jika

4v

+

27

-=

0 (modp)

maka

ke langkah

2.

10. Pilih sembarang

a,

b

E

Fp

,

a, b

it

0, sehingga

r .

b2 =

d

(modp).

1

1. Hasilnya (S,

a,

b).

Algoritma

D.

Pemeriksaan Kurva Eliptik Random atas

F,

Input: Prima p

>

3,

fungsi hash

H,

seed

S

dengan panjang bit

g

>-

1, dan

a,

b

G

(4)

Output:

Penerimaan atau penolakan bahwa E dibuat menggunakan algoritma

C.

1 .

~ ~ ~ t t t r ~ ~ ~ ~ ~ l , ~ t r ( t - i ) / i 1 , ~ t t t ~ z .

2.

Hitutig h

=

H(S),

d m misalkan

ro

adalah string bit dengaa panjang

v

bit

yang diperoleh dengan menggunakan bit-bit paling

kanan v

dari

h.

3.

Misalkan

&,

adalah string bit yarig diperoleh dengm meletakkan bit paling

kiri

ro ke

0.

4.

Misalkan

z

adalah intejer representasi binemya adalah

S.

5.

Untuk

I =

1

ke

s

maka:

5.1

Misalkan

s,

adalah representasi bner g-bit dari intejer

(z

+

i )

mod

2g.

5.2

Hitung Ri

=

H(s,).

6. MisalkanR

=Roll

RI

11

...

11

R,.

7.

Misalkan

r

adalah intejer yang representasi binernya adalah

R.

8.

Jika

r

. b2

5

d

(modp) maka hasilnya ("Terima"); lainnya ("Tolak").

Algoritma E. Pembuatan Pasangftn Kunei

Input: Parameter domain D

=

(p,

a,

b,

P,

n, h)

Output: Kunci publik Q, kunci pribadi

d

1. Pilih d

ER

[I, n-11.

2 .

Hitung

Q

= 6%'.

3.

Hasilnya (Q,

4.

Algoritma F. Pengesahan Pasangan Kunci

Input: Parameter domain D

=

@,

a, b,

P,

n,

h)

Ourput: Penerimaan atau penolakan validitas

Q

1.

Periksa Q

# m.

2.

Periksa bahwa

XQ

dan

ye

merepresentasikan elemen-elemen

dari

F,

(misalkan intejer-intejer dalam interval [0,

p l ] ) .

3.

Periksa bahwa

Q memenuhi persamaan kurva eliptik yang didefmisikan

dengan a dan b.

4.

Periksa bahwa

nQ

=

a.

5.

Jiia beberapa verifikasi gagal

rnaka

hasilnya ("Invalid");

lainnya

("Valid").

(5)

Lamplran

2

PROGRAM TES KEPRIMAAN DAN PEMBANGKITAN KUNCI

ELGAMAL

PROGRAM TES KEPRIMAAN

with (numtheory) :

Tes Miller- Rabin

tesmilrab := proo (randp1::anything)

local r, s, t, r a n k , a, y, tes, j, integerp, flag, hasil, tesmilrab; r := randpl-1; s := 0; for s while 'modb(r, 2) = 0 do s := s; r := iquo(r, 2) end do; for t from 0 to 30 do t := t;

randx

:=

rand(2

..

randpl-2); a := rank(); y := 'mod'('CA'(a, r), randpl);

if y <> 1 and y <> randpl-1 then tes := 0;

for j to s

while j

<=

8-1 and y

<>

randpl-1 do y := 'mod'(yA2, randpl);

if y = 1 then

tes := 0; j := j+l; integerp := komposit else

tes := 1 integerp := pseudoprim end if

end do;

if y <> randpl-1 then

tes := 0 integerp := komposit end if

else

flag := 1; tes : 1 integerp := pseudoprim end if

end do;

t :- t; tes := integerp; tesmilrab := tes end proc:

Tes Syarat Prima

tesprim : = proc (prima) 10-1 - 5 , tesprim; tes := 'mod' (prima, 4) ;

if tes = 3 then tesprim := 1 else tesprim := 0 end if end proc:

Tes Prima

Biasa

teqriail := proc (prima) local d, tesl, tespriml; for d from 2 to prima-1

(6)

while t e s l

<>

0 do

d := d ; t e s l := 'mod' (prima, d) end do;

t e s p r h l := tesl

end proe:

Tes Prima Aman

teaprim2 := proc (prima) l o c a l y , tesprim2;

i f tespriml (prima) = 1 then

y := prima-1: y := (1/2)*y end i f ; i f tespriml(y) = 1 then tesprim2 := 1 e l s e tesprim2 := 0 end i f end proc:

Memilih suatu generator

dari grup siklikZp

primitif := proc (prima)

l o c a l a l f a , a l f a l , f l a g , q , b, b l , p r i m i t i f ; f l a g := 0; while f l a g

<>

1 do a l f a l := rand(1

..

prima-2); a l f a := a l f a l 0 ; q := ( 1 / 2 ) *prima-1/2; b

:=

'mod'(alfaA2, prima)

:

i f b = 1 then f l a g := 0 e l s e b l := 'mod'(alfaAq, prima) end i f ; i f b l = 1 then f l a g := 0 e l s e f l a g := 1 end i f end do; primitif := a l f a end proc:

Memilih

Prima

Aman

Randon:

rand1 := rand(50

. .

200) :

randpl := r a n d l 0 :

i f 'and' ( r e 1

+

3, type(randp1, men) ) than randpl : = randpl+l e l s e randpl := randpl end i f ; i f te&lrab(randpl) = 1 then integcrpl := t e s m i l r a b ( r a n a 1 ) ; 'impliea'(lakukan, lakukan*tes*prima*lagi) e l s e

.integarpl : = tesmilrab (randpl) end i f ;

i f isprime (randpl)

<>

t r u e then prima : = nextprima (randpl)

(7)

else

prima : = randpl end if;

if 'and'(tesprim(prima) = 1, tasprid(prima) = 1) then generatorprima := primitif(prima)

else

primanya inplies tidak*lolos*uji; lakukan implies pilih*primanya*lagi; prima : = safeprime (prima) ;

generatorprima : = primitif (prima) end if;

randpl :=95 integerpl := kon~posit

piimu := 97

lakukun pilih printo~lya lugi prima := 10:

PROGRAM PEMBANGKITAN KUNCI ALGORITMA ENKRIPSI

ELGAMAL

Pembangkitan Kunci Penyandian Kunci Publik ElGamal

alpha := primitif (p) :

acak := rand(1

..

p-2): a := acak0 :

y := 'mod' ( ' L A ' (alpha, a), p) :

print(Kunci*Publik*A*a&lah*('p' = p, 'alpha' = alpha, ' y o = y ) ) ;

print(Kunci*Pribadi*A*a&1ah*('a1 = a));

Kzaxci Publik A udnluh { p = 467,

n

= 418,y

-

57) Kunci Pn'hadi A uduluh ( a = 2 13)

(8)

Lampiran

3

PROGRAM ARITMATIKA KURVA ELIPTIK

Program Kuna Ellptlk

restart:

Peudefinisian F'rcsedw yang digunakan

with (numtheory) :with (RandomTools) :

with(RandomTools[MersemeTwister]):

W i r i m a A c a k

adalah hosedur

untuk membangkitkan bilangan prima secara acak m bit

PrimaAcak := proc (m: :posint)

local AcIn::PrimaAcak, ml,m2,R,i::integer, T::symbol: ml := 2*(m-1):

m2 := 2"(m) ;

AcIn := rand(ml. .m2) :

R:=AcIn ( ) :

T: =isprime (R) :

for i while '&false do R:=AcIn() : T: =isprime (R) : end do: return (R) : end proc:

Contob:

st := time0 :Bit:=6:

P:=PrimaAcak(Bit) ;waktu := time0 -st;

P : = 1 7

,*.lr!.-ru . .

-

. .. . . . .=O

-

.

ECAcak

adalah

Pmsedur untuk membangkitkan parameter

a dan

b (persamaan kurva) dengan b tidak no1 (agar

kurva

tidak memuat tit& [O,O]),

secara

acak

ECAcak := proc(P::posint)

local Ac1n::PrimaAcak. a,b,T,i::integer: AcIn := NewGenerator(range=l..P-1):

a:=AcIn() :

b:=AcInO :

T:=(4*aA3+27*b*2) mod P: for i while T=O and b=O do

a:=AcInO : b:=AcInO : T:=(4*aA3+27*bA2) mod P: end do: return(Ia,bl): end proc:

Contoh:

>

K:=ECAcak (P) ;

K

:= [2,2]

Titik-titik Kurva EBptik adalah hsedur untuk membangkitkan

semua

titik pada

kurva

Titik2 := proc (P::posint, K::list)

local s. R. T, x , y, B, i, waktu, st, j, ordarp; st := time0 ; s := ['$'(O

. .

P-l)]; i := 0; for

x

in s do R :- .d' (xA3+K[11 *x+K[2],

P)

; T :

-

legendre (R, P) ; if T = 1 then i := i+l;

(9)

y := mroot(R, 2, P);print([x, yl); B := [x, yI;y := 'mod'(-op(2

,

a),

P) ;

print ( [x, yl )

end if end -do ;

j := 2 * i + l ; print('OrderP1

=

j ; orderp

:=

j; waktu

:=

tima()-st;print('waktut = waktu) end proc :

Contoh:

>

~ i t i k Z ( ~ ,

x);

[461,[O.llI,[3, 11,[3.16],k5, lI,[5,16],[6.31,[6, 14I3~7,6j,[7,11],[9,l,1'),16] [10,61, [10,11], [13.7] [13, lOj [16,4] [16.13] Orderl'= 19 trahiu =00.06C

AdisiTtk

adalah

prosedw menjumlahkan dua titik

X

dan

Y

pada M a

eliptik

A,

dengan unsur

identitas

[O,O] (titik

di

talc hingga).

AdisiTtk:= proc(X::list,Y::list,A::list,P::posint) local l,hl,h2::intager:

if Eq(X,[o,O])=t~e or Eq(Y,[O,Ol)=true then return([X[ll+Y[ll ,X[2l+Y 1211) ;

elif Eq(X,Y)=true then

I:=( (3*X[1lA2+A[1I)/ (2*X[2]) ) mod P: hl:=(lA2-2*X[11) mod P:

h2:=(l*(X[l]-h1)-X[21) mod P: return([hl,hZ]) ;

elif Eq(Y ,Neg(X,P) )=true then return([O,OI) ; else 1:=((Y~~l-x[2l)/(Y[1l-x[ll)) mod P: hl:=(lA2-X[l]-Y[l]) mod P: h2:=(l*(X[l]-h1)-X[21) mod P: return( [hl ,h2] ) ; end if: end proc:

MultiTtk adalah Prosedur

untuk

menghitung

kelipatan

titik

sebanyak k kali.

&ltiTtk:~proc(A::list,k::integer,K::list,P::integer) local H,G,X::list, i::integer:

X:=convert (k ,bass , 2 ) ;

G:=A: H:=[O,Ol :

if op(l,X)=l then H:=G:

end if:

for i from 2 to nops (X) do G:=AdisiTtk(G,G,K,P) : if op(i,X)=l then H:=AdisiTtk(H,G,K,P) : end if: end do: return ( A ) ; end proc:

Neg

adalah

Prosedur

untuk

menexitdm negatif

suatu titik.

Neg := proc(B::list,P::posint) local y::posint:

Y

:= -(op(2,B)) mod P; =turrn([op(l,B) ,yl): end proc:

(10)

Contoh:

>

nA:=Neg(A,P) ;

nA :=[17; 141

Eq adalah Prosedm untuk memeriksa kesamaan dua titik.

Eq := proc(A::list,B::list) if A[lI=B[ll and A[2I=Bf21 then

return (true) ; else return (false) ; end if: end proc: Contoh:

>

Test:=Eq(A,nA) ; T i t :=false

PilihTitikAcak adalah F'rosedur untuk pembangkitan satu titik

pada

kurva secara

acak

orderP:=19: TitiWcak := proc(K::list,P::posint) local AcIn,x,y,T,R,i,k,A,G,A,X,orderA: AcIn := NewGenerator(range=l..P-1): x:=AcIn(); R:=(xA3+K[1] *x+K[2] ) mod P; T: =legendre (R,P) ; for i while T=(-1) do x:=AcIn() ;#print('xl'=x) ; R:=(xA3+K[1] *x+K[2] ) mod P: T: =legendre (R, P) ; end do: y:=nuoot(R,2,P) ; A:=[x,yl; k:=(2*P)+l;X:=convert(k,base,2); if op(l,X)=l then G:=A: end if: H:=G; for i from 1 to k

while Eq(H, [O,Ol)=false do

H:=MultiTtk(A,i,K,P):#print(i= A): end do:

orderA:=i-1; #print('orderA1=i-1);

for i while orderA

<>

orderP do for i while T=(-1) do x:=AcIn() : R:=(xA3+K[11*x+K[2]) mod P: T : -legendre (R, P) ; end do: y:=mroot(R,2,P) ;

end do: A:-[x,y] ;

end proc:

contoh:

>

A := ~ i t i k ~ c a k ( ~ , P) ;

A := [3,1 j

Sub-grup kurva Eliptik yang dibangkitkan o l d titik generator k:-(2+P)+1:

OenO~pSiklik:=proa(A::list,k::integer,K::list,P::intager) local H,G,X::list, i,ordcrA::integer:

(11)

X:=convert(k,baee,2); if op(l,X)=l then G:=A: end if: H:=G; for i from 1 to

k

while E q ( H , [O,O])=false do X:=MultiTtk(A,i,K,P):print(i- X): end do:

orderA:=i-1; print ( 'orderAT=i-1) ;

end proc:

>

GenGrupSiklik (Ask ,K, P) :

1 = [ 3 , l ] 2 = [ 1 3 , 7 ] 3=[0.11], 4=[10,11], 5 = [ 5 , l ] , 6=[9.16J, 7 = [ 7 , 6 ] , 8=[16,4], 9=16.14J, 10=[6,3J, 1 1 = [ I & 131 12=[7,11], 13=[9,1], 14=[5. 161, 15=[10,64 16= [0,6], 17= [13, 101, 18= [3,16j, 19- [O,O], orderA = 19

Referensi

Dokumen terkait

Walaubagaimanapun sekiranya pihak majikan masih ingin meneruskan ujian saringan RTK-Ag seperti yang ditawarkan oleh fasiliti kesihatan swasta tersebut, di bawah

crowdsourcing akan dijelaskan dan diterapkan dengan aplikasi estimasi kedatangan bus Trans- Jogja yang diharapkan mampu untuk memberikan informasi kepada penumpang

Mutu organoleptik daging broiler yang direndam dengan menggunakan perasan lemon cui yang diamati dalam penelitian ini, meliputi warna, aroma, tekstur, keempukan dan

Tujuan penelitian untuk mengetahui hubungan usia, paritas dan dukungan suami dengan penggunaan Metode Kontrasepsi Jangka Panjang di Wilayah Puskesmas Cilacap Tengah

Hasil penelitian didapatkan nilai P sebesar 0,278 ( P&gt; 0,05) yang artinya tidak ada hubungan antara kelembaban dengan kejadian kusta. Berdasarkan hasil observasi pada

Diketahui suatu modul dengan sifat untuk setiap , terdapat direct summand dari sedemikian hingga berlaku dan. Apabila diperhatikan maka dari pernyataan diatas

Pada sub bab ini selain membahas rencana struktur dan pola ruang, perencanaan kawasan strategis, subbab ini juga akan membahas indikasi program yang kiranya akan mengatur

keakuratan data untuJ.. dapat mcnangani kebutuhan infonnasi pemakai yang t~rus meningJ..at sesuai dcngan tingkat mobiliras manusia yang semakin tinggi. Dibutuhkan