Заявяване на TSA цифрово подписване на време, относно същестуващо съдържание, в CentOS 7 и Scientific Linux 7, с последваща проверка на подписването и използването му за датиране на съдържаниеСъдържание:
1. Предварителна информация относно времеподписването и датировката на съдържаниеПодписването на време (Time Stamping) има за цел да позволи датировката на даден блок от информация (цялото съдържание на файл, част от съдържанието на файл и др). Под дарировка се разбира възможността да бъде показано с високо ниво на надеждност, че съдържанието, за което времеподписването е изършено, е съществувало (било познато на заявителя) по и след времето на подписването. След като подписът за време бъде генериран, той се съхранява заедно или отделно от съдържанието, което ще датира. Ако след време възникне съмнение дали това съдържние е същестувало на часа и датата, вложена в подписа, то успешната проверка на цифровия подпис (валидирането му), може да покаже, че то е същствувало. Какъв е механизма за подписване на времето и датировката? Първо се изчислява се контролната сума на съдържанието, тя се влага се в блок данни, след това този блок се изпраща до специален сървър, наречен още "Time Stamping сървър", където към него се добавя информация за времето, по което той е получен (и др. допълнителна информация) и накрая този така допълнен блок се подписва цифрово с X.509 сертификата на сървъра. Този подписан блок данни е подписа за време (Time Stamp) върху контролната сума. Как се използва той? Когато се наложи да се покаже, че съдържанието, което съответства на контролната сума, е съществувало по и след някакво време (дата, час, минути, секунди, милисекунди), се проверява дали това време не е след времето, което е вложено в блока с подписа. Ако то е след това, което е вложено в блока с цифровия подпис, то проверяваното съдържание е съществувало още по време на подписването на контролната сума. В това се състои и смисъла на датировката. Организацията, която поддържа Time Stamping сървъра и издава сървърския X.509 сертификат, се нарича Time Stamping Authority (TSA). Тя следва да действа на принципа на пълна неутралност и да е арбитър при датировката.
2. Създаване на заявка за подписване на време с цел датировка на съдържаниеЗаявката за подписване на време е блок информация, който включва (1) контролната сума на файла, (2) описание на хеш-функцията, използвана за изчисляване на контролната сума, (3) заявка за използване на уникален номер в заявката (вижте повече на https://en.wikipedia.org/wiki/Cryptographic_nonce) и (4) изискване сертификата на Time Stamping сървъра да бъде прикачен към отговора. (-cert): Отбележете, че набора възможни за използване хеш-функции, на база на които се изчисляват контролните суми на съдържанието, зависи от TimeStamp сървъра. Обикновено, TimeStamp сървърите поддържат като минимум хеш-функцията SHA1 и опционално RIPEMD160, SHA256, SHA384, SHA512. Добре е да знаете предварително кои хеш-функции се поддържат от TimeStamp сървъра, към който ще изпращате заявката за подписване, ако не искате тя да бъде отхвърлена. Освен това, имайте предвид, че подразбиращата се в повечето TimeStamp сървъри хеш-функцията SHA1, е ненадеждна и се поддържа само и единствено за да осигурява обратна съвместимост със стар клиентски софтуер за изпращане на заявки. Това означава, че трябва да използвате поне 256-битова контролна сума (хеш-функцията SHA256) или в краен случай 160-битова, като тази осигурявана от функцията RIPEMD160. Обектите, чието съдържание искате да направите възможно за датиране, чрез подписване на време, могат да се разделят на две групи и за всяка една от тях се изисква прилагането на различна процедура по генериране на заявка:
3. Изпращане на заявката за подписване на време към TimeStamp сървър и получаване на цифрово подписания отговорСлед като заявката за подписване на време бъде генерирана по един от начините показани по-горе в "Създаване на заявка за подписване на време и нейното подписване", тя трябва да бъде изпратена до TimeStamp сървъра, възможно най-бързо. Обикновено, изпращането на заявката става чрез HTTP клиент по транспортен протокол HTTP/HTTPS. В рамките на тази услуга, цифрово подписаният отговор на заявката се връща почти веднага след изпращането ѝ и то в рамките на комуникацията по вече установената HTTP сесия, използвана за изпащане на заявката. По-долу е показан пример как чрез HTTP клиента $ curl -s -k -H "Content-Type: application/timestamp-query" -H Host:pki.uni-sofia.bg --data-binary @messages-20190414.gz.tsq "http://pki.uni-sofia.bg/tsa" > messages-20190414.gz.tsr Полученият цифрово подписан отговор на заявката за подписване на време (messages-20190414.gz.tsr), трябва да бъде запазен като критично важен цифров документ (дори под формата на няколко копия, за да се гарантира, че няма да бъде загубен). В него се съдържа доказателството, че съдържанието във файла, за което е генерирана заявката, отговаря на контролната сума, подписана от TimeStamp услугата по време на установената HTTP сесия (времето се отбелязва като дата, час, минути, секунди, милисекунди, микросекунди). ВНИМАНИЕ! В никакъв случай не изтривайте файла със заявката (за примера това е messages-20190414.gz.tsq). Запазете го по същия начин, по който пазите файла, за който е издаден подпис на време и самия подпис на време.
4. Проверка на валидността на цифров подпис на време и датиране на съдържаниетоПреди да установите дали съдържанието на файла, за който е изчислена цифрово подписаната сума, не е променяно след датата и часа подписването, трябва да проверите валидността на цифровия подпис, който TimeStamp сървъра е поставил върху отговора на изпратената заявка. Ако сте следвали примера в "Изпращане на заявката за подписване на време към TimeStamp сървър и получаване на цифрово подписания отговор", този отговор ще се намира запазен във файла messages-20190414.gz.tsr (във вашия конкретен случай този файл ще е друг). Това, което ви трябва за да проверите цифровия подпис на TimeStamp сървъра, направен върху отговора на заявката, е сертификатната верига, която удостоверява X.509 сертификата на сървъра, файла, за който е заявено подписване на времето или заявката за издаване на подпис за време. Имайте предвид, че в най-честия случай, оператора на TimeStamp услугата трябва да ви даде веригата като файл. В някой случаи може да се наложи вие да я съставите, изтегляйки удостоверителските X.509 сертификати един по един. Ако сте следвали примера, който е даден в "Изпращане на заявката за подписване на време към TimeStamp сървър и получаване на цифрово подписания отговор", то единствения X.509 сертификат, който ще ви е нужен за проверката на цифровия подпис ще е този на Удостоверителя на СУ. Него може да изтеглите с $ wget https://pki.uni-sofia.bg/crt/SU_ECC_Root_CA.crt или $ curl -O https://pki.uni-sofia.bg/crt/SU_ECC_Root_CA.crt След това, в зависимост дали разполагате с контролната сума на съдържанието във файла, самия файл или заявката за подписване на време, изпълнете:
След като се уверите, че подписа е валиден (изведено е "Verification: OK"), може да изведете информация за времето, което е удостоверено от TimeStamp сървъра, както и друга информация за подписването. Това може да стане така, ако отговора на подписаната заявка е във файла messages-20190414.gz.tsr: $ openssl ts -reply -in messages-20190414.gz.tsr -text При успешно изпълнение на горния команден ред, ще получите информация, която е структурирана по следния начин: Status info:
Status: Granted.
Status description: unspecified
Failure info: unspecified
TST info:
Version: 1
Policy OID: 1.2.3.4.1
Hash Algorithm: sha384
Message data:
0000 - 46 79 79 35 f1 6d 2a 3b-b5 9e 71 95 bb 15 31 12 Fyy5.m*;..q...1.
0010 - 34 fa e4 af bf d1 09 c0-de c4 7b 16 4a ca 28 ea 4.........{.J.(.
0020 - 64 95 fe f5 18 2a 65 ab-98 ab fc d5 51 0d 96 0b d....*e.....Q...
Serial number: 0x0259
Time stamp: May 2 23:18:21 2019 GMT
Accuracy: 0x01 seconds, 0x01F4 millis, 0x64 micros
Ordering: yes
Nonce: 0xDD83918F8385F7B6
TSA: DirName:/O=uni-sofia.bg/CN=TSR000001/emailAddress=admin@tsa.uni-sofia.bg
Extensions:
Времето, което е обект на подписване (удостоверяване) е посочено след "Time stamp:" (горе този ред е оцветен в зелено), а точността на времеотчитането е описана след Проверката посочена горе, ако е успешна, показва следното: съдържанието, чиято контролна сума се намира в подписа върху заявката за подписване на време, е съществувало преди времето, което е отбелязано и подписано от TimeStamp сървъра. |
Последна актуализация: 28 април 2019
2019 УНИТе, Веселин Колев