2012-01-19 3 views
0

대용량 응용 프로그램을 개발 중이며 다른 대륙에있는 두 대의 컴퓨터간에 데이터가 이동할 때 암호화가 필요합니다. 나는 암호로 작업 한 적이 없다. PHP/Ruby/Python에서 종속성없이 처리 할 수있는 간단한 암호화가 필요합니다.SHA1을 사용하여 암호화

그래서 HMAC SHA1을 사용하기로 결정했습니다.

$pad=hash_hmac("sha1","The quick brown....","mykey"); 

이것은 인터넷에서 조사한 결과입니다.

키를 모르는 사람이 암호를 해독하는 것이 얼마나 어려운가요? 또한, 이것에 대한 대안?

업데이트 - 모든 답변에 감사드립니다. 문제 해결됨.

+2

이것은 해시가 아니라 암호입니다. 모든 가능성을 검토하고 확인하지 않고 해독 할 수는 없습니다. – Xophmeister

답변

5

키를 알고 있어도 암호를 해독하는 것은 불가능합니다. HMAC SHA1은 암호화가 아닌 키순 해시 알고리즘입니다.

해시는 입력 길이에 관계없이 항상 동일한 길이의 값 (SHA1은 128 비트라고 생각 함)을 생성하는 암호화 일방 함수입니다. 해시 포인트는 출력 값이 주어지면 입력 값을 찾아 내 출력을 계산할 수 없다는 것입니다. 키가있는 해시가 무지개 테이블 공격을 방지하는 데 사용됩니다. 키를 알고 있더라도 해시 프로세스를 되돌릴 수는 없습니다.

암호화의 경우 AES를보고 싶습니다.

+0

SHA1 길이는 160 비트입니다 (입력 크기에 관계없이) – poupou

+0

감사합니다. 나는 그것을 알아야했음을 알았다. –

-2

내가 말했듯이 이것은 해시이므로 암호화/암호 해독 문제는 아닙니다. 간단한 암호화 알고리즘을 구현하려면 XOR 암호화를 살펴 보는 것이 좋습니다. 키가 길고 (메시지보다 길어서) 키 공유 정책이 적절하게 안전하다면 이는 일회성 패드입니다. 그렇지 않으면 통계 분석을 사용하여 잠재적으로 손상 될 수 있습니다.

+0

-1 일반 보안 질문에 대한 XOR 암호화 제안 (미안) –

+0

왜? 나는 정확하게 최선은 아니라는 것을 알고 있지만, OP가 SHA1 해시를 사용하여 데이터를 암호화하려했기 때문에 이해하기 쉽고 알고리즘을 구현하는 것이 학습을 시작하기에 좋은 곳이라고 생각했습니다. – Xophmeister

+0

@owlstead - 반복되지 않는 키 자료의 고품질의 고품질 스트림을 가정 할 때 XOR은 훌륭합니다. 기본적으로 RC4가 작동하는 방식입니다. 주된 문제는 엔트로피가 충분히 높은 주요 데이터 스트림을 유용하게 사용하고 다른 자료에서 동일한 자료를 사용할 수 있다는 것입니다. 그것은 OP가 자신의 암호화 알고리즘을 구현할 것을 제안하기 위해이 대답에 -1을 부여했다고 말했습니다. 암호화는 악명이 높아지기 쉽지 않으며 알려진 알고리즘 구현의 경우에도 취약점으로 이어질 수 있습니다. 기존의 성숙한 라이브러리를 사용하는 것이 훨씬 낫습니다. –

1

SHA1은 단방향 해시 함수이므로 정의에 따라 다른 사용자가 해독 할 수 없습니다. 그 질문은 당신이 H.에 해쉬하는 평문 T가 있다면 얼마나됩니다.

Wikipedia에 따르면, SHA1에 대해 가장 잘 알려진 무차별 대 공격은 2^51 일치하는 평범한 텍스트를 찾기위한 진전

프로세스를 되돌릴 수있는 실제 암호화가 필요한 경우 AES256을 살펴 봐야합니다.

은 참조 : http://en.wikipedia.org/wiki/Cryptographic_hash_function

이에 대한 일반적인 설명은.

1

Andrew가 말한 것처럼 SHA1은 해시 알고리즘이며 원래 값을 되돌릴 수 없기 때문에 암호화에 사용할 수 없습니다. digest은 데이터 무결성의 유효성을 검사하는 데 사용할 수 있습니다.

HMAC는 키를 허용하는 해시 알고리즘보다 위의 구성입니다. 그러나 암호화를위한 것이 아니며 (다시 해독 할 수 없음) 데이터 (즉, 동일한 키를 사용하여 전송 중에 데이터가 변조되지 않았 음을 보장 할 수 있음)를 허용합니다.

원수 암호화 당신은 해당되는 경우 응용 프로그램, HTTPS에 AES를 사용하여 보거나한다 (이 약 ;-)

0

SHA-1, MD-5는 모두를 알고 싶어보다 더 많은 문제를 다루는 것이다 해싱 알고리즘. 그들은 단지 긴 문자열을 생성합니다. 이 기능을 수행 할 때 각각의 모든 문자열은 길게 줄 수 없으므로 길게 줄 수 있습니다.

그들은 암호화가 없습니다.

암호화 알고리즘을 찾으려면 AES (고급 암호화 표준), DES (데이터 암호화 표준) 알고리즘을 찾으십시오.