diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..ba80528 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,11 @@ +type: docker +kind: pipeline +name: unit + + +steps: +- name: test + image: golang + commands: + - go test + - go build diff --git a/asymcrypt_test.go b/asymcrypt_test.go index e210860..002fa7d 100644 --- a/asymcrypt_test.go +++ b/asymcrypt_test.go @@ -4,7 +4,6 @@ import ( "encoding/base64" "fmt" "log" - "os" "testing" "github.com/stretchr/testify/assert" @@ -122,6 +121,7 @@ func TestFlutterCompat(t *testing.T) { } +/* func TestFlutterDecode(t *testing.T) { pub, err := os.ReadFile("/home/yves/Documents/code/flutter/meowlib/pub.key") if err != nil { @@ -179,3 +179,4 @@ func TestFlutterEncode(t *testing.T) { println(base64.StdEncoding.EncodeToString(pub)) } +*/ diff --git a/client/identity.go b/client/identity.go index baff818..f1b8354 100644 --- a/client/identity.go +++ b/client/identity.go @@ -3,13 +3,17 @@ package client import ( "encoding/json" "errors" + "math/rand" "os" + "time" "forge.redroom.link/yves/meowlib" "github.com/ProtonMail/gopenpgp/v2/helper" "github.com/google/uuid" ) +const maxHiddenCount = 30 + type Identity struct { Nickname string `json:"nickname,omitempty"` RootKp meowlib.KeyPair `json:"id_kp,omitempty"` @@ -34,6 +38,7 @@ func CreateIdentity(nickname string) *Identity { id.Nickname = nickname id.RootKp = meowlib.NewKeyPair() GetConfig().me = &id + id.generateRandomHiddenStuff() return &id } @@ -159,3 +164,54 @@ func (id *Identity) TryUnlockHidden(password string) error { } return errors.New("no peer found") } + +func (id *Identity) HidePeer(peerIdx int, password string) error { + serializedPeer, err := json.Marshal(id.Peers[peerIdx]) + if err != nil { + return err + } + encrypted, err := meowlib.SymEncrypt(password, serializedPeer) + if err != nil { + return err + } + // add encrypted peer data + id.HiddenPeers = append(id.HiddenPeers, encrypted) + // remove clear text peer + id.Peers = append(id.Peers[:peerIdx], id.Peers[peerIdx+1:]...) + return nil +} + +func (id *Identity) generateRandomHiddenStuff() { + rand.Seed(time.Now().UnixNano()) + count := rand.Intn(maxHiddenCount) + 1 + for i := 1; i < count; i++ { + var p Peer + p.Name = randomLenString(4, 20) + p.MyEncryptionKp = meowlib.NewKeyPair() + p.MyIdentity = meowlib.NewKeyPair() + p.MyLookupKp = meowlib.NewKeyPair() + p.Contact.Name = randomLenString(4, 20) + p.Contact.ContactPublicKey = p.MyLookupKp.Public + p.Contact.EncryptionPublicKey = p.MyIdentity.Public + p.Contact.LookupPublicKey = p.MyEncryptionKp.Public + p.Contact.AddUrls([]string{randomLenString(14, 60), randomLenString(14, 60)}) + id.Peers = append(id.Peers, p) + id.HidePeer(0, randomLenString(8, 14)) + // TODO Add conversations + } +} + +func randomLenString(min int, max int) string { + rand.Seed(time.Now().UnixNano()) + n := rand.Intn(max-min) + min + return randomString(n) +} + +func randomString(n int) string { + var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") + s := make([]rune, n) + for i := range s { + s[i] = letters[rand.Intn(len(letters))] + } + return string(s) +} diff --git a/client/identity_test.go b/client/identity_test.go index 1eb5733..ab1bbe1 100644 --- a/client/identity_test.go +++ b/client/identity_test.go @@ -5,6 +5,7 @@ import ( "os" "testing" + "forge.redroom.link/yves/meowlib" "github.com/stretchr/testify/assert" ) @@ -38,6 +39,26 @@ func TestLoad(t *testing.T) { } } -func TestCreate(t *testing.T) { - +func TestHidePeer(t *testing.T) { + id := CreateIdentity("myname") + id.Save() + var p Peer + p.Name = "testName" + p.MyEncryptionKp = meowlib.NewKeyPair() + p.MyIdentity = meowlib.NewKeyPair() + p.MyLookupKp = meowlib.NewKeyPair() + p.Contact.Name = "foo" + p.Contact.ContactPublicKey = p.MyLookupKp.Public + p.Contact.EncryptionPublicKey = p.MyIdentity.Public + p.Contact.LookupPublicKey = p.MyEncryptionKp.Public + p.Contact.AddUrls([]string{"http:/127.0.0.1/meow", "tcp://localhost:1234"}) + id.Peers = append(id.Peers, p) + assert.Equal(t, len(id.Peers), 1) + h := len(id.HiddenPeers) + id.HidePeer(0, "mypassword") + assert.Equal(t, len(id.Peers), 0) + assert.Equal(t, len(id.HiddenPeers), h+1) + id.TryUnlockHidden("mypassword") + assert.Equal(t, len(id.unlockedHiddenPeers), 1) + assert.Equal(t, id.unlockedHiddenPeers[0].Name, p.Name) } diff --git a/client/test.id b/client/test.id new file mode 100644 index 0000000..6e01ebb --- /dev/null +++ b/client/test.id @@ -0,0 +1,806 @@ +-----BEGIN PGP MESSAGE----- +Version: GopenPGP 2.2.4 +Comment: https://gopenpgp.org + +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 +ePZWynJ8wD0EwVkESwY= +=BeHw +-----END PGP MESSAGE----- \ No newline at end of file diff --git a/doc/protocol.tex b/doc/protocol.tex index 461c8b0..7ad0b13 100644 --- a/doc/protocol.tex +++ b/doc/protocol.tex @@ -43,7 +43,7 @@ The server requires very few ressources and will run on any low cost single boar \textffm{Meow} also provides an anonymizing transfer service very similar to the Tor Onion protocol, we call it the Matriochka protocol. Any server can be used for building the transfer chain. Some of them might be marked as trusted. -Random delays might be set for each forwarding step, making the overall message tracking much more difficult, even with a global network audit. +Random delays might be set for each forwarding step, making the overall message tracking much more difficult, even with a global network survey. It is strongly advised to use trusted servers as your first node and message server (the one that holds your incoming messages). \subsubsection{Presence protocol for direct messaging} @@ -60,14 +60,14 @@ You might define specific communication privacy preferences for each of your con \item ... \end{itemize} -\subsubsection{Resistance to device requisition} +\subsubsection{Resistance to device requisition / forensic} All your contact information and discussion are encrypted on the device and password protected. Password shall be asked on application startup and allows your identity file and contact decrytion. That password is not recoverable, so you can't forget it, or you'll loose your whole configuration and identity. Real security implies some constraints. You might configure the app to save your password, but that is a security flaw. In many authoritarian countries, you are required by law to provide your device passwords to authorities. -In a \textffm{Meow} device, you might set a special password for specific contacts. +In a \textffm{Meow} device, you might set a specific password for some contacts. Those contacts won't be visible when entering your main identity password. You'll have to type their specific password in order to make them visible. The \textffm{Meow} application will by default create a random set of fake hidden contacts and conversations. @@ -80,9 +80,9 @@ As every \textffm{Meow} user has the same constraint, users are not responsible A device might be revoqued anytime from any other one. Proof of your identity (password or other) shall be provided in order to grant device revocation. \subsection{Adding contacts} -If you want to add a new contact, keys and uuids will be generated, then a rendez-vous card will be created. -That rendez-vous card might be sent by any trustable communication means, or preferably from hand to hand, as a file on a flash disk or a QR code.\\ -In return your contact will provide the exact same data, encrypted with your public key and delivered to the address specified in the initial rendez-vous card. +If you want to add a new contact, keys will be generated, then a contact card will be created. +That contact card might be sent by any trustable communication means, or preferably from hand to hand, as a file on a flash disk or a QR code.\\ +In return your contact will provide a similar contact card as an answer to your invitation. \subsection{Contacts forwarding} By using the \textffm{Meow} protocol a user won't be able to forward your contact information without your consent. @@ -102,14 +102,14 @@ A local (server based) emergency broadcast service will be provided. It will pro \subsection{User directory service} -This service allows to restore a lost functionality of Internet historic chat services (like ICQ). You could simply set a "Free for chat" status that would allow other people to contact you, either randomly or based on a short description that you might provide. +This service allows restoring a lost functionality of Internet historic chat services (like ICQ). You could simply set a "Free for chat" status that would allow other people to contact you, either randomly or based on a short description that you might provide. Why providing that service while the internet is suffocating due to the abundance of social networks ?\\ Well, that option offers a few advantages : \begin{itemize} \item you are still an anonymous user chatting with other anonymous users; \item no social network algorithm will select people that think/behave/vote/eat... just like you. Diversity makes a better world; \item a smaller community of users, skilled enough to operate a \textffm{Meow} chat app... that might provide a first filter; - It's a bit like in the old times, when people had to be able to start a win98 computer, connect it to internet, then download and install ICQ... + It's a bit like in the early ages, when people had to be able to start a win98 computer, connect it to internet, then download and install ICQ... If you lost some time in social networks, and experienced ICQ in the 2000's, you'll understand. \end{itemize} diff --git a/endtoend_test.go b/endtoend_test.go index 3e95fa8..51298e2 100644 --- a/endtoend_test.go +++ b/endtoend_test.go @@ -178,11 +178,11 @@ func TestEndToEnd(t *testing.T) { // user unpack // user decrypt - decMess, err2 := MyFirstFriend.AsymDecryptMessage([]byte(enc.Data), enc.Signature) + /*decMess, err2 := MyFirstFriend.AsymDecryptMessage([]byte(enc.Data), enc.Signature) if err2 != nil { fmt.Println(err2.Error()) } - fmt.Println(decMess) + fmt.Println(decMess)*/ // user decode protobuf }