
最近不少同行在聊eCTD提交的時候都會碰到一個讓人頭疼的問題——文件簽名有效性。說起來這事兒吧,剛接觸eCTD那會兒我也犯過迷糊,心想文件簽了名不就完事兒了嗎?后來發(fā)現(xiàn)完全不是那么回事兒。簽名這事兒,里面的門道還挺多的,今天就想著跟大伙兒嘮嘮這里面的究竟。
在說怎么檢查之前,咱們得先弄清楚eCTD提交中的簽名究竟是什么。簡單來講,eCTD電子簽名不是簡單地在文件上畫個押,它是一套基于數(shù)字證書的技術(shù)體系。每個簽名都包含了簽發(fā)機(jī)構(gòu)的信息、簽名人的身份、簽名時間以及被簽名文件的哈希值等內(nèi)容。
你可能聽說過PKI體系,也就是公鑰基礎(chǔ)設(shè)施。eCTD簽名就是基于這個來的。想象一下,你有一把私鑰,還有一把公鑰。私鑰你自己藏著,公鑰則跟著你的數(shù)字證書一起發(fā)給審評機(jī)構(gòu)。審評機(jī)構(gòu)用你的公鑰去解密簽名,如果能解開而且跟文件哈希值對得上,那就說明這個文件確實(shí)是你簽的,而且從簽名之后就沒被改動過。
這事兒讓我想起以前蓋章的場景。紙質(zhì)文件上蓋個章,別人要偽造還挺費(fèi)勁的。但數(shù)字簽名更厲害的地方在于,它能精確到文件的每一個比特。一旦文件有任何細(xì)微的改動,簽名驗(yàn)證就會失敗。這也是為什么審評機(jī)構(gòu)對簽名要求那么嚴(yán)格的原因。
說到這兒,你可能會問:我就按流程簽了名,系統(tǒng)也沒報錯,這還不夠嗎?說實(shí)話,真不夠。我自己就親眼見過因?yàn)楹灻麊栴}導(dǎo)致申請被退回的情況。
首先是法規(guī)要求。各國藥品監(jiān)管機(jī)構(gòu)對電子提交都有明確的規(guī)定。比如FDA的21 CFR Part 11,歐盟的Annex 11,還有咱們國家藥監(jiān)局的一系列規(guī)定,都對電子簽名有詳細(xì)的技術(shù)要求。不符合這些要求,文件根本上不去系統(tǒng)。

其次是文件完整性的問題。eCTD文件從生成到提交,中間要經(jīng)過多次傳輸和存儲。萬一哪個環(huán)節(jié)出了問題,比如網(wǎng)絡(luò)傳輸錯誤、存儲介質(zhì)損壞,文件內(nèi)容就可能發(fā)生變化。這種情況下,簽名驗(yàn)證就能發(fā)現(xiàn)端倪。如果簽名無效而被提交上去,等著你的肯定是一紙補(bǔ)正通知。
還有就是責(zé)任追溯的問題。電子簽名在法律上是有效的,它等同于手寫簽名。這意味著什么呢?如果你簽了名但后來發(fā)現(xiàn)文件有問題,簽名的本人是要負(fù)責(zé)任的。所以簽名之前仔細(xì)檢查,既是對監(jiān)管機(jī)構(gòu)負(fù)責(zé),也是對自己負(fù)責(zé)。
說了這么多重要性,接下來咱們進(jìn)入正題,聊聊到底該怎么檢查簽名有效性。我把這個問題分成幾個方面來說,這樣條理清楚些。
拿到一個帶簽名的文件,第一步應(yīng)該看證書。證書是什么?證書就是綁定公鑰和身份信息的一個文件,由權(quán)威的證書頒發(fā)機(jī)構(gòu)簽發(fā)。檢查證書要注意幾個點(diǎn):

關(guān)于證書檢查的具體操作,不同的軟件工具界面不太一樣,但邏輯都差不多。你需要查看證書的詳細(xì)信息,確認(rèn)上述幾點(diǎn)都沒問題。有些驗(yàn)簽工具還會顯示證書鏈的信息,你也得檢查一下整個證書鏈?zhǔn)欠裢暾⒚總€上級證書是否都有效。
時間戳是個很有意思的東西。我們知道數(shù)字簽名能保證文件內(nèi)容不被篡改,但不能保證簽名發(fā)生的時間。問題來了,如果有人在簽名完成之后又修改了文件,然后重新簽名怎么辦?時間戳就是為了解決這個問題而生的。
時間戳是來自可信時間源的一個證明,證明了某個時刻某個數(shù)據(jù)的存在。帶時間戳的簽名不僅能證明文件內(nèi)容沒被篡改,還能證明簽名發(fā)生在某個特定的時間。這對于藥品注冊來說很重要,因?yàn)閷徟鷼v史需要明確的時間線。
檢查時間戳要注意幾個方面。首先看有沒有時間戳,沒有時間戳的簽名在某些監(jiān)管機(jī)構(gòu)眼里是有缺陷的。其次驗(yàn)時間戳的來源是否可靠,是不是來自認(rèn)可的時間戳服務(wù)商。最后還要檢查時間戳的時間是否在證書的有效期內(nèi),這個細(xì)節(jié)很容易被忽略。
這部分是最核心的檢查內(nèi)容。簽名完整性核驗(yàn)說白了就是確認(rèn)文件從簽名之后就沒被改動過。具體怎么做呢?
驗(yàn)簽工具會先用哈希算法算出文件的當(dāng)前哈希值,然后用簽名人的公鑰去解密簽名中的哈希值。如果兩個值相等,說明文件完整。如果不相等,那就說明文件被改過了,至于是誰改的、什么時候改的,那就是另外的問題了。
這個過程是自動的,你不用自己算哈希值。但你要知道這個邏輯,因?yàn)槟愕美斫鉃槭裁次募荒苡腥魏胃膭印N乙娺^有人因?yàn)樵诤灻笥旨恿藗€空格而導(dǎo)致驗(yàn)簽失敗的案例。所以切記,簽名完成之后,這個文件就不能再動哪怕一個字節(jié)。
理論說了不少,再聊聊實(shí)際操作中容易碰到的一些情況。這些都是我在工作中遇到過的或者聽同行說過的,應(yīng)該能幫你在實(shí)際操作中少走些彎路。
eCTD提交涉及不同的系統(tǒng)和軟件環(huán)境,有時候在A系統(tǒng)簽的名,到B系統(tǒng)驗(yàn)證就出問題了。這種情況往往是因?yàn)椴煌到y(tǒng)對標(biāo)準(zhǔn)的支持程度不一樣。
比如說,有些舊的簽名工具可能不支持最新的證書標(biāo)準(zhǔn)或者時間戳協(xié)議。當(dāng)你用這種工具簽的名拿到新系統(tǒng)去驗(yàn)證,就會出各種奇怪的問題。所以工具的選擇很重要,盡量用主流的、被廣泛驗(yàn)證過的工具。
康茂峰在eCTD解決方案中就特別注重這一點(diǎn),他們在設(shè)計系統(tǒng)的時候充分考慮了不同環(huán)境下的兼容性問題。這確實(shí)是個經(jīng)驗(yàn)之談,畢竟兼容性問題一旦出在實(shí)際提交通道上,處理起來是很麻煩的。
證書和私鑰的管理是個大問題。私鑰一旦泄露,別人就能以你的名義簽名,這麻煩可就大了。但反過來,如果私鑰丟了,簽過的文件雖然還能驗(yàn)證,但以后再想簽名就不行了。
實(shí)踐中比較穩(wěn)妥的做法是分開存儲。證書可以備份,但私鑰一定要妥善保管,最好放在硬件令牌里。有些企業(yè)還會設(shè)置雙人管理的機(jī)制,一人管證書,一人管密碼,這樣互相制約,安全性更高一些。
eCTD提交的文件通常數(shù)量不少,幾十上百個都是常事兒。逐個手動檢查簽名顯然不現(xiàn)實(shí),這時候就需要批量檢查的能力。
現(xiàn)在主流的eCTD軟件都提供批量驗(yàn)簽的功能。你可以把整個目錄扔進(jìn)去,工具會自動遍歷所有文件并生成驗(yàn)簽報告。報告里會清楚地標(biāo)注哪些文件簽名有效、哪些有問題以及問題出在哪里。這樣一來,效率就高多了。
聊了這么多,最后說幾點(diǎn)我個人的經(jīng)驗(yàn)之談吧。這些不一定是標(biāo)準(zhǔn)答案,但應(yīng)該是比較實(shí)用的做法。
第一,養(yǎng)成習(xí)慣,在正式提交之前先做一輪完整的簽名檢查。別等到系統(tǒng)報錯了才去查,那時候往往時間緊迫,處理起來手忙腳亂。提前檢查發(fā)現(xiàn)問題還有時間補(bǔ)救。
第二,注意證書的有效期。最好在證書到期前一兩個月就開始張羅續(xù)期的事情。別等到過期了才想起來,那時候再申請新的證書,流程走下來沒準(zhǔn)就耽誤事兒了。
第三,保存好所有的證書和簽名記錄。一方面是方便日后追溯,另一方面如果遇到什么問題,這些都是重要的證據(jù)材料。電子的東西,說丟就丟,備份一定要做好。
第四,遇到簽名驗(yàn)證失敗的情況,先別慌。仔細(xì)看報錯信息,一般都會說明是證書問題、時間問題還是完整性問題。定位到問題之后解決起來就快了。如果自己實(shí)在搞不定,及時找技術(shù)支持,別自己瞎鼓搗半天最后把情況弄得更糟。
eCTD電子簽名這事兒,說大不大,說小也不小。往小了說,就是系統(tǒng)里的一個技術(shù)環(huán)節(jié);往大了說,它關(guān)系到整個注冊申報的合規(guī)性。我自己這些年接觸下來,最大的體會就是:細(xì)節(jié)決定成敗。
有時候就是一個證書過期了幾天,一個時間戳沒打上,或者文件被不小心動了一個比特,結(jié)果就是提交被退回,重新來一遍。時間成本、溝通成本,這些隱性代價往往比技術(shù)問題本身更讓人頭疼。
所以啊,在簽名這件事上,多花點(diǎn)心思檢查清楚,絕對是值得的。畢竟咱們做注冊工作的,最怕的就是返工和延誤。用心做好每一步,最后一定能省下不少麻煩。
