Skip to content

ngFish - Hexchat OTR encryption plugin using Twofish in CBC mode

License

Notifications You must be signed in to change notification settings

hexchat-ngfish/ngfish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ngFish

ngFish is a Hexchat plugin that provides OTR encryption using Twofish in CBC mode.

Advantages over FiSHLiM bundled into HexChat:

  • Twofish-CBC instead of Blowfish-ECB
  • 256-bit key using SHA2
  • Solid against common cryptanalysis
  • We do not reimplement cryptography
  • No bug relatively large utf-8 messages using non-latin characters.
  • Any size data will be transmitted consistently without garbling.

Quick comparisson

Improved cryptanalysis resistance

Weak using FiSHLiM:

user1 computer:

<user1> Hello
<user1> Hello
<user1> Hello
<user1> Hi
<user1> Hi
<user1> The quick brown fox jumps over the lazy dog
<user1> The quick brown fox jumps over the lazy dog

user2 computer (no key):

<user1> +OK pAsQN1QWoa2/
<user1> +OK pAsQN1QWoa2/
<user1> +OK pAsQN1QWoa2/
<user1> +OK 87IfN1w/vhE.
<user1> +OK 87IfN1w/vhE.
<user1> +OK f6yNE0ePcjK/sSs8T.rPP.j/RBLPp0YsLKR0iBX1m1hVFXg1Osi5c1M4yyj1Pknw./SB5Ic/
<user1> +OK f6yNE0ePcjK/sSs8T.rPP.j/RBLPp0YsLKR0iBX1m1hVFXg1Osi5c1M4yyj1Pknw./SB5Ic/

Strong using ngFish:

user1 computer:

<user1> Hello
<user1> Hello
<user1> Hello
<user1> Hi
<user1> Hi
<user1> The quick brown fox jumps over the lazy dog
<user1> The quick brown fox jumps over the lazy dog

user2 computer (no key):

<user1> +ОK dg5zYop37XT77CW4YSi2vGSO2ibbwIZSWx4h5gW9DTc
<user1> +ОK uJ7xcOaM9eWkW8eVdnj18T/AzLRtF4wqfXU3K+o6Xdw
<user1> +ОK mHUtOQzznqlHJGE0loAPdOLqjh7XVYOnGoHm1H9VDSQ
<user1> +ОK HWmMJcOdY07IGebJ+7VA0FUG3OGeIqQC36hMEBwV+K8
<user1> +ОK 4TBQJU7i1FfprAQf2D5tLTRdRWRpcJmGxvfHWbz1Y4Y
<user1> +ОK /FfhwRGOSX1c3b86+RAcgB6f5jGzsahtYPJjG4BnyaFrrLMAORhCyFVUjbc/1uo32wmb8njrJ7ma\zWfZH2ogHA
<user1> +ОK Ec7ptBikfqyNLyyl1wZdZilfuIVOLWKx0beHTl6jWl5jDKKYRSKPWPGbn9t4e1Y79oiC0bLY3OMX\bK+P+5H0Gw

Proper message length handling & No data corruption

Corrupted using FiSHLiM:

user1 computer:

<user1> Дотогава единствената сериозна алтернатива за нетехнически потребители е било KDE. Но KDE е базирано на Qt библиотеките на Trolltech – софтуер, който не ползва лиценз за свободен софтуер и е несъвместим с GNU General Public License (GPL). Този проблем е частично решен с освобождаването на Qt под Q Public License (QPL) – лиценз за свободен софтуер, но все още несъвместим с GPL; и накрая е решено Qt да бъде реализиран и под QPL и под GPL. Подход, известен като двоен лиценз.

user2 computer:

<user1> Дотогава единствената сериозна алтернатива за нетехнически потребители е било KDE. Но KDE е базирано на Qt библиотеките на Trolltech – софтуер, който не ползва лиценз за 

Consistent using ngFish:

user1 computer:

<user1> Дотогава единствената сериозна алтернатива за нетехнически потребители е било KDE. Но KDE е базирано на Qt библиотеките на Trolltech – софтуер, който не ползва лиценз за свободен софтуер и е несъвместим с GNU General Public License (GPL). Този проблем е частично решен с освобождаването на Qt под Q Public License (QPL) – лиценз за свободен софтуер, но все още несъвместим с GPL; и накрая е решено Qt да бъде реализиран и под QPL и под GPL. Подход, известен като двоен лиценз.

user2 computer:

<user1> Дотогава единствената сериозна алтернатива за нетехнически потребители е било KDE. Но KDE е базирано на Qt библиотеките на Trolltech – софтуер, който не ползва 
<user1> лиценз за свободен софтуер и е несъвместим с GNU General Public License (GPL). Този проблем е частично решен с освобождаването на Qt под Q Public License (QPL)
<user1>  – лиценз за свободен софтуер, но все още несъвместим с GPL; и накрая е решено Qt да бъде реализиран и под QPL и под GPL. Подход, известен като двоен лиценз.

Commands & Usage

Command Description
setkey [<nick or #channel>] <password> sets the key for a channel or nick
delkey <nick or #channel> deletes the key for a channel or nick
notice+ <nick or #channel> <notice> sends an encrypted notice to a channel or nick
msg+ <nick or #channel> <message> sends an encrypted message to a channel or nick
me <message> sends an encrypted action if the key is present in the current context
topic+ <topic> sets a new encrypted topic for the current channel

Every above command should be prefixed with '/ng' when the FiSHLiM plugin is present (compatibility mode)

It is strongly recommended to change the config encryption password upon first usage, find it here:

# config encryption password encoded in hex, you must change it before the first use
	CP => '0344ed6c3830fbe3f292ca8f82df',

Fast dependencies (Crypt::Twofish, Crypt::CBC)

-- Debian/Ubuntu:

# apt install libcrypt-twofish-perl libcrypt-cbc-perl 

-- RHEL/CentOS:

# yum install perl-Crypt-Twofish perl-Crypt-CBC 

-- CPAN (no root required)

$ cpan -i Crypt::Twofish Crypt::CBC

About

ngFish - Hexchat OTR encryption plugin using Twofish in CBC mode

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages