TBS - Захищений вміст SSL сертифікату
Зразок сертифіката
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version Version,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID UniqueIdentifier }
Сучасний світ та інтернет - це ті речі, які неможливо уявити нарізно. А сертифікація та перевірка SSL - надзвичайно необхідний фрагмент безпеки в Інтернеті для будь-якого бізнесу, який збирає інформацію від своїх користувачів. Тобто, SSL-сертифікат - це засіб надійного захисту особистої інформації усіх користувачів в інтернет просторі і означає, що на цьому сайті досить безпечно вводити пароль або номер банківської карти.
Неформально файл SSL сертифіката складається з двох частин:
- даних сертифіката (DATA);
- цифрового підпису (SIGNATURE).
У секції DATA міститься смислова частина сертифіката, головне поле там - Subject (він же Суб'єкт), це власник сертифіката, саме його публічний ключ знаходиться в полі Subject Public Key Info.
У секції SIGNATURE міститься цифровий підпис всіх даних з секції DATA. В моделі PKI цифровий підпис генерує центр авторизації, використовуючи свій секретний ключ, засвідчуючи справжність даних сертифіката.
Можна сказати, що сертифікат складається з таких компонентів, як: tbsCertificate, signatureAlgorithm і signatureValue, де: tbsCertificate - це власне тіло сертифіката, його дані, а літери tbs в назві поля розшифровуються як «to be signed», тобто це блок даних, який буде підписаний ASN.1 стуктурой TBSCertificate; signatureAlgorithm - поле, в якому задається алгоритм підпису, що визначається ASN.1 структурою AlgorithmIdentifier; signatureValue - це поле, в якому знаходиться бінарний неструктурований блок з власне підписом.
Таким чином, якщо перед вами буде стояти завдання перевірити ЕЦП SSL сертифіката, то для цього спершу необхідно витягти TBS-сертифікат. Важливим моментом, про який варто особливо згадати є дані, для яких обчислюється підпис. Інтуїтивно може здатися, що підписуються всі дані, що йдуть до останнього поля BIT STRING, що містить підпис. Але насправді це не так.