/ / Як додати цифровий підпис (RSA, сертифікат тощо) до будь-якого файлу, використовуючи PHP? - php, file, rsa, digital-signature

Як додати цифровий підпис (RSA, Сертифікат тощо) до будь-якого файлу, використовуючи PHP? - php, файл, rsa, цифровий підпис

Мені потрібно знати, чи може будь-який файл бути підписаний цифровим способом, використовуючи RSA, сертифікат і інше, або якщо можна підписати лише певні файли. Все це, використовуючи PHP.

У прикладі: Чи може текстовий файл бути підписаний цифровим способом?

Не потрібно "прикріплювати" зображення до графічної підписи.

Дякую за твою допомогу.

Відповіді:

8 для відповіді № 1

Використовуючи phpseclib, чиста версія PHP RSA (оновлено тут):

<?php
include("Crypt/RSA.php");

$rsa = new Crypt_RSA();
extract($rsa->createKey());

$plaintext = "terrafrost";

$rsa->loadKey($privatekey);
$signature = $rsa->sign($plaintext);

$rsa->loadKey($publickey);
echo $rsa->verify($plaintext, $signature) ? "verified" : "unverified";
?>

Аналогом тому з відкритим CLI CLI є:

openssl dgst -sha1 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -out signature.txt -sign privatekey.txt plaintext.txt
openssl dgst -sha1 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -prverify privatekey.txt -signature signature.txt plaintext.txt

9 для відповіді № 2

Re: чи може будь-який файл бути підписаний в цифровому форматі, використовуючи RSA, сертифікат, і що речі, або якщо тільки певний вид файлів можуть бути підписані?

Відповідь: Так і ні. З одного боку, стандартний цифровий підпис можна обчислити для будь-якого розшарування, включаючи звичайний текстовий файл, файли зображень, двійкові файли, все, що можна уявити.

Але тоді стають питання:

  1. Як пов'язувати цифровий підпис (якийсам бінарний біт бітів) з файлом даних? Чи дозволяє формат файлу даних додавати цифровий підпис до даних? Або ж вам потрібно керувати цифровим підписом самостійно, можливо, як окремий файл, можливо, використовуючи власний винайдений формат даних?

  2. Після того, як ви отримаєте цифрові підписані дані та їїпідпису, як перевіряє одержувач дані та свій підпис, щоб запевнити одержувача, який підписав дані (особи), і що дані не були змінені після підписання (цілісність)?

Формати файлів, що підтримують цифрові підписи

Великою перевагою форматів файлів, які нерозривно підтримують цифрові підписи, є одержувачі перевірити цифровий підпис і цілісність файлу просто отримуючи підписаний файл, а потім використовуючи власне програмне забезпечення перевірки.

Є багато здатних форматів файлів, які підтримують цифрові підписи. Наприклад, pdf, Word .doc, .docx. Excel .xls, .xlsx. Є стандарт для підписування XML-файлів. Його користь полягає в тому, що xml можна використовувати якконверт для будь-якого типу даних. Наприклад, файл PDF може бути цифровим підписом і надісланий комусь. Одержувач може потім використовувати стандартний / безкоштовний Adobe Reader, щоб відкрити PDF-файл і перевірити його цифровий підпис (и).

"Формат" для текстових файлів (файл заповненийз символами) не підтримує цифрові підписи. Отже, вам знадобиться конверт для тексту та його цифровий підпис або окремо працювати з цифровим підписом. У будь-якому випадку, одержувачу знадобиться ваше програмне забезпечення, щоб перевірити дані. для звичайного тексту та підпису.)

S / MIME пропонує стандартний спосіб цифрового підписання тексту або інших організованих даних електронної пошти / міму. Подивитися rfc 5751. Але він не широко використовується за межами поштових агентів, які можуть генерувати або отримувати / перевіряти підписані повідомлення електронної пошти. Outlook підтримує це.


1 для відповіді № 3

Чому ви бажаєте цифровим підписом цих різних файлів?

Не існує стандарту для фактичного зміни текстових файлів або зображень, щоб самі файли містили певний цифровий підпис.

Якщо ви хочете запевнити користувачів, що файли не маютьбуло підроблено, ви можете надати їм хеш MD5 файлу. Вони можуть використовувати безкоштовні інструменти, щоб перевірити хеш MD5 файлу, який вони завантажили, і порівняти його з тією, яку ви надали, щоб переконатися, що їхній файл не був змінений. на шкідливий код.

Інша можливість полягає в тому, що ви хочете, щоб користувачі булиможливість перевірити достовірність певних файлів. У цьому випадку користувач може захотіти бути впевненим, що текстовий файл або зображення прийшов саме від вас. Ця функція майже схожа на отримання хешу MD5 файлу з закритим ключем, відомим тільки вам, щоб кінцевий користувач міг порівнювати підпис файлу з вашим відкритим ключем, щоб переконатися, що файл не підроблений і надходить з конкретного джерела. PGP (дуже непогана конфіденційність) забезпечує основу для цього.

Я пропоную вам перевірити вступні документи PGP для отримання додаткової інформації про це. http://www.pgpi.org/doc/pgpintro/