Bitcoin -

Introduction

Bitcoin is one of the first implementations of a concept called crypto-currency, which was first described in 1998 by Wei Dai on the cypherpunks mailing list. Building upon the notion that money is any object, or any sort of record, accepted as payment for goods and services and repayment of debts in a given country or socio-economic context, Bitcoin is designed around the idea of using cryptography to control the creation and transfer of money, rather than relying on central authorities.

Technology

If you are interested to learn more about the technical details of Bitcoin it is recommended to start with these documents:

Features

These are the basic features of any Bitcoin-like network.

  • Bitcoins can be transferred between arbitary nodes on the network.
  • Transactions are irreversible.
  • Double spending is prevented by using a block chain.
  • Transactions are broadcasted within seconds and verified within 10 to 60 minutes.
  • Transactions can be received at any time regardless of whether your computer is turned on or off.

Economic rules

These rules are enforced collectively by the network. While they will not change for Bitcoin, other digital currencies using Bitcoin's technology may change them to suit their needs.

Features of the Bitcoin network

The network has been running for more than 32 months yielding to some impressive security features.

  • Long block chain (more than 180.000 blocks) with lots of processing power securing transactions.
  • Only one major incident (fixed in August 2010).

Posted by hide lafoglia
 

HULFT-Message機能: HULFT: ソフトウェア | NEC

全角コード変換

「S-JIS」、「EUC」、「Unicode(UTF16)」、「IBM漢字」です。またJIS第一水準、および第二水準をサポートしています。文字コード変換が行えない場合は外字コードとして扱われ、外字変換テーブルを登録することにより、任意の文字コードへ変換することが可能です。外字変換テーブルを利用しない場合、デフォルトのコードへ変換するか、エラーとして終了するか選択することができます。

全角コード変換

半角コード変換

ASCIIコード・EBCDIC系コードも相互に変換を行うことができます。対応しているEBCDICコード種は「EBCDICカナ」「EBCDIC英小文字」「EBCDIC ASCII」「IBM英小文字」「IBM英小文字拡張」「Unicode(UTF16)」です。

半角コード変換

Posted by hide lafoglia
 

python - Why the hashlib and hmac are generating different hash values? - Stack Overflow

This is because hmac uses the provided key to generate a salt and make the hash more strong, while hashlib only hashes the provided message.

By looking at the hmac module source code, you will find how to achieve the same behaviour as hmac using the hashlib module, here the used algorithm (it's not the original one, i stripped some checkings to have just the interesting part):

import hashlibMESSAGE = "msg"KEY = "key"trans_5C = "".join ([chr (x ^ 0x5C) for x in xrange(256)])trans_36 = "".join ([chr (x ^ 0x36) for x in xrange(256)])outer = hashlib.sha256()inner = hashlib.sha256()KEY = KEY + chr(0) * (inner.block_size - len(KEY))outer.update(KEY.translate(trans_5C))inner.update(KEY.translate(trans_36))inner.update(MESSAGE)outer.update(inner.digest())result = outer.hexdigest()print result # prints 2d93cbc1be167bcb1637a4a23cbff01a7878f0c50ee833954ea5221bb1b8c628

The same directly using hmac:

import hashlibimport hmacresult = hmac.new(KEY, MESSAGE, hashlib.sha256).hexdigest()print result # prints 2d93cbc1be167bcb1637a4a23cbff01a7878f0c50ee833954ea5221bb1b8c628

So when using hmac, it doesn't only hashes the given message using the specified hashing algorithm, it also uses the key to complexify the hash.

Posted by hide lafoglia
 

$ public-key forward secrecy (PFS) : Internet Security Glossary

$ public-key forward secrecy (PFS)
(I) 公開鍵暗号技術に基づく鍵共有プロトコルについて、「セッション鍵が長期の公開鍵とプライベート鍵のセットから引き出されること」を確保する属性は、将来、一方のプライベート鍵が侵された場合でも侵されない。

(C) 既存の RFC には、"perfect forward secrecy" という用語を使っているものがあるが、それを定義しているものも無ければ、詳細に規定しているものも無い。この小辞典を準備する過程において、我々は、この用語について良い定義を見つけることを試みたが、これは錯綜した領域であることを発見した。達人たちは、合意しなかった。すべての実践的な目的のためには、その文献は、Diffie-Hellman アルゴリズムについて述べることによって "perfect forward secrecy" を定義している。(Hilarie Orman によって示唆された)"public-key forward secrecy" という用語、および、ここでそれについて述べている (I) の定義は、現行のインターネット文書と整合するように書かれているが、まだ、狭く、用語法について改善の余地がある。

(C) インターネットセキュリティコミュニティの挑戦。:
我々は、インターネット標準において使われる暗号技術的アルゴリズムやプロトコル全般についての分類法(ここで検討される基本的な属性を扱うことができるように、切り分けられた網羅的な用語と定義の類)を必要とする。:

(C) 「セッション鍵」対「長期鍵」について:
達人たちは、次の事項について合意しなかった。
  • "forward secrecy" の概念のひとつは、「t 時点までに鍵確立プロトコルの処理が観察され、かつ、これらのプロトコルから得られるセッション鍵のいくつかが動作するとき、未知の過去のセッション鍵もしくは将来のセッション鍵を得られないこと」である。
  • 関連する属性のひとつは、「当該プロトコルが観察され、得られたセッション鍵を知りえたとき、長期プライベート鍵のひとつ、あるいは、複数のものを得られないこと」である。
  • 上記の (I) の定義は、長期鍵の侵害の影響について言及する "forward secrecy" の 3 番目の概念を含む。
  • 3 つの概念すべては、「『この』暗号化鍵の侵害は、『次の』鍵を侵害しないと想定される」という発想を含む。「ひとつの鍵の侵害は、当該単一の鍵によって防護されているデータのみを侵害する」という発想もある。インターネットの文献において、焦点は、通信の一方もしくは両方が保持する秘密鍵とする素材の侵害が発生した場合の過去のトラフィックの復号に対する防護にあてられてきた。
(C) "forward" 対 "backward":
達人たちは、"forward" という単語について満足しなかった。なぜなら、「この」暗号化鍵の侵害は、"forward" ではない "backward" である 「以前の」鍵を侵害することも想定していないからである。S/KEY において、t 時点において使われていた鍵が侵された場合、それ以前において使われていたすべての鍵が侵されている。「長期」鍵(すなわち、ハッシュ化スキームの基礎)が確かなものでなくされた場合、過去・未来のすべての鍵は、侵されている。; それゆえ、「S/KEY には "forward secrecy" も "backward secrecy" も無い」といえる。
 
(C) 「公開鍵暗号技術」対「共通鍵暗号技術」:
達人たちは、共通鍵暗号技術的システムの文脈において、"forward secrecy" について合意しなかった。公開鍵暗号技術が無いとき、あらゆる長期鍵の侵害は、当該長期鍵から得られるいかなるセッション鍵をも侵害してしまう。例えば、Kerberos は、「forward secret」ではない。なぜなら、クライアントのパスワードを侵害すること(それゆえ、クライアントとその認証サーバーによって共有されている鍵を侵害すること)は、クライアントとチケット交付サーバーによって共有された将来のセッション鍵を侵害するからである。

(C) 「通常の "forward secrecy"」対「『完璧な(perfect)」"forward secrecy"」:
達人たちは、これら 2つの間の相違について合意しなかった。相違はないという者もいたし、「最初の命名が不幸であった」として「完璧(perfect)」という単語を落とすことを示唆する者もいた。長期プライベート鍵のひとつが侵された場合に "forward secrecy" を使い、プライベート鍵 の両方(もしくは、当該プロトコルが複数主体向けのものであるとき、すべてのプライベート鍵)が侵されたとき、"perfect" を付加することを示唆する者もいる。

(C) 謝辞:
Bill Burr, Burt Kaliski, Steve Kent, Paul Van Oorschot, Michael Wiener そして、特に、Hilarie Orman は、この検討におけるアイディアに貢献してくれた。
 

Posted by hide lafoglia
 

Google、GmailやGoogle+のセキュリティを強化 「forward secrecy」を採用 - ITmedia ニュース

forward secrecy(PFSとも呼ばれる)は公開鍵暗号技術の一種で、暗号化されたコミュニケーションを長期にわたって解読されないようにするためのもの。過去のコンテンツに接続するためには長期の公開鍵とプライベート鍵のセットが必要なため、攻撃者はいずれかの鍵を解読してもコンテンツのデコードができない。通信ピア双方に実装されている必要があり、処理負荷も掛かるため、HTTPS接続を提供するWebサイトの多くはこの機能をサポートしていないという。

Googleのforward secrecyはDiffie-Hellman鍵共有法に基づいており、鍵交換アルゴリズムとしてECDHE_RSAを採用している。WebブラウザのGoogle ChromeとFirefoxでデフォルトで対応する。米MicrosoftのInternet Explorer(IE)はECDHEとRC4に対応していないため、今のところ利用できない。

 

パブリックキーは static (で、信頼されている、つまり証明書がある) あるいは、 ephemeral (一時的、短命なもの)がある。
Ephemeralキーは一時的なもので、必ずしも認証されていないので、認証が必要であれば、別途保証する物を取得する必要がある。
中間者攻撃を防ぐためには認証は必須である。
AliceかBobのパブリックキーのどちらかが static でであれば、中間者の裏をかくことができる。
Staticなパブリックキーは高度なセキュリティ特性でいうと、PFSでもないし、キーの危殆化を防ぐこともできない。
staticなプライベートキーの保有者はパブリックキーを検証すべき。
また、セキュアキーの導出(derivation)関数を生のDiffe-Hellman共有鍵に適用することでstaticなプライベートキーの情報漏洩を防ぐべき。より高度なセキュリティ特性に関するスキームであれば、ECMQVやFHMQVを参照すること。

Posted by hide lafoglia
 

Elliptic curve Diffie–Hellman - Wikipedia, the free encyclopedia

The public keys are either static (and trusted, say via a certificate) or ephemeral. Ephemeral keys are temporary and not necessarily authenticated, so if authentication is desired, authenticity assurances must be obtained by other means. Authentication is necessary to avoid Man in the Middle attacks. If one of Alice or Bob's public key is static then Man in the Middle attacks are thwarted. Static public keys provide neither forward secrecy nor key-compromise impersonation resilience, among other advanced security properties. Holders of static private keys should validate the other public key, and should apply a secure key derivation function to the raw Diffie–Hellman shared secret to avoid leaking information about the static private key. For schemes with more advanced security properties, see ECMQV and FHMQV.

Posted by hide lafoglia
 

ECDH アルゴリズムの概要 (CNG の例)

ECDH などの非対称システムはきわめて低速です。 そのため、これらのシステムは大規模メッセージの暗号化には使用されません。 AES などの対称システムは、より高速であることが多いため、非対称システムの代わりに使用されます。

一般的な暗号化ソリューションは、非対称システムを使用して、対称的な共有秘密協定を派生させます。 その後は、共有秘密協定を使用して、対称アルゴリズムがメッセージの暗号化に使用するキー マテリアルを派生させます。

CNG のセキュリティで保護された通信の例は、この動作を次のようにモデル化します。

  • 非対称アルゴリズム、ECDH アルゴリズムの CNG 実装 (ECDiffieHellmanCng クラス) を使用して、対称の暗号化キー (共有秘密協定) を派生させます。

  • このキーは CNG の ECDiffieHellmanCng.DeriveKeyMaterial メソッドによって使用され、キー マテリアルの派生が行われます。 対称 AES アルゴリズムの CNG 実装 (Aes クラス) はこのキー マテリアルを使用して、メッセージを暗号化します。

Posted by hide lafoglia
 

@IT:セキュリティ用語事典[DSA]

DSA

Digital Signature Algorithm

 DSAは、DLP(Discrete Logarithm Problem:離散対数問題)の困難性をベースとしたElGamal署名を改良して、署名の長さを160bit×2に短縮し、署名鍵の生成などを特定の方法で運用するデジタル署名アルゴリズム。

Posted by hide lafoglia