아니요, 브라우저 JavaScript를 사용하여 암호 보안을 향상시킬 수있는 방법은 없습니다. 이 기사 를 읽어 보는 것이 좋습니다 . 귀하의 경우 가장 큰 문제는 닭 계란 문제입니다.
Javascript 암호화를 제공하는 데있어 "닭 달걀 문제"는 무엇입니까?
네트워크가 암호를 전달하는 것을 신뢰하지 않거나, 더 나쁜 것은 서버가 사용자 비밀을 유지하지 않는다는 것을 신뢰하지 않는 경우, 보안 코드를 제공하는 것을 신뢰할 수 없습니다. 암호를 도입하기 전에 암호를 스니핑하거나 일기를 읽던 공격자는 단순히 암호 코드를 하이재킹하는 것입니다.
[...]
TLS / SSL을 사용하여 Javascript 암호화 코드를 전달할 수없는 이유는 무엇입니까?
할 수 있습니다. 생각보다 어렵지만 SSL을 사용하여 Javascript 암호화를 브라우저에 안전하게 전송합니다. 문제는 SSL로 보안 채널을 설정 했으므로 더 이상 Javascript 암호화가 필요하지 않다는 것입니다. 당신은 "진짜"암호화를 가지고 있습니다.
이로 인해 :
Javascript에서 암호화 코드를 실행할 때의 문제는 암호화가 의존하는 거의 모든 기능이 호스팅 페이지를 구축하는 데 사용되는 콘텐츠에 의해 자동으로 무시 될 수 있다는 것입니다. 암호화 보안은 프로세스 초기에 (가짜 난수를 생성하거나 알고리즘에서 사용하는 상수 및 매개 변수를 조작하여) 또는 나중에 (키 자료를 공격자에게 다시 스 피팅하여) 취소 할 수 있습니다. 가능성이 가장 높은 시나리오에서 --- 암호 화폐를 완전히 우회함으로써.
어떤 자바 스크립트 코드도 실행 환경을 확인할 수있는 신뢰할 수있는 방법이 없습니다. 자바 스크립트 암호화 코드는 "난 정말 난수 생성기를 다루고 있습니까, 아니면 공격자가 제공 한 일부 팩시밀리를 다루고 있습니까?"라고 묻지 않습니다. 그리고 그것은 "저자 인 내가 승인하는 방식을 제외하고는 아무도이 암호 비밀로 아무것도 할 수 없다"고 주장 할 수 없습니다. 이들은 암호화를 사용하는 다른 환경에서 종종 제공되는 두 가지 속성이며 Javascript에서는 불가능합니다.
기본적으로 문제는 다음과 같습니다.
- 클라이언트는 서버를 신뢰하지 않으므로 추가 보안 코드를 추가하려고합니다.
- 해당 보안 코드는 서버 (신뢰하지 않는 서버)에서 제공합니다.
또는
- 클라이언트는 SSL을 신뢰하지 않으므로 추가 보안 코드를 사용하기를 원합니다.
- 해당 보안 코드는 SSL을 통해 전달됩니다.
참고 : 또한 SHA-256은 무염 비 반복 암호 를 무차별 대입 하기가 쉽기 때문에 이에 적합하지 않습니다 . 어쨌든 이것을하기로 결정 했다면 , bcrypt , scrypt 또는 PBKDF2 의 구현을 찾으십시오 .