간단한 암호화 된 웹 채팅. Socket.io로 구동되는 Web Cryptography API. 이 프로젝트는 클라이언트 측 암호화의 작동 방식과 채팅 서비스로 통합하는 방법의 예입니다.
Darkwire Server는 Node.js 응용 프로그램입니다.
DarkWire.io 웹 클라이언트는 React JS 및 Redux와 함께 JavaScript로 작성되었습니다.
.env.dist 파일을 server/ 및 client/ 디렉토리의 .dist 확장자없이 복사하여 필요에 맞게 조정하십시오.
LocalHost 및 HTTPS 연결 뒤에만 액세스 할 수있는 Crypto Browser API를 사용하기 때문에 Darkwire가 작동하려면 HTTPS 연결이 있어야합니다.
NVM을 사용 하여이 명령을 사용하여 올바른 버전의 노드를 설치할 수 있습니다.
nvm install # If the right node version is not already installed
nvm use
npm install yarn -g # To install yarn
종속성을 설치하십시오
$ yarn
서버와 클라이언트를 시작하십시오
$ yarn setup
$ yarn dev
다음을 실행합니다.
$ docker-compose up
이렇게하면 기본 .env 파일이 자동으로 생성됩니다.
서버 및 클라이언트 프로덕션 빌드를 만듭니다
$ yarn build
서버를 시작하십시오
$ yarn start
빌드하십시오.
$ docker build --tag darkwire.io:latest .
그런 다음 실행하십시오. 예:
$ docker run --init --name darkwire.io --rm -p 3001:3001 darkwire.io
server/.env.dist 및 client/.env.dist 에서 사용 가능한 모든 환경 변수를 사용할 수 있습니다. 기본값은 DockerFile에서 사용할 수 있습니다
보안 문제를 [email protected] 에보고하십시오.
Darkwire는 보안을 위해 비대칭 암호화 (RSA-OAEP), 대칭 세션 키 (AES-CBC) 및 서명 키 (HMAC)의 조합을 사용합니다.
다음은 Alice와 Bob 간의 채팅에 대한 개요입니다 (그룹 채팅에도 적용 됨).
5 단계에서는 모든 사람의 공개 키로 키를 암호화하기 때문에 그룹 채팅은 같은 방식으로 작동합니다. 메시지가 전송되면 방에있는 모든 사람을위한 암호화 된 키가 포함되며 수신자는 사용자 ID를 기반으로 그들을 위해 선택합니다.
Darkwire는 당신이 의사 소통하는 사람이 당신이 생각하는 사람이라는 보장을 제공하지 않습니다. 인증 기능은 향후 버전으로 통합 될 수 있습니다.
Darkwire는 BTOA를 사용하여 문서를 Base64로 인코딩하고 채팅 메시지와 같은 방식으로 암호화됩니다.
기본 전송 가능 파일 크기 제한은 4MB이지만 REACT_APP_MAX_FILE_SIZE 변수를 사용하여 .env 파일에서 변경할 수 있습니다.
Darkwire는 Socket.io를 사용하여 Secure Websockets (WSS)를 사용하여 암호화 된 정보를 전송합니다.
모든 참가자가 떠날 때까지 객실은 서버에 메모리에 저장되며, 그 시점에서 객실은 파괴됩니다. 공개 키만이 방의 수명 기간 동안 서버 메모리에 저장됩니다.
채팅 기록은 각 참가자의 브라우저에 저장되므로 창을 닫을 때 (사용자를 위해) 효과적으로 지워집니다.