웹 사이트 및 해당 헬퍼 프로그램 (사용자 컴퓨터에 설치됨)을 개발하려고합니다. 웹 사이트와 프로그램은 서로 통신을하지만 (대부분 AJAX), 다른 웹 페이지가 요청을 프로그램에 보낼 수있는 경우 보안 위험이 커집니다. 나는 사용자 컴퓨터에 설치된 내 프로그램에 사기 요청을 주입하는 것을 매우 어렵게 만드는 해결책을 찾고 싶습니다. 내 생각은 한 번만 암호를 사용하려고하지만 보안 지식이 제한되어 있으므로 생각을 묻습니다.one-time-password 알고리즘 (matematical, time based 및 action based)
function otp(seed, counter, unix_timestamp, action)
{
for(i = 0; i < counter; ++i)
{
seed = sha256(seed + i);
}
str = seed;
str = sha256(str + unix_timestamp/60);
str = sha256(str + action);
otp = substr(str,0,4); //Convert the first for bytes to an int.
return (int)otp;
}
그것은 다음과 같은 속성이 있어야합니다 :
나는이 한 시간 암호 알고리즘 (의사)를 내놓았다 한
- 은 모든 OTP에 (한 번 사용할 수 있습니다 세대는 "카운터"가 증가 => 새로운 씨앗)
- 시간마다 변경됩니다.
- 작업 (로그인, ...)에 바인딩 된 특정 작업에 따라 다릅니다.
- 별도로 생성하여 나중에 동기화 할 수 있습니다.
모든 요청에 OTP 코드와 카운터 값이 포함되어있는 경우이 보안이 적용됩니까? 이 작업을 수행하기위한 귀하의 조언은 무엇입니까? 나는 위에서 언급 한 모든 속성을 정말로 원합니다.
미리 감사드립니다.
[해시 체인] (http://en.wikipedia.org/wiki/hash_chain) 또는 [일회용 암호 생성]의 다른 표준 방법 (http : //en.wikipedia)을 사용할 수 있습니다. org/wiki/one-time_password). OTP를 생성하기위한 표준 라이브러리를 찾고 있다면 [IT 보안] (http://security.stackexchange.com/)에서 질문 할 수 있습니다. OTP를 생성하기 위해 새 라이브러리를 작성하는 경우 [암호화] (http://crypto.stackexchange.com/)에서보다 구체적인 질문을 게시 할 수 있습니다. –