pkenc_cs98¶
Cramer-Shoup Public Key Encryption Scheme (Decisional Diffie-Hellman Assumption in groups of prime order)
From: “R. Cramer, V. Shoup: A practical public key cryptosystem provably secure against adaptive chosen ciphertext attack”
Published in: CRYPTO 1998
Available from: http://knot.kaist.ac.kr/seminar/archive/46/46.pdf
Notes:
- type: encryption (public key)
- setting: DDH-hard EC groups of prime order (F_p) or Integer Groups
- assumption: DDH
- Name: PKEnc_DDH_CCA_CS98
Authors: | Matthew Green |
---|---|
Date: | 1/2011 |
-
class
pkenc_cs98.
CS98
(groupObj, p=0, q=0)[source]¶ Bases:
charm.toolbox.PKEnc.PKEnc
>>> from charm.toolbox.eccurve import prime192v1 >>> from charm.toolbox.ecgroup import ECGroup >>> groupObj = ECGroup(prime192v1) >>> pkenc = CS98(groupObj) >>> (public_key, secret_key) = pkenc.keygen() >>> msg = b"hello world!!!123456" >>> cipher_text = pkenc.encrypt(public_key, msg) >>> decrypted_msg = pkenc.decrypt(public_key, secret_key, cipher_text) >>> decrypted_msg == msg True >>> from charm.toolbox.integergroup import IntegerGroup, integer >>> p = integer(156053402631691285300957066846581395905893621007563090607988086498527791650834395958624527746916581251903190331297268907675919283232442999706619659475326192111220545726433895802392432934926242553363253333261282122117343404703514696108330984423475697798156574052962658373571332699002716083130212467463571362679) >>> q = integer(78026701315845642650478533423290697952946810503781545303994043249263895825417197979312263873458290625951595165648634453837959641616221499853309829737663096055610272863216947901196216467463121276681626666630641061058671702351757348054165492211737848899078287026481329186785666349501358041565106233731785681339) >>> groupObj = IntegerGroup() >>> pkenc = CS98(groupObj, p, q) >>> (public_key, secret_key) = pkenc.keygen(1024) >>> msg = b"hello world. test message" >>> cipher_text = pkenc.encrypt(public_key, msg) >>> decrypted_msg = pkenc.decrypt(public_key, secret_key, cipher_text) >>> decrypted_msg == msg True