초안전 채팅
6112 단어 discussgoopensourcesecurity
뭐 하는지 알아요.
너는 또 누가 너의 채팅 정보를 읽을 능력이 있는지 생각해 본 적이 있니?누가 너의 장난꾸러기 사진과 네가 친구에게 보낸 재미없는 모인을 볼 수 있니?
지역 사회를 개발하고 있기 때문에 놀라지 않을 것이다. 그러나 너는 유일한 사람이 아니다.
특히 왓츠앱, 인스타그램 또는 다른 회사에서 제공하는 서비스를 사용한다면.
문제.
비록 나는 이 모든 것을 알고 있지만, 나는 누가 감히 더 안전한 사신으로 바꿀 수 있는지 모른다. (적어도 뭘 숨길 수 있는 사람은 없다.)이 모든 대신사들은 매우 편안하다.네가 어떤 프로그램을 설치하기만 하면 연락처는messenger를 자동으로 가져올 것이다. 너는 언제든지 너의 친구, 가족 (조부모 포함) 등에게 메시지를 보낼 수 있다.
지구상에서 거의 모든 사람들이 사신을 사용하고 있다. 그를 통해 연락할 수 있다. 이런 위로는 재난으로 전환될 뿐이다.신호나 전보를 사용하는 것보다 편안함을 느낄 수 있기 때문에 이 블로그를 통해 모든 것이 바뀌지 않을 것이다.
그래서...이거 뭐야?
이것은 mylatest chat concept named asfaleia(그리스어에서 안전을 나타내는 단어)의 간략한 개술이다.이것은 서버에 어떤 데이터도 저장하지 않으며 클라이언트는 공공 키와 관련된 개인 키로만 인증합니다.RoyalZSoftware에서 개발한 프로젝트 자체가 아직 완료되지 않았습니다.내 말은, 그것은 두 부분으로 구성된 빠른 개발 단계에 있다.그래서 만약 당신이 이러한 개념을 이해하고 이 프로젝트에서 일하고 싶다면 마음대로 이렇게 하세요
github.com/royalzsoftware/asfaleia
본고는 나의 채팅 아이디어의 기본 개념을 소개하고 데이터 패키지에 대해 더욱 깊이 있게 설명할 것이다.여기에는 많은 가능한 증강 기능이 있는데, 특히 인터넷 부분에서는 (나는 이 화제에 대해 매우 익숙하기 때문에), 우리 깊이 토론합시다.
장군
asfaleia에서 사용하는 서버는 go로 작성된 간단한 TCP 서버입니다.지금 몇 줄밖에 없어요.
l, err := net.Listen("tcp4", "0.0.0.0:3308")
if err != nil {
fmt.Println(err)
return
}
defer l.Close()
for {
c, err := l.Accept()
if err != nil {
fmt.Println(err)
return
}
go handleConnection(c)
}
새 라인에서 handleConnection(c)
함수를 호출하여 모든 클라이언트를 동시에 처리합니다.아직 개발되지 않았지만 계획 중인 것은
Message
구조로 메시지 하나, receiver와 하나sender를 포함한다.소통 자체와 연락처?
인증
이 프로토콜은 ssh 키 쌍을 사용하여 신분을 검증합니다.지금 서버에 당신이 이 '공개 키' 라는 것을 알리기 위해서 클라이언트는 서버에 공개 키가 있는 인증 패키지를 보냅니다.
그리고 서버에서 무작위 문자열을 생성한 다음 보내는 키로 암호화합니다.
이 절차를 완료하면 서버는 다음과 같이 핸들이 있는 암호화 메시지를 포함하는 응답 패키지를 보냅니다.
# Client sends following
0;MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1DGPUSPqPJdcWvdBNM5ymAQlKIXbLMa3X4D0JaBKKqv47w4ii3sLw2lckEHk+8LGyBNkbQN0aaVxWeuo4R7IsBMXVpJgvf/iQImRm5b9HIxkAYi5PqYGcHKBqiuzuHmpPlGYdGpM+hK5EeWiDj/sRVcP42KyYzGmd6ExbqaWMewIDAQAB
# Server sends back following
1;1238013;aMbZ55lweKk7+grkGQhzZHkl2Jt6cjKxzmnQ+gq6ydsYzs1830JqNgcZzbTsHI9hSOvuii6AXwF0WY6WnHnKsANDdC+mTDcvz51D2eiwt27xEK5N2toiJ0bE4SJcf25vtTi9hKH3D/xVpdEzXcH3vMNiB4UKl410eF33PijI4Ws=
이 중 두 개의 패키지0
또는 1
대표packet identifier
.1
로 시작하는 서버 응답 예에서 ;
뒤에 있는 두 번째 매개 변수는 클라이언트가 나중에 보낼 AuthVerifyPacket에서 전달해야 하는 핸들입니다.마지막 필드는 암호화 메시지 (이 예에서는 일반적인 Hello World
base64 인코딩일 뿐입니다.이 메시지를 받은 후 클라이언트에서 AuthVerifyPacket을 보냅니다.
2;12380138;Hello World
만약 이것이 작용한다면, 클라이언트는 그의 신분을 검증하기 위해 jwt auth 영패를 받을 것이다. 잠시 후에 그는 이 영패를 모든 요청에 전달해야 한다.발신인
그런데 채팅방에서 발송자와 수신자가 어떻게 익명일 수 있습니까?기술적으로 말하자면, 그들은 할 수 있지만, 이것은 그들이 이 프로그램을 사용하는 방식에 달려 있다는 것을 확신할 수 있다.만약 당신이 어떤 채팅 정보를 통해 자신을 식별한다면, 당신은 익명을 할 수 없다.
프로토콜 자체는 ssh 키 쌍을 사용하여 그들의 신분을 검증합니다.대화 파트너는 현재 수신자의 ssh 키를 사용하여 메시지를 암호화하고 서버에 다음과 같은 내용을 포함하는 패키지를 보낼 수 있습니다.
수용자
수신기는 GET 패키지를 보내서 2차원 그룹에 저장된 모든
Message[]
메시지를 되돌려줍니다.서버가 이 메시지를 보내면, 이 메시지들은 진열에서 삭제되어, 무엇을 보냈는지 아무도 모른다.결점
디스크에 저장된 데이터가 없는 것은 안전하지만, 채팅 기록이 없으면 스크롤하거나 다른 관련 내용을 볼 수 있다는 뜻이다.
그 밖에 연락처만 쓸 수 없고, 그의 완전한 키가 필요하며, 전송이 필요하다.
결론
모바일 응용 프로그램에는 사용되지 않지만, 숨겨진 서비스에 사용될 수도 있습니다.만약 당신이 이런 방법을 좋아하고 개발을 돕고 싶다면 마음대로 하세요GitHub.
당신은 당신의 프라이버시를 얼마나 중시합니까?메모 남겨주세요!
Reference
이 문제에 관하여(초안전 채팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ijustdev/the-ultra-secure-chat-kmb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)