내 previous post와 관련이 있습니다.이 옵션은 비교적 약한 RSA 알고리즘을 사용하는 옵션이었습니다. 우리가 35 비트 숫자 (34359738367부터 34359738367까지)를 36 비트 모듈로 (34359738368에서 68719476735까지) 인코딩하려고한다고 가정합시다.N 비트 크래킹 RSA 모듈 번호
http://en.wikipedia.org/wiki/RSA을 참조하면 내 n이 34359738368 개에서 68719476735 개까지 (p-1 * q-1 형식)의 임의의 총합임을 알 수 있습니다. 임의의 d와 e를 선택합니다. 나는 숫자를 인코딩하고이를 UI에 표시합니다.
사용자는 최대 1,000 개의 출력을 볼 수 있다고 가정합니다. 폴라 (Polla)와 같은 알고리즘을 사용하여 내 d, e 또는 n을 해독하여 새로운 수를 예측할 수 있습니까? 그렇다면 얼마나 힘들겠습니까? 예로서
(단지 알면 입력/출력 (1000 개) 세트를 말한다)
- 1000162186531116156015
- 1000162186633031668326
- (입력/출력 형식 샘플로 6 개 출력을 고려) 10001621867,37351399313
- 1000162186806071714212
- 1000162186901188523761
- 1000162187018341011998
누가 내 n, d, e가 무엇인지 말해 줄 수 있습니까? (N 사이 34359738368 upto 68719476735)
나는 그것이 얼마나 크랙 가능한지 알고 싶다. 그래서 내가 얼마나 오래, 얼마나 빨리, 얼마나 많은 출력을보아야하는지, 어떤 알고리즘을 사용할 수 있는지에 대한 정보를 줄 수 있다면 등등 그것은 좋을 것이다.
PS : 사용자는 표준 RSA 알고리즘처럼 "e"를 보지 못합니다. 그는 입력 출력 세트 만 볼 수 있습니다.
는 세부 내가 사용자에게 DB에서 순차적 사용자 ID를 제공하기 위해 노력하고 을 추가했습니다. 순차적이기 때문에 사용자가 몇 가지 등록을 수행하여 다른 사용자의 ID를 추측하지 못하게해야합니다. 이것을 피하려면 나는 < = 12 자리 숫자로 뒤섞어 야합니다. this question에 설명 된 많은 제약이있었습니다.
또한 n, d 및 e 값은 사용자에게 알려지지 않습니다. 사용자가 볼 수있는 최대 출력은 몇 가지 입력 샘플입니다 (반복 등록 방식으로)
"Jacobi"알고리즘을 사용하면 몇 초 내에 문제를 해결할 수 있기 때문에 Accipitridae가 답변을 수락합니다. n, e 또는 p를 모른 채.
무엇을하려고합니까? 난독 화 같은 냄새가 난다. –
?! 나는 그 결론에 도달하지 않을 것이다. OP와 같은 소리는 최대 비트 크기에 대해 불행한 시스템 제한이 있습니다. –
RSA는이 작업에 절대적으로 적합하지 않습니다. 대신 HMAC를 사용합니다. –