読者です 読者をやめる 読者になる 読者になる

CP-ABEの暗号強度変更方法

 

PBC Library

url: https://crypto.stanford.edu/pbc/

PBCライブラリはCP-ABEで使用するペアリングベースの暗号を提供し、暗号強度もここで変更されます。
暗号強度に関するパラメータは

pbc-0.5.14/param
に格納されています。
RSA暗号基準の暗号強度の比較は以下のURLに記載されていますので参考にしてください。
http://www.cipher.risk.tsukuba.ac.jp/tepla/benchmark.html

CP-ABEの構成

cpabe toolkit

高レベルの機能とインタフェースを提供します。
具体的には

  • cpabe-setup
  • cpabe-keygen
  • cpabe-enc
  • cpabe-dec

のような機能です。

libbswabe

実際に暗号化と復号を行います。
暗号強度を決定するパラメータはここで変更します。
パラメータは同様にpbc-0.5.14/paramのものを使用します。

暗号強度の変更方法

今回はlibbswabeのデフォルトであるRSA暗号の1024bit相当の暗号強度から2048bit相当に変更します。

暗号強度を変更するにはCP-ABEのlibbswabe中のソースコードを変更し再度make, make installする必要があります。

libbswabe-0.9/core.c


の15行目あたりに

 

15 #define TYPE_A_PARAMS \
16 "type a\n" \
17 "q 87807107996633125224377819847540498158068831994142082" \
18 "1102865339926647563088022295707862517942266222142315585" \
19 "8769582317459277713367317481324925129998224791\n" \
20 "h 12016012264891146079388821366740534204802954401251311" \
21 "822919615131047207289359704531102844802183906537786776\n" \
22 "r 730750818665451621361119245571504901405976559617\n" \
23 "exp2 159\n" \
24 "exp1 107\n" \
25 "sign1 1\n" \
26 "sign0 1\n"


があります。このTYPE_A_PARAMSはpbc-0.5.14/param/a.paramの

type a
q 8780710799663312522437781984754049815806883199414208211028653399266475630880222957078625179422662221423155858769582317459277713367317481324925129998224791
h 12016012264891146079388821366740534204802954401251311822919615131047207289359704531102844802183906537786776
r 730750818665451621361119245571504901405976559617
exp2 159
exp1 107
sign1 1
sign0 1

と同じです。
a.paramはRSA暗号の1024bit相当の暗号強度なので、2048bit相当であるpbc-0.5.14/param/a1.paramを設定します。
TYPE_A_PARAMと同様にTYPE_A1_PARAMを記述します。

#define TYPE_A1_PARAMS \
"type a1\n" \
"p 48512875896303752499712277254589628516419352188294521198189567511009073158115045361294839347099315898960045398524682007334164928531594799149100548036445760110913157420655690361891290858441360807158247259460501343449199712532828063940008683740048500980441989713739689655610578458388126934242630557397618776539259\n" \
"n 36203638728584889925158415861634051131656232976339194924022065306723188923966451762160327870969638730567198058600508960697138006366861790409776528385407283664860565239295291314844246909284597617282274074224254733917313218308080644731349763985110821627195514711746037056425804819692632040479575042834043863089\n" \
"l 1340\n"


それから、libbswabeのcore.c中のvoid型bswabe_setup()関数内の

(*pub)->pairing_desc = strdup(TYPE_A_PARAMS);

(*pub)->pairing_desc = strdup(TYPE_A1_PARAMS);

に変更します。

$ ./configure
$ make
$ make install
$ make clean

 

で完了です。