One-way compression function

In cryptography, a one-way compression function is a function that transforms two fixed-length inputs into a fixed-length output.[1] The transformation is "one-way", meaning that it is difficult given a particular output to compute inputs which compress to that output. One-way compression functions are not related to conventional data compression algorithms, which instead can be inverted exactly (lossless compression) or approximately (lossy compression) to the original data.

A one-way compression function

One-way compression functions are for instance used in the Merkle–Damgård construction inside cryptographic hash functions.

One-way compression functions are often built from block ciphers. Some methods to turn any normal block cipher into a one-way compression function are Davies–Meyer, Matyas–Meyer–Oseas, Miyaguchi–Preneel (single-block-length compression functions) and MDC-2/Meyer–Schilling, MDC-4, Hirose (double-block-length compression functions). These methods are described in detail further down. (MDC-2 is also the name of a hash function patented by IBM.)

Another method is 2BOW (or NBOW in general), which is a "high-rate multi-block-length hash function based on block ciphers"[1] and typically achieves (asymptotic) rates between 1 and 2 independent of the hash size (only with small constant overhead). This method has not yet seen any serious security analysis, so should be handled with care.

Compression

A compression function mixes two fixed length inputs and produces a single fixed length output of the same size as one of the inputs. This can also be seen as that the compression function transforms one large fixed-length input into a shorter, fixed-length output.

For instance, input A might be 128 bits, input B 128 bits and they are compressed together to a single output of 128 bits. This is equivalent to having a single 256-bit input compressed to a single output of 128 bits.

Some compression functions do not compress by half, but instead by some other factor. For example, input A might be 256 bits, and input B 128 bits, which are compressed to a single output of 128 bits. That is, a total of 384 input bits are compressed together to 128 output bits.

The mixing is done in such a way that full avalanche effect is achieved. That is, every output bit depends on every input bit.

One-way

A one-way function is a function that is easy to compute but hard to invert. A one-way compression function (also called hash function) should have the following properties:

  • Easy to compute: If you have some input(s), it is easy to calculate the output.
  • Preimage-resistance: If an attacker only knows the output it should be infeasible to calculate an input. In other words, given an output , it should be unfeasible to calculate an input such that .
  • Second preimage-resistance: Given an input whose output is , it should be infeasible to find another input that has the same output , i.e. .
  • Collision-resistance: It should be hard to find any two different inputs that compress to the same output i.e. an attacker should not be able to find a pair of messages such that . Due to the birthday paradox (see also birthday attack) there is a 50% chance a collision can be found in time of about where is the number of bits in the hash function's output. An attack on the hash function thus should not be able to find a collision with less than about work.

Ideally one would like the "infeasibility" in preimage-resistance and second preimage-resistance to mean a work of about where is the number of bits in the hash function's output. However, particularly for second preimage-resistance this is a difficult problem.[citation needed]

The Merkle–Damgård construction

The Merkle–Damgård hash construction. The boxes labeled [f] are a one-way compression function.

A common use of one-way compression functions is in the Merkle–Damgård construction inside cryptographic hash functions. Most widely used hash functions, including MD5, SHA-1 (which is deprecated[2]) and SHA-2 use this construction.

A hash function must be able to process an arbitrary-length message into a fixed-length output. This can be achieved by breaking the input up into a series of equal-sized blocks, and operating on them in sequence using a one-way compression function. The compression function can either be specially designed for hashing or be built from a block cipher. The last block processed should also be length padded, which is crucial to the security of this construction.

When length padding (also called MD-strengthening) is applied, attacks cannot find collisions faster than the birthday paradox (, being the block size in bits) if the used function is collision-resistant.[3][4] Hence, the Merkle–Damgård hash construction reduces the problem of finding a proper hash function to finding a proper compression function.

A second preimage attack (given a message an attacker finds another message to satisfy can be done according to Kelsey and Schneier[5] for a -message-block message in time . The complexity of this attack reaches a minimum of for long messages when and approaches when messages are short.

Construction from block ciphers

A typical modern block cipher

One-way compression functions are often built from block ciphers.

Block ciphers take (like one-way compression functions) two fixed size inputs (the key and the plaintext) and return one single output (the ciphertext) which is the same size as the input plaintext.

However, modern block ciphers are only partially one-way. That is, given a plaintext and a ciphertext it is infeasible to find a key that encrypts the plaintext to the ciphertext. But, given a ciphertext and a key a matching plaintext can be found simply by using the block cipher's decryption function. Thus, to turn a block cipher into a one-way compression function some extra operations have to be added.

Some methods to turn any normal block cipher into a one-way compression function are Davies–Meyer, Matyas–Meyer–Oseas, Miyaguchi–Preneel (single-block-length compression functions) and MDC-2, MDC-4, Hirose (double-block-length compressions functions).

Single-block-length compression functions output the same number of bits as processed by the underlying block cipher. Consequently, double-block-length compression functions output twice the number of bits.

If a block cipher has a block size of say 128 bits single-block-length methods create a hash function that has the block size of 128 bits and produces a hash of 128 bits. Double-block-length methods make hashes with double the hash size compared to the block size of the block cipher used. So a 128-bit block cipher can be turned into a 256-bit hash function.

These methods are then used inside the Merkle–Damgård construction to build the actual hash function. These methods are described in detail further down.

Using a block cipher to build the one-way compression function for a hash function is usually somewhat slower than using a specially designed one-way compression function in the hash function. This is because all known secure constructions do the key scheduling for each block of the message. Black, Cochran and Shrimpton have shown that it is impossible to construct a one-way compression function that makes only one call to a block cipher with a fixed key.[6] In practice reasonable speeds are achieved provided the key scheduling of the selected block cipher is not a too heavy operation.

But, in some cases it is easier because a single implementation of a block cipher can be used for both a block cipher and a hash function. It can also save code space in very tiny embedded systems like for instance smart cards or nodes in cars or other machines.

Therefore, the hash-rate or rate gives a glimpse of the efficiency of a hash function based on a certain compression function. The rate of an iterated hash function outlines the ratio between the number of block cipher operations and the output. More precisely, the rate represents the ratio between the number of processed bits of input , the output bit-length of the block cipher, and the necessary block cipher operations to produce these output bits. Generally, the usage of fewer block cipher operations results in a better overall performance of the entire hash function, but it also leads to a smaller hash-value which could be undesirable. The rate is expressed by the formula:

The hash function can only be considered secure if at least the following conditions are met:

  • The block cipher has no special properties that distinguish it from ideal ciphers, such as weak keys or keys that lead to identical or related encryptions (fixed points or key-collisions).
  • The resulting hash size is big enough. According to the birthday attack a security level of 280 (generally assumed to be infeasible to compute today)[citation needed] is desirable thus the hash size should be at least 160 bits.
  • The last block is properly length padded prior to the hashing. (See Merkle–Damgård construction.) Length padding is normally implemented and handled internally in specialised hash functions like SHA-1 etc.

The constructions presented below: Davies–Meyer, Matyas–Meyer–Oseas, Miyaguchi–Preneel and Hirose have been shown to be secure under the black-box analysis.[7][8] The goal is to show that any attack that can be found is at most as efficient as the birthday attack under certain assumptions. The black-box model assumes that a block cipher is used that is randomly chosen from a set containing all appropriate block ciphers. In this model an attacker may freely encrypt and decrypt any blocks, but does not have access to an implementation of the block cipher. The encryption and decryption function are represented by oracles that receive a pair of either a plaintext and a key or a ciphertext and a key. The oracles then respond with a randomly chosen plaintext or ciphertext, if the pair was asked for the first time. They both share a table for these triplets, a pair from the query and corresponding response, and return the record, if a query was received for the second time. For the proof there is a collision finding algorithm that makes randomly chosen queries to the oracles. The algorithm returns 1, if two responses result in a collision involving the hash function that is built from a compression function applying this block cipher (0 else). The probability that the algorithm returns 1 is dependent on the number of queries which determine the security level.

Davies–Meyer

The Davies–Meyer one-way compression function

The Davies–Meyer single-block-length compression function feeds each block of the message () as the key to a block cipher. It feeds the previous hash value () as the plaintext to be encrypted. The output ciphertext is then also XORed (⊕) with the previous hash value () to produce the next hash value (). In the first round when there is no previous hash value it uses a constant pre-specified initial value ().

In mathematical notation Davies–Meyer can be described as:

The scheme has the rate (k is the keysize):

If the block cipher uses for instance 256-bit keys then each message block () is a 256-bit chunk of the message. If the same block cipher uses a block size of 128 bits then the input and output hash values in each round is 128 bits.

Variations of this method replace XOR with any other group operation, such as addition on 32-bit unsigned integers.

A notable property of the Davies–Meyer construction is that even if the underlying block cipher is totally secure, it is possible to compute fixed points for the construction: for any , one can find a value of such that : one just has to set .[9] This is a property that random functions certainly do not have. So far, no practical attack has been based on this property, but one should be aware of this "feature". The fixed-points can be used in a second preimage attack (given a message , attacker finds another message to satisfy ) of Kelsey and Schneier [5] for a -message-block message in time . If the construction does not allow easy creation of fixed points (like Matyas–Meyer–Oseas or Miyaguchi–Preneel) then this attack can be done in time. In both cases the complexity is above but below when messages are long and that when messages get shorter the complexity of the attack approaches .

The security of the Davies–Meyer construction in the Ideal Cipher Model was first proven by R. Winternitz.[10]

Matyas–Meyer–Oseas

The Matyas–Meyer–Oseas one-way compression function

The Matyas–Meyer–Oseas single-block-length one-way compression function can be considered the dual (the opposite) of Davies–Meyer.

It feeds each block of the message () as the plaintext to be encrypted. The output ciphertext is then also XORed (⊕) with the same message block () to produce the next hash value (). The previous hash value () is fed as the key to the block cipher. In the first round when there is no previous hash value it uses a constant pre-specified initial value ().

If the block cipher has different block and key sizes the hash value () will have the wrong size for use as the key. The cipher might also have other special requirements on the key. Then the hash value is first fed through the function to be converted/padded to fit as key for the cipher.

In mathematical notation Matyas–Meyer–Oseas can be described as:

The scheme has the rate:

A second preimage attack (given a message an attacker finds another message to satisfy ) can be done according to Kelsey and Schneier[5] for a -message-block message in time . The complexity is above but below when messages are long, and that when messages get shorter the complexity of the attack approaches .

Miyaguchi–Preneel

The Miyaguchi–Preneel one-way compression function

The Miyaguchi–Preneel single-block-length one-way compression function is an extended variant of Matyas–Meyer–Oseas. It was independently proposed by Shoji Miyaguchi and Bart Preneel.

It feeds each block of the message () as the plaintext to be encrypted. The output ciphertext is then XORed (⊕) with the same message block () and then also XORed with the previous hash value () to produce the next hash value (). The previous hash value () is fed as the key to the block cipher. In the first round when there is no previous hash value it uses a constant pre-specified initial value ().

If the block cipher has different block and key sizes the hash value () will have the wrong size for use as the key. The cipher might also have other special requirements on the key. Then the hash value is first fed through the function to be converted/padded to fit as key for the cipher.

In mathematical notation Miyaguchi–Preneel can be described as:

The scheme has the rate:

The roles of and may be switched, so that is encrypted under the key , thus making this method an extension of Davies–Meyer instead.

A second preimage attack (given a message an attacker finds another message to satisfy ) can be done according to Kelsey and Schneier[5] for a -message-block message in time . The complexity is above but below when messages are long, and that when messages get shorter the complexity of the attack approaches .

Hirose

The Hirose double-block-length compression function

The Hirose[8] double-block-length one-way compression function consists of a block cipher plus a permutation . It was proposed by Shoichi Hirose in 2006 and is based on a work[11] by Mridul Nandi.

It uses a block cipher whose key length is larger than the block length , and produces a hash of size . For example, any of the AES candidates with a 192- or 256-bit key (and 128-bit block).

Each round accepts a portion of the message that is bits long, and uses it to update two -bit state values and .

First, is concatenated with to produce a key . Then the two feedback values are updated according to:

is an arbitrary fixed-point-free permutation on an -bit value, typically defined as for an arbitrary non-zero constant (all ones may be a convenient choice).

Each encryption resembles the standard Davies–Meyer construction. The advantage of this scheme over other proposed double-block-length schemes is that both encryptions use the same key, and thus key scheduling effort may be shared.

The final output is . The scheme has the rate relative to encrypting the message with the cipher.

Hirose also provides a proof in the Ideal Cipher Model.

Sponge construction

The sponge construction can be used to build one-way compression functions.

See also

References

Citations

  1. ^ a b Handbook of Applied Cryptography by Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. Fifth Printing (August 2001) page 328.
  2. ^ "Announcing the first SHA1 collision". Google Online Security Blog. Retrieved 2020-01-12.
  3. ^ Ivan Damgård. A design principle for hash functions. In Gilles Brassard, editor, CRYPTO, volume 435 of LNCS, pages 416–427. Springer, 1989.
  4. ^ Ralph Merkle. One way hash functions and DES. In Gilles Brassard, editor, CRYPTO, volume 435 of LNCS, pages 428–446. Springer, 1989.
  5. ^ a b c d John Kelsey and Bruce Schneier. Second preimages on n-bit hash functions for much less than 2n work. In Ronald Cramer, editor, EUROCRYPT, volume 3494 of LNCS, pages 474–490. Springer, 2005.
  6. ^ John Black, Martin Cochran, and Thomas Shrimpton. On the Impossibility of Highly-Efficient Blockcipher-Based Hash Functions. Advances in Cryptology – EUROCRYPT '05, Aarhus, Denmark, 2005. The authors define a hash function "highly efficient if its compression function uses exactly one call to a block cipher whose key is fixed".
  7. ^ John Black, Phillip Rogaway, and Tom Shrimpton. Black-Box Analysis of the Block-Cipher-Based Hash-Function Constructions from PGV. Advances in Cryptology – CRYPTO '02, Lecture Notes in Computer Science, vol. 2442, pp. 320–335, Springer, 2002. See the table on page 3, Davies–Meyer, Matyas–Meyer–Oseas and Miyaguchi–Preneel are numbered in the first column as hash functions 5, 1 and 3.
  8. ^ a b S. Hirose, Some Plausible Constructions of Double-Block-Length Hash Functions. In: Robshaw, M. J. B. (ed.) FSE 2006, LNCS, vol. 4047, pp. 210–225, Springer, Heidelberg 2006.
  9. ^ Handbook of Applied Cryptography by Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. Fifth Printing (August 2001) page 375.
  10. ^ R. Winternitz. A secure one-way hash function built from DES. In Proceedings of the IEEE Symposium on Information Security and Privacy, p. 88-90. IEEE Press, 1984.
  11. ^ M. Nandi, Towards optimal double-length hash functions, In: Proceedings of the 6th International Conference on Cryptology in India (INDOCRYPT 2005), Lecture Notes in Computer Science 3797, pages 77–89, 2005.

Sources

Read other articles:

Air FloridaLogo Stato Stati Uniti Fondazionesettembre 1971 Chiusura3 luglio 1984 Sede principaleContea di Miami-Dade, Florida GruppoAir Florida, Inc. Persone chiave Ed Acker (CEO) Eli Timoner (Presidente) SettoreTrasporto Prodotticompagnia aerea Compagnia aerea a basso costoCodice IATAQH Codice ICAOFLA Indicativo di chiamataPALM Primo volo28 settembre 1972 Ultimo volo3 luglio 1984 HubMiami Flotta58 Destinazioni99 Voci di compagnie aeree presenti su Wikipedia Modifica dati su Wikidata …

Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Maospati, Magetan – berita · surat kabar · buku · cendekiawan · JSTOR artikel ini perlu dirapikan agar memenuhi standar Wikipedia. Tidak ada alasan yang diberikan. Silakan kembangkan artikel ini semampu And…

2018 general election in Florida This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: 2018 Florida elections – news · newspapers · books · scholar · JSTOR (January 2019) (Learn how and when to remove this message) 2018 Florida elections← 20162020 → Elections in Florida Federal government Presid…

يسرد الجدول أدناه المعارك التي خاضتها الدولة العثمانية طيلة عهدها الذي استمر حوالي 600 سنة، وسيطرت خلاله على عدد من الدول والمناطق امتدت أثناء ذروة مجدها وقوتها من أوروبا الوسطى حتى الخليج العربي، ومن بحر قزوين حتى شمال أفريقيا. بما أن عدد المعارك التي خاضتها الدولة العثماني…

Resort village in Saskatchewan, CanadaSouth LakeResort villageResort Village of South LakeSouth LakeCoordinates: 50°40′41″N 105°33′58″W / 50.678°N 105.566°W / 50.678; -105.566[1]CountryCanadaProvinceSaskatchewanCensus division7Rural municipalityRM of Marquis No. 191Incorporated[2]January 1, 1989Government[3] • MayorArt Schick • Governing bodyResort Village Council • AdministratorMelinda HuebnerAr…

1953 Labour Party deputy leadership election ← 1952 29 October 1953 (1953-10-29) 1956 →   Candidate Herbert Morrison Aneurin Bevan Popular vote 181 76 Percentage 70.4% 29.6% Deputy Leader before election Herbert Morrison Elected Deputy Leader Herbert Morrison The 1953 Labour Party deputy leadership election took place on 29 October 1953, after sitting deputy leader Herbert Morrison was challenged by Aneurin Bevan. Candidates Herbert Morrison, i…

Former railway station in England A goods train loading fruit in 1950 vteWisbech & Upwell Tramway Legend Midland and Great Northern Joint Railway Wisbech North Wisbech Quay Goods Stations River Nene Wisbech East Wisbech Line Bramley Line Elmbridge Boyces Bridge Outwell Basin Outwell Village Upwell Elmbridge railway station was a stop on the Wisbech and Upwell Tramway. It was in a projection of the parish of Emneth, Norfolk but was immediately south-east of the town of Wisbech, Cambridgeshire…

Roger WaldenArchbishop of CanterburyAppointed8 November 1397InstalledunknownTerm ended19 October 1399PredecessorThomas ArundelSuccessorThomas ArundelOrdersConsecrationnever consecratedPersonal detailsDied6 January 1406DenominationRoman Catholic Roger Walden (died 1406) was an English treasurer and Bishop of London. Life Little is now known of Walden's birth nor of his early years. He had some connection with the Channel Islands, and resided for some time in Jersey where he was rector of the Pari…

2020年夏季奥林匹克运动会波兰代表團波兰国旗IOC編碼POLNOC波蘭奧林匹克委員會網站olimpijski.pl(英文)(波兰文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員206參賽項目24个大项旗手开幕式:帕维尔·科热尼奥夫斯基(游泳)和马娅·沃什乔夫斯卡(自行车)[1]闭幕式:卡罗利娜·纳亚(皮划艇)[2…

Kedutaan besar beralih ke halaman ini. Untuk kantor atau organisasi yang menjalankan fungsi kedutaan besar secara de facto, lihat Kedutaan besar de facto. Kedutaan Besar Republik Indonesia di Canberra, Australia Kedutaan Besar Spanyol untuk Takhta Suci dan Ordo Militer Berdaulat Malta di Roma Kedutaan Besar Norwegia untuk Amerika Serikat di Washington, D.C. Beberapa kedutaan besar dalam satu lokasi: Kedutaan besar Denmark, Finlandia, Islandia, Norwegia, dan Swedia di sebuah kompleks gedung di Be…

Not to be confused with Ernest Coombs. Canadian children's entertainer (1927–2001) Ernie CoombsCMBornErnest Arthur Coombs(1927-11-26)November 26, 1927Lewiston, Maine, U.S.DiedSeptember 18, 2001(2001-09-18) (aged 73)Pickering, Ontario, CanadaResting placeChamberlain Cemetery, Round Pond, Lincoln County, Maine, USOccupationEntertainerSpouseMarlene CoombsChildren2 Ernest Arthur Coombs, CM (November 26, 1927 – September 18, 2001) was an American-Canadian children's entertainer who starred i…

Cyberattack surrounding PlayStation Network 2011 PlayStation Network outagePlayStation Network logoDateApril 20 – May 14, 2011 (2011-04-20 – 2011-05-14)Duration24 days (3 weeks and 3 days)TypeExternal intrusion, data breachTargetPlayStation Network and Qriocity servicesOutcome Services restored after 23 days of downtime, with compensation offered to PSN users Personal data exposed for 77 million PlayStation Network accounts $171 million in costs for Sony The 201…

Indian politician (1950– 2018) Pandurang Pundalik FundkarMinister of AgricultureGovernment of MaharashtraIn office8 July 2016 – 31 May 2018Chief MinisterDevendra FadnavisPreceded byEknath KhadseSucceeded byChandrakant PatilMinister of Horticulture Government of MaharashtraIn office8 July 2016 – 31 May 2018Chief MinisterDevendra FadnavisSucceeded byJaydutt KshirsagarLeader of OppositionMaharashtra Legislative CouncilIn office11 April 2005 – 22 December 2011Chief…

Singa laut Singa laut di Monterey, California Klasifikasi ilmiah Kerajaan: Animalia Filum: Chordata Kelas: Mammalia Ordo: Carnivora Subordo: Pinnipedia Famili: Otariidae Subfamili: Otariinae Genera Eumetopias Zalophus Otaria Neophoca Phocarctos Singa laut adalah spesies pada enam genera pinnipedia modern. Habitat mereka meliputi perairan subarktik hingga tropis baik pada belahan bumi utara maupun belahan bumi selatan dengan pengecualian di samudra Atlantik. Pranala luar Wikimedia Commons memilik…

Railway station in Aberdare, Wales AberdareWelsh: AberdârGeneral informationLocationAberdare, Rhondda Cynon TafWalesCoordinates51°42′52″N 3°26′31″W / 51.7145°N 3.4420°W / 51.7145; -3.4420Grid referenceSO004027Managed byTransport for WalesPlatforms1Other informationStation codeABAClassificationDfT category EKey dates3 October 1988Station opensPassengers2018/19 0.555 million2019/20 0.505 million2020/21 53,6682021/22 0.177 million2022/23 0.227 million LocationNo…

River in British Columbia, Canada Skeena Valley redirects here. For the electoral district, see Skeena—Bulkley Valley. Skeena RiverThe Bulkley River (left) flowing into the Skeena River (right) near HazeltonSkeena River watershed with tributariesLocationCountryCanadaProvinceBritish ColumbiaCityTerracePhysical characteristicsSourceSpatsizi Plateau • coordinates57°9′6″N 128°41′29″W / 57.15167°N 128.69139°W / 57.15167; -128.69139 MouthPacif…

Azerbaijan Artikel ini adalah bagian dari seri Politik dan KetatanegaraanRepublik Azerbaijan Konstitusi Presiden: Ilham Aliyev Wakil Presiden: Mehriban Aliyeva Kepresidenan Perdana Menteri: Artur Rasizade Kabinet Menteri Majelis Nasional Ketua: Sahiba Gafarova Partai politik Pemilihan umum Pembagian administratif Hubungan luar negeri Hak Asasi Manusia Lihat pula Negara lainnya Atlas lbs Pemilihan umum di Azerbaijan adalah sebuah pemilihan umum yang digelar di Azerbaijan. Azerbaijan menggelar pem…

نيا ميخانيونا   تقسيم إداري البلد اليونان  [1] خصائص جغرافية إحداثيات 40°27′52″N 22°51′38″E / 40.46444444°N 22.86055556°E / 40.46444444; 22.86055556   الارتفاع 21 متر  السكان التعداد السكاني 7846 (resident population of Greece) (2021)7155 (resident population of Greece) (2001)5678 (resident population of Greece) (1991)8775 (resident population of Gr…

Catholic cathedral in Genoa, Italy Basilica della Santissima Annunziata del VastatoFaçade of the basilicaReligionAffiliationRoman CatholicProvinceGenoaEcclesiastical or organizational statusNational monumentStatusActiveLocationLocationGenoa, ItalyGeographic coordinates44°24′51″N 8°55′42″E / 44.41417°N 8.92833°E / 44.41417; 8.92833ArchitectureTypeChurchStyleManneristGroundbreaking1520Completed18c The Basilica della Santissima Annunziata del Vastato is the Cath…

Unincorporated community in California, United States This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: Enterprise, Shasta County, California – news · newspapers · books · scholar · JSTOR (April 2021) 40°33′50″N 122°20′34″W / 40.56389°N 122.34278°W / 40.56389; -122.34…