X :/Chat은 프론트 엔드에서 HTML, CSS 및 JavaScript를 사용하고 백엔드에서 node.js를 사용하는 웹 응용 프로그램입니다. 이를 통해 사용자는 안전한 방식으로 서로 통신 할 수 있습니다 (Node.js를 처음 사용하고 보안을 보장 할 수는 없습니다).
JavaScript 및 로컬 스토리지는 웹 앱이 작동하기 위해 절대적으로 필수적 입니다. 로컬 스토리지는 공개 키, 개인 키, 설정 등을 더 많이 저장하는 데 사용됩니다.
"익명 채팅"기능을 사용하는 경우 서버에서 저장되지 않습니다. 나는 내가 생각할 수있는 가장 안전한 형태의 커뮤니케이션을 만들고 싶었고, 익명 채팅을 통해 대화 로그를 저장하지 않기로 선택했습니다. "익명 채팅"버튼을 클릭하면 공개 키 및 개인 키와 함께 ID가 생성되는 "/익명"으로 리디렉션됩니다. 이들은 브라우저 (로컬 스토리지)에만 저장됩니다. 서버는이 정보를 저장하지 않습니다. 서버가 저장하는 유일한 것은 대화 ID와 생성 시간입니다. 이것은 한 시간 후에 대화가 만료 될 수 있도록 이루어집니다. 로드가 완료되면 원하는 사람에게 URL을 보내고 연결하도록 할 수 있습니다. 일단 그들이 그렇게하면, 그들은 또한 그들을 위해 공개/개인 키 쌍을 생성하고 ID를 얻습니다. 그런 다음 공개 키와 신분증이 제공됩니다. 메시지를 보낼 때 RSA-2048 공개 키를 사용하여 메시지를 암호화 한 다음 개인 키를 사용하여 (로컬) 옆에 해독합니다. 메시지가 클라이언트 측에서 암호화되므로 서버는 말하는 내용을 결코 알지 못합니다. 페이지를 새로 고침하면 메시지가 어디에도 저장되지 않으므로 새로 고침 된 사람의 메시지가 삭제됩니다. 그러나 서버에 아무것도 저장되지 않기 때문에 사용자가 ID를 쉽게 변경할 수 있다는 것을 의미합니다. 따라서이 프로젝트는 일반 대중이 아닌 소규모 그룹이 사용하도록 만들었습니다. 서버 스토어에 익명 대화를하면 사용자가 대화가 불변의 이점을 얻을 수 있지만 서버가 수정할 수 있고 로그가 존재한다는 의미입니다. 그렇다면 친구 나 임의의 서버를 신뢰 하시겠습니까?
일반 채팅은 일반 채팅 응용 프로그램과 비슷합니다. 메시지는 여전히 RSA-2048을 사용하여 클라이언트 측에서 암호화되어 있으며 사용자의 개인 키는 AES-256-CTR로 암호화되어 사용자 비밀번호의 SHA512 해시를 해독 키로 사용합니다. 사용자의 비밀번호는 10 개의 소금 라운드와 함께 Bcrypt를 사용하여 저장됩니다. 요컨대, 서버 코드가 수정되거나 사용자의 개인 키를 캡처 할 수있는 것이 아니라면 대화 내용을 얻을 방법이 전혀 없습니다. 사용자의 설정, 연락처 및 기타 데이터는 텍스트 파일의 JSON 형식으로 저장되어 쉽게 액세스 할 수 있습니다. 이들은 일반 텍스트로 저장되지만 사용자의 암호와 AES로 암호화하기가 쉽습니다. 현실을 만들고 싶다면 이미 더 쉽게 만들기 위해 작성된 기능이 있다는 것을 기억하십시오. 원하는 것을 쉽게 암호화/암호화하기 위해 작성한 "aes_encrypt (plaintext, password)"및 "aes_decrypt (암호화, 암호)"기능을 사용할 수 있습니다.
몇 가지 버그 나 예상치 못한 행동이있을 수 있지만, 이것은 결국 첫 번째 Node.js 프로젝트입니다. 앱을 끊으려고하면 성공할 것입니다. 유효성 검사 검사는 많지 않으며 원하는 것과 같이 사용자의 계정과 대화를 보호하기에 충분합니다. 그래도 잘못되면 미리 사과드립니다.