php rsa 암호화 예제

따라서 공개 키 암호화 (개발자 또는 침투 테스터)로 작업해야하고 RSA를 사용하여 언급하는 경우 대화가 « 2048 비트 키가 충분합니까 아니면 4096 비트가 필요합니까? » 패딩 모드가 있는지 확인하십시오. 사용. 몇 천 개의 메시지에서 임의의 암호에 대한 일반 텍스트를 복구하고 응용 프로그램의 보안을 완전히 무효화 할 수 있습니다. 상수 OPENSSL_PKCS1_PADDING는 OpenSSL 확장을 알려줍니다, « 우리는 PKCS1 v1.5 패딩을 사용하길 원합니다. » 그러나 앞서 말했듯이 PKCS1 v1.5 패딩을 사용하는 RSA 암호화는 1998년부터 패딩 오라클 취약점에 취약하다는 사실이 공개되었습니다. 이 공격은 일반 텍스트를 복구하는 데 백만 개의 메시지가 필요하기 때문에 공격 비용으로 인해 일반적으로 « 백만 메시지 공격 »으로 알려져 있습니다. 실제 취약점(PKCS1v1.5 패딩을 사용하는 RSA 암호화에 대한 패딩 오라클 공격)은 원래 다니엘 블리헨바처에 의해 1998년에 출판되었습니다. 이 패딩 oracle 취약점을 통해 공격자는 암호화된 메시지를 받아 서버에 변경된 암호텍스트를 반복적으로 전송하고(패딩 오류의 표시를 검색할 때마다) 원래 메시지의 암호를 해독할 수 있습니다. 사용 가능한 AES 키 크기로 인해 2048비트 RSA에서 허용하는 214바이트보다 적은 16, 24 또는 32바이트만 암호화할 수 있습니다. 실제 메시지 암호화는 CBC 또는 CTR 모드(임의 IV 또는 nonce 포함)의 AES에서 처리한 다음 HMAC-SHA256에 의해 인증됩니다.

대부분의 응용 프로그램에서 이러한 방식으로 암호화하기 위한 메시지 크기에 대한 실질적인 상한은 없습니다. 이것은 RSA 암호의 긴 체인보다 보안이 훨씬 쉽습니다. 공개 키 암호화를 구현하는 가장 좋은 방법은 대칭 키 및 비대칭 키 암호화 알고리즘을 결합한 하이브리드 암호화 시스템을 구축하는 것입니다. 이 에는 몇 가지 장점이 있습니다. PHP 응용 프로그램에 공개 키 암호화를 추가해야 하는 경우: 일반적으로 정교한 공격자가 몇 개월 만에 1024비트 RSA를 중단할 수 있다고 생각하지만 2048비트 RSA는 여전히 안전합니다. 그러나 2048 비트 RSA를 깨는 획기적인 공격도 4096 비트 RSA를 깰 가능성이 높습니다. RSA의 보안은 큰 정수를 주요 구성 요소로 팩터링하는 데 어려움을 두고 있습니다. 그러나 가까운 장래에 이 보안 보장에 대한 두 가지 주요 위협이 있습니다: 공격자가 임의의 암호화 된 메시지를 해독 할 수있는 취약점 (16 년 이상 알려진)이 개발자가 널리 알려지길 바랄 수 있습니다. 사용 가능한 모든 툴링에 의해 즉시 사용할 수 있습니다.