0

인터넷에 대한 모든 감시로 인해 나는 완전한 오픈 소스, 크로스 플랫폼 및 완전 암호화 된 채팅 클라이언트 (비디오 기능 포함)를 작성할 계획이었습니다.비밀 번호가 비밀 번호로 IM

Skype와 비슷하지만 메시지 및 비디오 스트림은 완전히 암호화되어야하며 모든 통신은 클라이언트간에 발생해야하며 어떤 서버도 거치지 않아야합니다.

그러나 등록, 인증 및 온라인 확인은 초보자에게도 간단하고 사용하기 쉽도록 서버 측에서 수행해야합니다.

가능한 한 간단하게 유지하기 위해 공개 키/개인 키 암호화를 사용하려고했습니다. 개인 키를 서버의 어느 곳에 나 저장하지 않고 로그온하려는 각 컴퓨터로 옮기지 않으려 고 할 때 개인 키로 비밀번호를 만드는 것에 대해 생각했습니다. 이렇게하면 원하는 위치에서 로그온 할 수 있고 키에 대해 걱정할 필요가 없습니다.

사람을 추가하면 공개 키가 자동으로 전송됩니다. 상대방이 동의하면 상대방의 공개 키로 응답 한 다음 채팅/화상 통화를 할 수 있습니다.

내가 여기에보고하고 문제는 다음과 같습니다 비밀번호 (개인 키)를 변경할 때

  • 가 어떻게 공개 키 남아있을 수 있는가?
  • 기존의 SSL 인프라를 사용하여 암호화 표준을 다시 구현하지 않고도이 작업을 수행 할 수 있습니까?

나는 이미 프로그래밍 (C/C++)에 도움을 줄 사람이 몇 명 있지만, 불행히도 우리 중 누구도 암호화 기술에 열중하지 않으므로 먼저 이러한 것들을 정렬해야합니다. 암호화를 구현하는 방법을 알게되면 다이어그램을 게시하고 그에 대한 피드백을 요청합니다.

미리 감사드립니다.

답변

1

먼저, Jitsi은 대략 건물을 생각하는 앱이라고 생각합니다. OTR을 통한 암호화 된 텍스트 채팅과 키 협상을위한 ZRTPSRTP을 통한 암호화 된 음성 및 영상 채팅. 일반적으로 암호화 프로토콜 설계는 매우 어렵 기 때문에 자신의 응용 프로그램을 작성하려면 이러한 프로토콜과이를 수행하는 라이브러리를 사용해야합니다.

암호를 변경하지 않으려면 암호에서 키를 직접 파생 할 수 없습니다. 대신, 암호 (PKBDF2 또는 scrypt라고 말하면 됨)에서 파생 된 키로 암호화 된 (대칭 적으로) 서버에 키를 저장합니다. 사용자가 암호를 변경하면 기존 키로 파생 된 키로 암호를 해독하고 새 키로 암호를 다시 암호화합니다.

일반적으로 사용자가 어디에서나 로그온 할 수있는 웹 응용 프로그램 유형 솔루션을 사용하지 않는 한 일반적으로 그다지 중요하지 않습니다. 그것은 실제로 매우 나쁜 생각입니다. cryptocat의 자바 스크립트 기반 구현에 대한 비판을 참조하십시오. here.