문제

나는 대부분의 Python Crypto 라이브러리를보고 있었고 Pycrypto 또는 M2Crypto를 사용하기로 결정했습니다.
Ezpycrypto는 서명을위한 MD5 만 지원하고 Keyczar가 충분히 성숙하지 않기 때문에 폐기했습니다.

따라서 암호화 된 텍스트 (또는 서명 해시)가 제대로 패딩되지 않으면 RSA가 여러 공격에 취약하다는 것을 읽었습니다.
무슨 뜻인가요?
Pycrypto 나 M2Crypto는 이것에 대해 언급하지 않았으며 Google은 관련성이없는 것을 찾지 못했습니다. 이 라이브러리가 자동으로 Padvign을 추가합니까? 어떻게 말할 수 있습니까?

위의 답변이 아니오 인 경우 적절한 패딩으로 간주되는 것은 무엇입니까?

도움이 되었습니까?

해결책

Pycrypto는 언급 된 패딩을 추가하지 않습니다.
대신 m2crypto.

M2Crypto는 OpenSSL 위에 제작되었으며, 필요한 모든 것을 지원하고, 여전히 유지 관리되며 여전히 최신 상태를 유지하는 반면, Pycrypto는 몇 가지 감가 상각 경고를 발행합니다.

다른 팁

이유 중 하나 무작위의 패딩은 "책에서"지수가 낮은 RSA (3)가 여러 사람 (3)에게 정확히 동일한 메시지가 전송되면 간단하게 금이 갈 수 있다는 것일 수 있습니다.

그러므로 당신은 이전에 메시지에 어떤 종류의 무작위 (반전 할 수없는) 변환을 적용하여 똑같은 메시지를 보내지 않도록하는 것이 좋습니다.

아마도 그게 패딩에 관한 것일 수도 있습니다!?

편집 : Wikipedia를 살펴 보았습니다. 내가 말한 것은 Hastad의 공격이라고합니다.

나는 최근 암호화를 알아 내면서 싸웠다 ...이 기사는 패딩으로 무엇이 있는지 설명하는 데 많은 도움이되었습니다.

http://www.di-mgt.com.au/cryptopad.html

(방법 1은 내가 구현하기가 가장 쉬운 것처럼 보였다)

필요한 경우 코드 스 니펫을 공유 할 수 있습니다.

추신이 파일은 보안 키 (Google for It)를 만드는 데 도움이되는 데 도움이됩니다.

완전히 확실하지는 않지만 RSA 메시지에 임의 구성 요소를 추가하면 사전 공격을 방지합니다.

첫째, AES는 요금 표준이므로 AES를 사용해야합니다.

AES는 16 바이트의 블록 크기로 바이트를 암호화합니다. 분명히 이것은 모든 큰 데이터에 적합합니다. 그러나 마지막 비트는 아마도 16 바이트보다 작을 것입니다.

마지막 블록의 경우 패드해야하며 일반적인 패딩은 PCKS7을 통해 수행됩니다.

마지막 블록으로 "아이스크림"을 문자열이라고 가정 해 봅시다.

"icecream" 8 바이트이므로 블록을 만들려면 8 바이트가 필요합니다.

그래서 당신이하는 일은 단순히 캐릭터 8 ( '8'이 아님)을 8 번 abled습니다.

"icecream\x08\x08\x08\x08\x08\x08\x08\x08"

결과적인 문자열이 될 것입니다. 이제 데이터를 암호화합니다.

해독하는 동안이 마지막 블록을 잡고 패딩을 사용하기 전에 패딩을 벗겨야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top