最近在学习密码相关知识的时候,对于PDF文件中电子签章怎么进行手工验签的过程做一个记录。题目给出一个PDF文件,通过这个文件做以下解答,有不对的地方请进行指正,附件下载地址放在最后:
问题一、请依据案例文件解析出所有证书,以插入文件形式提交证书。提示:一共6个数字证书。
问题二、请依据案例文件解析以下sha256RSA签名,并手动验证签名通过。D519E5FDAFE3F4CE97391D61DE31C15D3B31D144FF66F4045A54927E55B1119BD8D929A19C1243235C34914EB77A4CE83BC6500B54A9532B7B892D00313D5158A8D4CF27DD91B6328C1205607716914CC1217ED68A5660C7B6EDC48F53711C22A96421DAC84738D147DFE919066ACC84CBC942D7E4AF86D72BC00CC4B07F7FBFD7658B1DF5D84C9A80188D2EC3756FEC264DA9083500907CD7762CA0D1BFB1D66022586B10FFF138137ACCF18177DDC0133BA5C73F7E043D976343D592A8DAFD7F7E3974DFF3502A27DF80C0B72227280467D11BA01F7BA870950D8973FEABAFEAA3071E2ABD85E0A6FEE7FEBAF00929CDFE7EE2079D7F6B5FC6893B282B9AA6
问题三、请依据案例文件解析以下sha256RSA签名,并手动验证签名通过。
99EF7E781B7F55A6CFFC039DA8F2C0CEDD20278E4D3E7FB31F6E523A485168968DED28330E7A934E17A95C95F013BB024CDC35B7151BF20DD88B8B7A02991D1E13D655985034D469D4BF136DB2690A88AF921FDD708788169275F2AD3AD99BC1D5063E2D3ADDE21D66143082FF331D3B521F720212E5C78AFE6B0D5E8E100EF70724DF5DFBB295B8CF1DA7E6A647F0DC1F5523FC89DD2F04601F1E94DEC185FFC619352F2D5399819FA0A72C86B9A895AED48BF632C86856135837931B164A6B321C0F6A50C705B9DAE7C9D4B92D63B0A4179947988C4539F2934B4BAFEC5A19823285C42EB2BDAD2C100516A6830C93B877777A5ECF118CE42BF4C3E9E38A14801084DB6D17892E4608D65EACAA156F20545C5900105F4BBA2F82D09BCC2618DFB0919D0D909D03CD81AEC1CE40312A7BC2AE2AD45A665F28F7FA7FF9BAC593CBCFBBE833FF369F436812EEF77427EA1B0CD7DE74DA29D99BDC7ECE0D05EE059E36D4BC8457F952BE5021164EEEBF1C80106A90DD83D326BC3B907E0691EA26409BBDC7ED7BD89CCD2A2CD3FC074603A713115FEE75C9DFDC74AD4F0C75DF42876778932BAC0C7D86C966CF3B7BB13A825C8B12BE2EC46AE79AB833F73046EBE29EC3FDBF224169162F5EFE20DACFACA7F0FD4C95FB38D585A5AAE53322FBBBD2CF60337DB14EB833B0CD35F01644CF331852895718764003626693CD00FE5A
问题四、请依据案例文件解析以下sha256RSA签名,并手动验证签名通过。27F0D2713C5B5C0CE9692450C751D5389118A208E539D1E8B16DB58A9F9BD8A74C47F0CABB6D2868699D66BE17262B5B191F1A7401E242185ADEB20B7EB4A9CD4D195BCC35AE0FE7AB98BBD0D1B83E45A1AEE46142131D0BBBD6134D8960E05D746C5F68122A36BF6EA540858AAC1AA5A1A2FA4152B06CCB8A8C8616ABC4EB0332AF216ED432E19F98C6C718E0C7AFB6D53ACAE0C37F9DB89ECC4E37EF3F003F9C6C4EF1ABB214FEFD31B639986EB96CE37F8368F455FCA18F5AEC9194E0BAECF7D5D5A5F5F538B076B0196A08FA44F4EB0AD14478F43DD2E60C50F11F87553ABC5ED7FEBED97C75283CA1C7693C9135122F63E6DB81DC6D6628089F8F58296C
问题五、请依据案例文件解析PDF文件数字签名,并手动验证签名通过。
问题六、请依据案例文件解析PDF文件时间戳数字签名,并手动验证签名通过。
问题七、请依据案例文件解析PDF文件时间戳,并验证时间戳原文摘要值的一致性。提示摘要值为:68e6fc6a49e5dca5f0aa4b4a511101215d00e4bfca5a910c346cd71587e29fe3
问题八、请依据案例文件解析PDF文件签名原文,并验证PDF文件原文摘要值的一致性。提示:摘要值为:c046f7eb54839d9c6ce799e4199d763419935ea3dca4a8775b3137ed2efe3408
前置知识:
使用的工具:
010 editor
Ans.1 Editor 下载地址: https://www.sysadmins.lv/blog-en/asn1-editor-wpf-edition.aspx
在线签名验签工具: https://const.net.cn/tool
这里我使用010 editor打开pdf文档,发现内容有一大串以3082开头的hex数据,将数据拷贝出来。
注:对于一些特殊字符需要敏感,一般DER编码格式的数字证书前4位为3082。
3082324906092a864886f70d010702a082323a30823236020101310f300d06096086480165030402010500300b06092a864886f70d010701a0821027308204eb308203d3a00302010202102015044b2bcdbc749cd57c7c5e4f8efe300d06092a864886f70d01010b0500305b310b300906035504061302434e3130302e060355040a0c274368696e612046696e616e6369616c2043657274696669636174696f6e20417574686f72697479311a301806035504030c1143464341204964656e74697479204f4341301e170d3232313230363036313133325a170d3235313231373036343732355a3078310b300906035504061302434e3112301006035504080c09e5b9bfe4b89ce79c813112301006035504070c09e6b7b1e59cb3e5b882312d302b060355040a0c24e99bb6e4bfa1e68a80e69cafefbc88e6b7b1e59cb3efbc89e69c89e99990e585ace58fb83112301006035504030c09e78e8be9ab98e58d8e30820122300d06092a864886f70d01010105000382010f00........
由于数据太长,这里我就省略后面内容,各位师傅自行拷贝,直到0000000>处结束。拿到上述数据值,保存为txt文件,使用Ans.1查看器进行打开。
Ans.1
Ans.1是一种对数据进行表示、编码、传输和解码的数据格式,常见的CA证书、PEM、CER、PFX等均采用Ans.1编码。Ans.1编码由Type+Length+Value三段内容组成,即数据类型+数据长度+数据内容三个字段。
数据类型+标识符
数据类型 | 十六进制标识 |
---|---|
INTEGER(整数) | 02 |
BITSTRING(由任意的0和1构成的字符串) | 03 |
OCTETSTRING(由八比特值构成的字符串,类似于比特数组) | 04 |
NULL空值 | 05 |
OBJECTIDENTIFIER(对象标识符,由一系列的整型序列组成) | 06 |
SEQUENCE(一个有序的类型集合) and SEQUENCE OF(一个给定类型的有序集合) | 10 |
SET(一个无序的类型集合) and SETOF(一个给定类型的无序集合) | 11 |
PrintableString(由任意的可打印字符构成的字符串) | 13 |
T61String(由八比特字符构成的字符串) | 14 |
IA5String | 16 |
UTCTime(GMT时间值) | 17 |
通过Ans.1编码格式解析数字证书
1.证书版本号
2.证书序列号
3.签名算法
4.CA机构
5.证书有效期
6.证书主体信息
7.证书公钥
8.扩展字段
问题一解答:
有了上述知识我们就可以回答问题一的内容,寻找6个证书,前面我们获取到Contents的数据,保存为txt文件,用Ans.1 editor编辑器打开。
第一个证书王高华.cer:
寻找3082开头树状结构,其中含有上述我们说到的字段
将其高亮的hex数据拷贝出来,进行base64转换,保存base64值为1.cer后,打开后找到第一个证书。
第二个证书CFCA Identity OCA.cer:
将第一个树状图隐藏后,同上方式一样获取第二证书。
第三个证书CFCA Identity CA.cer
第四个证书CFCA Identity OCA OCSP20230710.cer:
第五个证书Sectigo RSA Time Stamping Signer #4.cer:
第六个证书Sectigo RSA Time Stamping CA.cer:
问题二解答:
给定了一个签名值信息,