0

我是 PKI 的新手,希望有人能帮助我解决我的情况。我目前正在使用 Laravel 5.6 来开发我的网站,并且我正在使用该elibyy/tcpdf-laravel包来创建 PDF。目前,当我的用户创建 PDF 时,它通过 AES 256 加密并受密码保护,但我想添加公钥加密。

这是过程,通过 HTML 创建合同,用户签署合同,签署后会出现一个复选框和一个完成按钮。他们选中该框并单击完成。然后将网页转换为 PDF 并存储在 AWS S3 上。

以下是关于公钥加密的 TCPDF 文档:

 Possible encryption modes are:
 0 = RSA 40 bit
 1 = RSA 128 bit
 2 = AES 128 bit
 3 = AES 256 bit



NOTES:
 - To create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt
 - To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12
 - To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes

*/

$pdf->SetProtection(array('print', 'copy'), '', null, 0, null);

// Example with public-key
// To open the document you need to install the private key (tcpdf.p12) on the Acrobat Reader. The password is: 1234
//$pdf->SetProtection($permissions=array('print', 'copy'), $user_pass='', $owner_pass=null, $mode=1, $pubkeys=array(array('c' => 'file://../config/cert/tcpdf.crt', 'p' => array('print'))));

// *********************************************************

问题一:我在哪里存储公钥和私钥?在我的 Laravel 应用程序中?在 AWS S3 上?

问题二:我需要为每个合约生成一个公钥吗?

问题三:它说要打开一个文档,您必须在 Acrobat Reader 上安装私钥,我认为这是用户打开 PDF 必须做的事情?

我希望有一个关于这个的教程,但我似乎找不到。任何帮助是极大的赞赏。谢谢!

4

1 回答 1

1

对称和非对称加密是一个非常有趣的话题。但是,您最好了解它,否则很容易创建很容易破解的漏洞。

对于您想要做的事情,坚持使用对称加密,甚至更好地使用包含加密的 PKZIP 库。既然您提到了 PHP,那么您可以通过 Google 找到一些用于 PHP 的 zip 和 encrypt 库。

PKI(非对称加密)更难正确。例如,您想使用 PKI。这意味着您将使用您的私钥加密您的文档,而客户将使用您的公钥解密文档。这意味着任何人都可以解密,因为公钥就是那个公开的。你永远不会泄露私钥。

管理您的公钥和私钥本身就是整个服务 - 看看 AWS Key Management Service (KMS) 和 AWS Certificate Manager (ACM)。

每个私钥只有一个公钥。这些键在数学上相互关联(通过素数)。

于 2018-03-04T20:41:15.660 回答