first commit
This commit is contained in:
60
app/Services/Crypto/GostCipher.php
Normal file
60
app/Services/Crypto/GostCipher.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Crypto;
|
||||
|
||||
use RuntimeException;
|
||||
|
||||
/**
|
||||
* ЗАГЛУШКА драйвера шифрования по ГОСТ Р 34.12-2015 («Кузнечик»/«Магма»).
|
||||
*
|
||||
* Мера ФСТЭК/ФСБ: ЗИС.16, приказ ФСБ №378 — применение сертифицированных СКЗИ.
|
||||
*
|
||||
* Для государственных ИСПДн встроенный AES не является сертифицированным СКЗИ.
|
||||
* Реальная реализация должна вызывать внешний криптопровайдер (КриптоПро CSP,
|
||||
* VipNet) — например через CLI `csptest`, расширение PHP с поддержкой ГОСТ или
|
||||
* gRPC/REST-шлюз к СКЗИ. Здесь намеренно оставлен каркас, чтобы:
|
||||
* - не создавать ложного ощущения сертифицированной защиты;
|
||||
* - дать понятную точку интеграции при аттестации.
|
||||
*
|
||||
* Чтобы активировать: SECURITY_PDN_CIPHER_DRIVER=gost и реализовать методы.
|
||||
*/
|
||||
class GostCipher implements PdnCipher
|
||||
{
|
||||
/**
|
||||
* @param array{binary:?string,container:?string} $config
|
||||
*/
|
||||
public function __construct(private readonly array $config) {}
|
||||
|
||||
public function encrypt(string $plaintext): string
|
||||
{
|
||||
throw new RuntimeException(
|
||||
'Драйвер ГОСТ не реализован. Подключите сертифицированное СКЗИ '
|
||||
.'(КриптоПро CSP / VipNet) в App\Services\Crypto\GostCipher. '
|
||||
.'См. docs/security/crypto-gost.md.'
|
||||
);
|
||||
}
|
||||
|
||||
public function decrypt(string $ciphertext): string
|
||||
{
|
||||
throw new RuntimeException(
|
||||
'Драйвер ГОСТ не реализован. Подключите сертифицированное СКЗИ '
|
||||
.'(КриптоПро CSP / VipNet) в App\Services\Crypto\GostCipher.'
|
||||
);
|
||||
}
|
||||
|
||||
public function algorithm(): string
|
||||
{
|
||||
return 'GOST-R-34.12-2015';
|
||||
}
|
||||
|
||||
/**
|
||||
* Настроено ли внешнее СКЗИ (путь к бинарю и контейнер ключа).
|
||||
* Используйте в health-check перед включением драйвера gost.
|
||||
*/
|
||||
public function isAvailable(): bool
|
||||
{
|
||||
return ! empty($this->config['binary'])
|
||||
&& ! empty($this->config['container'])
|
||||
&& is_executable((string) $this->config['binary']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user