2013-02-22 7 views
1

는 여기에 내가 영구 링크에서 데이터베이스 ID 년대를 당황하게하기 위하여려고하고있는 작업은 다음과 같습니다사용자 지정베이스 62 인코딩을 디코딩하는 것이 얼마나 어렵거나 쉽습니까?

1) XOR 긴 비밀 키

2) 스크램블와 ID (역, 플립, 회전) 가역적 인 방법으로 XOR 연산 정수에 약간의 주위 비트

3) 자료 (62) 인코딩 내 자신의 비밀과 결과 정수는 모든 영숫자 차의 순서를 스크램블 racters (A-Za-z0-9)

Base 62 인코딩을 다시 기준 10으로 변환하는 것이 얼마나 어려울까요?

전체 프로세스를 리버스 엔지니어링하는 것이 얼마나 어렵습니까? (분명히 소스 또는 컴파일 된 코드에서 최고점을 취하지 않고) 나는 '단지 XOR'이 기본 분석에 꽤 민감하다는 것을 알고 있습니다.

편집 : 결과가 이상 8-9, 3DES 및 AES는 매우 긴 암호화 된 텍스트를 생산하는 긴 것 문자와 실질적으로 문자열을 결과 URL을

에서 사용할 수 없습니다 보일 해야 같은 : 당신이 1 2처럼 아무것도 보지 않는다 볼 수 있듯이

In [2]: for i in range(1, 11): 
    print code(i) 
    ...:  
9fYgiSHq 
MdKx0tZu 
vjd0Dipm 
6dDakK9x 
Ph7DYBzp 
sfRUFaRt 
jkmg0hl 
dBbX9nHk4 
ifqBZwLW 
WdaQE630 

그래서 이것은에이 아이디의의 난독 위대한 작품 보인다.

+5

고객님의 보안을 권하지 마십시오. –

+0

표준 블록 암호를 사용하여 64 비트의 블록 크기로 11 개의 Base62 문자를 사용하는 것을 고려해 보겠습니다. 예를 들어 3DES가 ​​그 일을 할 것입니다. 이는 실제 보안을 제공하며 코드를 비밀로 유지하는 것에 의존하지 않습니다. – CodesInChaos

+5

현대 암호화의 핵심 가정은 공격자가 키를 제외한 시스템에 대한 모든 것을 알고 있다는 것입니다. 이 표준에 따라 시스템이 고장났습니다. – CodesInChaos

답변

2

공격자가 입력 내용을 가지고 놀 수 있으면 숙련 된 공격자가 데이터를 "해독"하는 것은 쉽지 않습니다. 최신 암호 시스템의 중요한 특성은 시스템에 부족한 "Avalanche effect"입니다. 기본적으로 이것은 출력의 모든 비트가 입력의 모든 비트와 연결된다는 것을 의미합니다.

예를 들어 id = 1000은 "AAAAAA"를 출력하고 id = 1001은 "ABAAA"를 생성하고 id = 1002는 "ACAAA"를 생성한다는 것을 시스템의 공격자가 볼 수 있으면 알고리즘을 쉽게 되돌릴 수 있습니다 , 얻은 키의 값. 말했다


,이 질문은 "하지 마"더 잘 맞는 https://security.stackexchange.com/ 또는 https://crypto.stackexchange.com/

2

표준 조언을 자신의 암호를 개발하기 위해 노력하고 누군가를 위해입니다. 고급 조언은 Bruce Schneier의 Memo to the Amateur Cipher Designer을 읽은 다음 읽지 않는 것입니다.

ID를 난독 화해야하는 첫 번째 사용자가 아니므로 이미 사용할 수있는 방법이 있습니다. @CodesInChaos는 위의 좋은 방법을 제안했습니다. 당신이 처음에 그것이 당신의 필요를 충족시키는지를 알아보아야합니다.