1
rsa
키와 BLAKE2b
해시를 사용하여 메시지에 서명하려고 할 때 macOS 및 Ubuntu에서 다음 오류 메시지가 표시되었습니다.RSA 키로 메시지 서명시 예외 발생
InternalError: Unknown OpenSSL error. This error is commonly encountered
when another library is not cleaning up the OpenSSL error stack. If you
are using cryptography with another library that uses OpenSSL try
disabling it before reporting a bug. Otherwise please file an issue at
https://github.com/pyca/cryptography/issues with information on how to
reproduce this. ([])
어디서 디버깅을 시작 해야할지 모릅니다. 내가 여기서 누락 된 것이 있습니까? rsa
서명으로 BLAKE2b
해시를 사용할 수 없습니까?
In [1]: from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding, rsa
In [2]: private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=4096,
backend=default_backend()
)
In [3]: message = b'The quick brown fox jumps over the lazy dog'
signature = private_key.sign(
message,
padding.PSS(
mgf=padding.MGF1(hashes.BLAKE2b(64)),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.BLAKE2b(64)
)
역 추적 매우 결정적이다
<ipython-input-3-6b4492bdbf5d> in <module>()
6 salt_length=padding.PSS.MAX_LENGTH
7 ),
----> 8 hashes.BLAKE2b(64)
9)
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/rsa.py in sign(self, data, padding, algorithm)
413 self._backend, data, algorithm
414 )
--> 415 return _rsa_sig_sign(self._backend, padding, algorithm, self, data)
416
417
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/rsa.py in _rsa_sig_sign(backend, padding, algorithm, private_key, data)
220 pkey_ctx = _rsa_sig_setup(
221 backend, padding, algorithm, private_key, data,
--> 222 backend._lib.EVP_PKEY_sign_init
223 )
224 buflen = backend._ffi.new("size_t *")
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/rsa.py in _rsa_sig_setup(backend, padding, algorithm, key, data, init_func)
191 padding_enum = _rsa_sig_determine_padding(backend, key, padding, algorithm)
192 evp_md = backend._lib.EVP_get_digestbyname(algorithm.name.encode("ascii"))
--> 193 backend.openssl_assert(evp_md != backend._ffi.NULL)
194 pkey_ctx = backend._lib.EVP_PKEY_CTX_new(key._evp_pkey, backend._ffi.NULL)
195 backend.openssl_assert(pkey_ctx != backend._ffi.NULL)
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/backend.py in openssl_assert(self, ok)
104
105 def openssl_assert(self, ok):
--> 106 return binding._openssl_assert(self._lib, ok)
107
108 def activate_builtin_random(self):
/usr/local/lib/python3.6/site-packages/cryptography/hazmat/bindings/openssl/binding.py in _openssl_assert(lib, ok)
73 "issues with information on how to reproduce "
74 "this. ({0!r})".format(errors_with_text),
---> 75 errors_with_text
76 )
77
는 PSS 사양을 보였다면서 (섹션 8.1 및 [PKCS # 1] (HTTPS에서 9.1.1 : //tools.ietf.org/html/rfc8017) 이전의 가설 중 어느 것도 맞지 않습니다. PSS 패딩은 해시에 대한 객체 식별자 (OID)를 서명에 포함하지 않으므로 OpenSSL은 BLAKE2b와 PSS가 특정 알고리즘 세트로 해시를 제한하지 않습니다 . – lockcmpxchg8b
두 번째로 보았을 때 소금 길이가 너무 길지 않은지 궁금합니다. 'padding.PSS.MAX_LENGTH'를 해석하는 방법을 정확하게 모르지만 '512 - - 2' –
lockcmpxchg8b
@ lockcmpxchg8b :'salt_length = 256'을 시도했지만 동일한 오류가 발생했습니다. Traceback을 추가했습니다. –