2011-12-21 2 views
-4

나는 안드로이드 시스템을 만들고있다.안드로이드 platform.key에 3이 유일하게 공개 된 지수가 허용되는 이유는 무엇입니까?

기존 공개 키가 F4 (65537) 인 기존 키 쌍이 있습니다.

나는 platform.key (나는 pk8과 x509가있다)로 사용하려고한다.

빌드 프로세스 중에 내 키 쌍에 DumpPublicKey가 호출됩니다. 여기있는

: 공개 지수가 3 아니기 때문에이 시점에서

는, 키가 거부됩니다 (3 비교하고, 그렇지 않으면 거부 나는 그것이 않습니다 정확히 무엇 DumpPublicKey의 코드에서 확인) 이를 위해 스택 트레이스 :

java.lang.Exception: Public exponent should be 3 but is 65537. 
    at com.android.dumpkey.DumpPublicKey.check(DumpPublicKey.java:75) 
    at com.android.dumpkey.DumpPublicKey.main(DumpPublicKey.java:151) 

이 내가

openssl genrsa -3 ... 

또는 나는 여전히 내 키를 사용할 수있는 방법이를 사용하여 새 키 쌍을 생성하는 것을 의미합니까?

또한 공개 지수가 F4가 아닌 3면 왜 중요합니까?

덕분에 사전에

+0

65537 대신 3을 사용하면 서명 확인이 8 배 더 빠릅니다. –

+0

그레그 감사합니다. 그게 내가 생각하는 것입니다. 안드로이드가 내 열쇠를 받아들이도록하는 방법이 있다면 지금 당신이 할 수 있겠습니까? – njzk2

+0

죄송합니다. Android에 대해 많이 알지 못합니다. –

답변

1

나에게 com.android.dumpkey.DumpPublicKey 버그처럼 보인다. RSA 키의 공개 지수를 3으로 제한하면 바보입니다. 이렇게하면 기본 라이브러리가 올바르게 구현되지 않은 경우 구현 오류가 치명적인 결과를 초래할 가능성이 높아집니다 ( ).

안드로이드는 신중하게 구현되지 않은 인 암호화 라이브러리 인 Bouncycastle을 사용합니다.

표준 지수 2^16 + 1을 사용하면 매우 합리적이며 작은 지수로 인해 많은 잠재적 인 문제를 피할 수 있습니다.

+0

DumpPublicKey에서 예외 부분을 제거했으나 작동하지 않는 것 같습니다 (지금까지) – njzk2

관련 문제