Merged silc_1_0_branch to trunk.
[silc.git] / doc / FAQ
1    Frequently Asked Questions
2
3    1. General Questions
4         1.1 What is SILC?
5         1.2 When was SILC Project started?
6         1.3 Why SILC in the first place?
7         1.4 What license covers the SILC release?
8         1.5 Why SILC? Why not IRC3?
9         1.6 What platforms SILC supports?
10         1.7 How do you pronounce SILC?
11         1.8 Where can I find more information?
12         1.9 I would like to help out, what can I do?
13
14    2. Protocol Questions
15         2.1 What is the status of SILC protocol in the IETF?
16         2.2 How much the SILC protocol is based on IRC?
17         2.3 Why use SILC? Why not IRC with SSL?
18         2.4 Can I talk from SILC network to IRC network?
19         2.5 Does SILC support file transfer?
20         2.6 Does SILC support DCC or alike?
21         2.7 I am behind a firewall, can I use SILC?
22         2.8 How secure SILC really is?
23         2.9 Does SILC support instant messaging?
24         2.10 Why SILC does not have LINKS command like in IRC?
25         2.11 What does the session detaching/resuming mean?
26         2.12 Is anyone outside a channel able to see the channel
27    messages?
28         2.13 How can I register my channel in SILC?
29         2.14 Is it true that all messages are encrypted in SILC?
30         2.15 Can server or SILC operator gain operator mode on a channel?
31         2.16 Channel name doesn't have #-character or does it?
32         2.17 Does SILC support moderated channels?
33         2.18 What does the "watching" mean?
34         2.19 Is it possible to reject watching?
35         2.20 Is it possible to block private messages?
36         2.21 Is it possible to block channel messages?
37         2.22 Is it possible to block invites?
38         2.23 Does SILC support multimedia messages, like video/audio
39    streaming?
40         2.24 What kind of presence modes SILC support?
41         2.25 Does SILC support anonymity?
42         2.26 Does SILC support services?
43         2.27 I have suggestions to SILC Protocol, what can I do?
44
45    3. Client Questions
46         3.1 Where can I find SILC clients?
47         3.2 Can I use SILC with IRC client and vice versa?
48         3.3 The default theme sucks, where can I find a better one?
49         3.4 How do I send a private message?
50         3.5 How do I negotiate secret key with another user?
51         3.6 How do I negotiate secret keys behind a NAT?
52         3.7 How do I change channel modes?
53         3.8 What does the founder mode on channel mean, and how do I set
54    it?
55         3.9 I am founder of invite only channel, how can I join the
56    channel after I have left it?
57         3.10 How can I op or deop somebody on channel?
58         3.11 How do I set private key for channel, and what does that
59    mean exactly?
60         3.12 How do I transfer a file?
61         3.13 How can I get other users public keys?
62         3.14 How can I see the fingerprint of my public key?
63         3.15 I gave WHOIS to a nick, and it returned multiple replies,
64    why?
65         3.16 Is there a command to see all linked servers?
66         3.17 How do I list the users of a channel?
67         3.18 What is the difference between OPER and SILCOPER commands?
68         3.19 My Cygwin client crashes with message "Couldn't create
69    //.silc directory"
70         3.20 Why /join #silc and /join silc doesn't join the same
71    channel?
72         3.21 How do I detach my session from the server?
73
74    4. Server Questions
75         4.1 Where can I find SILC servers?
76         4.2 Can I run my own SILC server?
77         4.3 What is the difference between SILC server and SILC router?
78         4.4 Why server says permission denied to write to a log file?
79         4.5 When I connect to to my server, it says "server does not
80    support one of your proposed cipher", what is wrong?
81         4.6 Why SILC server runs on privileged port 706?
82         4.7 I see [Unknown] in the log file, what does it mean?
83         4.8 How can I generate a new server key pair?
84
85    5. Toolkit Questions
86         5.1 What is SILC Toolkit?
87         5.2 Is the SILC Toolkit Reference Manual Available?
88         5.3 How do I compile the Toolkit on Unix?
89         5.4 How do I compile the Toolkit on Win32?
90         5.5 Does the Toolkit package include any sample code?
91
92    1. General Questions
93
94    Q: What is SILC?
95    A: SILC (Secure Internet Live Conferencing) is a protocol which
96    provides secure conferencing services in the Internet over insecure
97    channel. SILC is IRC like although internally they are very different.
98    Biggest similarity between SILC and IRC is that they both provide
99    conferencing services and that SILC has almost same commands as IRC.
100    Other than that they are nothing alike.
101
102    Biggest differences are that SILC is secure what IRC is not in any
103    way. The network model is also entirely different compared to IRC.
104
105    Q: When was SILC Project started?
106    A: The SILC development started in 1996 and early 1997. But, for
107    various reasons it suspended many times until it finally got some wind
108    under its wings in 1999. First public release was in summer 2000.
109
110    Q: Why SILC in the first place?
111    A: Simply for fun, nothing more. And actually for need back in the
112    days when it was started. When SILC was first developed there really
113    did not exist anything like this. SILC has been very interesting and
114    educational project.
115
116    Q: What license covers the SILC release?
117    A: The SILC software developed here at silcnet.org, the SILC Client,
118    the SILC Server and the SILC Toolkit are covered by the GNU General
119    Public License.
120
121    Q: Why SILC? Why not IRC3?
122    A: Question that is justified no doubt of that. SILC was not started
123    to become a replacement for IRC. SILC was something that didn't exist
124    in 1996 or even today except that SILC is now released. However, I did
125    check out the IRC3 project in 1997 when I started coding and planning
126    the SILC protocol.
127
128    But, IRC3 is problematic. Why? Because it still doesn't exist. The
129    project is almost at the same spot where it was in 1997 when I checked
130    it out. And it was old project back then as well. That's the problem
131    of IRC3 project. The same almost happened to SILC as well as I wasn't
132    making real progress over the years. I talked to the original author
133    of IRC, Jarkko Oikarinen, in 1997 and he directed me to the IRC3
134    project, although he said that IRC3 is a lot of talking and not that
135    much of anything else. I am not trying to put down the IRC3 project
136    but its problem is that no one in the project is able to make a
137    decision what is the best way to go about making the IRC3 and I wasn't
138    going to be part of that. The fact is that if I would've gone to IRC3
139    project, nor IRC3 or SILC would exist today. I think IRC3 could be
140    something really great if they just would get their act together and
141    start coding the thing.
142
143    Q: What platforms SILC supports?
144    A: The SILC Client is available on various Unix systems and is
145    reported to work under cygwin on Windows. The SILC Server also works
146    on various Unix systems. However, the server has not been tested under
147    cygwin as far as we know. The SILC Toolkit is distributed for all
148    platforms, Unix, Cygwin and native Windows.
149
150    Q: How do you pronounce SILC?
151    A: SILC is usually pronounced as `silk', but you are free to pronounce
152    it the way you want.
153
154    Q: Where can I find more information?
155    A: For more technical information we suggest reading the SILC Protocol
156    specifications. You might also want to take a look at the
157    documentation page on the web page.
158
159    Q: I would like to help out, what can I do?
160    A: You might want to take a look at the Contributing page and the TODO
161    list. You might also want to join the SILC development mailing list.
162
163    2. Protocol Questions
164
165    Q: What is the status of SILC protocol in the IETF?
166    A: The SILC protocol specifications has been submitted currently as
167    individual submissions. There does not currently exist a working group
168    for this sort of project. Our goal is to fully standardize the SILC
169    and thus submit it as RFC to the IETF at a later time. This can happen
170    only after we have requested the IETF to accept SILC as RFC. As of
171    today, we have not yet even requested this from the IETF. We want to
172    let the protocol mature a bit more.
173
174    Q: How much SILC Protocol is based on IRC?
175    A: SILC is not based on IRC. The client superficially resembles IRC
176    client but everything that happens under the hood is nothing alike
177    IRC. SILC could *never* support IRC because the entire network
178    toppology is different (hopefully more scalable and powerful). So no,
179    SILC protocol (client or server) is not based on IRC. Instead, We've
180    taken good things from IRC and left all the bad things behind and not
181    even tried to burden the SILC with the IRCs problems that will burden
182    IRC and future IRC projects till the end. SILC client resembles IRC
183    client because it is easier for new users to start using SILC when
184    they already know all the commands.
185
186    Q: Why use SILC? Why not IRC with SSL?
187    A: Sure, that is possible, although, does that secure the entire IRC
188    network? And does that increase or decrease the lags and splits in the
189    IRC network? Does that provide user based security where some specific
190    private message are secured? Does that provide security where some
191    specific channel messages are secured? And I know, you can answer yes
192    to some of these questions. But, security is not just about applying
193    encryption to traffic and SILC is not just about `encrypting the
194    traffic`. You cannot make insecure protocol suddenly secure just by
195    encrypting the traffic. SILC is not meant to be IRC replacement. IRC
196    is good for some things, SILC is good for same and some other things.
197
198    Q: Can I talk from SILC network to IRC network?
199    A: Simple answer for this is No. The protocols are not compatible
200    which makes it impossible to directly talk from SILC network to IRC
201    network or vice versa. Developing a gateway between these two networks
202    would technically be possible but from security point of view strongly
203    not recommended. We have no plans for developing such a gateway.
204
205    Q: Does SILC support file transfer?
206    A: Yes. The SILC protocol support SFTP as mandatory file transfer
207    protocol. It provides simple client to client file transfer, but also
208    a possibility for file and directory manipulation. Even though the
209    SFTP is the file transfer protocol the support for file transferring
210    has been done so that practically any file transfer protocol may be
211    used with SILC protocol.
212
213    Q: Does SILC support DCC or alike?
214    A: SILC does not support the DCC commonly used in IRC. It does not
215    need it since it has builtin support for same features that DCC have.
216    You can transfer files securely and encrypted directly with another
217    client. You can also negotiate secret key material with another client
218    directly to use it in private message encryption. The private messages
219    are not, however sent directly between clients. The protocol, on the
220    other hand does not prohibit sending messages directly between clients
221    if the implementation would support it. The current SILC Client
222    implementation does not support it. This means that private messages
223    travel through the SILC Network. SILC protocol also has a capability
224    to support DCC and CTCP like protocols with SILC. None of them,
225    however have not been defined to be used with SILC at the present
226    time.
227
228    Q: I am behind a firewall, can I use SILC?
229    A: Yes. If your network administrator can open the remote port 706
230    (TCP) you can use SILC without problems. You may also compile your
231    SILC client with SOCKS support which will proxy your SILC session
232    through the firewall.
233
234    Q: How secure SILC really is?
235    A: We have tried to make SILC as secure as possible. However, there is
236    no security protocol or security software that has not been vulnerable
237    to some sort of attacks. SILC is in no means different from this. So,
238    it is suspected that there are security holes in the SILC. These holes
239    just need to be found so that they can be fixed. SILC's security
240    features has been developed from attacker's point of view, and we've
241    tried to find all the possible attacks and guard the protocol against
242    them.
243
244    But to give you some parameters of security SILC uses the most secure
245    crytographic algorithms such as AES (Rijndael), Twofish, Blowfish,
246    RC5, etc. SILC does not have DES or 3DES as DES is insecure and 3DES
247    is just too slow. SILC also uses cryptographically strong random
248    number generator when it needs random numbers. Public key cryptography
249    uses RSA (PKCS #1) and Diffie-Hellman algorithms. Key lengths for
250    ciphers are initially set to 256. For public key algorithms the
251    starting key length is 1024 bits.
252
253    But the best answer for this question is that SILC is as secure as its
254    weakest link. SILC is open and the protocol is open and in public thus
255    open for security analysis.
256
257    To give a list of attacks that are ineffective against SILC:
258
259    - Man-in-the-middle attacks are ineffective if proper public key
260    infrastructure is used, and if all public keys are always verified.
261    - IP spoofing is ineffective (because of encryption and trusted keys).
262    - Attacks that change the contents of the data or add extra data to
263    the packets are ineffective (because of encryption and integrity
264    checks).
265    - Passive attacks (listenning network traffic) are ineffective
266    (because of encryption). Everything is encrypted including
267    authentication data such as passwords when they are needed.
268    - Any sort of cryptanalytic attacks are tried to make ineffective by
269    using the best cryptographic algorithms out there, and by designing
270    the protocol to guard against them.
271
272    Q: Does SILC support instant messaging?
273    A: Officially SILC is not an instant message (IM) system as people
274    usually understands it. However, SILC supports many of the features
275    that are found in traditional IM systems. SILC can be implemented in
276    either IRC-style or IM-style system. Features that are usually found
277    only in IM systems, such as multiple presence settings, persistent
278    sessions etc. are also found in SILC.
279
280    Q: Why SILC does not have LINKS command like in IRC?
281    A: It was felt that this information as an own command in SILC is not
282    necessary. Moreover, the topology of the network might be undisclosed
283    information even though the servers and routers in the network are
284    still open. We feel that the network topology information, if it is
285    wanted to be public, and the list of accessible servers can be made
286    available in other ways than providing command like LINKS, which shows
287    the active server links in IRC.
288
289    Q: What does the session detaching/resuming mean?
290    A: The new SILC protocol supports a feature called session detachment.
291    This means that client can detach from the server by giving a DETACH
292    command, but still remain as valid user in the network. The connection
293    is lost to the server but the user remains in the network. User can
294    then resume the session back next time it connects a server in the
295    network, and be like he was never gone.
296
297    This feature clearly could be used in many cases. For example, if you
298    want to upgrade your current SILC client, you do not have to quit the
299    network anymore. You just give DETACH command and still remain in the
300    network. Then you upgrade your client and reconnect to the server and
301    continue business as is. If somebody gives WHOIS command to your
302    nickname he will see that you are detached. Messages that are sent to
303    you when you are detached are dropped by the server. Nice thing about
304    this feature is also that you can resume the session from any server
305    in the network; you do not have to reconnect to the same server you
306    originally were connected to.
307
308    Q: Is anyone outside a channel able to see the channel messages?
309    A: A short answer is simply No. A longer answer involves assumptions
310    about security conditions. Initially channel keys are generated by the
311    server, so if the server would get compromised it would be possible
312    for an adversary to see the messages. However, users on the channel
313    can prevent this even if the server would be compromised. It is
314    possible to set so called channel private key that only the users on
315    the channel know about. The servers does not know about the key, and
316    therefore cannot see the messages even if they would be compromised.
317    So, longer answer results into same as the short one; No.
318
319    Q: How can I register my channel in SILC?
320    A: There is not a channel registering service in SILC. However, SILC
321    does support permanent channels. When you join a non-existing channel
322    for the first time you will become the founder of the channel. You can
323    then set a special founder mode on the channel which makes the channel
324    permanent. When the last user leaves the channel when this mode is
325    set, the channel will not be destroyed. If the founder mode is not
326    set, then empty channels will be destroyed automatically. When the
327    founder mode is set and you leave the channel you can also reclaim the
328    founder rights back on the channel next time you join it. (see also Q:
329    What does the founder mode on channel mean, and how do I set it? and
330    Q: I am founder of invite only channel, how can I join the channel
331    after I have left it?). You can call this channel registering if you
332    want.
333
334    Q: Is it true that all messages are encrypted in SILC?
335    A: Most definitely yes. The SILC protocol makes it impossible to send
336    unencrypted messages or packets to the SILC network. All messages are
337    always encrypted, either using session keys, or other secret keys such
338    as channel keys or private message keys.
339
340    Q: Can server or SILC operator gain operator mode on a channel?
341    A: They cannot get operator status, founder status, join invite only
342    channels, escape active bans, escape user limits or anything alike,
343    without explicitly being allowed. Only way to get channel operator
344    status is that someone ops him. Server and SILC operators in the
345    network are normal users with the extra privileges of being able to
346    adminstrate their server. They cannot do anything more than a normal
347    user.
348
349    Q: Channel name doesn't have #-character or does it?
350    A: The #-character is not mandatory part of channel name, like it is
351    in IRC. This means that giving the command /JOIN #silc and /JOIN silc
352    will join to different channels. This is intentional since the
353    #-character clearly is IRC feature and has nothing to do with SILC. If
354    you want it to have the character then just join to the channel with
355    #-character in the name.
356
357    Q: Does SILC support moderated channels?
358    A: Yes. Channel founder can moderate both normal users and channel
359    operators so that they cannot talk on the channel. It is also possible
360    to quiet one specific user on the channel if needed.
361
362    Q: What does the "watching" mean?
363    A: You can set a "watch" list for yourself in the server. This means
364    that you can watch for certain nicknames in the network. For example,
365    if you add a nickname "foo" to the watch list you will be notified
366    when the foo logins to the network, leaves the network, changes its
367    user mode or changes its nickname. This way you can watch for example
368    when does you friend login to the network.
369
370    Q: Is it possible to reject watching?
371    A: Yes. Since it is clear that not everyone wants to be spied on you
372    can set a mode for yourself which rejects watching you. Even if
373    someone is watching the nickname you have, your logins, logoffs, mode
374    changes or nickname changes will not be notified to the watcher.
375
376    Q: Is it possible to block private messages?
377    A: Yes. You can block incoming private messages by setting a mode that
378    prevents unwanted private messages. Only the private messages that are
379    secured with a private message key are delivered to you. This implies
380    that you have negotiated the private key with the sender of the
381    message, and therefore want to receive messages from that user. Other
382    private messages that are secured with normal session keys are dropped
383    when the mode is set.
384
385    Q: Is it possible to block channel messages?
386    A: Yes it is. By setting a mode that accomplishes this you can prevent
387    the server of sending any channel messages to you. There is also a
388    mode that allows blocking channel messages from normal users. This
389    means that you will receive channel messages only when it is sent by
390    channel operator or channel founder. It is also possible to block
391    channel messages sent by robots. A user on the channel can have a
392    robot mode set (which means that the user is actually a robot
393    program), and messages sent from that user can be blocked with the
394    mode.
395
396    Q: Is it possible to block invites?
397    A: It sure is. You can set a mode that prevents the server of sending
398    invite notifications to you. This can for example prevent invite
399    flooding. The downside is that it may make joining to a invite only
400    channels a bit harder.
401
402    Q: Does SILC support multimedia messages, like video/audio streaming?
403    A: Yes it does. The new version of the protocol supports sending of
404    MIME objects as messages. Since MIME objects can easily represent any
405    kind of data, such as video stream, audio stream, images, etc. it is
406    easy to send these multimedia messages in SILC. It also makes video
407    conferencing possible with SILC. It can work by sending the stream(s)
408    to a channel and everybody who joins the channel can receive the
409    stream. This feature in the protocol surely makes possible many kind
410    of multimedia applications in the future.
411
412    Q: What kind of presence modes SILC support?
413    A: By presence we mean indication of presence in the network, and SILC
414    supports several different kinds of presence modes. They can be
415    changed with the UMODE command which changes your user mode in the
416    network. Currently there is the following modes for presence: GONE
417    (I'm away), INDISPOSED (I cannot be here), BUSY (I'm busy, don't
418    bother me), PAGE (page me if you want to talk), and HYPER (I'm hyper
419    active, talk to me). When mode is not set it means you are present in
420    the network. There are many other user modes as well, but they are not
421    directly related to presence indication.
422
423    Q: Does SILC support anonymity?
424    A: The protocol has a user mode which indicates that user is anonymous
425    user. The user cannot set or unset the mode itself, but a server which
426    provides these anonymous chatting services can set the mode for the
427    user that connects to the server. User that has the mode set has their
428    username and hostname information scrambled. There are other ways of
429    making anonymity in SILC but they all are implementational methods,
430    and protocol does not handle those methods.
431
432    Q: Does SILC support services?
433    A: Yes it does. There is command called SERVICE which can be used by
434    clients and servers to negotiate a service agreement with a remote
435    server. The protocol does not however define any services currently.
436
437    Q: I have suggestions to SILC Protocol, what can I do?
438    A: All suggestions and improvements are of course welcome. You should
439    read the protocol specifications first to check out whether your idea
440    is covered by them already. The best place to make your idea public is
441    the SILC development mailing list. You might want to checkout the TODO
442    list from the CVS as well.
443
444    3. Client Questions
445
446    Q: Where can I find SILC clients?
447    A: The official SILC client is available for free download from the
448    silcnet.org web page. There is also several independent projects
449    working with the SILC Toolkit to come up with various other clients.
450    Bombyx is a cross-platform GUI client written with FLTK. Milc is also
451    a cross-platform GUI client written with WxWindows. See also our links
452    page for links to other clients.
453
454    Q: Can I use SILC with IRC client and vice versa?
455    A: Generally the answer would be no for both. However, there exist
456    already at least one IRC client that supports SILC, the Irssi client.
457    The current SILC client is actually based on the user interface of the
458    Irssi client. So, yes it is possible to use SILC with some IRC clients
459    and vice versa. You can use SILC plug-in in Irssi and have support for
460    both protocols in one client. But, this does not mean that you can
461    talk from SILC network to IRC network, that is not possible.
462
463    Q: The default theme sucks, where can I find a better one?
464    A: The Irssi SILC client's theme files are almost 100% compatible with
465    the original Irssi IRC client's themes. You can get those theme files
466    from the Irssi project website. You can also try to make a better
467    theme by yourself.
468
469    Q: How do I send a private message?
470    A: Sending private message is done by using the MSG command. For
471    example, command: /MSG john hello, will send a `hello' message to a
472    nickname `john'. By default private messages are secured with session
473    keys, and the message is re-encrypted by the servers when the message
474    travels to the receiver. If you would like to secure the private
475    messages with a private key, you can negotiate a secret key with the
476    receiver. Always remember to give WHOIS command before sending a
477    private message to assure that you are sending the message to correct
478    person.
479
480    Q: How do I negotiate secret key with another user?
481    A: It is important to negotiate secret keys if you cannot trust the
482    servers and the network you are using. By negotiating a key with the
483    user you want to talk to assures that no one except you and your
484    friend is able to encrypt and decrypt the messages. The secret key
485    negotiation is done with the KEY command. Here is an example of how to
486    negotiate keys for securing private messages.
487
488    By giving command: /KEY MSG john agreement 192.168.2.100, you will
489    send a key negotiation request to a nickname `john'. The 192.168.2.100
490    IP address would be your machine's IP address. You can also define an
491    port to the KEY command after the IP address. If you do not do that
492    the operating system will bind to a port of its choosing. John will
493    receive a notification on the screen that you would like to negotiate
494    secret keys with him, and he will receive the IP address and port
495    where you are listenning for the negotiation. When he gives command:
496    /KEY MSG You negotiate 192.168.2.100 31382, the key negotiation is
497    started. During the key negotiation you will be prompted on the screen
498    to verify and accept John's public key if you do not have his public
499    key already. The John will be prompted to accept your public key as
500    well. After the key negotiation is over all private messages sent
501    between you and John are secured with the negotiated secret key. Note
502    that you must verify the public key you are prompted for, and this is
503    very important since someone could be doing man-in-the-middle attack.
504
505    Q: How do I negotiate secret keys behind a NAT?
506    A: If only you are behind a NAT, or firewall then key negotiation
507    works, but if both you and your friend are behind a NAT then key
508    negotiation will not work, since it is done peer to peer. If you are
509    behind a NAT then you obviously cannot receive key negotiations, and
510    cannot bind to any IP address and port. However, you can still use KEY
511    command to negotiate the keys.
512
513    By giving command: /KEY MSG john agreement, without any other
514    arguments (such as IP address and port) you will send a negotiation
515    request to John, but do not provide an address and port for the John
516    to connect to. When John receives the notification on the screen that
517    you would like to perform key negotiation, he can give command: /KEY
518    MSG You agreement 172.16.100.78, which will send key negotiation
519    request back to you. You will receive the IP address and port where
520    you need to connect in order to perform the negotiation. After
521    receiving the notification you can give command: /KEY MSG john
522    negotiate 172.16.100.78 31181, which will start the key negotiation
523    with John. This way you can negotiate the keys if you are behind a
524    NAT.
525
526    Q: How do I change channel modes?
527    A: The command to manage channel modes is CMODE. With this command you
528    can change the channel status (to change it to secret channel for
529    example), set user limit on the channel, passphrase for the channel,
530    set the channel to use private keys on channel, and set the founder
531    mode.
532
533    Q: What does the founder mode on channel mean, and how do I set it?
534    A: Who ever creates the channel by being the first user to join the
535    channel becomes automatically the founder of the channel. Founder has
536    some extra privileges on the channel. For example, it is not possible
537    to kick the founder off the channel, and there are some channel modes
538    that only the founder of the channel can change. If the creator of the
539    channel wishes to preserve the channel founder mode even if he leave
540    the channel he can set the founder mode for the channel.
541
542    The mode is set by giving command: /CMODE #channel +f. This will set
543    the founder mode and will use the public key of the founder as
544    authenticator when the user is reclaiming the mode back. If the
545    founder leaves the channel he will be able to get the founder mode
546    back by using JOIN or CUMODE commmands. Giving command /JOIN #channel
547    -founder, will get the founder mode back at the same time he joins the
548    channel, or giving commmand /CUMODE #channel +f yournick, will also
549    give the founder mode back on the channel after he has joined the
550    channel.
551
552    The founder mode also means that the channel becomes permanent when it
553    is set. This means that when the last client leaves the channel the
554    channel is not destroyed when the founder mode is set. Next time
555    someone joins the channel he will not become the founder of the
556    channel if the channel already existed (but were empty). If the
557    founder mode is not set when last user leaves the channel, the channel
558    will be destroyed. When you set the mode for the channel and leave the
559    channel you can reclaim the founder rights to yourself back at any
560    time when you rejoin the channel.
561
562    Q: I am founder of invite only channel, how can I join the channel
563    after I have left it?
564    A: Founder can override the invite only status by reclaiming the
565    founder status on the channel using the JOIN command. The channel must
566    have the founder mode set in order for it to work. Reclaiming founder
567    status using JOIN command is important also if the channel has user
568    limit set, and has active bans. Founder can override these conditions
569    as well. However, founder cannot override the passphrase of the
570    channel if it is set. To get the founder mode during JOIN and to
571    override the invite only condition, give command: /JOIN #channel
572    -founder. This will join the channel and attempt to reclaim the
573    founder status back to you.
574
575    Q: How can I op or deop somebody on channel?
576    A: Giving operator status, or removing the operator status on a
577    channel requires you to have at least operator status, or founder
578    status on the channel. You can give operator status to another user by
579    using CUMODE command. To give ops give the command: /CUMODE #channel
580    +o john, and to remove ops give command: /CUMODE #channel -o john. To
581    indicate current channel you can also use `*' character in #channel's
582    stead.
583
584    Q: How do I set private key for channel, and what does that mean
585    exactly?
586    A: Setting private key for channel requires first to set the private
587    key mode for the channel. You need to be the founder of the channel to
588    be able to do this. Give the command: /CMODE #channel +k. After this
589    mode is set the old channel key will not be used to encrypt and
590    decrypt channel messages. To set the key for the channel use the KEY
591    command. Every user on the channel must do the same thing and set the
592    same key. If some user on the channel does not set the key (or does
593    not know the key) he won't be able to see any messages on the channel.
594    Give the command: /KEY CHANNEL #channel set verysecretkey. This
595    command will set the `verysecretkey' passphrase as key to #channel.
596    How exactly other users will know this key is out of scope of the SILC
597    protocol. SILC does not provide yet a possibility of negotiating
598    secret key with many users at the same time. For this reason the
599    secret key on the channel is usually a passphrase or a password that
600    all users on the channel have to know. Setting a private key for
601    channel means that only the users on the channel who know the key is
602    able to encrypt and decrypt messages. Servers do not know the key at
603    all. If you remove the private key mode from the channel, all users
604    will start automatically using a new channel key to secure channel
605    messages.
606
607    Q: How do I transfer a file?
608    A: You can transfer files securely using the FILE command. This
609    command will automatically negotiate secret key with the remote user
610    and the file transfer stream is secured using that key. The file
611    transfer stream is always sent peer to peer. If you would like to send
612    a file to another user you can give command: /FILE SEND
613    path/to/the/file john. This command sends, or actually makes the
614    `path/to/the/file' available for download for the user `john'. The
615    John will decide whether he wants to actually download the file. When
616    John gives the command: /FILE RECEIVE, the key negotiation is started.
617    You and John will be prompted to verify and accept each other's public
618    key if you do not have it cached already. After key negotiation is
619    over the file transfer process starts. If you want to cancel the file
620    transfer session, or if John wants to reject the file transfer
621    request, giving the command: /FILE CLOSE will close the session.
622
623    Q: How can I get other users public keys?
624    A: You can get a user's public key using the GETKEY command. This
625    command will fetch the user's public key from the server where the
626    user has connected to. The server has verified that the user posesses
627    the corresponding private key, however, you will be prompted to verify
628    and accept the public key. All client public keys are saved in your
629    local key directory in ~/.silc/clientkeys/. You can also receive
630    clients public keys during key negotiation and file transfers. The
631    GETKEY command can be used to fetch a server's public key as well.
632    Those keys are saved in ~/.silc/serverkeys/ directory.
633
634    Q: How can I see the fingerprint of my public key?
635    A: You can check out your own fingerprint by giving just WHOIS command
636    without any arguments. Additionally you can also dump the contents of
637    the key file using the silc program and giving -S option to it. Your
638    own public key is always saved in ~/.silc/public_key.pub file. To dump
639    your key run silc as: silc -S .silc/public_key.pub. The same way you
640    can dump the contents of any public key inside ~/.silc/clientkeys/ and
641    ~/.silc/serverkeys/ directories. The WHOIS command will also show
642    other users public key fingerprints.
643
644    Q: I gave WHOIS to a nick, and it returned multiple replies, why?
645    A: This will happen if there are several same nicknames in the network
646    at the same time. As you may already know nicknames are not unique in
647    SILC network. This means there can be multiple same nicknames. This
648    also means that you can always have the nickname you want. If WHOIS
649    returns multiple replies, you can distinguish the users by their
650    realname, username, hostname and ultimately by the fingerprint of
651    their public key, which the WHOIS will also show. You will also notice
652    an additional nickname inside a parenthesis. It may show for example:
653    nickname: John (John@otaku). The real nickname is `John', but since
654    there are many John's in the network you can access this one using
655    `John@otaku'. So, if you were to send private message to this
656    particular John you can do it by giving command: /MSG John@otaku
657    hello. This will send `hello' message to the John@otaku.
658
659    Q: Is there a command to see all linked servers?
660    A: No there is not. For longer answer see also this FAQ.
661
662    Q: How do I list the users of a channel?
663    A: The command to list all users on a particular channel is USERS. It
664    is also aliased to WHO command in Irssi SILC Client. To see the users
665    of the current channel give the command: /USERS *. You can replace the
666    `*' with the channel name of your choosing. If the channel is private
667    or secret channel, and you have not joined the channel, you cannot
668    list the users of that channel.
669
670    Q: What is the difference between OPER and SILCOPER commands?
671    A: The OPER command is used to gain server operator privileges on
672    normal SILC server, while SILCOPER is used to gain router operator
673    (also known as SILC operator) privileges on router server. You cannot
674    use SILCOPER command on normal SILC server, it works only on router
675    server.
676
677    Q: My Cygwin client crashes with message "Couldn't create //.silc
678    directory"
679    A: A solutions should be setting HOME enviroment variable to the
680    directory where you have unpacked your SILC Client. Type to your
681    command prompt something like:
682    c:\>set HOME=c:\silc
683
684    Q: Why /join #silc and /join silc doesn't join the same channel?
685    A: The #-character is not mandatory part of channel name in SILC. So
686    #silc and silc are two different channels. The #-character in channel
687    name is IRC feature and has nothing to do with SILC. If you have
688    #-character in the channel name, then it is part of the channel name,
689    just like %-character, or &-character could be part of channel name.
690
691    Q: How do I detach my session from the server?
692    A: You can detach your session by simply giving DETACH command. Your
693    connection to the server will be closed automatically. Next time you
694    connect any server in the network your session will be automatically
695    resumed. If there is an error during session resuming your connection
696    will be closed and you need to reconnect to the server. In this case
697    the old sessionn cannot be resumed anymore.
698
699    4. Server Questions
700
701    Q: Where can I find SILC servers?
702    A: The SILC server is available for free download from the silcnet.org
703    web page. We are not aware of any other SILC server implementations,
704    so far.
705
706    Q: Can I run my own SILC server?
707    A: Yes of course. Download the SILC server package, compile and
708    install it. Be sure to check out the installation instructions and the
709    README file. You also should decide whether you want to run SILC
710    server or SILC router.
711
712    Q: What is the difference between SILC server and SILC router?
713    A: The topology of the SILC network includes SILC routers and the SILC
714    servers (and SILC clients of course). Normal SILC server does not have
715    direct connections with other SILC servers. They connect directly to
716    the SILC router. SILC Routers may have several server connections and
717    they may connect to several SILC routers. The SILC routers are the
718    servers in the network that know everything about everything. The SILC
719    servers know only local information and query global information from
720    the router when necessary.
721
722    If you are running SILC server you want to run it as router only if
723    you want to have server connections in it and are prepared to accept
724    server connections. You also need to get the router connected to some
725    other router to be able to join the SILC network. You may run the
726    server as normal SILC server if you do not want to accept other server
727    connections or cannot run it as router.
728
729    Q: Why server says permission denied to write to a log file?
730    A: The owner of the log files must be same user that the server is run
731    under, by default it is user `nobody'. Just change the permissions and
732    try again.
733
734    Q: When I connect to my server it says "server does not support one of
735    your proposed ciphers", what is wrong?
736    A: Most likely the ciphers and others has not been compiled as SIMs
737    (modules) and they are configured as modules in the silcd.conf. If
738    they are not compiled as modules remove the module paths from the
739    ciphers and hash functions from the silcd.conf, so that the server use
740    the builtin ciphers. Then try connecting to the server again. It is
741    also possible that the client IS proposing some ciphers that your
742    server does not support.
743
744    Q: Why SILC server runs on privileged port 706?
745    A: Ports 706/tcp and 706/udp have been assigned for the SILC protocol
746    by IANA. Server on the network listening above privileged ports
747    (>1023) SHOULD NOT be trusted as it could have been set up by
748    untrusted party. The server normally drops root privileges after
749    startup and then run as user previously defined in silcd.conf.
750
751    Q: I see [Unknown] in the log file, what does it mean?
752    A: You can see in the log file for example: [Info] Closing connection
753    192.168.78.139:3214 [Unknown]. The [Unknown] means that the connection
754    was not authenticated yet, and it is not known whether the connection
755    was a client, server or router. There will appear [Client], [Server]
756    or [Router] if the connection is authenticated at that point.
757
758    Q: How can I generate a new server key pair?
759    A: You can generate a new key pair using the silcd command with the -C
760    option. When SILC Server is installed a key pair is generated
761    automatically for you. However, it is suggested that you check the
762    information found in that key and generate a new key pair if the
763    information is incorrect. You can check the information of your public
764    key by giving command: silc -S file.pub.
765
766    If you want to generate a new key pair then you can give for example
767    command: silcd -C . --identifier="UN=silc-oper, HN=silc.silcnet.org,
768    RN=SILC Router Admin, E=silc-oper@silcnet.org, O=SILC Project, C=SK".
769    This will create the key pair to current directory, with the specified
770    identifier. Please, give the --help option to the silcd to see usage
771    help for the -C and --identifier options.
772
773    5. Toolkit Questions
774
775    Q: What is SILC Toolkit?
776    A: SILC Toolkit is a package intended for software developers who
777    would like to develope their own SILC based applications or help in
778    the development of the SILC. The Toolkit includes SILC Protocol Core
779    library, SILC Crypto library, SILC Key Exchange (SKE) library, SILC
780    Math library, SILC Modules (SIM) library, SILC Utility library, SILC
781    Client library and few other libraries.
782
783    Q: Is the SILC Toolkit Reference Manual Available?
784    A: Yes, partially completed reference manual is available in the
785    Toolkit releases as HTML package and they are available from the
786    silcnet.org website as well at the documentation page.
787
788    Q: How do I compile the Toolkit on Unix?
789    A: You should read the INSTALL file from the package and follow its
790    instructions. The compilation on Unix is as simple as compiling any
791    other SILC package. Give, `./configure' command and then `make'
792    command.
793
794    Q: How do I compile the Toolkit on Win32?
795    A: We have prepared instructions to compile the Toolkit on Win32 in
796    the Toolkit package. Please, read the README.WIN32 file from the
797    package for detailed instructions how to compile the Toolkit for
798    Cygwin, MinGW and native Win32 systems. We have also prepared ready
799    MSVC++ Workspace files in the win32/ directory in the package that
800    will compile automatically the Toolkit.
801
802    Q: Does the Toolkit package include any sample code?
803    A: Yes, naturally. It includes sample codes for two different SILC
804    Client implementations, and SILC Server. The silcer/ directory
805    includes a simple GUI client based on GTK--, and Win32 samples are
806    included in the win32/ directory, for simple client.